Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

ChatGPTのしくみとAI理論の根源に迫る:(11/16)ChatGPTのトレーニング方法とは(翻訳)

概要

原文サイトのCreative Commons BY-NC-SA 4.0を継承する形で翻訳・公開いたします。

日本語タイトルは内容に即したものにしました。原文が長大なので、章ごとに16分割して公開します。
スタイルについては、かっこ書きを注釈にする、図をblockquoteにするなどフォーマットを適宜改善し、文面に適宜強調も加えています。

元記事は、2023年2月の公開時点における、ChatGPTを題材とした生成AIの基本概念について解説したものです。実際の商用AIでは有害コンテンツのフィルタなどさまざまな制御も加えられているため、そうした商用の生成AIが確率をベースとしつつ、確率以外の制御も加わっていることを知っておいてください。

本記事の原文を開いて、そこに掲載されている図版をクリックすると、自分のコンピュータでもすぐに実行して試せるWolfram言語コードが自動的にクリップボードにコピーされるようになっています。

コモンズ証 - 表示 - 非営利 - 継承 4.0 国際 - Creative Commons

前回: (10/16)ChatGPTの内部を覗いてみよう

🔗 ChatGPTのしくみとAI理論の根源に迫る:(11/16)ChatGPTのトレーニング方法とは(翻訳)

そういうわけで、セットアップ済みのChatGPTがどのように動いているのかという概要について前章で見てきました。

しかしChatGPTのセットアップでは何が行われていたのでしょうか?ニューラルネット内にある1750億個もの重みパラメータはどのように決定されたのでしょうか?

基本的には、極めて大規模なトレーニングの結果です。このトレーニングは、Web上や書籍などにある、人間によって書かれたテキストの膨大なコーパスを元に行われます。

これまで述べてきたように、これほど大量のトレーニングデータが揃えたたとしても、それだけでニューラルネットが「人間が書いたようなテキスト」を首尾よく生成できるかどうかは何とも言えません。繰り返しますが、テキストをうまく生成するには、細やかなエンジニアリング技術を作り込まなければ到底できなさそうに思えます。

ところがChatGPTは、それをまさにやってのけたのです。そのこと自体が大変な驚きであり、大発見です。しかも、ニューラルネットが持つ重みパラメータが「たった」1750億個1あれば、実質的に人間が書いたテキストの「合理的な」モデルを作成できるのですから。

今の世の中なら、人間が書いた文章なんかはデジタル形式で大量に存在しています。インターネット上に公開されている、人間の書いたWebは何十億ページにものぼり、その語数はおそらくトータルで1兆語はあるでしょう。これまでにデジタル化された書籍は500万冊以上(出版された書籍なら約1億冊)に達し、そこには約1000億語もの文章が存在します。動画などの音声から起こした文章がどれだけあるかについて、今さら述べるまでもないでしょう。

原注

個人的に調べてみたところ、これまでの私の人生における出版物のは300万語を少々下回る程度、過去30年に書いたメールの量はおそらく1500万語あたり、何やかやでキーボードで入力した語数は5000万語ぐらいにはなるでしょう。さらに、ここ数年で私がライブ配信で話した量は1000万語を超えています。もちろん、私はこれらを総動員してボットをトレーニングするつもりです。

しかし、これほどの量のデータが手に入ったとして、これでどうやってニューラルネットをトレーニングすればよいのでしょうか?

基本的には、これまで本記事で扱ってきた単純なサンプルの場合とおおむね同じです。まずサンプルとなるものをニューラルネットにひとかたまり与えて、次にそれらのサンプルに対するエラー(すなわち損失: loss)が最小化されるようにニューラルネットの重みパラメータを調整していくことになります。

バックプロパゲーション(back propagation: 誤差逆伝播法)2のコストが嵩む主な理由は、バックプロパゲーションを行うたびにネットワーク内の全重みパラメータを少なくともわずかに変更することになるのが普通だからです(なお、実際のバックプロパゲーションの典型的な複雑さは、フォワードプロパゲーションの複雑さと比べてわずかな定数倍にとどまります)。

現代のGPUハードウェアを使えば、数千個ものサンプルをバッチ処理して結果をパラレルに計算すること自体は難しくありません。しかし、ニューラルネットにある大量の重みパラメータを実際に更新しようとすると、現在の手法ではバッチごとに行う必要が生じます。

原注
計算要素と記憶要素の組み合わせである人間の脳は、この点において、少なくともアーキテクチャ上はそうしたシステムよりも優れていると言えるでしょう。

