生成AIモデルの
「学習」でほんと
うに記録されるデータ

  • 手書き数字を分類する多層パーセプトロンは、6万枚の画像で学習しても、その中に画像を1枚も持っていません。パラメータの数が画像の情報量よりはるかに少ないので、入りきらないからです。
  • 学習で残るのは、入力を受けて出力を返す関数の形です。データそのものは通り過ぎるだけで、通った跡が数値の並びとして残ります。
  • Transformerでも、記録される場所がパラメータであることは変わりません。規模とつなぎ方が違うだけです。
  • 学習データがそのまま出てくることはありますが、それはパターン学習が届かなかった部分に起きます。

生成AIが学習データを「覚えている」かどうか、という話をよく見かけます。 このとき、モデルの中に元のデータが小さく畳まれて入っている、という絵を思い浮かべる人が多いようです。 その絵が実物とどのくらいずれているのか、いちばん小さなニューラルネットワークから確かめてみます。

関連記事

1. パラメータは学習データより桁違いに少ない

1. パラメータは学習データより桁違いに少ない

MNIST(Modified National Institute of Standards and Technology database)は、手書き数字の画像を集めたデータセットです。 28×28の白黒画像が7万枚あり、そのうち6万枚が学習用。 機械学習を始めるときに最初に触ることが多い、定番の素材です。

これを分類する多層パーセプトロン(Multi-Layer Perceptron)は、入力層784個、中間層128個、出力層10個くらいの構成がよく使われます。 このときのパラメータ数は、784×128に中間層の128、さらに128×10に出力層の10を足して、およそ10万個。 1個を4バイトで持つとして、ファイルサイズは400KBほどです。

学習データのほうは、6万枚×784画素で4,700万画素あります。 1画素1バイトなら47MB。 つまり、モデルは学習データの100分の1以下しかありません。

zip圧縮とは事情が違います。 圧縮は元に戻せることが前提なので、どれだけ縮んでも情報は保たれています。 ニューラルネットワークの学習は元に戻すことを目的にしていないので、入りきらないぶんは単純に捨てられる。 6万枚の画像を1枚ずつ復元するだけの容量が、最初から用意されていないわけです。

1.1. 残るのは画像ではなく写像

では、その400KBには何が入っているのでしょうか。 784個の数字を受け取って、10個の数字を返す。 その変換のしかただけです。

学習の手順は、画像を1枚見せて、出てきた答えと正解のずれを測り、そのずれが小さくなる方向にパラメータを少しだけ動かす、というものです。 これを何万回も繰り返します。 画像はそのつど入力されて、そのつど捨てられる。 残るのは、動かされたパラメータの現在値だけです。

だから、学習が終わったモデルに「3の画像を見せて」と頼むことはできません。 持っていないから。 できるのは、何かを見せられたときに「これは3らしい」と答えることだけです。

1.2. 学習データが刻んだ地形

学習の過程は、水が地面を流れて谷を刻む様子に似ています。 同じ方向に何万回も水が流れると、そこがへこんで、次からは自然にそちらへ落ちるようになる。 地面に水は残っていないのに、流れた履歴が形として残っています。

推論のときには、この地形の上を入力が転がるだけです。 「この画像は学習データのどれに近いか」と1枚ずつ照合しているわけではありません。 6万枚と比べる処理が入っていたら、答えが返るまでに時間がかかりすぎます。

照合が要らないから速い。 そのかわり、なぜその答えになったのかを、元のデータをたどって説明することもできない。 このあたりが、機械学習の使いにくさとして残っている部分です。

2. Transformerでも記録の仕組みは変わらない

2. Transformerでも記録の仕組みは変わらない

生成AIの中核であるTransformerは、MNISTの分類器とは比べものにならない規模を持っています。 パラメータ数は数十億から数千億。 アテンション機構という、入力のどこに注目するかを入力自身に決めさせる仕組みが入っています。

それでも、学習で更新されるものはパラメータで、更新のしかたは勾配降下法です。 誤差を測って、減る方向に数値を動かす。 規模が6桁変わっても、この一点は同じです。

学習データとの比率も、方向としては変わりません。 数兆トークンのテキストを、数千億個のパラメータに通す。 1パラメータあたりに割り当てられる情報量で見れば、余裕があるとは言えない量です。

ここで起きているのが、重ね合わせ(superposition)と呼ばれる現象です。 1つのニューロンが1つの意味に対応しているわけではなく、複数の特徴が同じ次元に折り重なって表現されます。 次元数より多くのものを詰め込むための、いわば無理をした収納。 モデルの中身を人間が読み解こうとしても、どの数字が何を表しているのか見当がつかないのは、これが理由のひとつです。

2.1. 重みとは別の、その場かぎりの記憶

Transformerには、パラメータとは別の記憶の場所があります。 プロンプトに例をいくつか書いて渡すと、その場でパターンを掴んで応答が変わる。 文脈内学習(In-Context Learning)と呼ばれる振る舞いです。

このとき、パラメータは1つも変わっていません。 変わっているのは推論中の計算の途中経過、いわゆるKVキャッシュに保持された値です。 会話が終われば消えます。

長い期間の知識はパラメータに、目の前のやりとりは活性値に。 役割が二層に分かれているのが、MNISTの分類器との違いです。 入力を受けて出力を返すだけの分類器には、この二階建てがありません。

3. 丸暗記はパターン学習の失敗として起きる

3. 丸暗記はパターン学習の失敗として起きる

学習の目的は、個々のデータを覚えることではなく、そこに共通する規則を取り出すことです。 「この曲がり方は3らしい」という規則が掴めていれば、見たことのない筆跡の3にも答えられる。 逆に、規則が掴めないまま個別の例が焼き付いてしまうと、見たことのないものに対応できなくなります。 これは過学習(overfitting)と呼ばれ、設計する側がずっと減らそうとしてきた失敗です。

そのうえで、大規模言語モデルでは、学習データの文章がそのまま出力される例が報告されています。 規則としてまとめきれなかったものが、個別に残ってしまうケース。 パラメータ数が増えるほど、こうした残りかすを抱え込む余地も増えます。

どんな文章が残りやすいのか。 学習データの中に何十回、何百回と重複して現れたものです。 有名な書き出しや、あちこちに引用されて広まった一節。 逆に、1回しか存在しない文章は、その形のまま復元できるほど強くは刻まれません。

人が本を読んだあとの記憶と、残り方の形はよく似ています。 筋は覚えているが、何ページ目に何が書いてあったかは出てこない。 それでも冒頭の一行だけは暗唱できてしまう本が、何冊かある。

一般化と丸暗記は、どちらか一方ではなく連続した幅の中にあります。 モデルの大きさと、学習データの中でその文章が何回現れたか。 その2つで、どのあたりに落ち着くかが決まる。 著作権をめぐる議論が噛み合いにくいのも、この幅の存在が理由でしょう。

数値の集まりでしかないものが、なぜ文章を書けるのか。 仕組みを追ってもこの疑問は消えませんが、少なくとも「どこかにデータが隠してある」という説明ではないことは確かめられます。 何が入っていないかがわかると、何が入っているのかを考える手がかりになる。 そこがおもしろいところです。