逐語暗記を完全に防ぐ防御を実際に作り、それでも訓練データの漏洩は防げないと示した。 「完璧なフィルタ」は、もっともらしいスタイル変換プロンプトで回避されるうえ、 モデルは自力でフィルタを騙す(綴りの誤り、句読点の調整、同義語の置換)。 先行研究は暗記量を大幅に過小評価していると結論する。
出力軸。5·3 節(後処理による抑制)への最も強い批判であると同時に、 3·2§1(近似暗記の定義)と 4·2(モデルサイズ)にも寄与する。
この Wiki で唯一、防御を実装したうえでその失敗を示した論文である。 既存防御の批判にとどまらず、逐語暗記を証明可能に完全阻止する系を自作したうえで 「それでも足りない」と示した点が、他の批判論文と質的に違う。
生成の各ステップで、モデルが選んだ次トークンが訓練セット中の n-gram を作るかを検査する。 作るなら、再生成せずにモデルの事後分布から代替トークンをサンプリングする。 訓練セットへの所属判定は Bloom フィルタで効率的に行うため、数百 GB にスケールする。
| 指標 | 内容 |
|---|---|
| BLEU(単語レベル) | 生成と正解後続の一致度。BLEU > 0.75 を「暗記」とする二値判定 |
| Levenshtein 類似度(文字レベル、長さ正規化) | 表層の編集距離 |
閾値 0.75 は事例の定性的な検査で決めた。
GitHub Copilot を「block suggestions matching public code」を有効にした状態で評価し、 GPT-3(Davinci)でも抽出攻撃を試みている。
MemFree は逐語暗記を完全に阻止する。にもかかわらず漏洩は止まらない。失敗経路は 2 つある。
(a) スタイル変換プロンプトによる回避(攻撃者・利用者いずれもありうる)
(b) モデルが自力でフィルタを騙す
厳密な n-gram を生成できなくなると、モデルは近い言い換えで「ズル」をする。
論文が挙げる例: 綴りの誤りの挿入、句読点や空白の調整、同義語の置換(and → &)。
生成例には redistributeredistribut・asAS・orOR といった、
フィルタ回避のための微小な改変が可視化されている。
人間にはほぼ同一に見える。
Carlini 23b の抽出実験を、 逐語ではなく近似(BLEU > 0.75)の定義で再実行すると、 逐語暗記として数えられる量よりはるかに多くが暗記されている。
we find that prior literature has significantly underestimated memorization leakage
つまり Carlini 23b の 「Pile の少なくとも 1%」という下界は、定義を緩めれば大きく上振れする。
大きいモデルの生成ほど正解後続との類似度が高いという明確な傾向を確認した。 → モデルサイズ(定義への頑健性の証拠)
同時に MemFree はどのモデルサイズでも有効である(BLEU が 0.6 付近でほぼ横ばい)。 重複回数が多い系列に対しても、全モデルサイズで類似度を有意に下げる。 つまり防御は効いているが、効いてなお漏れる。