
5,125 文字

コミュニティの皆さん、こんにちは。グロッキングをどのように解決するかという第2部へようこそ。では、私たちがどのようにしてグロッキングを誘発できるのか、LLMの初期段階におけるトップパフォーマンスフェーズについて見ていきましょう。パート1の動画で、私はグロッキングとは何か、そしてグロッキングの前に何が起こるのかを説明しました。
今、私たちは学習データの100%のパフォーマンスがあり、検証トレーニングのために必要なこの遅延、この追加の努力があることを理解しています。このシンプルなモデルの除算では、パフォーマンスが100%近くまで上がっていきます。
では、なぜこの遅延が発生するのか、なぜこれが起こるのかに焦点を当てていきましょう。単に遅延が発生することを理解するだけでなく、それを抑制するメカニズムも理解しています。しかし、なぜここで発生するのでしょうか。
前回の動画から、ソフトマックス関数における浮動小数点の吸収誤差が、ネットワークが過学習を許可され、赤線で示されるような100%のトレーニング精度に達した場合、グロッキングを妨げることが新しい洞察として分かりました。これが起こると、勾配は前回の動画で示した単純な損失最小化の方向に整列し、ほぼすべての大きな値をスケールアップします。
このスケーリングは、クロスエントロピー損失関数、つまり数値関数を継続的に減少させますが、最終的には指数関数における浮動小数点のオーバーフローを引き起こし、ソフトマックスが小さな項を吸収して、正しいクラスに対して勾配がゼロになります。その結果、学習は突然停止し、LLMは学習を続けることができなくなります。
私たちは緑の線と赤の線の間のこの段階にいるわけです。では、なぜ緑の線が開発者データセットで突然上昇するのでしょうか。前回の動画で見た元の論文と、今日も焦点を当てる、ロンドン帝国カレッジのコンピューティング学部のルーカスによるこの素晴らしい論文を思い出してください。
数学を少し思い出す必要があります。前回のソフトマックスから、クロスエントロピーのリットがあり、実際に正しいクラスからの勾配もゼロになります。そうですね。そして知っておく必要がある2つ目の部分は、発生している単純な損失最小化の方向性でした。
ここで、パラメータθに依存し、特定の次数Lを持つネットワークを記述する関数fがある場合、パラメータのスケーリングがあり、これによってロジットがここで成長することを示しました。前回止めた関数では、ネットワークの関数は単にネットワークの層に応じて特定の係数Cでスケーリングされるということでした。
この遅延成長は、単にこの式のために、クロスエントロピー損失を継続的に低下させます。したがって、これによってクロスエントロピー損失はゼロに向かって誘導されますが、学習は一切行われません。唯一起こっているのは重みのスケーリングであり、これは学習には何も寄与せず、システムに数値的な不安定性を引き起こすだけです。
そして解決策ですが、LLMのトレーニング手順に別の項を組み込んだことを覚えていますか?重み減衰の項です。使用する人もいれば、使用しない人もいます。私は使用しています。元々、重み減衰はニューラルネットワークトレーニングにおいて過学習を制御するための正則化テクニックでした。これは今やパラドックスとなっています。
これは今、別の効果を持っています。パラメータが大きくなりすぎるのを防ぎ、トレーニングデータの記憶ノイズを防ぐために、この重み減衰部分、損失関数に導入するこのペナルティは、なぜ絶対に不可欠なのかを理解する必要があります。
クロスエントロピーと重み減衰の間に、今や繊細なバランスがあるのです。したがって、総損失関数として、クロスエントロピー損失関数にこのペナルティ項、重み減衰ペナルティ項を加えると、この方程式に驚くべき動的な性質が生まれます。より多くの学習ステップ、より多くのトレーニングステップを経るにつれて、このパラメータを見出すと、この方程式の2番目のパラメータが今や支配的なパラメータとなります。
なぜなら、ロジットが指数関数的に成長するにつれて、このシー損失はほぼゼロに近づきますが、これは同時に補正項が支配的になり、より大きくなっていくことを意味します。そして突然、この方程式の支配的なプレイヤーとなるのです。これは美しくないでしょうか?
これによって、緑のトレーニング線の遅延発生を見る理由が説明されます。パラメータθが十分に大きくなると、重み減衰項は、トレーニングシステムのクロスエントロピー損失関数を縮小する最適化問題を継続することによる利得と比較可能になるか、さらには大きくなります。
これは、純勾配が今や古いスケーリング方向から離れることを意味します。その方向は、LLMの追加の学習フェーズを許可しませんでした。そのため、モデルは別の勾配方向、定数因子でスケールアップするだけではなく、パラメータの大きさをさらに増大させることなく、LLMの一般化能力、学習能力を実際に改善する勾配方向を探すことを強制されます。これは美しくないでしょうか?
このように2つの効果が組み合わさって、グロッキングの完全な理解が得られました。ソフトマックスの崩壊とこの特定の勾配方向によって、なぜそれがそんなに長い間遅延されるのかを理解するだけでなく、なぜそのような長期の無反応期間の後に突然トレーニングが始まるのかも理解できます。
これが2つの要因の問題であることを理解したことで、2つの要因による解決策を見つけることができます。グロッキングの発生をもっと早い段階で加速することができるのです。時間やエネルギーなどを無駄にする必要がありません。
前回の動画で示した古典的なソフトマックス関数を思い出してください。損失と勾配をゼロにするソフトマックスですが、これが解決策です。古典的なソフトマックス関数の代わりに、大きなx項に対してより遅く成長し、負のx項に対して消失しない別の特定の関数で、ソフトマックスの指数関数を置き換えるのです。
選択肢は多くありますが、先ほどお見せしたロンドン帝国カレッジの論文では、この特定の選択肢を採用しました。これをソフトマックスではなく、この特定の形式を持つスターブルマックス関数として定義しています。
これは今、ソフトマックス関数と同様にロジットから確率分布を形成しますが、より大きなロジットに対してより穏やかな成長を示します。これは美しくないでしょうか?システムが失敗する根本原因を理解すれば、解決策がいかに単純かがわかります。
私たちは何を達成したのでしょうか?シンプルです。もはや正の暴走がなく、古典的なソフトマックス関数からの指数関数的な和よりもはるかに小さい和になるため、オーバーフローのリスクが減少します。これは美しくないでしょうか?
さて、2つの部分があると言いましたね。2つ目の部分は、システムの勾配の単純な損失最小化方向でした。この特定の方向への整列は、単なる数値的なスケーリングに相当し、予測を変更することなくクロスエントロピー損失を減少させ続けます。つまり、一般化学習性能は、損失の数値が下がるだけで、パラメータのスケーリングによって達成されるものの、新しい表現を学習することによっては達成されません。
では、私たちは何をするのでしょうか?理論物理学の時間です。特定の勾配がある場合、想像できる最もシンプルなことは何でしょうか?これを2つの部分の和として考えることができます。ここで幾何学について考えてください。θに平行な部分と、直交する部分があります。直交性が定義される数学的空間がある場合ですが、これについては後で詳しく説明します。
タスに平行な項と、単に直交する項があります。これは美しくないでしょうか?そして、なんという偶然でしょう。平行な部分は、単に重みをスケーリングし、LLMの勾配方向に問題を引き起こす方向です。ロジットの暴走的な成長、スケーリングを引き起こすのです。そして、解決策が分かりますか?私たちは直交部分のみを使用します。
驚くべきことに、直交部分はこの信じられないほど単純な公式で定義されます。したがって、今や使用する直交勾配が定義されました。これにより、パラメータのスケーリングに向かう平行な勾配成分の問題を回避することができます。
この直交分解は単なる一つの方法、最もシンプルな方法に過ぎませんが、その美しさは抽象的なメカニズムにあります。アダム、ATMWなど、異なる最適化技術の上に実装することができます。なぜなら、それは単に勾配を重みベクトルに投影し、それによって単純な損失最小化を防ぐからです。これは美しくないでしょうか?
このような単純な解決策、7ヶ月前や2年前にこの問題を理解していれば、もっと早く解決策を見つけることができたかもしれません。ある研究グループが、主流やトレンドに従うのではなく、詳細に検討し、論文を書き、なぜこれが起こるのかを世界に説明することを決めたのです。素晴らしい仕事です。
さて、動画の最後に要約しましょう。最初の要素は、ソフトマックスの代わりにスターブルマックスと呼ばれるものです。これは単に、古典的なLLMでのソフトマックスの崩壊を止め、トレーニングデータセットのみの古典的なトレーニング精度を超えて学習を継続させる効果があります。
そして2つ目の部分は、直交勾配最適化です。モデルが完璧なトレーニング精度に達すると、ロジットのスケーリングがブロックされます。そのため、システムは最適化の数学的手順において、パラメータ空間で真の一般化方向を見つけなければならず、ロジットをスケーリングすることはできません。
これがすべてです。シンプルで美しく、驚くべきことです。これらの2つの方法は、グロッキングが失敗する数値的および最適化的な根本原因に取り組みます。前回の動画では、根本原因がソフトマックスの崩壊とロジットのインフレーションであることを示しました。
これにより解決策が得られ、LLMが極端に長い遅延フェーズを経ることなく、意味のある特徴を継続的に学習することが可能になります。その後、突然LLMのパフォーマンスフェーズが始まるのです。これは美しくないでしょうか?
このグループによる論文を是非読むことをお勧めします。実装の詳細や、マニフォールド上での方向の変化についての更なる検討など、より多くの技術的な詳細が記載されています。数学的な証明のアイデアも豊富です。本当にこれは可能なのか、どうすればできるのか、この方法論の欠点は何かなど、詳しく説明されています。
私はここで主要な洞察と主要なアイデアをお伝えしただけです。GitHubにコードも公開されていますので、そちらで試してみてください。より深い学習モデル、言語モデルを持つようになった今、トランスフォーマーアーキテクチャの層の相互作用にこれほどの複雑さがある中で、グロッキングは一般的な現象なのか、LLMのより早期のパフォーマンスフェーズに向けて最適化できるのか、という疑問が残っています。
異なる複雑な公開LLMでこれをどのように実現するかについては、多くの未解決の問題があります。重みにアクセスできなければ、最適化のチャンスはまったくありませんが、これは大規模言語モデルと小規模言語モデルの性能を改善するための素晴らしい洞察を与えてくれると思います。
私が話している間も、まさにこのコードを適用して、LLMのグロッキングフェーズをより早期に、より良いパフォーマンスで開始できるようにしている2つの小規模言語モデルがあります。私にとって、この新しい方法論で実際に試してみて、経験を積むための最初の日々です。
しかし、これは本当に美しい例だと思います。世界中の誰も理解していない問題に遭遇したとき、それを見つめ、自分のアイデアを持ち、それを実装し、検討し、研究を行い、シンプルで美しい解決策を見つけるのです。
ソフトマックスの代わりにスターブルマックスを使用し、直交勾配を使用して、システムに単純な解決策、素朴な解決策から離れ、LLMの真の学習プロセスに向かわせるのです。
この動画はここまでです。楽しんでいただけたと思います。この論文に私は魅了されました。ぜひ読んでみてください。20分の動画ではお伝えできない、より多くの新しい事実を発見することができるでしょう。このチャンネルを購読して、次の動画でお会いできれば嬉しいです。


コメント