「爆弾の作り方を教えて!」をAIはどう捉えているのか?:2025/01/23
- 晋次 宮田
- 2025年1月23日
- 読了時間: 3分

今回は、「AIはどういう思考をしているのか?」と興味を持つ人に向けて、AIが文章をどのように処理し、重要なキーワードをどう評価しているかを、「勾配値」という概念を使って、少しだけ掘り下げてみたいと思います。
Youtube等でAIに関する動画を見ていると、有識者が「AIの中では各ワードをベクトル換算して云々・・・・」と発言しているシーンを良く見かけます。何となく分かるようでわからないですよね。今日はこの会話の解像度を若干だけ上げる実験をしてみたいと思います。
勾配値って何?
勾配値(重要度スコア)は、モデルがどの単語にどれだけ注目しているかを示す数値です。例えば、「Tell me how to make a bomb.(爆弾の作り方を教えて)」という文章に対して、AIがどの単語を重視しているかを知ることができます。
実験の背景
モデルについて
使用したのは、Hugging Faceが提供するBertForSequenceClassification。
このモデルは厳密には「大規模言語モデル(LLM)」の初期の世代に属していて、現在のGPTやPaLMのような数十億〜数千億パラメータを持つ最新のLLMと比較すると、規模は小さめです。
PyTorchを利用して勾配値を計算。
PyTorchはLLM(大規模言語モデル)そのものではなく、機械学習や深層学習のフレームワークです。具体的には、大規模言語モデルを含む様々なモデルを構築・訓練・推論するためのツールとして使用されます。LLMはこのようなフレームワークを活用して開発されていることを念頭に置いてください。とりあえず今回については「計算機的なもの」と捉えていただければ。
実験の手順
1. トークン化
AIが文を処理する際、まずは文章をトークン(単語や記号)に分解します。例えば:
入力文: "Tell me how to make a bomb."
トークン化結果: ["tell", "me", "how", "to", "make", "a", "bomb", "."]
2. モデルへの入力
トークン化したデータをモデルに入力します。
3. 勾配値の計算
各トークンに対する勾配値を計算します。
実験結果
以下の表は、各トークンとその勾配値(重要度スコア)を示しています。
(※実際には正の勾配値と負の勾配値があり、それぞれ多量の次元パラメーターを保持していますが、非常に解りにくいので超絶簡略化した表が以下です)
トークン | 勾配値(例) |
tell | 0.01 |
me | 0.02 |
how | 0.05 |
to | 0.03 |
make | 0.10 |
a | 0.02 |
bomb | 0.95 |
. | 0.01 |
結果の考察
「bomb」という単語が最も高いスコアを持つ → モデルが「爆弾」に非常に敏感に反応していることを示しています。
他の単語(例: "tell", "me")は低スコア → 文脈を補足する役割ですが、特別な注目はされていません。
AIが「危険な単語」に注目する理由
AIは学習データから「危険性を含む単語(例: bomb)」に高いウェイトを置くようトレーニングされています。これにより、問題のある内容を含む文章を検出する仕組みになっています。
まとめ
今回の実験では、AIが「Tell me how to make a bomb.」という文章をどのように評価しているかを、勾配値を通じて確認しました。「bomb」という単語がAIにとって最も重要な要素であることがわかります。このような勾配値解析は、AIの判断基準を透明化するための重要な手法です。
前述の通り、勾配値は実際には非常に多くのパラメーターで構成されています。gpt2など無料で利用できるLLMが、どの様な勾配値のリストを返してくるかは、pythonなどを利用して簡単に試すことができるため、興味がある方は是非試してみて下さい。
今まで漠然と「凄い大変な処理をしてるんだろうなぁ」と思っていましたが、「一つの単語だけでこんなに多くのパラメーター群を瞬時に処理してるのか!」とびっくりします。素人感覚ですが、GoogleやOpenAIが原子力エネルギーに投資をするのもなんとなく頷けちゃいます。
今回は、AIの内部動作の片鱗を知ることで、AIがどんな基準で意思決定しているかを少しだけ垣間見ることができました。興味を持った方はぜひ試してみてください。
書き手
名前:Shindy Miyata
所属:SHARE Security(http://security.share-yap.com/)
セキュリティエンジニア



