おさかなLM も こざかなLM も、学習で 解いている 問題は ひとつだけです。 「ここまでの トークンを 見て、つぎの 1トークンを 当てる」。 文章をつくる ページで 1歩ずつ 見た 動きと、まったく 同じ 問題です。 ちがうのは、学習では 正解が わかっていること。 正解に つけた 確率が 低ければ 低いほど 大きな「罰」(損失)を 受け、 それが 小さくなるように 数字を 少しずつ 動かします。
1. 1つの 会話から、問題が いくつ 作れるか
学習データの 会話を 1つ えらぶと、トークンに 分けて、 すべての 位置について「つぎは 何?」という 問題に します。 下の 色は、学習ずみの おさかなLM が その 問題の 正解に つけた 確率です。 トークンを クリックすると、その 問題で モデルに 見えていたものと、モデルの 予想を 表示します。
いちばん 最初の <|im_start|> だけは、その前に 何も ないので 問題に なりません。
だから 問題の 数は「トークン数 − 1」です。
自分で 書いた 会話で、ぐっぴーが 言いそうにない ことばを 入れると、赤が ふえるのが 見えます。
「わたしは 株式会社の 社長です。」のような 返事では、罰の 平均が
学習前(約 8.3)より 大きくなることさえ あります。ぐっぴーらしい 返事を
自信を 持って 予想して、はずれるからです。
2. 未来を 見せない しかけ
1つの 会話の 問題を 1問ずつ 解いていたら、時間が かかりすぎます。そこで 会話を まるごと 1回で モデルに 通し、全部の 位置の 答えを いっぺんに 出させます。 ただし そのままでは、位置 5 の 問題を 解くときに、正解である 位置 6 が 見えてしまいます。
そこで モデルの 中の 注意(attention)には 因果マスクが かかっていて、 どの 位置も 自分より 前の トークンしか 見られません。 上の 図で 問題を クリックしたとき、うしろが 打ち消し線 で 表示されるのが それです。こうすると、学習の ときに 解く 問題と、 文章を つくる ときに 解く 問題が、ぴったり 同じに なります。
3. 穴うめ型との ちがい
「文の 一部を 隠して 当てさせる」学習も あります。BERT などの マスク言語モデルです。 おさかなLM は そちらでは なく、GPT と 同じ つぎのトークン予測(因果言語モデル)です。
つぎのトークン予測(GPT・おさかなLM)
左だけを 見て、すぐ右を 当てる。全部の 位置が 問題に なる。 そのまま 文章を つくるのに 使える。
穴うめ(マスク言語モデル・BERT)
一部(BERT では 約15%)を 隠し、前と うしろの 両方から 当てる。 文を 理解する 用途には 強いが、左から 順に 文章を つくるのは 苦手。
4. 罰(損失)を 小さくする 方向へ、少しずつ
1問の 罰は −log(正解に つけた 確率) です。確率 100% なら 罰は 0、
50% なら 0.69、1% なら 4.6 と、自信を 持って まちがえるほど 大きくなります。
学習前の モデルは どの トークンにも ほぼ 同じ 確率(1/4096)を つけるので、
罰は 1問あたり 約 8.3 です。
- 何十件かの 会話を まとめて モデルに 通し、全部の 位置の 罰を 平均する
- 誤差逆伝播で、870万個の 数字 それぞれについて「少し 増やすと 罰が 増えるか 減るか」を 計算する
- 罰が 減る 向きに、全部の 数字を ほんの 少しずつ 動かす(AdamW という やりかた)
- 別の 会話で また 1 に もどる
| おさかなLM(Python) | こざかなLM(ブラウザ) | |
|---|---|---|
| 1回に 通す 会話 | 32件 | 8件 |
| くりかえす 回数 | 3,000回 | ゼロからは 400回、つづきからは 60回(えらべる)。土台づくりは 3,000回 |
| 1回に 動かす 大きさ(学習率) | 最大 0.0003 | 最大 0.006(つづきからは 0.004) |
| 動かす 数字の 数 | 約 870万 | 約 17万 |
最初は 小さく 動かし(ウォームアップ)、途中から だんだん 小さくしていきます。 こざかなLMを育てる ページでは、罰が 下がっていく ようすを グラフで 見られます。
5. おさかなLM の 学習の 特徴
ChatGPT のような 大きな モデルは、ふつう 2段階で 学びます。まず インターネットの 大量の 文章で つぎのトークン予測を する 事前学習。つぎに、会話の 形に した データで 同じことを する 指示チューニング。どちらも、解いている 問題は 同じ「つぎのトークン予測」です。
おさかなLM と こざかなLM は、最初から 会話の 形の データだけで 学んでいます。
<|im_start|>user …<|im_end|><|im_start|>assistant …<|im_end|>
という 形に ならべた ぐっぴーの 会話です。だから ぐっぴーは 会話の 形は すぐに 覚えますが、
それ以外の ことは ほとんど 知りません。
こざかなの「学習ずみの 土台」も、同じ 会話データで 先に 学習しておいた ものです。
もう1つ、罰は ユーザーの 発言や テンプレートの 部分も ふくめて 全部の 位置で 数えています
(上の 図で、user や きみの ことばも 色が ついているのは そのためです)。
大きな モデルの 指示チューニングでは、返事の 部分だけで 罰を 数えることも よく あります。