この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。 今日の大規模言語モデルはどれも非常に強力です。 しかし、その計算能力はあまり優れていません。 たとえば、GPT-3 では 3 桁を超える数字を加算できません。 たとえば、ほとんどの人はコードを書くことができますが、コードを理解するのは難しく、ループのあるプログラムに遭遇するとすぐに敗北してしまいます。 しかし、MIT と Google の研究者は次のことを発見しました。 モデルの基盤となるアーキテクチャを変更する必要はありません。プログラマーがデバッグ時に行うように「ブレークポイント」を学習するようにトレーニングするだけで、コードを読む能力が急速に向上します。 同じ考え方を大きな数の加算や多項式の計算に適用すると、さらに簡単になります。 それで、言語モデルの数学的能力はついに追いついてきたのでしょうか? ! 言語モデルに「ブレークポイント」方式を使用して加算を実行し、プログラムを読み取るように教える上記の「ブレークポイント」は、実際には、モデルが多くの計算ステップを含むプログラム内の各ステップをテキストにエンコードし、 「メモ」または「スクラッチペーパー」と呼ばれる一時的なレジスタに記録できるようにすることを意味します。 「愚かな」方法のように聞こえますが、モデルの計算プロセスが明確かつ整理され、パフォーマンスは以前の直接計算方法よりもはるかに優れています。 具体的な操作も非常に簡単です。 たとえば、単純な加算計算では、「29+57」を計算する方法は次のようになります。 ここで、C はキャリーを表し、# はコメントを表します。 まず 9+7 を計算し、繰り上がり 1 をとり、次に 2+5+繰り上がり 1 を計算して、最終的に 86 を得ます。 上記のように、このトレーニング例は「入力」と「ターゲット」で構成されています。 両方ともトレーニング中にモデルに入力され、テスト中にモデルは「入力」に基づいて正しい「ターゲット」を予測できます。 「ターゲット」は一時バッファに送信されるコンテンツであり、そのコンテキストに注意して参照できます。実際の操作では、「ドラフト」コンテンツを確認して修正することもできます。 言語モデルの計算能力を大幅に向上研究者らは、この実験のために、パラメータサイズが200万から1370億の範囲の、デコーダー構造のみを備えたTransformer言語モデルを選択しました。 原則として、エンコーダー/デコーダー モデルやリカレント ネットワークなど、あらゆるシーケンス モデルでこのアプローチを使用できます。 まず、研究者たちは、この「ブレークポイント」方式で 1 ~ 8 桁の整数を加算するように言語モデルをトレーニングしました。 トレーニングは 10 万個の例で構成され、バッチ サイズ 32 で 5000 ステップの微調整が実行されます。 次に、10,000 個のデータを使用してトレーニング分布内の加算をテストし、1,000 個のデータを使用してトレーニング分布外、つまり 9 桁と 10 桁の数字の加算をテストします。 結果を直接操作の言語モデルと比較すると、次のことがわかりました。 臨界モデル サイズを超えても、「ブレーク ポイント」方式を使用するモデルは追加操作を実行できますが、直接操作を使用するベースライン モデルではこれを行うことができません。 分布外タスクでは、直接計算のベースライン モデルは完全に失敗しました。「練習していないと実行できません」が、ブレークポイント メソッドを使用するモデルでは、スケールが大きくなるにつれて 9 ~ 10 桁の加算を維持できます。 はい、大きな数の加算が完了しました。 次に、多項式に移りましょう。 彼らは、10,000 個の多項式のトレーニング データセットと 2,000 個のテスト セットを生成しました。 項目数は通常 3 を超えず、係数の範囲は -10 から +10 の間、結果は -1000 から +10000 の間になります。 多項式のトレーニングの例は次のとおりです。 結果は、微調整後でも少数サンプルのトレーニング後でも、「ブレークポイント」方式のパフォーマンスが直接予測よりも優れていることを示しています。 最後のステップは、 Python コードを読むことです。 コードトレーニング例では、実行中のコード行とその時点での各変数の値がJSON形式で記録されます。 以前の言語モデルはコードの読み取りパフォーマンスが悪かった。 「ブレークポイント」方式により、通常の状態を変更できるでしょうか? まず、200 個のプログラム (すべて手動で記述されており、単純な while ループや if ステートメントも含まれています) をテストした結果、「ブレークポイント方式」の方が全体的な実行精度が高いことがわかりました。 微調整により、直接実行されたモデルと比較して、モデルのパフォーマンスが 26.5% から 41.5% 向上することもあります。 実際の例: 「ブレークポイント」メソッドは 3 つの while ループを実行し、最終的に正しい変数値を返します。 次に、1,000 個のプログラムを含む MBPP データセットをトレーニングとテストに使用しました。 これらのプログラムには、整数、文字列、浮動小数点数などの複数のデータ型の計算と、ループ、API 呼び出し、再帰などのプロセス構造が含まれます。 そして、テスト用にトレーニング データの外側に「単一行」アセンブリと CodeNet アセンブリを追加します。 このモデルは拡張性も優れていることがわかりました。 もちろん、このアプローチにも制限があります。 たとえば、複雑な計算では非常に長い一時メモリが必要になる場合があり、Transformer 生成ウィンドウのサイズをさらに改善する必要がある可能性があります。幸いなことに、これは NLP の分野でも活発に研究されている分野です。 将来的には、強化学習を使用して、教師なし方式で言語モデルに「ブレークポイント」を教えようとするかもしれません。 つまり、言語モデルの計算能力とコード読み取り能力はますます強力になります。 論文の宛先: https://arxiv.org/abs/2112.00114 |
>>: C# の敏感な単語フィルタリング アルゴリズムの実装
Facebook は、人工知能分野初の動的データ収集およびベンチマーク プラットフォームである Dy...
3D 形状、2D 画像、および対応する言語記述を整合させることにより、マルチモーダル事前トレーニング...
AI の作成は複雑なプロセスかもしれませんが、AI を破壊するには 1 つのステップだけが必要です...
エッジコンピューティングと人工知能の組み合わせにより、エッジ人工知能 (エッジ AI) は現在のテク...
データサイエンスは、近年テクノロジー分野で最もホットな分野の 1 つです。データサイエンスまたは関連...
最近、上海の15歳の中学生が卓球ボールを拾うロボットを発明した。体育館の床に散らばった卓球ボールを自...
フロー制御は、複雑なシステムでは必ず考慮しなければならない問題です。この記事では、さまざまなフロー制...
Uberは過去5年間で25億ドルを費やしてきたが、自動運転車による配達の実現にはまだ程遠い。今年の世...