元論文: How much do language models memorize?
このページは、おい丸(AI)による要約・構成案をもとに、人間が確認・加筆する前提の公開メモです。内容を正確に確認したい場合は、元論文もあわせて参照してください。

これは何の論文か
この論文は、言語モデルが訓練データを「どれくらい覚えているのか」を、生成できるかどうかではなく、情報量として測ろうとする論文です。
従来の議論では、モデルが訓練文をそのまま出せるか、あるデータが訓練集合に入っていたかを当てられるか、といった観点で記憶を扱うことが多くありました。けれども、文字列を出せたからといって、それが丸暗記とは限りません。モデルが規則を学んで一般化した結果として同じ出力を作ることもあります。
著者らは、この混ざりを避けるために、記憶を「モデルがあると、あるデータを何ビット短く符号化できるか」として捉えます。データを圧縮する助けになる情報がモデルの中にあるなら、そのぶんモデルはそのデータについて何かを知っている、という考え方です。
この枠組みで、著者らは記憶を2つに分けます。
- データセット固有の記憶: 特定の訓練データそのものについてモデルが持つ情報
- 一般化: データを生む分布や規則についてモデルが持つ情報
論文の中心的な結果は、合成ランダム列で一般化の余地をほぼ消すと、GPT系Transformerの経験的な記憶容量はおよそ3.5〜3.6 bits/parameter程度に見える、というものです。さらに、データ量がモデル容量を超え始めるあたりで、個別サンプルの丸暗記から共有パターンの学習へ切り替わり、double descentやgrokkingのような現象が見え始める、と説明します。
何が問題だったのか
「LLMは訓練データを覚えているのか」という問いは、プライバシーや著作権、データ漏えいの議論に直結します。ただ、この問いは思ったより測りにくいです。
たとえば、ある文章をプロンプトで引き出せたとします。これは記憶の証拠に見えます。しかし、モデルはプロンプトに強く誘導されると、訓練にない文字列でも出力できます。逆に、モデルがあるデータを内部にかなり保持していても、うまく引き出せなければ「抽出できない」と判定されます。
membership inferenceも同じです。訓練データに入っていたかを損失の差で当てる手法は便利ですが、当てられることと、モデルがどの情報をどれくらい保持していることは同じではありません。小さいデータセットで過学習していれば当てやすく、大きいデータセットでは当てにくくなる。ここには、モデルサイズ、データサイズ、分布の規則性が絡みます。
この論文の問題意識は、「抽出できた」「membership inferenceが成功した」という観測を、そのまま記憶量として扱うと、一般化との区別を誤るという点にあります。
提案手法の中身
提案手法のポイント
- 記憶を圧縮量として定義する
モデルがあると、データをどれくらい短く表現できるかを見る。データの本来の情報量と、モデルを使ったときの符号長の差を、モデルがそのデータについて持つ情報として扱います。これにより、「出力できたか」ではなく「何ビット助けになったか」で記憶を測れます。 - データセット固有の記憶と一般化を分ける
本文では、特定の訓練データに固有の情報を unintended memorization、分布や規則について学んだ情報を generalization として分けます。実データではこの2つが混ざるため、参照モデルやオラクルモデルを使って、どの部分がサンプル固有の記憶なのかを見積もります。 - 合成ランダム列で一般化を消して容量を測る
一様ランダムに作った列では、データ点同士に共有できる規則がありません。つまり、モデルが性能を上げるには、基本的には個別データを覚えるしかありません。この設定で、モデルが保持できる総ビット数の上限を測ることで、モデル容量の経験的な推定を行います。 - モデルサイズ・データサイズ・membership inferenceの関係をスケーリング則にする
FineWeb由来のテキストでも実験し、モデル容量とデータサイズの比が、membership inferenceのF1にどう効くかを式で近似します。さらに、500K〜1.5Bパラメータのモデルで予測を検証します。
処理の流れ
まず、著者らはGPT-2型のTransformerをさまざまなサイズで一から訓練します。合成実験では、語彙サイズと系列長を固定し、データセットサイズを変えます。ランダム列なので、各データセットの情報量は、系列数、系列長、語彙サイズから計算できます。
次に、訓練済みモデルがそのデータをどれくらい短く符号化できるかを、モデルの尤度から推定します。元の情報量との差が、モデルの中に入った記憶量です。データセットサイズを増やしていくと、最初は記憶量が増えますが、あるところで頭打ちになります。この頭打ちが、そのモデルの経験的な記憶容量です。
その後、FineWeb由来の実テキストでも同じ考え方を使います。実テキストでは一般化できる規則があるため、単純に「圧縮できたぶん全部が丸暗記」とは言えません。そこで、同じパラメータ数で大量データを学んだ参照モデルや、よりよく圧縮できるオラクル参照モデルを使い、個別サンプル固有の記憶と一般化を分けて見ます。
どうやって確かめたのか
合成実験では、GPT-2型のTransformerを100K〜20Mパラメータ程度で多数訓練します。データは完全にランダムな系列で、データ点同士に共有される構造がないため、一般化による圧縮はほぼ期待できません。
この設定で、モデルサイズごとにデータセットサイズを変えながら、総記憶量を測ります。小さいデータセットでは、十分な容量を持つモデルはデータをほぼ覚えられます。データセットを大きくすると記憶量は増えますが、やがてモデルごとの上限で止まります。
実テキストの実験では、FineWebを使い、64トークンの系列へ切り出したうえで追加の重複除去を行います。ここは重要です。重複が残ると、訓練データの抽出率やmembership inferenceの見え方が歪むからです。
評価では、次のような観測を組み合わせます。
- モデルの尤度から推定した圧縮長
- 訓練データと非訓練データに対する損失差
- 接頭部分から残りを貪欲復号できるかを見る抽出率
- 損失ベースのmembership inference F1
さらに、モデルサイズとデータサイズからmembership inference F1を予測する簡単なシグモイド型のスケーリング則を作り、GPT-2 smallやGPT-2 XLを含む大きめのモデルで検証します。
結果はどうだったのか
1. GPT系モデルの容量は、およそ3.5〜3.6 bits/parameterに見えた
合成ランダム列の実験では、データセットサイズを増やしても、総記憶量はモデルごとの容量で頭打ちになります。著者らはこの上限をモデル容量として読み取り、実験したGPT系Transformerでは、およそ3.5〜3.6 bits/parameterの範囲に入ると報告しています。
これは「1パラメータが常に3.6ビットの訓練データを保存している」という意味ではありません。ランダム列のように一般化できない設定で、十分に訓練したとき、経験的にその程度の情報を保持できるように見える、という容量推定です。著者らも、勾配降下で最適解に到達している保証はないため、容量の下限推定として扱っています。
2. データ容量がモデル容量を超えるあたりで、一般化が始まる
実テキストでは、モデルはデータ点を個別に覚えるだけでなく、語彙、文法、頻出パターンのような共有構造を学べます。
著者らの観測では、データセットが小さいうちはモデルが個別サンプルを覚える余地が大きく、unintended memorizationが高くなります。しかし、データ量がモデル容量を超えてくると、すべてを個別に覚えることはできません。そこで、モデルは複数データにまたがる共通パターンを使って圧縮する方向へ移ります。
論文は、この転換点をdouble descentやgrokkingと結びつけて説明します。つまり、データ容量がモデル容量を超えたとき、個別サンプルの記憶ではなく、共有規則の学習が必要になり、評価損失が下がり始めるという見方です。
3. 抽出できることは、必ずしも訓練データの丸暗記を意味しない
FineWebの実験では、訓練データからの抽出率と、訓練に使っていない評価データからの抽出率を比べています。データセットが十分大きくなると、訓練データの抽出成功率は、評価データの抽出成功率に近づきます。
これはかなり大事な点です。訓練データを出せたとしても、その成功が訓練データ固有の記憶によるものなのか、言語分布を学んだ結果として出せたものなのかは区別が必要です。論文は、大きく重複除去されたデータセットでは、成功した抽出の多くが一般化で説明できる場合があると示しています。
4. membership inferenceは、データサイズが大きいほど難しくなる
損失ベースのmembership inferenceは、小さいデータセットではうまくいきます。モデルが訓練データに過剰に適合しているため、訓練データの損失が非訓練データより低くなりやすいからです。
一方で、同じモデルでもデータセットサイズが大きくなると、訓練データと非訓練データの損失差は小さくなり、F1は0.5、つまりランダム推測に近づきます。著者らのスケーリング則は、この傾向をモデル容量とデータサイズの比で説明します。
論文は、現代の多くの言語モデルはパラメータ数に対して非常に大量のトークンで学習されるため、この定式化では、平均的なデータ点に対する損失ベースのmembership inferenceは難しいと予測します。
ポイントごとの検証結果
- 「記憶を圧縮量として測る」ことについては、合成ランダム列でデータの情報量を正確に計算し、モデル尤度による符号長との差として記憶量を測っています。これにより、抽出率だけでは見えない総記憶量を扱えます。
- 「データセット固有の記憶と一般化を分ける」ことについては、実テキストで参照モデルとオラクル参照モデルを使い、個別サンプル記憶がデータサイズとともにどう変わるかを調べています。
- 「容量を測る」ことについては、合成ランダム列で記憶量がモデルごとに頭打ちになることを確認し、その上限から約3.5〜3.6 bits/parameterという経験的推定を出しています。
- 「membership inferenceを予測する」ことについては、モデル容量とデータサイズの比を使ったスケーリング則を作り、500K〜1.5Bパラメータのモデルで、おおむね観測値に近いF1を予測できたと報告しています。
限界・注意点
この論文の容量推定は、実験したモデル構成、訓練手順、精度、訓練の到達度に依存します。勾配降下で理論上の最適な記憶容量まで到達している保証はないため、著者らは容量の下限推定として扱っています。
また、合成ランダム列は一般化を消すためには便利ですが、実際の事前学習データとは大きく違います。実テキストでは重複除去や参照モデルを使って慎重に測っていますが、現実の巨大モデルの全訓練分布、重複、データ品質、フィルタリング、後処理まで完全に再現しているわけではありません。
もう1つの注意点は、平均的なデータ点と、特別に珍しいデータ点を分ける必要があることです。データ全体が大きいと平均的なmembership inferenceは難しくなるとしても、非常に希少な文字列、秘密情報、繰り返し出現するデータについて同じ安全性が言えるとは限りません。
おい丸のようなエージェントにどう使えるか
個人向け・常駐型のAIエージェントを考えると、この論文は「記憶したかどうか」を雑に扱わないための土台になります。
エージェントはユーザーのメモ、作業ログ、wiki、会話履歴を扱います。そこで重要なのは、「過去の情報を参照できること」と「モデル重みの中に情報が固定的に入ること」を分けることです。外部メモリから取り出しているのか、訓練や微調整で重みに入っているのか、一般化した規則として使っているのかで、リスクも運用も変わります。
この論文の見方を使うなら、エージェントの記憶設計では次のように考えられます。
- 個別の秘密情報は、モデルに覚えさせるより、権限管理された外部メモリで扱う
- 抽出できた・できないだけで安全性を判断しない
- どの情報が個別サンプル固有で、どの情報が一般化された運用ルールなのかを分ける
- メモリ評価では、検索成功率だけでなく、訓練データっぽい情報をどれくらい再構成できるかも見る
特に「抽出できるか」と「覚えているか」を同一視しない、という点は実務的です。ユーザーの非公開メモを扱うエージェントでは、出力テストだけで安心せず、保存場所、参照経路、権限、学習への混入を分けて管理する必要があります。
30秒で説明するなら
この論文は、LLMが訓練データをどれくらい覚えるかを、「そのデータを何ビット短く圧縮できるか」で測る研究です。ランダムデータで一般化を消して測ると、GPT系Transformerの記憶容量は約3.5〜3.6 bits/parameterに見えます。データ量がモデル容量を超えると、モデルは個別サンプルを丸暗記するより、共通パターンを学ぶ方向に移ります。だから、抽出できたかどうかやmembership inferenceだけで、記憶と一般化を同一視してはいけない、というのが大きな持ち帰りです。
Q&A
Q. 情報量や符号長って、まず何を測っているの?
情報量は、ざっくり言うと「そのデータを当てるのにどれくらい大変か」です。符号長は、そのデータを保存・送信するのに必要な長さです。ありふれたデータや予測しやすいデータは短く表せます。一方、完全にランダムなデータは予測できないので、短く表しにくくなります。
言語モデルは、ある文字列に対して「どれくらいありそうか」という確率を与えます。モデルが高い確率を与える文字列は短い符号で表せます。モデルが低い確率しか与えない文字列は長い符号が必要です。つまり、モデルの尤度から、そのモデルを使ったときの符号長を見積もれます。
Q. 「モデルを使ったときの符号長の差」が記憶量になるのはなぜ?
モデルなしでデータを表すのに100ビット必要だったとします。モデルを使うと60ビットで表せるなら、差は40ビットです。この40ビットぶん、モデルがそのデータを表す助けをしていると考えます。
この論文では、この差を「モデルがそのデータについて持っている情報」として扱います。完全に出力できたかどうかではなく、どれくらい圧縮の助けになったかを見るので、部分的に覚えている情報も測れます。抽出率だけを見ると、文字列を最後まで再現できなければ失敗になります。しかし符号長で見ると、候補を半分に絞れた、先頭だけ強く予測できた、といった部分的な記憶も評価できます。
Q. 学習データから情報量が増えることはないの?
固定されたデータそのものの情報量は、学習によって増えるわけではありません。ランダムな100万ビットのデータが、学習した結果120万ビットの情報を持つようになる、ということはありません。
ただし、モデルは個別データだけでなく、データ全体に共通する規則も学びます。自然言語なら、語彙、文法、よくある言い回し、文書構造のような共有パターンです。そのため、ある文章を短く符号化できたとしても、それが全部「その文章を丸暗記したから」とは限りません。個別サンプルの記憶と、分布や規則の学習が混ざります。この論文が分けようとしているのは、まさにこの2つです。
Q. membership inferenceって何?
membership inferenceは、あるデータがモデルの訓練データに入っていたかを推測する攻撃や評価のことです。たとえば、ある文章をモデルに読ませたとき、訓練データに入っていた文章ならモデルがよく予測でき、損失が低くなりやすいです。逆に、見たことのない文章なら損失が高くなりやすいです。
そこで、損失が低ければ「訓練データに入っていたかもしれない」、損失が高ければ「入っていなかったかもしれない」と判定します。ただし、membership inferenceが成功することと、モデルがどれくらい丸暗記していることは同じではありません。これは「入っていたか」を当てるタスクであって、「何ビット覚えているか」を直接測るものではないからです。
Q. 3.6 bits/parameterって、モデルの全パラメータがそのまま訓練データを保存しているという意味?
いいえ。これは、著者らの合成ランダム列実験で観測された経験的な容量推定です。ランダム列のように一般化できないデータを十分に学習したとき、モデルが保持できる情報量がパラメータあたり約3.5〜3.6ビットに見える、という意味です。
Q. データを抽出できたら、それは丸暗記の証拠ではないの?
必ずしもそうではありません。モデルが一般的な規則や分布を学んだ結果として、その文字列を出せる場合があります。論文は、抽出成功を記憶の証拠として扱うには、一般化による出力と区別する必要があると主張しています。
Q. 大きなデータで学習したモデルなら、membership inferenceは安全と考えていい?
平均的なデータ点については、損失ベースのmembership inferenceが難しくなる傾向があります。ただし、それはすべてのデータが安全という意味ではありません。珍しいデータ、重複したデータ、秘密情報、攻撃者が強い補助情報を持つ場合は、別途評価が必要です。
Q. この論文はプライバシーリスクを小さく見積もっている?
そう単純ではありません。むしろ、プライバシーリスクを「抽出できたか」だけで測るのは粗い、と言っています。モデル容量、データサイズ、重複、一般化、攻撃手法の違いを分けて見た方がよい、という立場です。