おさかなLM について

ここでは、あなたのブラウザの中だけで、ちいさな言語モデルを育てます。 サーバーも、GPUも、アカウントも要りません。 まっさらな状態から育てることも、学習ずみの土台に つづけて教えることもできます。 さらに自分で考えた ぐっぴーの会話をまぜて、 それが どのくらい 返事に あらわれるかを 確かめられます。

① どうやって 育てるか

おなじモデル(2層・約17万パラメータ)を、どこから 始めるかの ちがいです。

② ぐっぴーに おしえたい 会話

1行に1つ、きみの ことば → ぐっぴーの こたえ の形で書きます。 からっぽにすれば、もとの会話だけで学習します。
学習の1回ぶんに 自分の会話を まぜる わりあい。 高いほど 強く おぼえるが、もとの ぐっぴーらしさを わすれやすい
多いほど かしこくなるが 時間がかかる(400 で およそ 1分半)
ぐっぴーらしさの土台になるデータの量
はじめて動かすときは、モデルとデータの読み込みに数秒かかります。

なにが おきているのか

ゼロからのとき、最初のモデルの中身は でたらめな数字です。だから 最初の返事は 意味のない文字の ならびになります。学習が進むと、 「この ことばの つぎには この ことばが きやすい」という規則が 少しずつ 数字に 書きこまれていきます。

つづきからのときは、その規則が すでに 書きこまれた状態から 始めます。 だから 最初の返事から もう さかなっぽい日本語です。あとは あなたの会話を 足すだけなので、60ステップ・約15秒で 済みます。ゼロからの 400ステップと くらべると 7倍ほど速いのに、教えた会話は むしろ よく覚えます(実測で 損失 0.129 対 0.294)—— 土台づくりに 使っていた時間が まるごと あなたの会話に まわるからです。 これが ファインチューニングで、 世の中の AI も ほとんどが この作りかたをしています。

じぶんの文章の わりあい を大きくすると、おしえた会話は よく出てくるように なります。ただし 上げすぎると、そればかり言うようになります (過学習)。もとの会話を わすれてしまうことは 破滅的忘却 と呼ばれます。グラフの オレンジの線(もとの会話の損失)が 上がっていくのが、まさに それです。 自分の会話の損失は 下がるのに、もとの会話の損失は 上がる —— その ちょうどいい ところを さがしてみてください。

速さのために、このページのモデルは 本家より ずっと小さく (約17万パラメータ、2層)、出力する語彙も 学習に使う文章に出てくるトークンだけに しぼっています。 本家のチャットは 870万パラメータで、はるかに 長く学習したものです。 トークン可視化 と あわせて見ると、「モデルが 知らない文字ほど 覚えるのが たいへん」なことが よくわかります。

モデルは 文章を しまっているのか?

「学習データが そのまま モデルの中に入っていて、質問されたら その中から 探して 返している」——これは よくある誤解です。 じっさいには、ちがいます。

学習が終わったモデルの中身は、数字の並びだけです。文章は 1文字も 入っていません。学習を動かすと 「④ モデルの中身を のぞく」に その数字が そのまま 出るので、見てみてください。 ためしに このサイトのモデルのファイル (model.onnx)の中を 探してみると、学習に使った会話は 1つも 見つかりません。学習に使った会話ファイルを ぜんぶ 消しても、 モデルは そのまま 動きます。

返事のつくりかたも、探して取り出すのでは ありません。 「つぎに来る ことばは なにか」を 1トークンずつ 予想して、つなげているだけです。 だから 学習データに 無かった 組み合わせも 出てきますし、 とちゅうで 話が おかしくなることも あります。 データベースの検索なら、こういう ことは 起きません。

でも「丸暗記」は 起きる

ややこしいのは、覚えてしまうこと自体は あるという点です。 上の表を 見てください。こざかなモードは 学習データ 1トークンあたり 20個ほどの数字を持っています。データより モデルのほうが 大きいので、 覚える余地が たっぷり あるのです。だから「じぶんの文章の わりあい」を 上げると、 教えた文を そのまま 言うようになります。

これは モデルが 大きいか、データが 少ないときに 起きます。 じっさいの 大きなモデルは、逆です。

こざかな 1トークンあたり 約20個の数字
おさかな 1トークンあたり 約7.5個
GPT-3 1トークンあたり 0.58個

GPT-3 は、読んだ 言葉の数よりも 持っている数字のほうが 少ないのです。 1トークンにつき 1個も 使えません。だから 読んだ文章を しまっておくことは そもそも 物理的に できません。かわりに、たくさんの文章に 共通する 言葉の ならびかたの きまりを 覚えるしかない。それが「学習」です。

まとめると——モデルは 文章の入れ物ではなく、 ことばの つながりかたを 数字にしたものです。 小さいモデルに 少ないデータを くり返し 見せると 丸暗記に 近づき、 大きなデータに対しては きまりを 学ぶしかなくなる。 その境目を、このページで 実際に 動かして 確かめられます。