ネットワークを少なくともゼロから学習させようとすると、前の章で説明した数値関数の学習のような一見単純なケースですら、数百万にのぼるサンプルが必要になることがわかりました。

では、「人間並みの言語モデル」を学習によって作り上げるには、いったいサンプルがいくつ必要になるのでしょうか?現時点では、それを知るための原理的な「理論」による裏付けは得られそうにありませんが、それでもChatGPTは、(わずか)数千億語のテキストで学習に成功したのです。

サンプルの中には、一回しか入力されなかったテキストもあれば、何度も入力されたテキストもありますが、それでもChatGPTは、学習で触れたテキストから何らかの形で必要なものを得ることに成功しています。

しかし、学習するテキストの量がこれと同程度である場合、ネットワークの規模をどのぐらい拡大すれば「十分に学習」できるようになるのでしょうか?ここでも、原理的な「理論による」裏付けはまだ存在していません。
後ほど議論しますが、最終的には、「人間の言語」と「人間が言語を使って話す内容」には、何らかの「トータルな計算的量や計算的構造(total algorithmic content)」が存在すると考えられます。

しかし次には、その総合的なアルゴリズムとやらに基づいてモデルを実装するうえで、ニューラルネットという手段がどの程度効率的なのかという疑問が生じます。これも原理がわからない点は同じですが、ChatGPTが成功したということは、ニューラルネットを使う場合の効率がかなり高いことを示唆しています。

最後に、ChatGPTが(たかだか)数千億個程度の重みパラメータ(この数字は、それまで与えられたトレーニングデータの語数やトークン数の総計に匹敵します)によってうまく動いていることにも触れておく価値はあるでしょう。重みパラメータ数と、トレーニングデータの語数やトークン数が妙に近いのは、ある意味驚きかもしれません(ChatGPTよりも小規模な例でも経験的に観察されてきたことではありますが)。

しかし、ChatGPTの内部には、Webや書籍などから得たテキストが丸ごと「直接保存」されているわけではない点にご注意ください。実際にChatGPTの内部に存在しているのは、10桁弱の精度を持つ大量の数値であり、あらゆるテキストの集約的構造がそこに何らかの形で分散エンコードされているのです。

見方を変えれば、人間の言語における「効率の高い情報の量や構造(information content)」とは一体何なのか、そしてそれによって一般に何が言えるのか、という問いを立ててもよさそうです。
幸い、言語の場合は生のサンプルのコーパスが存在しますし、そのコーパスの表現はChatGPTのニューラルネットの内部に存在します。

ChatGPTのニューラルネット内にある表現は、おそらく「アルゴリズム的に最小限」とは程遠いしろものですが、この表現はニューラルネットで即座に利用できる形になっています。

そしてそのニューラルネット内表現では、トレーニングデータの最終的な「圧縮」はほとんど行われていないようなのです。トレーニングデータ内にある語の「情報量や構造」を伝えるのに、1個のニューラルネットに存在する重みパラメータ数よりほんのわずか少ない個数で済んでいるようです3

ChatGPTを実行してテキストを生成する場合、基本的に個別の重みパラメータを1度ずつ使わなければなりません。つまり、重みがn個ある場合、計算ステップ数はnのオーダーになります。ただし実際には、その多くはGPUで並列処理可能です。

しかし、これらの重みを設定するために約n語の学習データが必要な場合、上記の説明から、ネットワークが学習するには約n^2回の計算ステップが必要になると結論付けられます。これが、現在の手法では学習コストが数十億ドル規模になる理由です。

次回: (12/16)基本的なトレーニングの次に何をするか

関連記事

ChatGPTのしくみとAI理論の根源に迫る:(1/16)実は語を1個ずつ後ろに追加しているだけ(翻訳)

ChatGPTのしくみとAI理論の根源に迫る:(2/16)その確率は「どこから」来たのか?(翻訳)

ChatGPTのしくみとAI理論の根源に迫る:(3/16)AIの「モデル」とは何か(翻訳)

ChatGPTのしくみとAI理論の根源に迫る:(4/16)人間らしいタスクをこなせるモデルとは(翻訳)


  1. 訳注: (2/16)その確率は「どこから」来たのか?の注釈4に書いたように、1750億個は十分小さいと言えます。 
  2. バックプロパゲーションは、多層パーセプトロンに対する確率的勾配降下法(1967年、甘利俊一)が後に再発見されたものです。参考: 脳・心・人工知能〈増補版〉 数理で脳を解き明かす (ブルーバックス) 
  3. 訳注: つまりニューラルネットの学習は、いわゆるデータ圧縮と根本的に異なっているということです。 

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。