Episode 55: 間違いを犯すAI – AIの脆弱な側面
AIと機械学習は、商品のレコメンデーションから、カスタマーサポートのチャットボット、SiriやAlexaといったバーチャルアシスタントに至るまで、私たちのオンライン体験に関与しています。これらはビジネスの可能性を広げる強力なツールですが、強力だからといって完璧というわけではありません。サイバーセキュリティサウナのEpisode 55では、エフセキュアのデータサイエンティストであるSamuel Marchal(サミュエル・マーシャル)と、セキュリティコンサルタントのJason Johnson(ジェイソン・ジョンソン)に登場いただき、機械学習のセキュリティ上の問題点とその対処方法について語っていただきました。
Janne: サイバーセキュリティサウナにようこそ。
Samuel:こんにちは Janne。
Jason: こんにちは。
あなた方は、現状の機械学習にはセキュリティ上の課題があると話されていますね。どのような課題ですか?
Jason: 私が特に注目しているのは、「機械学習システムは正しい答えが得られているように見えるものの、実際にはあまり普遍化されていないので現実世界では通用しない」という考え方ですが、それにも様々な変化が見られます。
たとえば、あるタスクで驚異的なパフォーマンスを発揮している機械学習システムがあるとします。 ところが、攻撃を受けたり、現実世界での偶然の出来事など、開発者が想定していない形で前提条件が変わった途端、全く馬鹿げたルールに頼っていたことが判明して破綻してしまうようなことがあります。
Samuel Marchal, Jason Johnson
それに関する実例を教えてくれますか?
Jason: 最も分かりやすいのは、「敵対的摂動」という概念です。これは非常に面白い言葉ですが、極めてよくある攻撃で、顔認識スキャナーなどが扱う画像にほんの少し変更が加わっただけで、まったくおかしな結果になるというものです。たとえば、野球のボールを3Dプリントして、画像分類機にかけると「これは100%間違いなくエスプレッソだ」 と判断するというようなことです。
なるほど。
Jason: ボールがキャッチャーミットに入っていても、野球という文脈があったとしても間違えてしまいます。
そうですか。波線が何本かあるだけの写真をAIに見せると、「これは猫です。猫の姿をしています」 と判断したのを見たことがありました。そのようなことですね。
Jason: まさにそうです。
Samuel: Jasonの言う通りです。その主な理由の1つは、通常のプログラムは振舞いをコーディングしますが、機械学習システムではデータから振舞いを学習します。つまり、振舞いは全て学習されたものの結果になります。 学習方法を正確にプログラムしているわけではないので、データの中から判断材料になりそうなものをすべて取り込むことになります。
しかし、これは人間が画像を分析して、それが何かを判断する方法とは異なります。アルゴリズムは、この機能を最適化しようとするだけで、最善の判断を下すのに役立つ画像の特徴なら何でも取り入れます。したがって、小さな摂動に完全に騙される可能性があるのです。なぜなら、正しい判断につながらない、間違った特徴に注意を向けてしまうからです。
これは、機械学習アルゴリズムの学習方法に起因する問題なのですか?何かの拍子に道を間違えて、それが何度も繰り返されるということでしょうか?誰かがAIを欺くためにやっていることではないのですか?
Samuel: それは機械学習が抱える本質的な問題です。あなたが学ばせたいことをアルゴリズムに強要することはできません。基本的には目標があって、それを最適化しようとします。そしてそのための経路を辿るだけです。そして、それが予想外の結果になることが多いのです。
Jason: 本当の課題は、コードに書き込んだ目的が、自分が望んだものとは異なることが頻繁に起こることです。また、自分が求めているものを正確に把握しているのなら、そもそも機械学習を使って答えを得る必要はないでしょう。
Samuel: そのとおりです。
つまり、私たちが考えているセキュリティ上の懸念は、たとえ答えが得られたとしても、その答えに至った経緯が理解できないということですね。辿ったルートが正しいのか、すべてのステップが意味をなしているのか不明ということでしょうか?
Jason: その通りです。
Samuel: 間違いありません。 これは、基本的にアルゴリズムを訓練するための入力時と、予測や推奨を行う際の推論時にデータが深く関わっているからだと思います。これが、機械学習モデル/機械学習アルゴリズムと従来のプログラムの主な違いだと思います。
これにより攻撃対象領域が拡大し、システムを攻撃する新たな手法が生み出されます。この新たな攻撃ベクターは従来のセキュリティでは対処できません。新しい解決策が必要になります。
Jason: トレーニング演習には、いくつか異なる方法があります。モデルとアーキテクチャを設計し、様々なアルゴリズムを使用し、このような誤りの影響を受けにくい詳細技術をすべて使用することで、モデルが学習する特徴のタイプをきめ細かく制御できます。しかし、ここでの問題はパフォーマンスが悪化することです。理解しやすくなっても、大きな期待を創出したり、市場を動かすような素晴らしい成果を得ることはできません。
なるほど。機械学習アルゴリズムが目的を達成するために最善の方法を探しているときに、迷ってしまう様子が理解できました。しかし、攻撃者が意図的に機械学習アルゴリズムを捻じ曲げようとした事例もありますね。なぜそんなことをするのでしょう?
Samuel: それはポイズニング攻撃のことですね。つまり、モデルのトレーニングデータやトレーニングアルゴリズムを危険にさらして誤った方法で学習させると、後で推論する際に予測を間違えることになります。機械学習モデルはすでに多くのアプリケーションに組み込まれていますが、今度ますます増えていくことから、攻撃者のモチベーションは高いと思います。
セキュリティアプリケーションを例にとると、機械学習モデルは、スパムや不正支払のような詐欺、さらにマルウェアなどの検出にすでに利用されています。検出システムに機械学習コンポーネントが組み込まれている場合、攻撃者は基本的に検知を回避するようにシステムを侵害しようとします。「それは詐欺かどうか」、または「それはスパムかどうか」という判断を下すモデルを侵害するのです。
そして、間違った判断を下すようにすれば、攻撃者は検知を回避して初期の目的を達成できます。つまり、詐欺行為を行ったり、スパムメールを送信してメールボックスに届けることができます。それから他の動機もあります。自動運転車に使われる機械学習モデルを数多く目にしますが、自動運転車の画像認識に使われているモデルに対して攻撃を仕掛けるだけで、車社会に大混乱を引き起こすことができます。
確かにそうですね。
Jason: 具体的な例を挙げましょう。ある会社がマルウェアを検出するための新しい機械学習モデルを開発しているとします。彼らはVirusTotalからデータを取得し、VirusTotalが不正なものとしてリストアップしているものを認識するようにモデルをトレーニングします。その方法論は理にかなっていると思います。
そうですね。
Jason: そこで、攻撃者はこの会社のことを聞いて「これを突破するマルウェアを作ろう」と考えます。何をするかというと、全く無害な文字列や、意味不明な構文をでっち上げて、それらをマルウェアの中に入れるのです。そして、何も悪いことをしない、完全に無害なソフトウェアに、たまたまこのような文字列が埋め込まれていたとする1,500万件もの異なる例をアップロードします。
単純なモデルであれば、これらの文字列を無害なソフトウェアとして認識することを学習し、その文字列が含まれているマルウェアを検出すると、実際に何をしているかに関わらず完全に安全で無害だと分類してしまいます。
わかりました。これをデータポイズニング攻撃と呼ぶのですね。Amazonで児童書を見て、ホラー映画も見るとします。それを1日のうちに100万回繰り返すと、アルゴリズムは児童書が好きな人はホラー映画も好きだと考えるようになるということですね。他にはどのような攻撃がありますか?
Samuel: 機械学習モデルに対する主な攻撃は、少なくとも4つあると考えられます。まず、ポイズニングおよびバックドア攻撃ですが、これらはトレーニングデータや、モデルのトレーニングを侵害して、最終的にモデルの完全性を損ねるものです。
2つ目は推論時に起こるもので、モデル回避攻撃と呼ばれます。この場合、モデルは正常ですが、推論の際に誤った予測や誤った推奨をするように細工します。
3つ目は、データ推論攻撃と呼ばれています。この攻撃では、モデルを標的にするのではなく、モデルを訓練した際のトレーニングデータを標的にします。基本的に機械学習モデルは、トレーニングプロセスの中に、トレーニングデータに基づけて学習します。この時、モデルがトレーニングデータから直接記憶した結果を重視する傾向があるため、モデルにアクセスすることで、トレーニングデータの一部を復元することができます。つまり、モデルとやりとりするだけで、モデルを訓練するデータの情報を引き出すことができるのです。
最後の攻撃はモデル盗用攻撃と呼ばれています。機械学習モデルには価値があると考えられているので、攻撃者は勝手にモデルを複製して、無料で使用したり販売します。さらに、クエリを作成し、モデルとのやりとりを通じて予測を得ることで、盗みたいモデルと同じような動作をするモデルを再構築できます。つまり、ほとんどコストをかけずにモデルを手に入れることができるのです。オリジナルモデルをトレーニングした人に対価を支払うこともありません。
これらの4つの攻撃は、機械学習を語る上で最も注意すべきものだと思います。
これらの攻撃は、私たちが普通に使っているようなユーザ向けインターフェースを通じて行われているのでしょうか?それともハッカーはバックエンドシステムなどにアクセスする必要があるのでしょうか?
Jason: 満足いただける答えではないですが、それは場合によりけりですね。
コンサルタントらしい答えですね。
Jason: 多くの場合、バックエンドにアクセスすることで、攻撃の効率と確実性が大幅に向上します。また場合によってはモデルを再構築することも可能です。先に述べたモデルを復元する攻撃を使えば、全く同じ動作をするモデルを復元することができます。そしてそのモデルを使えば、オリジナルモデルに対する他の種類の攻撃を構築できます。
それは、どのような仕組みでしょうか?
Jason: 考え方としては、どんなユーザインターフェースを使ってもよいのですが、モデルのコピーを作り、そして、オリジナルモデルと同じ答えを出すようにそのモデルを訓練します。
オリジナルモデルと同じ答えですね?
Jason: そうです。オリジナルモデルが何をしているのかをすべて知らなくても、同じ種類の入力に対して同じように動作するモデルを構築することができます。そして、それが出来上がれば、回避手法を作ることも可能になります。オリジナルモデルにアクセスしたことがなくても、その回避手法は機能するはずです。
オフラインのラボを作って、自分の手法を実験するのですね?
Jason:そのような考え方です。
わかりました。
Samuel: 現在、機械学習モデルに対する攻撃のほとんどは、ブラックボックス的なやり方です。モデルの動作方法を全く理解せずとも、ただ推測するだけで、実際にはモデルを騙すことができます。そして、実際にこのような方法でポイズニング攻撃を行った事例もあります。
たとえば、GoogleはGmailにスパムフィルターを搭載していると報告していますが、このスパムフィルターを定期的にポイズニングしようとする試みが観測されています。実際には無害のメールを大量に送信して、スパムと判定させてしまうことで、スパムフィルターの精度を低下させます。正当なメールがすべてスパムに分類されることで、ユーザを疲弊させてしまうことになります。こうしてスパムフィルターを無効にすれば、スパムメールは、そのまま通過できるので、攻撃者の勝利になります。
このような攻撃の実例はいくつかあります。攻撃者は、スパムフィルターの訓練にどのような機械学習モデルを使っているのかは全く知らずに、ただ試しているだけです。間違ったラベルを付けたデータを入力すればうまく行くのです。
はい, わかりました。とにかくやってみて、成功するか見ようという考えですね。
Samuel:まさにそのとおりです。
Jasonは、他に紹介したい事例はありますか?AIが悪さをするような興味深い話はどうでしょう?
Jason: はい。面白い事例がありますが、これはあくまでも学術的な研究であり、概念実証であって、実際に誰かが凶悪なことをしたわけではありません。研究者が思いついたアイデアは、データダンプやランダムなインターネット検索などから得たクレジットカード番号が含まれるデータを使い、そのデータで訓練した言語モデルから、クレジットカード番号を復元できないかというものでした。その答えはイエスでした。
Enron社のことを覚えていますか?Enron社が倒産に至るまでの社内メールが公開されましたが、これはEメールの言語モデルを学習するためのデータセットとして非常に人気が出ました。膨大で、自然言語で、しかもすべてがきちんと分類されていたからです。
そこで、研究者はこれらのEメールで言語モデルをトレーニングし、どの16桁の数字がクレジットカード番号の可能性が高いかを予測することで、クレジットカード番号の復元を試みました。トレーニングをうまく行うためには、言語モデルはこれらを記憶しなければならないので、実際にオリジナルのデータセットに含まれていた特定の数字をいくつも予測しています。
AIに「16桁の数字列を思いつく限り教えて」と尋ねます。AIが最初の候補を示すと、ちょうどクレジットカード番号になります。なぜならそれはAIが何度も繰り返し見ていた数字だからですね。
Jason: そのとおりです。もちろん、現実の世界でもEnron社のEメールは公開されているので、検索すれば出てきます。しかし、もし非公開データで訓練されたデータセットがあって、開発者たちが、「この機械学習モデルは中身がまったく不明なので、皆が文句を言っている。このデータを復元することなどできない」と考えているとします。そこでこの種の攻撃を使えば、クレジットカード番号を復元することができるのです。あるいは、社会保障番号などでも構いません。
恐ろしい話ですね。つまり、機械学習アルゴリズムを開発する際には、どのような種類の情報を露出するかについて、細心の注意を払う必要があるということでしょうか?
Jason:はい。
Samuel: そのとおりです。
わかりました。この話題に関して、AIの利用を検討している企業は、他にどのようなことを考慮する必要がありますか? トレーニングしているデータを見て、不用意に漏らしそうなものがないことを確認すべきことはわかりました。AIアプリケーションへの攻撃が成功した場合、企業は何を失うことになるのでしょうか?
Jason: システムが常に間違った判断を下すというシナリオを想像してください。それが最悪のシナリオでしょう。
なるほど。
Jason: また、これらのシステムの多くは、独自の方法で自分自身を攻撃することも念頭に置いておく必要があります。モデルは、それを構築する目的に関係するものであれば、たとえ開発者が解決したくない問題でも解決策を学習することができます。これは、Specification Gamingというコンセプトです。またしても、とても面白い言葉が出てきました。機械学習システムを導入する場合は、技術的には要求通りのことをしてくれるが、決して望んでいたことにはならない、小説の「猿の手」のように扱わなければならないのです。そのような懐疑的な態度で臨むべきです。
魔人に願い事をする時は、気をつけなくてはいけないのですね。
Jason: そうです。たとえば、皮膚癌の成長を認識するように訓練されたモデルの事例があります。実際、95%の性能を発揮してくれたので、とても役に立ちました。ところが、誰かが実際に何をしているかよく調べてみると、このモデルは写真の中の腫瘍ではなく、定規を探していることに気がつきました。そのトレーニングデータセットでは多くの写真に定規が写っていたためです。
(笑)やられましたね。
Jason:誰かが定規を使って成長を測ったということは、おそらく悪性だからでしょう。
あきれた話ですね。その他にAIを活用している企業に向けて、Samuelからアドバイスがあればお願いします。データの中に漏洩したら困るものが含まれていないか確認すべきということの他に、何か一般的なアドバイスはありますか?
Samuel: まず、データサイエンスにも、基本的なセキュリティ対策を実践することをお勧めします。たとえば、ソフトウェアエンジニアは、安全なコーディングのためのトレーニングを受講していますが、データサイエンティストはほとんど受けていません。データサイエンティストやデータエンジニアに、安全なコーディングのトレーニングをするのは良いことだと思います。
また、機械学習をベースにしたシステム開発を予定している場合、その上で脅威モデリングを行えばよいのです。このように機械学習モデルの脅威をモデル化し、機械学習特有の脅威や攻撃ベクターを認識するプロセスは、システムに対する従来の攻撃ベクターとは異なるものです。
ですから、これは機械学習モデルの開発とライフサイクル管理において、真っ先に導入すべきものの1つだと思います。しかし、90%以上のケースで、これが適用されていないと思います。だからこそ、これは大きな一歩になるのです。
了解です。従来のセキュリティ担当者はAIセキュリティについて学ぶ必要があり、AIセキュリティのデータサイエンティストは従来のセキュリティについて学ぶ必要があるということですね。
Samuel: はい、そうしないといけません。
おっしゃる通りです。機械学習アルゴリズムは、結果にたどり着くまでに、思いもよらない経路を見つけることがあります。アルゴリズムが何を学習しているのかを調べて、それが良い方向に向かっているのか悪い方向に向かっているのかを知る方法はありますか?自動運転車のレースで、車が奇妙な走りをしたので、誰かが「なぜそうなったのか?」と聞いても、答えは、「私にはわからない」でした。学習が間違っていたのか、正しかったのか確認することはできるのでしょうか?
Samuel: そこにはいくつかの疑問点があります。もちろん、機械学習には説明可能性が望まれます。最も複雑なモデルであっても、その下した判断をいくつかの局所的な判断で説明しようとする一連の研究があります。しかし、これでは攻撃を防ぐことはできません。
なぜなら、回避攻撃は攻撃者が事例を作り出すからです。現実の世界では絶対に起こらない事例を人工的に作り出すため、予想することはできません。明示的に止めよう、防ごうとしなければ止められないでしょう。それらは巧妙なアルゴリズムを使って生成されているので、防御するためにはそれらの事例を作る時と同じ直観的な知識を持たなければなりません。
当然ながら説明可能であることは望ましいことですが、それで機械学習モデルを完全に保護することはできません。もちろん、役に立つことはあるでしょう。
Jason: まさにそのとおりだと思います。より堅牢になっても、完璧にはなりません。落とし穴を回避する機械学習モデルが欲しければ、どのような落とし穴なのかを調べて、落ちないような手当てをする必要が有ります。そのためには、どのようにして判断を誤るのかを事前に知っておくか、トレーニングをして間違える様子を見ておかないと、何が起こっているのかを理解することはできません。
しかし、ここでの課題は、これらのことを正確に行う方法を知っていて、正しい答えがわかっているのなら、そもそもデータの中から答えを見つけるために機械学習モデルを使うは必要ないということです。
納得できますね。私が疑問に思っているのは、従来のセキュリティでは、「こうすべきだ」「こうすべきではない」というようなベストプラクティスがあります。攻撃に対してAIや機械学習モデルを堅牢化する際にも、そのようなものはありますか?とにかく大失敗だけは避けるためのベストプラクティスはありますか?
Samuel:ないでしょうね。
Jason:いえ、私はあると思っています。
それは嬉しいですね。
Jason: そのベストプラクティスを自身のモデルに適用できるのであれば、ほとんどの開発者がすべきベストプラクティスはいくつかありますが、適用可能かの判断は常に専門家にゆだねられます。
たとえば、ディファレンシャルプライバシーと呼ばれる概念があります。これは、データセット内のどの情報も、推論時の答えを決定づけることがないように設計するものです。これがプライバシーを高める理由は、そもそもこうしたデータリバーサル攻撃をすることが現実的ではなくなるからです。
この概念の問題は、当然ながらモデルの品質に影響を与えてしまい、プライバシー攻撃に対する万能薬にはならないことです。プライバシーの意味合いを非常に狭い範囲で定義しているのです。
Samuel: そうですね。実は私もJasonに賛成です。しかし、すべてトレードオフの関係にあるということです。ベストプラクティスを推奨できるかどうかはわかりません。それはユースケースに固有のものであり、エンジン内で何を最適化したいのかを知っておく必要があるためです。
そうですね。
Samuel: たとえば、私たちがポイズニングおよびバックドア攻撃に対する脆弱性を調査したところ、単純なモデルほど、全体的な精度を低下させるポイズニング攻撃に対して脆弱であり、複雑なモデルほど、これらの攻撃に対する耐性が高いことがわかりました。しかしその一方で、単純なモデルはバックドア攻撃に対して非常に耐性があり、複雑なモデルは非常に脆弱でした。
したがって、まずはどのような攻撃を防ぎたいのかを定義する必要があります。ポイズニングまたはバックドア攻撃への耐性を高めるために、シンプルなモデルを使うのか、複雑なモデルを使うのか?また、この判断を正確に行うには、主な目的を念頭に置く必要があります。
つまり、すべてのパラメータを揃えて、それを調整して選択する必要があります。プライバシーを守りたいのか?回避攻撃に対する堅牢性を求めるのか?ポイズニング攻撃に対する堅牢性を求めるのか?これらすべてを考慮しなければなりません。「これをやって、あれをやって、それをやれば良いモデルができる。」という簡単な答えはありません。
わかりました。そのとおりです。私のこれまでの質問からもおわかりのように、私はこのAIというものを理解するのに大変苦労しています。多くの人がそうだと思います。だからこそ私たちは、AIがどのようなものなのか、具体的な事例を挙げて話しています。これらの持つ意味とは何でしょうか?人々が知っておくべきだと思うことはありますか?一般の人々ではなく、セキュリティの仕事をしている人々です。セキュリティに携わる人たちが、AIについて知っておくべきことはありますか?
Samuel:AIモデルというものは脆弱です。AI自身は気づいていないかもしれませんが。
それはTシャツにプリントするフレーズに使えそうですね。
Jason:余談ですが、私はマグカップが大好きなのですが、ここに置いてあるマグカップには、「Deep neural networks」と書かれています。そして、信頼できないデータから、山ほどのクエスチョンマークを経て、絶対間違いのない結果に至るまでのフローチャートが描かれています。
(笑)本当ですね。
Jason: 知っておくべきことですが、従来のセキュリティと機械学習の大きな違いは、機械学習の領域ではすべてが確率論的だということです。従来のセキュリティのように、原因と結果が保証されているわけではありません。
それは辛いです。もし私が企業のCISOで、オタクの社員たちが機械学習やAIについて話していたら、セキュリティに関するアドバイスをしたいところですが、私が学校や職場で学んだことがこの領域では通用しないとなると、一体どうすればよいのでしょうか?
Samuel: そうですね、機械学習モデルの安全性を高めるためには、トレーニングデータや推論データなどのデータへのアクセスを制限することが重要だと思います。機械学習モデルは、バックエンドのように、組織内で生成された入力を受け取るクローズドループで動作すれば、かなり安全になります。それは推論でも同じことです。組織内で生成された信頼性の高い入力を用いて、クローズドループで予測を行います。
しかし、私たちが現在想定している機械学習アプリケーションのほとんどは、レコメンデーションシステムとして利用されており、処理されるのは、あらゆる所から来る何千、何百万人ものユーザーデータです。このデータに基づいてレコメンデーションを行います。このようなモデルは、当然ながら露出度が高くなります。しかし、バックエンドのように非常に閉じたループで機械学習モデルを使用するユースケースなら、そして露出されていなければ、脆弱性はほぼ消えると思います。
Jason: 私が技術者に質問するのは、「たとえこのモデルが誤動作しても安全性を確保するために何をしているか?」と、「モデルが誤動作したら誰が責任を取るのか?」の2点です。厳しい質問ですが、これらの作業を行っているのは人間ですから、責任を負うのも人間です。人と話すことで、その人の意思決定のプロセスを聞くことができます。答えを見つけられるはずです。非難するわけではありませんし、すべきでもありませんが、責任の所在は明確にすべきです。
それが非難しないことになるのでしょうか?私たちは、業界全体で失敗を責めるなと教えてきました。それなのに「誰のせいで失敗したのか?」と聞くのですか?
Jason: その目的は、誤動作したことで誰かを非難することではなく、誰が責任を持って事態を解決し、改善できるのかを知ることです。
なるほど。その質問は、「失敗したときに誰が修復するのか?」ということですね。
Jason: そうです。だから、誰かを責めようとしているわけではありません。「申し訳ありません。当社の機械が正当な理由もなくお客様の申請を拒否したことをお詫びします。お客様のアカウントの更新は完了しております。」と答えられる人を探すのです。
はい、わかりました。子供向けの本を欲しがっている人に、AIがホラー映画を薦めたときの緊急時対応策ですね?
Jason: はい。機械がそのような推奨をするのを避けたいのです。
確かにそうです。カスタマーサービスに電話しても、「私は何もできません。機械ができないと言うので。」と答えるでしょう。
Jason: そのとおりですね。こういう状況は避けなければなりません。
わかりました。一言で言って、機械学習の脆弱性は従来のセキュリティの脆弱性とどのように違うのでしょうか?Tシャツにプリントできるような、しゃれた定型的な答えはありませんか?
Samuel:主な違いの1つは、機械学習モデルの脆弱性を発見しても、それを修正する方法がわかったことにはならないと言うことです。
そうですね。
Samuel:そして、修正する方法がわかることはほとんどありません。脆弱性があることは確認できても、どうやって修正したらよいかわからないということです。これが大きな違いだと思います。
Jason:はい、そうです。これらの多くが研究者の間で未解決の問題になっています。
もし、AIがおかしな処理をしていて、「おや、これは腫瘍を探しているのではなくて、トレーニング素材の写真に写った定規を探しているのだ。」ということがわかった場合、その時点でAIが間違いをしないようにするために何かできることはありますか?それとも、すべてを破棄して最初からやり直すべきでしょうか?
Samuel: それは対処するのがとても難しい問題です。対処できると思いますが、簡単なことではありません。研究も必要ですし、大変な努力も必要です。やっとこの問題を解決した後に、想像もしなかった別の問題が起こるかもしれません。とにかく大変難しい問題です。
Jason: そのとおりです。たとえば、データセットを再構築して定規の有無をうまくバランスさせれば、定規はもう指標にならないわけです。そして、その偏りをなくすために、また一からシステム全体を訓練すればよいのです。しかし、その後に、「おや、まずい。このモデルは肌の色が濃い人には使えない。」という問題が出てくるかもしれません。
Samuel: それは良い例ですね。
Jason: こうした問題が繰り返されるのです。
Samuel: データには常に何らかの偏りがあり、モデルは常にその偏りを再現します。かなり注目を集めた有名な攻撃の1つに、MicrosoftのAIチャットボットTayへのポイズニング攻撃があります。TayはTwitterユーザとのツイートやリツイートのようなやりとりを目的としたものでした。それはTwitterの既存のツイートを使って訓練されました。Twitterなどのソーシャルメディアでは、信頼性の高いコンテンツや優れたコンテンツが少なかったので、このチャットボットは人種差別的、性差別的な話をするようになってしまったのです。
Twitter上の他の人間達と同じように恐ろしいですね。
確かにそうです。但し人間は24時間ツイートしませんけどね。Tayはそれが明らかになった時点でサービス停止に追い込まれています。これがポイズニング攻撃の最も有名な例かもしれません。アルゴリズムがどのように機能しているかをよく理解していなかったのです。ただ問題のあるツイートをTayにフィードしていただけで、それが統合されて学習され、Tayのツイートに反映されたのです。
よく分かりませんが、Tayの設計会議で、誰かが「Twitterで人が話す様子を見せることで、人と同じように話すAIモデルを訓練しよう。」と言ったのでしょうね。その会議に出たかったです。そこで、「あなたはボットを他の人々と同じくらい嫌な奴にしたいのですか?それはどうして?」と聞いてみたかったです。
Jason: 彼らがTayに取組んでいたころは、まだTwitterは居心地の良い場所だったに違いありません。
間違いないですね。
Samuel: Twitter上の善良な人々は、本当の友達とTwitter上で話をしています。しかし、チャットボットと話す人は、とても善良な人ではないかもしれません。
はい。大変有害な言動がたくさん見られるので、そのような物議を醸すトピックをフォローするようになっただけかもしれません。
Samuel: もう1つの例は、研究者による攻撃ですが、実際のシステム、つまりAlexaが標的に選ばれました。彼らは何かに似た音を合成できることを実証しました。たとえば、合成音で「このストアに行きたい」とAlexaに話しかけたとします。しかし、その音には何らかのシグナルが隠されており、Alexaの中の言語モデルによって解釈されたコマンドが実行されます。
つまり、ユーザにはごく普通に聞こえる音の中にメッセージを隠すことで、その音を解釈する機械学習モデルは、まったく違うものを捉えて、思っても見ないようなコマンドを起動することになるのです。
Jason: そして、2週間後には、22トンのクリームコーンが玄関に届くことになります。
Samuel: その通りです。Amazonで素敵な注文がいくつも処理されるのです。
選挙の時期に、ある人がタクシーに乗ったら、道端に120という数字が入った候補者のポスターを見かけたという例があります。そのタクシーには、交通標識を認識するシステムが搭載されていました。車はそのポスターを認識して、時速120kmの標識と見做し、フリーウェイを走っていると推測したのです。そのような標識があるのはフリーウェイだけなので、間違って判断したのでしょう。
Jason: 似たような例では、「土地収用権の乱用をSTOPしよう」などと書かれた政治家の看板がありました。しかも、「STOP」という文字が大きく書かれていたので、フリーウェイの真ん中で車が停止したのです。前の例とは真逆の状況です。
あってはならないケースです。私はこの問題は深く追求したいですね。自動運転車は私のプロジェクトの1つであり、非常に興味があるからです。最初の疑問は「なぜその車は、そういった状況を考慮しないのか?」ということです。フリーウェイを走ると、前方には高速で走っている車がいます。回りに停止している車はないのに、なぜSTOPサインが有ると判断するのでしょう?なぜそんなことになるのでしょうか?
Jason: なぜなら、私たちはそのような文脈をエンコードする方法を知らないからです。
そんなに単純な話ですか?
Jason: 私たちにできることは、データを投入して答えが出ることを願うだけです。たとえば、「STOPサインでは止まれ」という大量のデータを入力することが妥当だと考えます。ところが、その結果「STOP」という言葉を見ると、「止まった方がよい」と判断してしまうのです。また、実際にSTOPと書かれた看板で停止する状況をトレーニングデータとして持っていない限り教えることはできません。
それは残念なことです。私は今、一般消費者向けのホームオートメーションに取り組んでします。「こうなら、こうして」など、すべてのルールを開発しています。しかし、「このようなことが起きた場合に限り」とか、「このようなことが起きている時を除いて」などというケースが数多くあります。これは非常にシンプルなルールとスクリプトなので、もっと複雑な機械学習アルゴリズムなら、それを受け入れることができると思うかもしれませんが、実際はそうではありません。
Jason: そうかもしれません。基本的に、これらの機械モデル学習技術はすべて、「if、then、else、whatevers、all these conditionsのリストを自分で作成し、それが適切なリストかどうかを示す。」というものです。ですから、文脈情報を学習させたいのであれば、実際にその文脈情報をエンコードする方法を考え出す必要があるのです。
それはとても興味深いですね。基本的には、期待通りに動作すると思われる機械学習アルゴリズムを開発し、それをファジングして、様々な奇妙なランダムなものを与えて、何かが起こって壊れるかどうかを確認する、という話のように聞こえました。
Jason: はい。そしてもちろん課題は、そのような奇妙でランダムな状況で、何が正しい反応なのかを考える必要があるということです。
なるほど。まずは、車が衝突して事故死することがないようにすることから始めましょう。そこからスタートするのがよいと思います。
Jason: それは良い戦略です。
今日はありがとうございました。
Jason: お招きいただきありがとうございました。
Samuel: ありがとうございました。楽しかったです。
カテゴリ