0.前提
個人的な興味に対するメモです。ご容赦ください。
1.背景
Quiitaを見ていても「データサイエンス」のタグが付いた記事をよく見かけます。
データを使って説明できなければなりません~。といった話は、よく聞きます。
ただ、私は、データを使った説明として、過去に次のような説明を受けたことがあります。
以下は、架空の話です。わかりやすくするために、話を作っています。
1.昨年は、顧客からの評価が10点中、5点だった。
2.今年は、顧客からの評価が10点中、7点に上がった。
3.2点増えて大変頑張りました!!
この話を聞いた時に、私は次のように思いました。繰り返しますが、これも架空の話です。
- 昨年から今年にかけて、従来顧客は去っている前提が考慮されていないよなー🤔
- 昨年から今年にかけて、新規顧客が増えている前提が考慮されていないよなー🤔
そもそも評価の低い従来顧客は去っていて、評価の高い新規顧客が入ってきている。
- 今年の評価は10点中7.5点が、昨年の5点相当なのでは🤔?
- 7.5点以上より高くないと評価が上がったと言えないのでは🤔?
- むしろ去年の評価に比べて、今年の評価は、下がっているのでは🤔?
2.感想
私は、次のような感想を持ちました。
- 数字を使えば、真実っぽい説明はできてしまう
- 意図的に、事実を捻じ曲げようと思えば、いくらでも捻じ曲げることができてしまう
3.新たな疑問
ここから本題です。
私は、システム屋・ソフトウェア屋です。
システムやソフトウェアに対するサイバー攻撃は、よく聞きます。
一方、「データサイエンス」に対する攻撃はあまり聞かないなと思いました。
私が無知なだけかもしれません🙇♂️
おそらく「データサイエンス」に対する攻撃も広義のサイバー攻撃なのかな?と思っています。
どなたか名称を知っている方がおられたら、教えてほしいです。
4. データサイエンスへの攻撃
データを使えば、真実に見える説明はいくらでも作れます。
しかし、意図的な操作ばかりでなく、技術的な攻撃も存在します。
ここでは「タイミング」「対象」「目的」「解釈・説明」「主体」の5つの軸で整理します。
軸で切っているため、同じ攻撃が複数回(異なる軸に)出てくることがあります。
なお、以下は、Claudeに出力させています。ご留意ください。
本記事の趣旨は、以下の表を自分のために残すことです。
4.1 タイミング軸(いつ攻撃するか)
| タイミング | 攻撃名 | 内容 |
|---|---|---|
| データ収集時 | 水源汚染 | クローリング対象のサイトに偽情報を仕込み、収集段階でデータを汚染する。LLMの学習データ汚染として実際に問題化している |
| 学習時 | データポイズニング | 学習データに誤ラベルや偏りを混ぜ、モデルの性能を意図的に劣化させる |
| 学習時 | バックドア攻撃 | 特定のトリガー(入力パターン)を与えたときだけ誤動作するよう仕込む |
| 学習時 | バイアス注入 | 特定の属性(人種・性別など)に対して有利・不利な傾向を強化する |
| 推論時 | アドバーサリアル攻撃 | 人間には気づかないほど微小なノイズを加えることで、モデルを誤認識させる |
| 推論時 | 回避攻撃(Evasion) | スパムフィルターなど検知系をすり抜けるよう、入力を巧妙に改変する |
| 推論時 | 分布シフト攻撃 | 学習データと異なる条件・文脈を意図的に与えて誤動作を引き起こす |
| 運用後 | モデル盗用 | APIを大量クエリして挙動を学習し、モデルのコピーを作成する |
| 運用後 | メンバーシップ推論 | そのデータが学習に使われたかどうかを推定する(プライバシー侵害) |
| 運用後 | モデルインバージョン | モデルの出力から、学習に使われた個人データを逆算・復元する |
4.2 対象軸(何を攻撃するか)
| 対象 | 攻撃名 | 内容 |
|---|---|---|
| データ | データポイズニング | 学習データに誤ラベルや偏りを混入する |
| データ | バイアス注入 | 特定属性への偏りを強化する |
| データ | データ汚染 | ノイズ・外れ値を意図的に混入する |
| データ | テストセット汚染 | 正解ラベルやテストデータを汚染し、モデル性能評価を偽装する |
| 入力 | アドバーサリアル例 | 微小ノイズで誤認識を誘発する |
| 入力 | 回避攻撃 | スパム文の微妙な改変などで検知をすり抜ける |
| 入力 | フォーマット操作 | 入力形式の悪用でモデルを誤動作させる |
| モデル | モデル盗用 | APIベースでモデルを複製する |
| モデル | モデルインバージョン | 学習データを出力から逆算する |
| モデル | メンバーシップ推論 | 特定データの学習有無を推定する |
| システム | APIの過剰クエリ | 大量クエリで情報収集・挙動解析を行う |
| システム | フィードバックループ汚染 | ユーザー入力を再学習データとして悪用する |
| システム | パイプライン攻撃 | データ収集・前処理パイプラインそのものを標的にする |
4.3 目的軸(何をしたいか)
| 目的 | 攻撃名 | 内容 |
|---|---|---|
| 破壊(性能劣化) | ランダムポイズニング | 学習データをランダムに汚染し、全体性能を落とす |
| 破壊(性能劣化) | ノイズ混入 | データにノイズを加えて予測精度を下げる |
| 破壊(性能劣化) | 分布シフト誘導 | 学習と異なる条件を意図的に作り出す |
| 操作(標的型) | バックドア攻撃 | 特定トリガーでのみ誤動作させる |
| 操作(標的型) | 標的型ポイズニング | 特定ケースだけ誤った予測を出させる |
| 操作(標的型) | アドバーサリアル例 | 狙った入力で誤認識を引き起こす |
| 情報窃取 | メンバーシップ推論 | 学習データへの個人情報混入を確認する |
| 情報窃取 | モデルインバージョン | 学習データを出力から復元する |
| 知財侵害 | モデル盗用 | APIからモデルをコピーする |
| 信頼性低下 | バイアス注入 | 差別的出力を誘発し信頼を失墜させる |
| 信頼性低下 | レビュー操作 | レコメンドシステムを偽レビューで歪める |
| 信頼性低下 | 公平性の破壊(Fairness Attack) | 特定属性への差別的な出力を意図的に引き起こす |
4.4 解釈・説明への攻撃(Statistical Manipulation)
技術的なサイバー攻撃ではなく、数字・統計を使った意図的な誤誘導です。
学術界では「データの拷問(Torturing the Data)」とも呼ばれます。
| 攻撃名 | 内容 | 例 |
|---|---|---|
| 指標操作(Metric Gaming) | 評価指標だけを最大化し、本来の目的からズレた改善に見せかける | 低評価顧客への営業をやめてスコアだけ上げる |
| 選択的報告(Cherry Picking) | 都合の良いサブグループ・期間・条件だけを抜き出して提示する | 改善が見られた地域だけのデータを報告する |
| シンプソンのパラドックスの悪用 | 集計単位を変えることで、見かけ上の結論を逆転させる | 低評価顧客が離脱し高評価の新規顧客が流入しただけなのに、サービス改善の成果として報告する(冒頭の例の本質) |
| 説明可能性の偽装 | SHAPやLIMEの出力を誤読・誤提示し、モデルの公正性や信頼性を演出する | 都合の良い特徴量の寄与だけを強調して報告する |
| p値ハッキング・多重比較問題 | 有意差が出るまで検定を繰り返したり、一部の結果だけ報告する | 10回検定して1回だけ有意だった結果を報告する |
| ゴールポスト移動 | 都合が悪くなったら評価指標や条件をすり替える | 売上が下がったら「顧客満足度」を新たなKPIとして提示する |
4.5 主体軸(誰が攻撃するか)
| 主体 | 典型的な攻撃 | 備考 |
|---|---|---|
| 外部の攻撃者 | アドバーサリアル入力、APIスクレイピング、水源汚染 | 最も一般的に想定される攻撃者 |
| 内部犯(データ担当者) | データポイズニング、バイアス注入、選択的報告 | 権限を持つだけに検知が難しい |
| ビジネス競合 | モデル盗用、レビュー操作 | 知財侵害・市場操作が目的 |
| ユーザー自身 | フィードバックループ汚染、プロンプトインジェクション | LLMやレコメンドシステムで特に重要な視点 |