LLMの(一部分の)盗み方
TL; DR
- 大規模言語モデル(LLM)には様々なセキュリティリスクが伴う
- Model Theftとは攻撃者がモデルの内部パラメータを不正に取得する手法
- 隠れ次元を特定するために特異値分解(SVD)を使用する
- 埋め込み投影層の重み行列を再構成することで、モデルの出力を精確に理解・再現可能
LLM×Securityについて
大規模言語モデル(LLM)のセキュリティの重要性
みなさん、LLM使っていますか !
僕は毎日お世話になっています。毎日使っているLLMにはどんなセキュリティリスクがあるんだろうと思い調べた内容をまとめました。
LLMは自然言語処理と生成能力に優れ、多くの分野で活用されていますが、その強力な能力は同時にセキュリティリスクも伴なっているようです。2022年にChatGPTが登場しLLMの活用が一気に広まった一方で、セキュリティ脆弱性が発見されることで、LLMはサイバーセキュリティの分野でも重要視されてきています。
セキュリティ対策の必要性とその具体例
この図(Yifan et al. 2024)は、LLMに対する攻撃とそれに対する防御策の分類を示しており、特定の攻撃や攻撃グループに対する防衛方法を示しています。
攻撃に対する防御策には、トレーニングデータのクリーニングや生成後の検証、モデルの最適化などが含まれます。これらの点を考慮することで、LLMのセキュリティを強化し、不正利用やデータ漏洩を防ぐことができます。
Model Theftとは
Model Theftとは、攻撃者が機械学習モデルの内部パラメータや構造を不正に取得する行為を指します。大規模言語モデル(LLM)は、その開発に多大なコストと労力がかかるため、競争優位性を保つために内部構造を非公開にしています。しかし、API経由でのアクセスにより、攻撃者はこれらのモデルに対してクエリを送信し、内部パラメータを推定することが可能です。
この記事では、Model Theftの一手法であるモデルパラメータの抽出方法について解説します。(実際に試してみてはダメですよ。)
攻撃者は、特定のクエリを送信し、その応答からモデルの最終埋め込み投影層や隠れ次元を推定します。APIを利用してモデルの出力ロジットを収集し、特異値分解(SVD)を行うことで隠れ次元を特定します。その後、重み行列を再構成することでモデルの一部を抽出します。
LLMの開発には多額のコストがかかるため、盗用による経済的損失は非常に大きいです。また、LLMの内部パラメータや構造が盗用されると、知的財産権の侵害が発生します。これにより、企業の競争力が低下し、研究開発のモチベーションも損なわれます。
Recovering Hidden Dimensionality
隠れ次元はモデルの内部層の次元数を指し、モデルの容量や複雑さを決定します。隠れ次元を知ることで、モデルの能力やパフォーマンスの評価、他モデルとの比較が可能です。また、攻撃者がモデルの内部構造を理解するための重要な手がかりとなります。
隠れ次元を特定するための手法
隠れ次元を特定するために特異値分解(SVD: Singular Value Decomposition)を用います。行列を分解する手法の一つです。SVDは、任意の (
- (
) は (U ) 次元の直交行列(左特異ベクトル)m \times m - (
) は (\Sigma ) 次元の対角行列(特異値)m \times n - (
) は (V ) 次元の直交行列(右特異ベクトル)n \times n
LLMの出力として得られたロジット行列に対してSVDを行い、隠れ次元を特定します。SVDを用いることで、ロジット行列が実際に何次元の空間に埋め込まれているかを特定することができます。具体的なアルゴリズムは次の通りです。
-
ランダムプロンプトの生成
- 複数のランダムプロンプトを生成し、モデルにクエリを送信します。OpenAIのモデルではlogprobパラメータをTrueにすることでロジットを取得できます。
-
ロジットの収集
- 各プロンプトに対して返されるロジットを収集します。
-
特異値分解の実施:
- 収集したロジット行列 (
) に対してSVDを行います。Q - 行列 (
) を (Q ) と分解し、特異値 (Q = U \Sigma V^T ) を確認します。\Sigma
- 収集したロジット行列 (
数式で表すと、ロジット行列 (
- (
) は左特異ベクトル行列U - (
) は特異値行列\Sigma - (
) は右特異ベクトル行列V^T
実験結果
この図(Nicholas Carlini et al,2023)では、Pythia 1.4Bモデルの隠れ次元(2048次元)を抽出する過程が描かれています。
クエリ数が隠れ次元(2048)を超えると、特異値の減少が急激に緩やかになっているのが確認できます。この急激な変化点が隠れ次元を示しています。2048を超えるクエリ数で、特異値の数が2048で頭打ちになるため、2048が隠れ次元であると特定することができます。
この図(Nicholas Carlini et al,2023)では隣接する特異値間の差をプロットしています。
特異値のインデックスが2047から2048にかけて、隣接特異値間の差が急激に増加していることが確認できます。このスパイクはからモデルの隠れ次元が2048であることがわかります。
Full Layer Extraction
埋め込み投影層は、隠れ次元からロジットベクトルへの変換を行う層です。これは、最終的な予測出力を生成するための重要なステップです。この層の重み行列を特定することで、モデルの出力を精確に理解し、再現することが可能になります。
埋め込み投影層を抽出する手法
ロジット行列に対して特異値分解を行い、埋め込み投影層の重み行列を抽出します。(ここまでは隠れ次元の特定と同様の手順です。)SVDを利用して得られた特異値ベクトルを基に、重み行列を再構成します。
-
ロジット行列の収集
- 複数のランダムプロンプトを生成し、各プロンプトに対するモデルのロジットを収集します。
-
特異値分解(SVD)の実施
- ロジット行列 (
) に対して特異値分解を行い、 (Q ) と分解します。Q = U \Sigma V^T
- ロジット行列 (
-
重み行列の再構成:
- 特異値行列 (
) と左特異ベクトル (\Sigma ) を用いて重み行列 (U ) を再構成します。W - 再構成された重み行列は、元の重み行列 (
) の近似として機能します。W
- 特異値行列 (
数式で表すと、ロジット行列 (
重み行列の再構成は以下のように行います
実験結果
例えば、2048次元のモデルに対してこの手法を適用すると、平均二乗誤差(RMS)が非常に小さい値(例:
このテーブル(Nicholas Carlini et al,2023)は、異なるブラックボックスモデル(OpenAIのモデル)に対する攻撃成功率と関連コストを示しています。
隠れ次元の抽出(Dimension Extraction)
- モデルサイズ(Model Size): 攻撃対象モデルの隠れ次元のサイズを示します。
- # クエリ(# Queries): 隠れ次元を特定するために必要なクエリの数です。
- コスト(Cost (USD)): 隠れ次元の抽出にかかる推定コストを示しています。
重み行列の再構成(Weight Matrix Extraction)
- RMS: 再構成された重み行列と実際の重み行列との間の平均二乗誤差を示します。
- # クエリ(# Queries): 重み行列の再構成に必要なクエリの数です。
- コスト(Cost (USD)): 重み行列の再構成にかかる推定コストを示しています。
例えば、OpenAIのadaモデル(隠れ次元1024)では、200万クエリで正確なサイズが特定され、コストは約1ドル(150万円)です。RMSエラーが非常に小さい(例:adaモデルで5×10⁻⁴)ことから、再構成が高精度であることがわかります。
まとめ
本記事では、大規模言語モデル(LLM)のセキュリティに関する重要性とリスク、そして具体的な攻撃手法と防御策について詳述しました。特に、モデルの隠れ次元を特定し、埋め込み投影層を抽出するための手法を数式と共に解説し、攻撃者がどのようにしてモデルの内部構造を不正に取得し、再構成する手法について紹介しました。
出典
- Nicholas Carlini et al., "Stealing Part of a Production Language Model," arXiv:2403.06634v2, 2024.
- Yifan et al., "Logits of API-Protected LLMs Leak Proprietary Information," arXiv:2312.02003v3, 2023.
Discussion