ピンクの象
https://gyazo.com/77fcac0bb1f5d8fae7007b0b4219fb20
https://gyazo.com/3c69733635d3aa143b9f91f31a33883a
AIエージェントがプロンプトの指示を守ってくれない!と言っている人、「ピンクの象」問題の罠にはまっていませんか?LLMは「Don't」の否定形の対応が本質的に苦手です。やってほしくないことを言葉にした上で否定するのは、それをやってほしいと言ってるようなもの。
そうなんだ。全然知らなかった。「すんな!」「すんな!」って言ってるのにもち.iconが関西弁使いまくるのはそういうことか。
なぜ否定文をうまく扱えないのか
単語埋め込み(トークン埋め込み)ベースの言語モデルは構造上、否定文を扱うのが苦手です。
言語モデルはアテンションや MLP などでこれまでの文脈を一本の埋め込みベクトル z にまとめ、これを出力単語埋め込み層に入力し、softmax 関数 exp(z⊤vi)∑jexp(z⊤vj) で単語を予測します。
「日本の首都は〇〇ではない。」の〇〇の正解は、東京以外のあらゆるものです。なので、この softmax の結果は東京だけ 0 をとり、京都・岡山・名古屋・札幌などに値を持つのが正解です(りんごやバナナなどにも値を持つべきかもしれません)。しかし、これを実現するためには、文脈ベクトル z は v京都 や v岡山 や vバナナ とは近く、v東京 とは遠くなければいけないわけですが、v京都 と v東京 は近くにあるため、v京都 をはじめとするあらゆるものに値を立てて、v東京 にだけ値を一切立てないというようなことは不可能です。どれだけ前段のアテンションや MLP などのエンコーダーが強力であっても、そもそもそのような z が存在しないので適切な埋め込み z が見つかるはずがありません。https://joisino.hatenablog.com/entry/negation#なぜ否定文をうまく扱えないのか