※本稿は、ICML 2024 Tutorialで開催された「Physics of Language Models」というZeyuan Allen-Zhu氏 (Meta FAIR Labs)の講演の内容を要約したものです。
1. はじめに
1.1 言語モデル理論の幅広い解釈
言語モデルの理論は、様々な観点から解釈することができます。私が理論計算科学(TCS)のコミュニティから来たことを考えると、理論とは数学的定理を証明することを意味します。具体的には、概念クラスを定義し、データやモデルに対する仮定を立て、学習可能性定理を証明することを指します。しかし、理論という言葉は実際には幅広い意味を持っています。
もう一方の極端な例として、理論は「動物行動学」や「動物行動科学」を意味することもあります。OpenAIのAPIを購読してGPT-4やGPT-4-miniで遊ぶと、非常に興味深い結果が得られることがあります。例えば、非常に有名な「思考の連鎖(Chain of Thought)」はこのような方法で得られました。これも言語モデルの理論の一つと言えるでしょう。
1.2 数学的証明vs実験的アプローチ
この2つの極端なアプローチには、それぞれ長所と短所があります。まず、数学的アプローチの長所から始めましょう。数学的アプローチでは、厳密な定理を証明できることが最大の魅力です。一方、動物行動学的アプローチの長所は、誰もが理論を展開できることです。超大規模な言語モデルを使って遊ぶことができ、その結果は非常に教育的である可能性があります。思考の連鎖だけでなく、思考の木など、多くの興味深い概念がこの種の理論から導き出されることがあります。
しかし、短所もあります。数学的アプローチの短所は、通常、仮定が非常に理想的すぎることです。証明できるネットワークは通常、1層のTransformerのような非常に浅いものに限られます。また、証明した定理が実際に実践と結びつくことは非常に稀で、たとえ結びついたとしても、論文が長すぎて読まれない可能性があります。
実は、私がその分野から抜け出す最終的な決め手となったのは、進歩が非常に遅いことでした。現在、アカデミアでは3〜5年のNSF助成金がありますが、私が現在働いているMetaのFAIR Labsなどの産業界では、6ヶ月単位で計画を立てています。
これは実際、理にかなっています。2年前にはChatGPTさえありませんでした。1年前には今日のレベルの人工知能さえありませんでした。数学的定理を証明することで非常に遅い進歩しか得られないとすれば、1年後にも適用可能な定理を証明できるかどうか、どうやって確信できるでしょうか?
ここで、人類がかつていかに忍耐強かったかを思い出させてください。昔、アイザック・ニュートンが運動と重力の法則(および微積分)を開発したのは1687年のことでした。ニュートンはどのようにしてこれを達成したのでしょうか?リンゴの木の話はよく知られていますが、それは始まりに過ぎませんでした。実際、ニュートンの理論全体は、ヨハネス・ケプラーの惑星運動の3法則(楕円と焦点の法則)に基づいて構築されました。そして、それはいつのことだったでしょうか?それはニュートンの70〜80年前のことでした。
これは多くの人が聞いたことがあるかもしれませんが、この歴史全体についてあまり知られていない面白い事実があります。ヨハネス・ケプラーは実際、デンマークの天文学者ティコ・ブラーエの助手でした。ティコ・ブラーエは天文台の長で、20年もの間観測データを収集していました。それはケプラーよりさらに30年以上前のことでした。ケプラーはこの天文台の助手で、ティコの死後、すべての実験データを受け継ぎました。そのデータこそが、ヨハネス・ケプラーが惑星運動の3法則を構築するもとになったのです。そして、それがニュートンの運動と重力の法則の始まりとなったのです。
すべてを合わせると、それは1世紀以上前のことです。人類はかつて非常に忍耐強かったのです。もはやそうではありません...
1.3 チュートリアルの目的と構成
このチュートリアルでは、「言語モデルの物理学」と呼ぶイニシアチブを提案します。私たちは4つの異なる点を強調しています。
- 知能の概念を構成要素に分解し、一つずつ研究することを目指しています。例えば、言語構造、知識、推論などを個別に研究します。全てを一度に混ぜると複雑すぎるので、一つずつ研究することが重要です。
- 制御された理想的な環境で全てを研究するために、合成データを構築します。これにより、データの難しさ、タイプ、量、フォーマットを調整し、それらが個別にモデルのパフォーマンスにどのように影響するかを見ることができます。この方法で、次世代の言語モデルをトレーニングする際に何をすべきかについて、非常に有益な知識を得始めることができます。
- 実験の再現性を非常に高くすることを提唱しています。モデルの事前学習に1000万ドルかかるとすれば、それは高すぎます。制御された実験を行うために、7つの異なる要素を試して、それぞれをオンオフにすることはできません。したがって、私たちは1億パラメータ程度の小さなモデルを研究することを提案します。例えば、H100 GPUを使用すれば1日以内に事前学習を完了できます。私のようにV100しか持っていない場合でも、8台あれば1日以内に事前学習を完了できます。1台のV100しかない場合でも、合成データを使用しているため、データの量を完全にコントロールできます。データを5分の1に縮小しても、今日の講演で示す全ての結果を再現できます。
- 最後に、プロービング(内部状態の調査)を行うことを提唱しています。言語モデルの内部動作を見ることが重要です。
これから、知識、推論、言語構造という3つの主要なパートについて話します。実は逆の順序で進めていきます。まず知識から始め、次に推論、最後に言語構造について話します。
この方法で、言語モデルの能力を科学的に分析し、その内部メカニズムを理解することを目指しています。また、これらの洞察が将来の言語モデルの開発にどのように役立つかについても議論します。
2. 言語モデルの知識獲得と操作
2.1 知識の保存と抽出の区別
言語モデルにおける知識の獲得と操作は、私たちの研究の中心的なテーマです。この節では、知識の保存と抽出の間に重要な区別があることを示し、それがモデルのパフォーマンスにどのように影響するかを説明します。
2.1.1 知識獲得実験のセットアップ
まず、知識獲得の実験をセットアップする方法について説明しましょう。私たちは、合成的な伝記データセットを作成しました。このデータセットでは、架空のランダムな人物の伝記を生成しています。伝記の生成には、一連の文章テンプレートを使用するか、または大規模言語モデル(LLM)を使って生成しています。
具体的には、N人の個人に対して、1人につき1つの伝記エントリーを生成しました。各個人には6つの属性があります:誕生日、出生地、大学、専攻、雇用主、勤務地です。例えば、「Anyaは1996年10月2日にプリンストンで生まれ、MITでコンピュータ科学を学び、現在はMeta Platformsで働いている」というような伝記情報を使用しています。
同時に、QAデータ(質問応答データ)も準備しました。各個人に対して、6つの属性に対応する6つの質問を用意しました。実験のセットアップとしては、QAデータの半分のみをトレーニングに使用し、残りの半分の個人に対してout-of-distribution(分布外)でモデルを評価しています。この方法により、トレーニングセットとテストセットを明確に分離した制御実験を行うことができます。
モデルがテストセットで高い精度を達成できれば、それを知識抽出のスキルと呼びます。トレーニングセットの半分の人々に対してQAを行う能力は単なる記憶ですが、伝記データに基づいて他の半分の個人に対するQAスキルを一般化できれば、それを知識抽出と呼びます。
2.1.2 混合訓練vs事前訓練+微調整
次に、2つの異なるトレーニング方法を比較しました:混合訓練と事前訓練+微調整です。
混合訓練では、伝記データとQAデータの両方を事前訓練プロセスに含めます。そして、残りの半分のデータセットに対してout-of-distributionでテストを行います。この方法では、高い精度が得られました。つまり、混合訓練を行えば、非常に良好な精度で知識抽出が可能になります。
しかし、これは実際には一般的に行われている方法ではありません。実際には、まずWikipediaなどのデータで事前訓練を行い、その後モデルを指示微調整し、最後にユーザーに公開してout-of-distributionで評価するという方法が一般的です。
驚くべきことに、この一般的なアプローチに従い、事前訓練と指示微調整を完璧に近い形で行ったとしても、知識抽出の性能は非常に悪くなることがわかりました。これは普遍的な結果で、モデルの大きさやアーキテクチャ(GPT、GPT2、Llama、Mistralなど)に関係なく、データサイズやトレーニングパラメータ、微調整パラメータ(異なるランクのLoRAなど)にも依存しません。500以上の可能性を試しましたが、すべてのケースで0%に近い精度しか得られませんでした。
2.1.3 知識拡張の重要性
そこで私たちは、知識拡張(Knowledge Augmentation)と呼ぶ手法を導入しました。事前訓練データを拡張して、同じ知識が1回ではなく複数回、異なる書き方で記述されるようにしました。
具体的には、各人物の伝記を複数回、異なる書き方で記述しました。文章の順序を入れ替えたり、英語からフランス語に翻訳したり、小さなモデルを使って伝記を書き直したりしました。その結果、精度が急激に向上しました。例えば、1人あたり5つの異なる書き方の伝記エントリーを用意すると、テスト精度は96%に達しました。
要約すると、混合訓練を行わない限り、知識を抽出可能にするためには、事前訓練データに対して知識拡張を行うことが絶対に必要であることがわかりました。
この制御された実験設定で、私たちはこの重要な発見をしました。しかし、なぜこのようなことが起こるのでしょうか?その理由を探るために、私たちはプロービング技術を用いて、言語モデル内部での知識の保存方法を詳細に調査しました。その結果については、次のセクションで詳しく説明します。
2.2 知識の内部表現
2.2.1 プロービング技術による分析
私たちは、言語モデル内部での知識の保存方法を理解するためにプロービング技術を用いました。具体的には、GPT2などの言語モデルを伝記データで事前訓練し、その後、伝記エントリーを入力としてTransformerに供給しました。モデルはすでに事前訓練されているため、入力を再度供給し、最後の層の隠れ状態を観察しました。
我々の目的は、これらのプロービング位置から、この人物の伝記に関する知識がどれだけ隠れ状態に保存されているかを確認することでした。例えば、この人物の雇用主の名前(この場合はMeta Platforms)に関する知識に注目しました。
位置4からプロービングを行えば、その位置の隠れ状態が雇用主の名前をエンコードしているはずです。なぜなら、トレーニングタスクは自己回帰的であり、次のトークンを予測することだからです。したがって、この時点での隠れ状態は少なくとも「Meta」というトークンをエンコードし、おそらく「Meta Platforms」全体をエンコードしているはずです。
しかし、我々がより興味を持ったのは、それ以前のトークン位置からの隠れ状態が、この人物に関する知識をエンコードしているかどうかでした。
2.2.2 知識の局所的保存
プロービングの結果、非常に興味深い発見がありました。知識拡張を行わない場合、以前のすべてのトークン位置からのプロービング精度は非常に低く、ほぼゼロでした。しかし、知識拡張を行った場合、モデルは知識を非常に異なる方法で保存していました。
具体的には、人物の名前の直後から、そのプロービング位置の隠れ状態がすでにその人物の雇用主の名前に関する知識を保存していることがわかりました。これは非常に重要な発見です。
この結果について詳しく説明させてください。知識拡張を行わない場合、モデルは間違った論理を学習する傾向があります。例えば、「Anyaが Meta Platforms で働いている」という正しい関係ではなく、「1996年10月2日にプリンストンで生まれ、MITでコミュニケーションを学んだ人が Meta で働いている」というような誤った論理を学習する可能性があります。
数学的な形式で表現すると、value5(この場合は雇用主の情報)が、キー(人物の名前)と、それ以前のすべての値によって定義されるタプルに共同で保存されている可能性があります。
一方、知識拡張を行うと、値の順序が必ずしも同じではない(例えば、順序が入れ替わる)可能性があるため、モデルは正しい形式で知識を保存する傾向があります。つまり、「AnyaがMetaで働いている」という形式です。数学的な形式では、value5が直接キー(この場合は人物の名前)に保存されることになります。
これが背後で起こっていることを要約すると、知識拡張を伴う言語モデルの事前訓練は、知識がモデル内に保存される方法を変更します。そして、これが次に、指示微調整を通じて知識を抽出できるかどうかに影響を与えます。
さらに、私たちは知識拡張の程度についても調査しました。すべての知識を拡張する必要があるのか、それとも一部だけで十分なのかという疑問に答えるために、次のような実験を行いました。
2.2.3 セレブリティとマイノリティの実験
我々は、セレブリティ(有名人)とマイノリティ(一般人)という2つのカテゴリーの人物を含む実験を設計しました。セレブリティの場合、インターネット上に少なくとも5つの異なる書き方の伝記が存在すると仮定しました。一方、マイノリティの場合は、各人物につき1つの伝記エントリーしかないと仮定しました。
これらのデータを一緒に事前訓練し、セレブリティに関するQAでモデルを微調整しました。その結果、モデルは残りのセレブリティに対して分布外で一般化できただけでなく、マイノリティの知識抽出についても高い精度を示しました。
これは非常に重要な発見です。なぜなら、マイノリティの伝記には知識拡張が行われておらず、さらに指示微調整データにも現れていないにもかかわらず、事前訓練におけるセレブリティデータの存在が、マイノリティに対するモデルの知識抽出能力を大幅に向上させたからです。
プロービングによる分析の結果、セレブリティデータの存在が、モデルに知識を正しい形式で保存する方法を教えていることがわかりました。これにより、モデルはマイノリティに対しても良好なパフォーマンスを示すことができました。
我々はこの現象を「セレブリティがマイノリティを助ける」と呼んでいます。例えば、ドナルド・トランプの伝記がインターネット上に何度も現れることで、意図せずにすべての言語モデルのマイノリティに対する伝記知識抽出能力を向上させているのです。
この結果から、知識の一部だけを拡張すれば、すべての人々に対する知識抽出が可能になることがわかりました。これは、効率的な言語モデルのトレーニング方法の開発に重要な示唆を与えています。
2.3 セレブリティ効果
2.3.1 実験設定:セレブリティvsマイノリティ
私たちは、知識拡張の程度についてさらに調査するために、セレブリティ(有名人)とマイノリティ(一般人)を含む実験を設計しました。この実験では、以下のようなシナリオを考えました:
セレブリティの場合、その伝記は非常に豊富です。例えば、インターネット上には少なくとも5つの異なる書き方の伝記が存在すると仮定しました。一方、マイノリティの場合は、各人物につき1つの伝記エントリーしかないと仮定しました。
実験の手順は以下の通りです:
- これら2種類のデータを一緒に事前訓練しました。
- セレブリティに関するQA(質問応答)タスクでモデルを微調整しました。
- モデルの評価を行いました: a) まず、残りのセレブリティに対して分布外で一般化できるかテストしました。 b) 次に、より重要な点として、マイノリティの知識抽出についてテストしました。
結果は非常に興味深いものでした。モデルは予想通り、セレブリティに対して高い精度で一般化できました。しかし、より重要なのは、マイノリティの知識抽出についても高い精度を示したことです。
2.3.2 知識転移のメカニズム
この結果の重要性を理解するために、以下の点に注目する必要があります:
- マイノリティの伝記には知識拡張が行われていません。各マイノリティにつき1つの伝記エントリーしかありません。
- さらに、マイノリティは指示微調整データにも現れていません。
にもかかわらず、事前訓練におけるセレブリティデータの存在が、マイノリティに対するモデルの知識抽出能力を大幅に向上させたのです。
私たちはこの現象を「セレブリティがマイノリティを助ける」と呼んでいます。例えば、ドナルド・トランプの伝記がインターネット上に何度も現れることで、意図せずにすべての言語モデルのマイノリティに対する伝記知識抽出能力を向上させているのです。トランプ氏自身はこのことを意図していないかもしれませんが、数学的に証明可能な形でこの現象が起きていることを私たちは確認しました。
この結果から、知識の一部だけを拡張すれば、すべての人々に対する知識抽出が可能になることがわかりました。つまり、セレブリティのデータのみを知識拡張することで、マイノリティに対する知識抽出能力も向上するのです。
この発見の背後にあるメカニズムを理解するために、私たちはさらにプロービング技術を用いて詳細な分析を行いました。その結果、セレブリティデータの存在が、モデルに知識を正しい形式で保存する方法を教えていることがわかりました。この「正しい形式」での知識保存が、マイノリティデータにも適用されているのです。
具体的には、セレブリティデータを通じて学習した知識表現の方法が、マイノリティデータにも転移しています。これは、単に事実の暗記ではなく、知識の構造化と表現方法の学習が行われていることを示唆しています。
この「セレブリティ効果」は、効率的な言語モデルのトレーニング方法の開発に重要な示唆を与えています。全てのデータに対して知識拡張を行う必要はなく、一部の代表的なデータ(この場合はセレブリティ)に対して十分な知識拡張を行うことで、全体的な知識抽出能力を向上させることができるのです。
この発見は、特に限られたリソースでモデルを訓練する場合や、特定のドメインに特化したモデルを開発する場合に非常に有用です。「セレブリティ効果」を活用することで、効率的かつ効果的な訓練が可能になるでしょう。
さらに、この現象は言語モデルの一般化能力についても興味深い洞察を提供しています。モデルは単に与えられた情報を暗記しているのではなく、知識の構造化と表現方法を学習し、それを新しい、見たことのないデータに適用できることを示しています。これは、言語モデルが持つ潜在的な「知能」の一側面を示唆しているかもしれません。
この研究結果は、大規模言語モデルの訓練データの選択と拡張方法に関する重要な指針となります。今後の言語モデル開発において、この「セレブリティ効果」を考慮することで、より効率的で強力なモデルの作成が可能になると考えています。
2.4 知識操作タスク
2.4.1 分類タスク:月の偶奇判定
知識操作の最も基本的なタスクとして、私たちは分類タスクを設定しました。具体的には、人物の生まれた月が偶数か奇数かを判定するタスクです。このタスクは、一見単純に見えますが、言語モデルの知識操作能力を評価する上で非常に興味深い洞察を提供してくれました。
実験のセットアップは次のようなものです。まず、伝記データとQAデータを用いて言語モデルを事前訓練し、すべての人物の誕生日が抽出可能であることを確認しました。次に、12ヶ月を偶数か奇数かの2つのカテゴリーに分類するタスクで微調整を行いました。
私たちは、Chain of Thought (CoT) を使用しない場合と使用する場合の両方でこのタスクを検討しました。CoTを使用しない場合、モデルは単に「はい」または「いいえ」と答えます。CoTを使用する場合、モデルはまずその人物の誕生月を明示的に述べ、その後で「はい」または「いいえ」と答えます。
微調整を十分に行って完璧な精度を得た後、残りの半分の個人に対してモデルの分類精度を評価しました。
2.4.2 思考の連鎖(CoT)の重要性
実験の結果、CoTを使用しない場合、out-of-distributionの人々に対する精度は極めて低いことがわかりました。言い換えれば、知識操作の最も基本的な形態である1ステップの知識操作タスクでさえ、CoTを使用しない限り、パフォーマンスはランダムな推測程度にしかならないのです。
さらに興味深いことに、訓練データにCoTを含めても、CoTなしで評価した場合の精度は向上しませんでした。つまり、モデルがCoTを使用して知識を操作できるようになるためには、訓練データにCoTを含めるだけでなく、デプロイ時にもCoTの使用を促す必要があるのです。
これは、推論におけるCoTとは大きく異なります。例えば、GPT-4は1から12の範囲内のAとBの和が偶数か奇数かを、A+Bを明示的に書き出すことなく答えることができます。つまり、推論タスクではステップをスキップすることができますが、知識タスクでは、知識に対する単純な操作を行う前に、常に明示的に知識を書き出す必要があるのです。
2.4.3 逆検索タスクの困難さ
知識操作タスクのもう一つの側面として、私たちは逆検索タスクについても調査しました。具体的には、モデルに「この日にこの都市で生まれ、ここで働いている人は誰?」といった質問に答えさせるタスクを設定しました。そして、残りの半分の個人に対してout-of-distributionでテストを行いました。
結果は衝撃的でした。精度は完全にゼロでした。この結果から、私たちは知識の逆検索は文字通り不可能であるという結論に達しました。これは普遍的な法則であり、モデルのサイズやデータサイズ、訓練方法に関係なく成り立ちます。混合訓練や微調整、どちらの方法を使っても、またデータを完全に拡張しても、さらには微調整の方法を変えても、結果は変わりませんでした。
私たちが「単一の数字がゼロ」と書いていますが、その背後には実際には何百もの異なる種類の事前訓練が隠れており、それらすべてが失敗したのです。事前訓練データ自体がすでに知識を逆転させている場合、つまり例えば全ての伝記の最後に人物の名前を置いている場合にのみ、逆知識検索が可能になります。
実際、私はMetaの同僚たちと、実用的に知識を非常に簡単に逆転させる方法について別の論文を書きました。ただし、ここで重要なのは、微調整の段階で知識を逆転させるのでは遅すぎるということです。事前訓練の段階で知識を逆転させる必要があるのです。
また、単方向モデル(GPTなど)から双方向モデル(BERTなど)に変更しても、この問題は解決されないことにも注意が必要です。
これらの発見を実践と結びつけてみると、例えばGPT-4やLlamaに「ジョー・バイデンは偶数年に生まれましたか?」と尋ねた場合、Wikipediaのすべての有名人に対してこの質問を試してみると、その答えはほぼランダムなコイン投げと同じくらいの精度しかないことがわかります。
また、ランキングタスク、例えば2人の有名人を比較する場合でも、大規模言語モデルは失敗することがわかりました。例えば、生年が10年以内の有名人を比較する場合、CoTを使用しなければ精度はランダムなコイン投げと同程度になります。ただし、CoTを使用すれば精度は大幅に向上します。
逆検索に関しては、私が最も興味深いと感じたタスクは中国の慣用句に関するものでした。中国語には、日常会話で本当によく使われる4文字の慣用句があります。例えば、中国の慣用句の最初の文字をマスクして、GPT-4に欠けている文字は何かを尋ねることができます。中国本土の中国語話者の少なくとも3分の1はこの質問に非常に正確に答えられると自信を持って言えますが、GPT-4にはできません。これは、現在の大規模言語モデルが逆知識検索を行えないことのもう一つの証拠です。
これらの発見は、昨年9月に発見されたにもかかわらず、今日でもあらゆる言語モデルでこれらのバグが見られます。一方で、これはすべての現代のAIモデルを人間と区別するためのチューリングテストを提供します。例えば、あなたの母親と父親のどちらが先に生まれたかを尋ねられた場合、人間は彼らの誕生日を明示的に言う必要はなく、直接はいまたはいいえと答えることができます。また、誰かの生年が偶数か奇数かを言う場合も、その年を声に出して言う必要はなく、頭の中で計算できます。しかし、大規模言語モデルにはそれができないのです。
2.5 知識容量のスケーリング則
2.5.1 2ビット/パラメータの普遍則
私たちの主な発見は、すべての言語モデルが一貫して2ビット/パラメータの割合で知識を保存できるということです。ただし、これはデータが十分に訓練された場合に限ります。
まず、ここでいう「ビット」の定義について説明する必要があります。私たちは情報理論的に、データセット内の情報ビット数を測定しています。合成知識データを用いることで、データセット内の情報ビット数を正確に計算することができます。
例えば、Anyaの誕生日が12ヶ月、28日、200年の範囲からランダムに生成されたとすると、これは log2(12 * 28 * 200) = 6.21 ビットの知識に相当します。同様に、Eugeoの出生地がワシントンDCで、これが300の異なる都市からランダムに選ばれたとすると、これは8.23ビットの知識に相当します。
このように、N人の人物と6つの属性を持つ伝記データを設計した場合、特定の分布に従って生成されたこのデータセットが表現する情報量を正確に計算することができます。これは、書き方に関係なく同じ知識を捉えているため、同じ人物の伝記を40回書き直しても、情報理論的なビット数の観点からの知識量は変わりません。
合成データを作成するもう一つの方法は、より多くのハイパーパラメータを作成することです。例えば、語彙サイズTや多様性Dなどのパラメータを持つ知識を研究することができます。重要なのは、どのような種類の合成知識であっても、このデータセットに格納されている知識ビット量を計算する式を作成できるということです。
そして、このように合成的に生成された知識データで言語モデルを事前訓練し、このモデルが学習した知識量を計算し始めることができます。モデルがこのデータセットで損失ゼロを達成した場合、もちろん知識を完全に捕捉したことになります。しかし、モデルがこのデータセットで半分程度しか正解しない場合はどうでしょうか?その場合、モデルが学習した正確な知識量を計算するために、すべての前に割引係数を慎重に計算する必要があります。
これを行うことで、スケーリング則を描き始めることができます。これは、以前に見たスケーリング則と比較して、より科学的なバージョンです。
2.5.2 モデルサイズと知識量の関係
この「普遍的」という言葉が何を意味するのか、説明させてください。まず、幅広いモデルサイズ、深さ、幅に対して、少なくとも2層以上のトランスフォーマーを研究する限り、サイズだけが重要です。次に、これはデータタイプに関係なく成り立ちます。この形式のデータを使用し、知識データの異なるパラメータを変更することができますが、常に同じ2ビット/パラメータになります。データの書き直し方法などにも関係なく、また幅広いハイパーパラメータに対しても、これは普遍的に成り立ちます。
この発見から、私たちは一つの推測を立てました。論文では実際に、人類の知識、特に英語版Wikipediaとすべての英語の教科書にどれだけの情報ビットが含まれているかを推定しました。その結果、70億パラメータ規模の言語モデルがそのような知識をすべて保存するのに十分であるはずだと予測しています。もちろん、まだそこまで到達していませんが、これは私たちが目指すべき目標だと主張しています。これは間違いなく非常に妥当であり、もし2年後にまだそこに到達していなければ、何か間違っていないか再考する必要があるでしょう。
ここで、「十分に訓練された」という言葉の意味を説明させてください。私たちの主張は、事前訓練中に各知識が1000回露出された場合、この2ビット/パラメータの容量に到達できるということです。
ここで「露出」という言葉の意味を説明する必要があります。訓練データを1000回パスすることを意味しているのではありません。各知識が1000回見られたことを意味しています。例えば、アメリカの首都がワシントンDCであるという知識は、インターネットの事前訓練データを1回パスしただけでも、おそらく100万回近く露出されているかもしれません。したがって、露出とは同じ知識が異なる書き方で複数回露出されることを意味しますが、それを複数の露出としてカウントします。
制御実験を行い、各知識が同じ回数、例えば1000回露出されたと仮定すると、この2ビット/パラメータのスケーリング則を達成します。
この図の正しい読み方は、データサイズを固定すると、モデルを大きくしても学習できる知識は増えないということです。データにはこれだけの知識しかないからです。しかし、興味深いのは、その点に達する前は、モデルの知識容量(学習した知識量)がこの2ビット/パラメータの線に密接に従うということです。
これが、私たちがこの2ビット/パラメータのスケーリング則を導き出した方法です。なお、この図は現在GPT-2のロータリーバージョンのものですが、アーキテクチャを変更しても、Llamaや Mistralなどの主流のアーキテクチャを使用する限り、結果は変わりません。さらに、MLPレイヤーをすべて削除して注意レイヤーだけにしても、依然としてこの2ビット/パラメータの線に到達します。
2.5.3 アーキテクチャの影響:GPT-2 vs Llama
しかし、不十分な訓練、つまり知識が多く露出されていない場合(例えば各知識が100回しか露出されていない場合)、または同等に稀少な知識の場合、知識容量は実際に減少し、ほぼ1ビット/パラメータになります。
ここでより興味深いのは、そのような稀少な知識、または同等に不十分な訓練に焦点を当てると、モデルアーキテクチャ間に違いが出始めることです。GPT-2を使用すれば良いですが、LlamaやMistralを使用すると悪くなり、実際にGPT-2とLlamaの間には1.3倍の差があります。つまり、LlamaやMistralを使用すると性能が実際に悪化します。
なぜこれが起こるのか説明しますが、その前に、GPT-2のMLPレイヤーのサイズを4分の1に縮小して実際に注意レイヤーよりも小さくしても、容量の損失はないことも教えてください。しかし、MLPレイヤーを完全に削除すると、このシナリオでは容量の損失が発生します。
2つの免責事項があります。まず、この比較は知識容量のみに関するものです。推論などの他の側面については触れていません。2つ目の免責事項は、これは稀少な知識に関するものです。1000回の露出がある知識、つまりインターネット上で頻繁に現れる知識を考慮した場合、モデルアーキテクチャ間に違いはありません。しかし、ここでは稀少な知識に関して違いがあります。
これは制御実験を行うことの利点の一つです。どのようなデータ、どのようなタスクに対して、あるモデルが他のモデルよりも優れているかを正確に把握することができます。モデルアーキテクチャを比較するためにより多くの制御実験を行うことができます。
ここで実際に、LlamaやMistralの性能が低下する原因を特定しました。それはGated MLPです。GPT2のロータリーバージョンとLlamaを比較すると、実際には7つの違いがあります。例えば、siluとgeluなどの異なる活性化関数や、異なるレイヤー正規化などがあります。しかし、最終的にそれぞれをオンオフにしてみると、MLPレイヤーが原因であることがわかります。LlamaのGated MLPを標準的なバニラMLPに置き換えると、知識容量は元の1ビット/パラメータに戻ります。つまり、30%向上します。
これも制御実験を行うことの利点の一つです。
2.6 混合品質データの影響
2.6.1 高品質データvs低品質データの実験
私たちは、知識が豊富なデータ(例えばWikipedia)と、知識があまり豊富でないデータ(例えばCommon CrawlやInternet junks)が混在するシナリオを想定しました。この状況を模擬するために、2つのシナリオを設定して比較実験を行いました。
シナリオ1:高品質データのみを使用 このシナリオでは、知識が豊富なデータのみを使用してモデルを訓練しました。各データが事前訓練中に正確に100回露出されるようにしました。
シナリオ2:高品質データと低品質データの混合 このシナリオでは、高品質データと低品質データの両方を使用してモデルを訓練しました。ただし、ここでも高品質データの各部分が100回露出されるようにして、公平な比較ができるようにしました。
これらのシナリオで訓練した後、モデルに保存された良質な知識の量を定量化しました。結果は驚くべきものでした。2つのシナリオ間で20倍もの大きな差が見られたのです。これは20%ではなく、20倍です。左側のシナリオ(高品質データのみ)では2000万ビットの情報を記憶できたのに対し、右側のシナリオ(混合データ)では100万ビットしか記憶できませんでした。これは非常に大きな差です。
同様に、訓練時間を増やして良質なデータが300回露出されるようにしても(以前の3倍)、依然として3倍もの損失が見られました。
これらの結果から、私たちは次のように要約しました:事前訓練におけるジャンクデータの存在が、良質なデータに対するLLMの知識容量を大幅に損なう。場合によっては非常に大きな要因で損なわれる。
2.6.2 ドメイントークンによる改善
この問題の解決策を探るため、私たちは制御実験を用いて、実際にこの問題をどのように修正できるかを発見しました。その方法は非常に簡単です。
私たちの提案は、各事前訓練データの前にドメイントークンを付加することです。過去の事前訓練データは、おそらくすべてのインターネットページを連結したものでしたが、今回は各インターネットデータの前に、そのドメイン名やURLを付加します。
この小さな変更を加えるだけで、状況が大幅に改善されました。例えば、以前は20倍悪化していた状況が、ドメイントークンを追加することで10倍良くなりました。また、3倍悪化していた状況では、完全なパフォーマンスを取り戻すことができました。
言い換えれば、このようなドメイントークンをデータに追加するだけで、LLMは自動的に高品質な知識が豊富なドメインを検出し、そこから優先的に学習することができるようになります。
この現象は、制御実験を用いることで発見されました。モデルに何がよいドメインで何が悪いドメインかを教える必要はありません。ただドメイン名を前に付けるだけで、言語モデルが自動的に何が良くて何が悪いかを学習するのです。
3. 言語モデルの推論能力
3.1 合成数学データセットの設計
言語モデルの推論能力を研究するために、私たちは合成的な数学データセットを設計しました。この部分は、私のインターンであるCMUの学生Tian YeとMetaの同僚Zicheng Xu、そしてYuanzhiとの共同研究です。この研究はまだarXivには公開されていませんが、今週末に公開される予定です。
この研究の目的は、大規模言語モデルの隠れた推論プロセスを理解することです。そのために、GSM8k(Grade School Math 8k)をシミュレートできる合成的な数学データセットを作成することを提案しました。このデータセットを使用して、大規模言語モデルがどのように考え、どのような推論スキルを開発し、また間違いを犯す場合はなぜ間違えるのかを理解しようとしました。
3.1.1 GSM8kシミュレーション
私たちがGSM8kを直接使用しなかった理由は、データが小さすぎるからです。また、GPT-4を使用してGSM8kを拡張することも考えられますが、そうすると生成された問題が偏ってしまう可能性があります。GPT-4を使ってGSM8kの問題から類似の問題を生成することはできますが、最終的には非常に少数の解法テンプレートしか使用しないため、本当に難しい数学問題を生成することはできません。
そのため、私たちは独自の合成的な数学データセットを開発する必要があると考えました。ただし、このデータセットでは言語モデルを直接事前訓練できるようにするために、いくつかの仮定を設けました。例えば、GSM8kから常識を取り除く必要がありました。
GSM8kの非常に難しい点の1つは、常識を知っている必要があることです。例えば、ロウソクが燃えると長さが縮むことを知っている必要があります。これは、インターネット全体のデータから学習する必要があるスキルであり、推論の側面とは実際には関係ありません。そのため、私たちはこれを取り除くことにしました。
しかし、同時に以下の要素は維持する必要があると考えました:
- パラメータ間の直接的な依存関係。例えば、あるパラメータが他の2つの合計に依存しているような場合です。
- 瞬時の依存関係。例えば、X個の教室があり、各教室にY個のメッセンジャーバッグがある場合、合計でX * Y個のメッセンジャーバッグがあることを理解する必要があります。
- 暗黙の依存関係。例えば、ボブがアリスよりも3倍多くの果物を持っている場合、卵は果物ではありません。このような暗黙のパラメータ依存関係も捉える必要があります。
3.1.2 構造グラフと依存関係グラフ
私たちのデータがどのように見えるか、簡単な例を示しましょう。各問題文は2つのグラフに関連しています。
1つは構造グラフで、可能なパラメータを定義します。例えば、Riverview高校の映画スタジオの数を示すエッジがあります。これは割り当てることができるパラメータです。問題の最初の文は、このパラメータが他の2つのパラメータの合計の5倍に依存していることを示しています。
もう1つのパラメータの種類は、例えばこの高校にあるバッグの数です。これには暗黙の計算が必要で、この高校に映画スタジオがいくつあるか、各映画スタジオにバッグがいくつあるかなどを考慮する必要があります。
次に、問題の説明の各文は依存関係の記述を捉えています。例えば、Riverview高校の映画スタジオの数(このパラメータ)が他の2つの5倍の合計に依存している場合、これらのパラメータからこのパラメータへの有向グラフを描きます。
最終的に、問題の説明のすべての文を組み合わせると、DAG(有向非巡回グラフ)が得られます。これが問題の記述方法です。
各数学問題には解答が必要です。ここでは、標準的なChain of Thought(思考の連鎖)解法を使用して計算を行います。
例を挙げて説明しましょう。問題は、Central High Schoolにあるバックパックの数を尋ねています。これはこのパラメータで表されます。これはこれとこれの積であることがわかります。したがって、最終的な解答では、これら2つの青いパラメータを計算する必要があります。
例えば、この青いパラメータはこれとこれの和です。したがって、これら2つのパラメータを計算してから青いパラメータを計算する必要があります。同様に、この青いパラメータについて、問題の説明を見ると、これとこれの和であることがわかります。つまり、これら2つの黄色いパラメータを計算してから緑のパラメータを計算する必要があります。
この黄色いパラメータについて、問題の説明では、これもこれとこれの和だと思います。しかし、今回はこれら2つは問題で直接指定されています。1つは17で、もう1つは13です。したがって、これで完了です。
基本的に、最終的な解答は、このトポロジカルグラフの葉から最終的な質問に至るまで、ステップバイステップの計算になります。
なお、このパート2全体を通して、モジュロ23の算術を使用していることに気づくかもしれません。つまり、7掛ける22は常にモジュロ23を仮定しています。理由は、再び推論に焦点を当てたいからです。推論にのみ焦点を当てるなら、言語モデルの他の側面、例えば算術を取り除く方がよいでしょう。例えば、多桁の掛け算を捉えたくありません。このようにすれば、言語モデルがこの種のタスクに失敗した場合、それは算術のせいではなく、非常に単純な算術を使用しているからです。制御実験を行いたいのです。算術を非常に単純にし、推論の部分だけを難しくしたいのです。
これが、データがどのように見えるかのおおまかな説明です。細かい点はたくさんありますが、今日の講演で重要なのは2つだけです。
1つ目は、問題の説明の文がランダムにシャッフルされていることです。したがって、モデルが解答を生成するためには、問題を1行ずつ翻訳するのではなく、何を最初に計算すべきか、何を2番目に計算すべきかを把握する必要があります。トポロジカルソートを行う必要があります。
2つ目の重要な点は、解答に必要な操作の数を捉える「op」というパラメータがあることです。例えば、ここでは解答に6つのステップがありますが、そのうちの1つは3つの合計なので、操作の総数は7です。この量は、推論問題の難しさを表しています。
これら2つの点だけに注目してください。では、このデータでGPT-2などの言語モデルを事前訓練してみましょう。
原理的には、このデータは無限のサイズです。しかし、2つのデータファミリーに制限しましょう。1つ目のファミリーは、解答の操作数が15以下の中程度の難しさの数学問題です。2つ目のケース(難しいデータセット)では、操作数が21以下の問題に焦点を当てます。これらのデータで事前訓練を行います。
opが21の場合のデータの難しさを理解してもらうために、例を挙げます。非常に難しいとは言えませんが、人間にとっても最初に何を計算すべきかを把握するのは簡単ではありません。ある程度の心的計算が必要です。
各データセットの解法テンプレートの数も計算しました。中程度の難しさの問題に焦点を当てると、少なくとも70億の解法テンプレートがあります。難しい問題を見ると、少なくとも90兆の解法テンプレートがあります。
したがって、言語モデルがこれから学習できるとしたら、それはいくつかのテンプレートを暗記しているからではなく、本当に問題解決スキルを学習しているからです。
実際、モデルを訓練してテストしました。興味深いのは、訓練セットと同じ難しさの問題に対する分布内テストだけでなく、訓練よりも難しい問題に対する分布外の数学解決能力もテストしたことです。言語モデルが実際に分布外で一般化できることがわかりました。
ここで主張できることは、言語モデルが数学問題を解くスキルを学習する能力を本当に持っているということです。これは単に解法テンプレートを暗記しているわけではありません。
GPT-4が数学問題を解けるのは、解法テンプレートを暗記しているからではないかという議論があります。データを完全に制御していないため、これを証明することはできません。しかし、ここでは完全にデータを制御しています。訓練プロセス中に問題がこのレベルの難しさであることを知っており、テスト時にはまったく異なる、より長い問題でテストしています。したがって、言語モデルが本当に推論スキルを学習する能力を持っていると結論付けることができます。
しかし、彼らは正確に何を学習したのでしょうか?どのようなスキルを開発したのでしょうか?これが、講演の残りの部分で私が気にしていることです。
3.2 推論スキルの分析
3.2.1 レベル1推論:トポロジカルソート
私たちの研究では、GPT2モデル(LlamaやMistralのアーキテクチャでも同様の結果が得られます)をこのデータで訓練すると、すぐに「レベル1」推論スキルと呼ぶものを開発していることがわかりました。
数学問題が与えられたとき、問題を解くための戦略は少なくとも2つあります。1つは「レベル0」推論スキルで、問題文に出てくるすべての可能なパラメータを総当たり的に調べ、最大限計算しようとするものです。おそらく4〜5回のループを経て、すべてのパラメータの値を最大限計算できるでしょう。
一方、「レベル1」推論スキルはより賢明で、トポロジカルソートを行い、最終的な質問に答えるのに不必要なパラメータを完全に無視します。私たちの発見によると、言語モデルは本当にこの「レベル1」推論スキルを学習することができるのです。
モデルは問題を解くだけでなく、ほぼ常に最短の解答を生成することができます。これは、モデルが最初の文を生成し始める前に、どのパラメータが必要で、どのパラメータが不必要かを実際に理解している必要があることを意味します。
これは非常に重要なことです。Chain of Thought(思考の連鎖)を使用することで数学問題を単純なステップに分解できると考えるかもしれませんが、最初のステップを決定する前でさえ、何らかの精神的思考が必要なのです。
3.2.2 レベル2推論:全ペアパラメータ依存関係の計算
私たちは、モデルが解答の最初の文を生成し始める前に、パラメータAが質問に答えるために必要かどうかをモデルが知っているかどうかをプロービングしました。また、解答文の生成過程で、連続する文のペアの間で、パラメータAが次に計算可能かどうかをモデルが知っているかどうかもプロービングしました。
さらに、質問が尋ねられる前でさえ、モデルがパラメータAがパラメータBに依存しているかどうかを知っているかどうかをプロービングしました。
結果、モデルは実際にこれらすべてのことを、99%以上の精度で精神的に計算していることがわかりました。これは、言語モデルがレベル1の推論スキルを開発したことを示しています。
しかし、同じことは実際にもっと驚くべきことを示唆しています。モデルが密かに「レベル2」推論スキルを開発したのです。質問が尋ねられる前でさえ、モデルはすでに問題文に出てくるすべてのパラメータのペア間の依存関係グラフを精神的に事前計算していることがわかりました。
これは、数学問題を解くために本当に必要なスキルではなく、人間が使用するスキルでもありません。人間の場合、質問から始めて、必要なパラメータを逆向きに特定します。
しかし、言語モデルは実際に「レベル2」推論スキルを開発し、すべてのペアのパラメータ依存関係を事前計算しているのです。これは人間が計算する量よりも多くの計算をしています。
私たちはこれをAGIの「G」がどこから来るかについての予備的な信号と見なしています。ここで「G」は、言語モデルが訓練セットで教えられていないスキルに一般化することを意味します。
このスキルは、モデルが後で他のタスクに微調整される際に非常に重要です。依存関係グラフを把握する能力を持っていれば、ここでの数学問題とは異なる多くの他のことに答えることができるからです。
これが、言語モデルが実際にこれらの数学問題をどのように解いているかについての内部推論スキルについての発見です。
3.3 エラーの種類と原因
私たちの研究では、言語モデルが主に2種類の間違いを犯すことを発見しました。これらのエラーは、少なくとも私たちが開発したデータセットにおいて最も一般的なものです。
3.3.1 不必要なパラメータの計算
1つ目のエラータイプは、時折不必要なパラメータを書き下す(計算する)ことです。私たちは先ほど、言語モデルはほとんど常に最短の解答を生成できると説明しました。しかし、問題を極めて難しくする、つまりopの値をできる限り大きくすると、このようなエラーが最終的に発生します。
興味深いことに、このエラーは私たちのGPT2モデル(このデータセットで事前訓練されたもの)だけでなく、GPT-4や4-oでも発生します。実際、先月これらのモデルを私たちのデータセットでテストしたところ、同様の間違いを犯すことがわかりました。
3.3.2 計算不可能なパラメータの定義
2つ目のエラータイプは、モデルが何かを計算し始める、つまりパラメータを定義しようとするものの、そのパラメータがまだ計算の準備ができていないために行き詰まってしまうというものです。具体的には、モデルがあるパラメータを定義しようとしますが、定義した後、そのパラメータがまだ計算できないことに気づいてしまいます。このポイントからエラーが発生し始めるのです。
これら2種類の間違いが、少なくとも私たちが開発したデータセットにおいて、最も一般的なエラーであることがわかりました。
モデルがこのような間違いを犯す正確な理由を理解するために、私たちはさらに詳しく調べました。1つ目のタイプのエラー、つまり不必要なパラメータの計算について考えてみます。先ほど説明したように、モデルは解答を生成し始める前に、すでに必要なパラメータを精神的に事前計算していることを思い出してください。
その結果、このような間違いと、モデルが「必要」と誤って計算したパラメータ(実際のラベルが偽である場合)との間の相関テストを行うことができました。もう一度説明しますと、モデルは解答を生成し始める前に、すでに必要なパラメータの全セットを事前計算しています。そこで、そのセットと実際にモデルが最終的に述べたパラメータのセットを比較すると、非常に高い相関があることがわかりました。
これは、モデルが口を開く(生成を始める)前でさえ、すでに検出可能な間違いがあるということを意味します。つまり、モデルが生成を始める前でさえ、その精神状態(内部状態)をプロービングするだけで、必ず起こる間違いをすでに発見できるのです。
これは、数学の間違いの一部(すべてではないかもしれませんが)が実際に体系的であり、生成プロセスによるものではないことを意味します。一部の人々は、生成の乱雑さによってモデルが間違いを犯すと考えるかもしれません。しかし、これは違います。一部の間違いは体系的なのです。モデルは、生成を始める前、つまり乱数を使用する前でさえ、すでにその内部状態が間違いを犯すことを示しているのです。
2つ目のタイプの間違い、つまり計算不可能なパラメータの定義についても、プロービングと間違いの間に相関関係を発見することができました。モデルが実際にパラメータが計算可能だと精神的に考えているのに、実際にはそうではない場合、モデルはこの間違いを犯す可能性が非常に高いことがわかりました。
したがって、モデルの推論を改善するためには、この「can_next」量を計算する精神的能力を改善することが非常に重要であることがわかりました。この点については、パート3.6でモデルの推論能力を改善する方法について説明する際に詳しく取り上げます。
このように、私たちはプロービングを行って、モデルがどのように間違いを犯すかと、言語モデルの内部状態との関連を明らかにしました。これらの発見は、言語モデルの推論プロセスについての深い洞察を提供し、将来的にはより正確で信頼性の高い言語モデルの開発に貢献する可能性があります。
さらに、これらの発見は実践とも結びついています。例えば、GPT-4やLlamaに「ジョー・バイデンは偶数年に生まれましたか?」と尋ねた場合、Wikipediaのすべての有名人に対してこの質問を試してみると、その答えはほぼランダムなコイン投げと同じくらいの精度しかないことがわかります。
また、ランキングタスク、例えば2人の有名人を比較する場合でも、大規模言語モデルは失敗することがわかりました。例えば、生年が10年以内の有名人を比較する場合、CoT(Chain of Thought)を使用しなければ精度はランダムなコイン投げと同程度になります。ただし、CoTを使用すれば精度は大幅に向上します。
逆検索に関しては、さまざまなタイプの逆検索を設計できますが、私が最も興味深いと感じたタスクは中国の慣用句に関するものでした。中国語には、日常会話で本当によく使われる4文字の慣用句があります。例えば、中国の慣用句の最初の文字をマスクして、GPT-4に欠けている文字は何かを尋ねることができます。中国本土の中国語話者の少なくとも3分の1はこの質問に非常に正確に答えられると自信を持って言えますが、GPT-4にはできません。これは、現在の大規模言語モデルが逆知識検索を行えないことのもう一つの証拠です。
これらの発見は、単なる動物行動学的な観察ではありません。制御された実験を行うことで、これらのバグが簡単に修正できないことを示すことができました。例えば、私たちは昨年9月にこれらのバグを発見しましたが、今日でもあらゆる言語モデルでこれらのバグが見られます。
一方で、これはすべての現代のAIモデルを人間と区別するためのチューリングテストを提供します。例えば、あなたの母親と父親のどちらが先に生まれたかを尋ねられた場合、人間は彼らの誕生日を明示的に言う必要はなく、直接はいまたはいいえと答えることができます。また、誰かの生年が偶数か奇数かを言う場合も、その年を声に出して言う必要はなく、頭の中で計算できます。しかし、大規模言語モデルにはそれができないのです。
これらの発見は、言語モデルの推論能力の限界と可能性を示しており、今後の研究開発の方向性を示唆しています。
3.4 プロービングによるエラー予測
私たちの研究では、プロービング技術を用いて言語モデルのエラーを予測する能力を分析しました。この分析により、モデルのエラーがランダムではなく、システマティックな性質を持つことが明らかになりました。
3.4.1 生成前のエラー検出
私たちは、モデルが解答を生成し始める前に、すでにエラーを犯すかどうかを予測できることを発見しました。具体的には、モデルが内部的に「必要」だと判断したパラメータのセットと、実際に計算されたパラメータのセットを比較することで、エラーを高い確率で予測できることがわかりました。
例えば、このような種類の間違いと、モデルが「必要」と誤って計算したパラメータ(実際のラベルが偽である場合)との間の相関テストを行いました。モデルは解答を生成し始める前に、すでに必要なパラメータの全セットを事前計算しています。そこで、そのセットと実際にモデルが最終的に述べたパラメータのセットを比較すると、非常に高い相関があることがわかりました。
これは、モデルが口を開く(生成を始める)前でさえ、すでに検出可能な間違いがあるということを意味します。つまり、モデルが生成を始める前でさえ、その精神状態(内部状態)をプロービングするだけで、必ず起こる間違いをすでに発見できるのです。
3.4.2 システマティックなエラーの存在
この発見は、言語モデルのエラーの一部(すべてではないかもしれませんが)が実際に体系的であり、生成プロセスによるものではないことを示しています。一部の人々は、生成の乱雑さによってモデルが間違いを犯すと考えるかもしれません。しかし、私たちの研究結果はこれとは異なります。
一部の間違いは体系的なのです。モデルは、生成を始める前、つまり乱数を使用する前でさえ、すでにその内部状態が間違いを犯すことを示しているのです。これは非常に重要な発見です。なぜなら、これはモデルのエラーが単なるノイズやランダム性によるものではなく、モデルの内部表現や推論プロセスに根ざしたものであることを示唆しているからです。
さらに、2つ目のタイプの間違い、つまり計算不可能なパラメータの定義についても、プロービングと間違いの間に相関関係を発見することができました。モデルが実際にパラメータが計算可能だと精神的に考えているのに、実際にはそうではない場合、モデルはこの間違いを犯す可能性が非常に高いことがわかりました。
これらの発見は、言語モデルの推論プロセスについての深い洞察を提供しています。モデルが間違いを犯す原因をより深く理解することで、将来的にはより正確で信頼性の高い言語モデルの開発につながる可能性があります。
4. 言語構造の学習
4.1 文脈自由文法(CFG)の合成データセット
4.1.1 長く複雑なCFGの設計
私たちの研究では、言語モデルがどのように複雑な言語構造を学習し、処理するかを理解するために、長く複雑な文脈自由文法(CFG)を設計しました。具体的には、20以上のCFGを開発しました。CFGからの生成方法を思い出してください。ルートから始まり、各ルールのいずれかに従います(各ルールは一様な確率で選択されます)。次のレベルで生成を続け、最終的に葉に到達します。そして、葉にあるすべての文字を書き出します。これがCFGツリーから生成された文になります。
この合成データでは、意図的に葉(語彙サイズ)を小さくしました。そのため、文は常に「123321」のようになります。これにより、タスクが非常に困難になります。なぜなら、連続する10個程度のトークンを局所的に見ただけでは、それらの親や祖父が何であるかを特定することができないからです。
CFGには「文法」という言葉が含まれていますが、ここで重要な区別をしたいと思います。このように生成されたCFGは、例えば英語の文法よりもはるかに難しいのです。英語の文法では、ほとんどの場合、貪欲な方法で解析できます。例えば、形容詞の後に名詞が続く場合、それらを組み合わせるべきだとわかります。しかし、私たちが生成した合成CFGでは、局所的に連続する数字(連続するトークン)を見ても、どのようにセグメント化し、何が親なのかを理解するために動的プログラミングを行う必要があります。
このCFGツリーから生成できるサンプルの数は10の80乗にもなり、言語モデルがこれを暗記することは不可能です。
4.1.2 局所的曖昧性の導入
私たちのCFGデータセットの重要な特徴は、局所的な曖昧性を導入したことです。これにより、モデルが文の一部だけを見ても、その構造を完全に理解することができないようにしました。
このようなデータセットを用いて、GPTなどの言語モデルを事前訓練し、その性能を評価しました。評価は3つの異なる側面から行いました:
- 有効なプレフィックスを与え、モデルがCFG内に正確に含まれる可能性のある数百のトークンの文を継続して生成できるかどうかをテストしました。
- 多様性と分布の違いを評価しました。KLダイバージェンスなどの指標も測定しました。
結果として、相対注意機構やロータリー注意機構を基にしたGPTモデルは高い精度を示しました。一方、絶対位置埋め込みを基にした従来のGPTモデルの精度は大幅に低下しました。
これらの結果から、ロータリー埋め込みと相対注意機構の間に強い関連性があることがわかりました。実際、Llama/Mistralなどの最先端のモデルで使用されているロータリー埋め込みが、構造の学習に非常に有益であることが分かりました。
さらに驚くべきことに、私たちが「GPT stupid」と呼ぶ均一注意機構を実装したアーキテクチャでも、性能が良好でした。このアーキテクチャを定義してみましょう。GPT stupidでは、複数のヘッドを持ちますが、最初のヘッドは常に直前のトークンを見ます。2番目のヘッドは常に直前の3つのトークンを均一な重み(1/3)で見ます。3番目のヘッドは常に7つのトークンを見て、4番目のヘッドは15トークンを見ます。つまり、指数関数的に成長しますが、すべて均一な注意です。
このGPTでさえ、位置埋め込みを持つ従来のGPTよりもはるかに優れた性能を示しました。これは、将来的に注意機構を取り除こうとする場合(例えば、Mambaのような試み)でも、均一バージョンの注意機構を保持することが重要かもしれないことを示唆しています。実装が非常に安価で、特定のタスクに非常に有用な言語構造を学習できる可能性があるからです。
詳細には触れませんが、ここでの結論は、このGPT stupidでさえ、従来のGPTよりもはるかに優れた性能を示したということです。また、相対注意機構が実際にロータリー埋め込みよりも優れていることがわかりました。これはおそらくあまり知られていませんが、その理由は精度が1%しか向上しないのに対し、実行時間が実際に遅くなるからです。そのため、おそらくロータリー埋め込みの方が好まれますが、実際には相対注意機構の方が性能が良いことを知っておく必要があります。これは実際の事実です。
4.2 モデルアーキテクチャの影響
4.2.1 相対注意機構vs絶対位置エンコーディング
私たちの研究では、モデルアーキテクチャが言語構造の学習に大きな影響を与えることがわかりました。実験の結果、相対注意機構やロータリー注意機構を基にしたGPTモデルは高い精度を示しました。一方、絶対位置埋め込みを基にした従来のGPTモデルの精度は大幅に低下しました。
これらの結果から、ロータリー埋め込みと相対注意機構の間に強い関連性があることがわかりました。実際、Llama/Mistralなどの最先端のモデルで使用されているロータリー埋め込みが、構造の学習に非常に有益であることが分かりました。
さらに、私たちの実験では、相対注意機構が実際にロータリー埋め込みよりも優れていることがわかりました。これはおそらくあまり知られていませんが、その理由は精度が1%しか向上しないのに対し、実行時間が実際に遅くなるからです。そのため、おそらくロータリー埋め込みの方が好まれますが、実際には相対注意機構の方が性能が良いことを知っておく必要があります。
4.2.2 均一注意機構(GPT stupid)の性能
さらに驚くべきことに、私たちが「GPT stupid」と呼ぶ均一注意機構を実装したアーキテクチャでも、性能が良好でした。このGPT stupidの定義は以下の通りです:
- 複数のヘッドを持ちます。
- 最初のヘッドは常に直前のトークンを見ます。
- 2番目のヘッドは常に直前の3つのトークンを均一な重み(1/3)で見ます。
- 3番目のヘッドは常に7つのトークンを見ます。
- 4番目のヘッドは15トークンを見ます。
つまり、指数関数的に成長しますが、すべて均一な注意です。
このGPT stupidでさえ、位置埋め込みを持つ従来のGPTよりもはるかに優れた性能を示しました。これは、将来的に注意機構を取り除こうとする場合(例えば、Mambaのような試み)でも、均一バージョンの注意機構を保持することが重要かもしれないことを示唆しています。実装が非常に安価で、特定のタスクに非常に有用な言語構造を学習できる可能性があるからです。
4.3 CFG木の暗黙的学習
4.3.1 隠れ状態におけるCFG情報のエンコード
次に、GPTがこのCFGデータから学習できるかどうかを本当に発見しようとしました。つまり、事前訓練後に、モデルが密かにCFG木を解析しているかどうかを調べました。具体的には、トランスフォーマーの最後の層の隠れ埋め込みを見て、その隠れ埋め込みがシーケンスの背後にあるパース木をエンコードしているかどうかを確認しました。
短い答えは「はい」です。GPTは単にデータから学習できるだけでなく、実際にCFG木を学習していました。さらに、正しい場所に正しい知識をエンコードしていました。
例えば、赤い箱の知識、つまりこのサブツリーのノードが11で呼ばれ、このノードが7で呼ばれているという情報は、線形変換を介してこの位置の周辺の隠れ状態に局所的に保存されていました。
親や祖父、曾祖父の情報も青い箱の中に局所的に保存されていました。もちろん、将来のことについては、言語モデリングが単方向のデコーダーモデルであるため、例えばここまでの時点でこのノードや、このノードの祖父や曾祖父が何であるかを知ることはできません。そのため、その情報はここには保存されていません。
しかし、私が言っているのは、情報理論的に解析可能なすべての情報が、モデルの隠れ状態にすでに保存されているということです。
まとめると、GPTは合成CFGデータから生成されたデータを学習できるだけでなく、実際に密かにCFG木も学習していたのです。正確な表現をすると、各サブツリーの情報、例えばルートが13と呼ばれているという情報は、そのサブツリーの終了位置の周辺に線形にエンコードされていました。それも非常に正確にです。
4.3.2 GPTとBERTの違い
これは自然なことだと思うかもしれません。おそらく、すべての言語モデルがこのような解析を行えると考えるかもしれません。しかし、BERTやDeBERTa、つまりエンコーダーベースのモデルは、これを行いません。
その理由は、エンコーダーベースのモデルがマスク言語モデリングを使用しているからです。マスク言語モデリングは、例えばランダムに15%のトークンをマスクし、このMLMタスクにおいては、周囲の10または20トークンだけを見ることで、モデルはすでに欠落しているトークンが何であるかを局所的に決定することが非常に簡単です。
しかし、言語モデリングは異なります。例えば、言語モデルがここで次のトークンが何であるかを把握するためには、実際にルートまですべてを解析する必要があります。そのため、言語モデリング(LM)は、マスク言語モデリング(MLM)と比較してはるかに難しいタスクなのです。
これは、実際の生活で私たちがデコーダーベースのモデルを多く使用している理由を説明するかもしれません。エンコーダー-デコーダーを使用することはできますが、おそらくエンコーダーのみのモデルは決して使用すべきではありません。
これは、パート3で知識について話したときに関連しています。そこで、双方向モデルを使用すると、モデルが知識を抽出できないと言いました。その部分は省略しましたが、実際には同様の理由によるものです。
4.4 動的計画法アルゴリズムの自動学習
4.4.1 CFGパーシングの動的計画法
GPTが実際にCFGを学習していることがわかりましたが、それがどのようにしてこれを達成しているのかをさらに調査しました。人間の場合、CFGをパースするためには動的計画法を使用します。具体的には、DP(i,j,a)という配列を定義して、シンボルaがiからjまでの部分列を生成できるかどうかを表現します。
例えば、人間がシンボル18がこの黒い箱を生成できることを証明するためには、まずシンボル13がこの部分列を生成でき、シンボル15がこの部分列を生成できることを証明する必要があります。そして、これを証明するためには、さらにこの2つを証明する必要があります。これが動的計画法と呼ばれるものです。
実は、これらの動的計画法の状態が言語モデルの隠れ状態に局所的に保存されていることがわかりました。さらに、動的計画法には遷移関数もあります。例えば、これら2つの情報を組み合わせて、全体がシンボル18によって生成できるという大きな状態を作るためには、DP状態間の接続を行う必要があります。これがいわゆるDP遷移関数です。
私たちは、言語モデルの注意パターンを見ると、注意が正確にこの目的、つまりDP状態を接続する目的のために機能していることを特定しました。これは、CFGパーシングにおける動的計画法をほぼ完全にシミュレートしています。
4.4.2 生成のための動的計画法
しかし、これは問題の半分に過ぎません。言語モデルがCFGを学習するためには、パーシングだけでなく、CFGから生成する方法も学習する必要があります。これには、おそらく多くの人が知らないもう一つのレベルの動的計画法が必要です。
具体的には、このプレフィックスがある場合、次のトークンとして何を生成できるかを把握する必要があります。または、生成可能な複数のトークンがある場合、それらの周辺確率はどうなるでしょうか。
これを計算するには、実際にもう一つのレベルの動的計画法が必要です。これは再び、ある種のDP状態で表現されます。通常、このように書きます。例えば、このプレフィックスがある場合、このプレフィックスの後にシンボル9と呼ばれるノードが続くことができるかどうかを表します。
これを証明するためにも、再び動的計画法を行う必要があります。例えば、このプレフィックスの後にノード9が続くことができることを証明するためには、まずこの短いプレフィックスの後にノード10が続くことができ、さらにノード8がこの短い部分列を生成できることを証明する必要があります。そして、これら2つの情報を組み合わせて、このプレフィックスの後にノード9が続くことができることを証明し、以下同様に続きます。
このように、非常に非自明な別の動的計画法があり、これにもDP状態とDP遷移関数があります。
4.4.3 注意機構による状態遷移関数の実現
私たちは、これらの種類の遷移関数も、トランスフォーマーの注意機構に事前訓練後に現れることを証明しました。
つまり、トランスフォーマーは本当に非常にスマートなことをしています。要約すると、GPTは非常に長く合成的なCFGを学習でき、これには非常に非自明な計画が必要で、非常に非自明な精神的計算が必要です。これは動的計画法であり、トポロジカルソートよりもはるかに難しいものです。
特に、私たちはプロービングを使用して、DP状態が機構の隠れ状態にエンコードされていることを示し、DP遷移関数が注意機構にエンコードされていることを示しました。これは、言語モデルの推論プロセスについての非常に強力な声明です。
また、BERTはこれを行わないことも示しました。本当に言語モデリングを使用する必要があります。
ここで強調したいのは、この2ステップの動的計画法アルゴリズムが本当に非自明であるということです。私のソフトウェアエンジニアの友人たちに聞いてみましたが、彼らはこのDPを知りませんでした。私がインタビューしたり模擬インタビューをした人々の中で、誰もこの問題を解決できませんでした。
実際、私がこのDPを初めて学んだのは2005年のことでした。それは国際情報オリンピック(IOI)2005年でのことでした。私はその参加者だったので知っていますが、この問題の変形が2日目の最後の問題として出題され、私は解けませんでした。
この観点から、GPT-2でさえ17歳の私の知能を超えていると言えるでしょう。これは実際に、私をこの言語モデルの物理学の分野全体に引き込んだものでした。
実際、GPT-4が非常に高度なことを達成できることに驚きません。なぜなら、GPT-4は間違いなくすべての動的計画法の教科書を見ており、動的計画法が何であるかを知っているからです。しかし、ここで私が話しているのはGPT-2についてです。GPT-2は動的計画法が何であるかを見ていません。GPT-2が見ているのは、ただ「123321」のようなパターンだけです。そして、そのようなデータを解析し、そこから生成するための最適なアルゴリズムを自動的に学習しているのです。
これが、私をこの研究に引き込んだ本当の理由でした。
5. 結論と今後の展望と合成データの重要性
最後に、私は一つのことだけ言及したいと思います。私の心の中では、これは一種の未来の科学だと考えています。なぜなら、私たちは合成データを使用しているからです。1年前に、機械学習で合成データを使用していると友人に告げたら、彼らは笑って立ち去ったでしょう。査読者もあなたの論文を却下したでしょう。
しかし、今はそうではありません。なぜなら、私たちは実生活のデータを使い果たしたと人々が言っているからです。例えば、GPT-4oはおそらくすでにすべてのインターネットデータで訓練されていますが、それでも10ステップ以上の推論を行うことができません。
したがって、この障壁を乗り越えるためには、GPT-5ではないにしても、少なくともGPT-6を訓練するための合成データの準備方法について考える必要があります。しかし、どのようなデータ形式がこれを可能にするのでしょうか?例えば、知識について話すとき、モデルが最大量の知識を獲得できるような知識の正しい形式は何でしょうか?または、モデルができるだけ長く推論できるようにするには、どのような形式の推論問題をトレーニング手順に組み込む必要があるでしょうか?
これらは、AGIに近づく言語モデルを構築するために本当に考える必要がある問題です。