
8,336 文字

専門家会社のSakana AIが新しい論文「Transformers squared」を発表しました。この論文では、大規模言語モデルが与えられたプロンプトに基づいて推論時に更新できる手法を詳しく説明しています。最も素晴らしい点は、これがオープンソースであることです。彼らはすでにこれを実現するコードを公開しており、どのオープンソースモデルにも適用できます。
それでは、詳しく見ていきましょう。これがSakana AIによる「Transformer squared」に関する論文です。もし覚えていない方のために説明すると、Sakana AIは日本の最先端AI研究企業です。彼らは以前、AIサイエンティストに関する論文とコードを発表し、私もそれについて完全な動画を作成しました。基本的にAIによるオープンエンドな科学研究を自動化する能力を実現したものです。非常に素晴らしい成果です。
論文の詳細に入っていきますが、Transformers squaredの仕組みは基本的に、プロンプトに対して2回のパスを行います。この素晴らしい図で示されているように、最初のパスでは、ユーザーのクエリをモデルに通して、そのクエリタスクが何なのかを理解しようとします。例えば、数学の問題なのか、コーディングの問題なのか、論理的な問題なのかを判断し、その後、推論時にモデルの重みを更新して、与えられたクエリにより適切に答えられるようにします。
私が先ほど話したGoogleのTitans論文でも同様のことが行われており、これが新しいトレンドのようです。モデルをより静的でなくすることを目指しています。これまでのTransformerアーキテクチャの大きな問題の1つは、トレーニングが完了すると、そのモデルは時間的に固定されてしまい、RAGなどの外部情報を与えない限り、新しい情報を学習できないということでした。
しかし、もしそれが可能になったら?もし、コアとなる知能を持つモデルを取り、大規模な事後トレーニングコストなしに、時間とともに学習してモデルを更新できるようにしたら?これは新たなスケーリング則となる可能性があります。それがTransformers squaredが実現することです。
論文の内容を詳しく見ていきましょう。「自己適応型大規模言語モデル」、これがTransformers squaredが目指すものです。従来のファインチューニング手法が直面していた課題、つまり計算負荷が高く、多様なタスクを処理する能力が静的であるという問題の解決を目指しています。
ファインチューニングの代わりに、彼らは新しい手法を提案しています。それは、ユーザーのプロンプトに基づいて、テスト時、つまり推論時に、モデルに外科的に介入して非常に特定の重みを変更する方法です。
彼らの説明によると、これは「重み行列の特異成分のみを選択的に調整することにより、未知のタスクにリアルタイムで適応するLLMの自己適応フレームワーク」です。つまり、重みを更新するのですが、与えられたプロンプトに特有のものだけを更新するということです。そのため、2回のパスアプローチが必要となります。最初のパスでプロンプトが実際に何を求めているのかを理解するのです。
2つのパスについて説明しましょう。最初のパスは、タスクの特性を識別するディスパッチシステムです。そして2番目のパスでは、強化学習を使用して訓練されたタスク固有のエキスパートベクトルが、入力されたプロンプトに対して目的の振る舞いを得るために動的に混合されます。簡単に言えば、プロンプトを理解し、それにより適切に答えるために重みを更新するということです。
彼らの手法は、より少ないパラメータとより高い効率で、一般的なアプローチであるLoRAを上回る性能を発揮します。後ほど、その性能についてお見せします。
これは、テストタイムトレーニングを初めて見たわけではありません。実際、私が以前取り上げた「テストタイムトレーニング」という論文もありました。これは、事前学習時でも事後学習時でもなく、推論時にモデルを更新するという、多くの企業が採用している最先端の手法です。モデルをより静的でなく、よりダイナミックにするための非常に興味深いアプローチです。さらに素晴らしいことに、これはビジョンモデルでも機能し、実際にビジョンモデルで非常に良い結果を示しています。
では、今日のモデルトレーニングがどのように機能しているのか、Transformers squaredや最近話題の他の論文以前の状況について説明しましょう。LLMの事後トレーニングは、単一の広範なトレーニングセッションで、幅広い能力に対してモデルを最適化することを目指してきました。
ワンショットファインチューニングのフレームワークは、シンプルさの観点からは理想的ですが、実践では達成が難しいものです。例えば、事後トレーニングは依然として非常にリソース集約的です。データの幅を広げる際に顕著な性能のトレードオフが発生する傾向があり、過学習とタスク干渉を同時に克服することが課題となっています。
もし馴染みがない方のために説明すると、モデルは作成時に、事前学習(その初期実行で、すべての知識をモデルに注入する)が完了した後、事後トレーニングと呼ばれるものを行うことができます。これは、モデルの応答方法を導き、追加情報を与え、基本的には知識の適切な使用方法を示すものです。つまり、生の知識を取り、その知識の使い方についてのガイダンスを与えるのですが、これは非常にコストがかかり、非効率的です。
彼らが提案しているのは以下の通りです。自己適応型モデルは、より柔軟で効率的なアプローチを提供します。一度にすべてのタスクについてLLMを訓練しようとするのではなく、ここがポイントですが、エキスパートモジュールをオフラインで開発し、必要に応じてベースLLMに追加することができます。
これにより、モデルは継続的な再調整の必要なく、タスクに応じて動的にその振る舞いを修正することができます。また、破滅的忘却を起こすことなく、新しいスキルを追加できる継続学習をサポートします。先ほど取り上げたTitans論文を思い出してください。従来、モデルに多くの新しい知識を追加すると、モデルは他のことを忘れがちでした。それがTitansが解決しようとしていた記憶の問題です。この新しいアプローチもまた、その問題の解決を試みています。
自己適応型LLMは、神経科学と計算生物学における確立された原則を反映しています。ここで一旦立ち止まってみましょう。Transformersの次世代を開発している企業は、すべてそのアーキテクチャをより人間の脳に近づけようとしているように見えます。
これがニューラルネットワークの基礎となった理由です。人間の脳がそのように機能するため、最初からそのように作られたのです。脳はタスクに応じて特定の領域を活性化し、変化するタスクの要求に応じて機能的なネットワークを動的に再構成します。
創造的な文章を書いているとき、数学をしているとき、コードを書いているとき、これらは異なるユースケースであり、あなたが試みているタスクに基づいて脳は異なる振る舞いをします。そして今、彼らはTransformers squaredでそれを模倣しているのです。
つまり、コアモデルがあり、そしてエキスパートモジュール(コーディングのエキスパート、数学のエキスパート、創造的な文章のエキスパート)があると考えてください。推論時、テスト時に、フレームワークは手元のタスクが何であるかを理解しようとし、外科医のように、それらのエキスパートモジュールを使用してモデルの重みを変更します。この論文によると、これは非常に効率的であるとのことです。
これらのエキスパートモジュールは、このチャンネルで取り上げたLoRAなどの技術を通じてファインチューニングされます。これらのエキスパートモジュールは、タスクの要求に基づいて実行時に動的に構成することができ、エキスパートシステムの混合のようなシステムを通じて効率的に管理できます。
しかし、それは簡単ではありません。彼らが明らかに解決したという、この方法を使用する際に解決する必要がある課題について見ていきましょう。
まず、複数のエキスパートモジュールを作成するためのLLMのファインチューニングは、訓練する必要のあるパラメータ数を大幅に増加させます。これは明らかです。多くの他のサブモデルがあり、それらの追加のサブモデルはすべてより多くのパラメータを必要とします。
第二に、これらのエキスパートモジュールは過学習しがちです。これはAIの世界全般で問題となっている現象で、特に小規模なデータセットや狭いタスクドメインでトレーニングする場合に顕著です。つまり、非常に狭いエキスパートモジュールを作成しようとすると、過学習の問題に直面することになります。
第三に、これらのエキスパートモジュールの柔軟な構成も、現在は大きく未解決の課題を提示しており、オープンな研究課題として位置づけられています。基本的に、これは以前に行われたことがないのです。
彼らの解決策は、特異値ファインチューニング、自己適応のための効果的な構成要素を得るための新しいパラメータ効率的なファインチューニング方法(PFT)です。このチャンネルをよく見ている方なら聞いたことがあるかもしれません。SVFは、モデルの重み行列内の特異値のみを抽出してチューニングすることで機能します。これが重要な部分です。
繰り返しになりますが、外科医のように、モデルにその追加の専門知識を与えるために必要な部分のみを、非常に狭い方法で変更するのです。
Sakana AIのブログからのこの素晴らしい図を見てみましょう。左側にLLMの脳があり、それは基本的にすべてが1つのものであることがわかります。しかし右側では、彼らは実際に脳、つまりLLMの異なる部分を言語、推論、コーディングに分割しており、これにより推論時に脳またはLLMのどの部分を更新する必要があるかを知ることができます。
先ほどの段落で参照された図1を見ると、実際に何が起こっているのかがわかります。ユーザークエリがあり、自己適応ベクトルは、私が先ほど示した脳の図のようなものです。クエリに基づいて、一度実行して、数学なのか、コーディングなのか、それとも両者の中間なのか、誰にもわからない、何でもあり得ると判断します。そこから重みを更新します。
これが数学の問題だとすると、赤い2回目のパスで再度実行し、ここで赤い矢印が見えますが、重みが更新された後で再度実行し、そして答えを得ます。
では、性能はどうでしょうか?SVFは、LoRAなどの従来の効率的なファインチューニング戦略を一貫して上回る性能を示し、同時に桁違いに少ないパラメータで実現しています。実際の結果で見ていくと、指数関数的に良いわけではありませんが、桁違いに効率的であることがわかります。
では、どの重みを更新するかをどのように判断するのでしょうか?彼らは2つの方法を使用しています。まず、行列乗算の基本的な視点を提供する特異値分解(SVD)を使用し、次に重要なサンプリングと最適化のためのモンテカルロ法である交差エントロピー法(CEM)を使用します。これらはどちらも、何を変更するかを判断する方法を示しているだけです。
特異値ファインチューニングについてもう少し詳しく見ていきましょう。これはTransformer squaredの重要な構成要素で、ファインチューニングのための非常に効率的なパラメータ化を提供し、適応のための本質的な構成可能性を提供します。基本的には、うまく機能するということです。
従来のファインチューニング技術は、重み行列を修正することで、事前学習済みモデルに新しい能力を追加することを目指してきました。しかし、大規模なTransformersでは、事前学習データの幅広さと拡張的なアーキテクチャ設計のおかげで、これらの重みはすでに抽象的な知識の豊富な貯蔵庫となっています。
彼らの解決策は、新しい特徴を追加しようとするのではなく、すでにあるものをより良くすることです。彼らはこれを3つの方法で実現しています。実際、これらが何を意味するのか理解するためにAIの助けを借りる必要があり、AIから得た類推を参照して、これらを理解する助けとしたいと思います。
まず、無視できるパラメータについて。これは「最適なつまみを選んで回す」ようなものです。何百ものダイヤルやボタンがある巨大なシステムをチューニングすることを想像してください。システムをファインチューニングする多くの方法は、物事をコントロールするための追加のつまみやスイッチを加えることを含みます。それは機能しますが、扱いにくく複雑です。一方、この方法は最も重要な既存のつまみを見つけ出し、それらだけを調整します。
次に、高い構成可能性。これは「レゴブロックで構築する」という類推です。モデルの重み調整をレゴブロックと考えてください。SVFでは、各パラメータは新しい方法で簡単に組み合わせることができる別々のレゴピースのようなものです。それらを組み合わせたり修正したりして新しいものを作ることができます。LoRAのような他の方法は、一度くっついたら分解が難しい、接着剤で固めたレゴ構造のようなものです。そのため、再利用性はSVFの重要な部分となっています。
そして、原則に基づく正則化。これは「線の内側を塗る」という類推です。子供たちにクレヨンを与えて、ガイドラインなしで色を塗らせると、白い紙やその他のものに色を塗りますが、そこには本当の構造がありません。しかし、原則に基づく正則化は基本的に、塗り絵とガイドラインを与えるようなものです。例えば、ペンギンを塗る場合、何を塗るべきかの白黒のアウトラインを与え、そうすることで、実際にある種のガイドラインがあるため、より良い塗り方ができます。
では、2つのパスについてもう一度見ていきましょう。最初のパスで、このタスクが実際に何に関するものなのかを理解しようとします。その方法は実際にはかなり直接的です。3つの方法があります。
1つ目はプロンプトエンジニアリングです。最も基本的なアプローチとして、新しい適応プロンプトを構築し、それを使用してLLMに入力プロンプトを直接カテゴリ分類させます。例えば次のようなものです:「与えられた質問を分析し、コード、数学、推論、その他の4つのカテゴリのいずれかに分類してください」という指示に従います。入力は基本的にこれらのいずれかに分類され、さらに追加の指示と出力のフォーマット方法が示されます。
2つ目は分類エキスパートです。これはプロンプトエンジニアリングアプローチの直接的な拡張で、タスク識別を処理する専門システムを使用します。私の理解では、それらの4つのカテゴリのいずれかに分類を行う別個のシステムモデルを意味します。
3つ目は少数ショット適応です。個々のプロンプトを超えて、テストタイム条件への拡張アクセスを想定することで、追加のタスク情報を活用します。基本的に以前と同じシステムを使用しますが、複数回反復することができます。
実際の性能はどうでしょうか?ここでこれら4つのグラフで見ているのは、彼らの新しい手法を使用したLlama 38b instructの性能です。点線の白黒の線は、Llama 38bの元のinstructモデルのスコアを示しています。赤色はテスト時の結果を示し、青色はこの新しい手法Transformer squaredを使用したトレーニング時の結果を示しています。
全体的に見て、性能が向上していることがわかります。特にトレーニング時の性能が大幅に向上しています。SVFは、ほぼすべてのタスクとベースモデルにわたって、かなりの一貫した性能向上を提供することがわかりました。この観察された傾向は、ビジョン言語領域にも拡張されることは非常に興味深いです。
SVFは、LoRAの実装のトレーニングパラメータの10%未満で、かなり少ないリソースで実現できます。つまり、より良い性能でありながら、はるかに効率的だということです。そして、これは異なるモデルにも適用できます。
私たちのTransformer squared適応戦略はすべて、Llama 38b instructでは全体的に改善を示し、Mistral 7B instructとLlama 370b instructでは3つのタスクのうち少なくとも2つで改善を示しています。これはモデル固有のものではありません。
これらの結果をここで見ることができます。これらが3つの異なるベースモデルで、LoRAの実装とこの論文の基礎となるSVF実装があります。太字で示されているように、GSM8Kでは全体的に性能が向上し、MVPP proでは3つのうち2つで向上し、ARC easyでも同様に3つのうち2つで向上しています。非常に良い結果ですが、重要なのは性能が向上しながら、はるかに効率的だということを覚えておいてください。
しかし、おそらく疑問に思うでしょう。2回のパスを行う必要があるなら、それはとても高コストになったり、多くのトークンを必要としたりしないのでしょうか?答えは、少し増えますが、実際にはそれほどでもありません。
この表を見てみましょう。ここでは数学、Human Eval、ARCチャレンジの2回目のパスの推論時間コストを秒単位で見ています。これらが最初のスコアで、2回目のパスの小さな部分に過ぎません。2回目のパスは通常のパスと考えることができます。これらのベンチマークの全体的な実行時間にそれほど多くの時間を追加しないということです。
例外としてARCチャレンジがありますが、これについて以下で説明しています。2回目のパスの推論時間は問題を解くのに費やされた時間で、最初のパスの推論時間は自己適応のための時間です。これがあなたが見ているものの説明です。
追加の推論パスが全体の実行時間を2倍にするように見えるかもしれませんが、推論時間は主に生成されるトークンの数に依存することに注意することが重要です。特にARCチャレンジのコスト比が大きいのは、これらが単一選択問題であり、したがって2回目のパスのコストも最初のパスと同じだからです。
では、タスクのタイプを判断するのはどれほど上手いのでしょうか?彼らはこれを混同行列と呼んでいて、これはなかなかクールな名前です。ここで見ているのは、プロンプトエンジニアリングに基づくLlama 38b、分類エキスパートに基づく同じもの、プロンプトエンジニアリング、分類エキスパート、そしてプロンプトエンジニアリングに基づくLlama 370bです。
1.0は完全にタスクを識別できたことを意味し、Llama 38bのプロンプトエンジニアリングでは、ARCチャレンジが少し苦戦しましたが、それでも77%とかなり良い成績を収めました。分類エキスパートを使用すると、95%、98%、97%と本当に良い結果が得られています。基本的に同じような結果が全体に見られ、唯一苦戦したのは、Llama 38bのプロンプトエンジニアリングにおけるARCチャレンジだけでした。
結論として、これは従来のTransformerアーキテクチャが時間とともに学習することを可能にする新しい手法であり、テスト時に実行され、非常に効率的です。最先端の研究室が次世代のTransformerモデル、Transformer squaredを作成した素晴らしい例です。
元のトレーニング後は時間的に固定され、変更されないこれらのモデルの重みを変更できるようにするというアイデアは、非常に素晴らしいものです。これにより、新しいモデルを次々と出す必要なく、モデルが時間とともに進化することが可能になります。
この新しい手法が普及するかどうか、私は非常に楽しみにしています。実際に試してみてください。彼らはコードを投稿しており、説明の下にリンクを貼っておきますので、今すぐ自分で試すことができます。
この動画が気に入った方は、いいねとチャンネル登録をお願いします。次回の動画でお会いしましょう。
コメント