ヨアヴ・ホランダー マシンハートが編集 参加者: ウー・パン、ヤン・チー 5月に、コロンビア大学とリーハイ大学の研究者数名が「DeepXplore: ディープラーニングシステムの自動ホワイトボックステスト」と題した論文で、ディープラーニングシステムの自動ホワイトボックステスト手法であるDeepXploreを提案しました。Machine Heartのレポート「学術界 | 新しい研究がDeepXploreを提案: 現実世界のディープラーニングシステムをテストするための初の体系的なホワイトボックスフレームワーク」を参照してください。最近のブログ投稿で、Yoav Hollander はこの研究の詳細な分析を提供し、機械学習ベースのシステムの検証というトピックについてより広範に議論しています。この記事はMachine Heartがまとめて紹介しました。 論文「DeepXplore: ディープラーニング システムの自動ホワイトボックス テスト」では、機械学習ベースのシステムを検証するための新しい (そして (私見では) 非常に重要な) アプローチについて説明しています。そして、それは機械学習の世界と CDV (カバレッジ駆動検証) のような動的検証の世界との間の境界をほぼ打ち破ります。 論文を読んでいるとき、私は何度も「まあ、それはいいけど、何かを見落としているような気がする」と自分に言い聞かせました。そこで著者に連絡してみたところ、彼らはその何かが何なのかを正確に知っていることがわかりました(そして、彼らは将来の研究でその一部に対処する予定です)。この記事では彼らの回答の一部を引用します。 DeepXploreについてこの論文では、ディープ ニューラル ネットワーク (DNN) に基づくシステムを検証する方法について説明します。以下は、元の論文の要約からの抜粋です。 現実世界のディープラーニング システムを体系的にテストするための初のホワイトボックス フレームワークである DeepXplore を紹介します。このフレームワークは、(1) ディープラーニング システムのロジックのさまざまな部分を刺激できる入力を生成すること、(2) 手動操作を必要とせずにディープラーニング システムの誤った動作を識別することという 2 つの困難な問題に対処します。まず、テストに使用される入力に基づいてトレーニングされたディープラーニング システムのさまざまな部分を評価するために、ニューロン カバレッジを導入します。次に、同様の機能を持つ複数のディープラーニング システムを相互参照として使用し、誤った動作を手動で検査する必要がなくなります。ディープラーニング アルゴリズムの高いニューロン カバレッジを達成しながら、さまざまな動作をトリガーする入力を見つけるプロセスを、結合最適化問題として定式化し、勾配ベースの最適化手法を使用して効率的に解決する方法を示します。 DeepXplore は、マウンテンビューの Udacity が収集した運転データや ImageNet データなど、5 つの一般的なデータセットでトレーニングされた最先端のディープラーニング モデルで、数千種類の誤ったコーナーケース動作 (自動運転車がガードレールに衝突したり、正規のソフトウェアを装ったマルウェアなど) を効果的に検出します。 私が気に入っている主なアイデアは 4 つあります。
しかし、これらのそれぞれについて、私は疑問を持っています。これは悪いことではありません。実際、この論文で提起された多くの疑問は大きなプラスであり、私はすでにその後の研究を楽しみにしています。私の問題は主に、DeepXplore の「ホワイトボックスのみ」の性質に関連しています (もちろん、これは利点でもあります)。 これら 4 つの主なアイデアを順番に見ていきながら、私がなぜそれを気に入っているのか、またそれに関連する問題について説明したいと思います。 1. ニューロンカバレッジの使用DNN 実行セットの場合、カバレッジ メトリックは「これらの実行中に少なくとも 1 回アクティブ化されたニューロン (DNN ノード) の割合」です。基本的な考え方は、特定の DNN 入力に対して、各ニューロンがアクティブになる (つまり、しきい値を超える) か、0 のままになるかのいずれかです。元の論文にはこう書かれています: 最近の研究では、DNN 内の各ニューロンは、多くの場合、入力の特定の特徴を抽出する役割を担っていることが示されています。この発見は、ニューロン カバレッジが DNN テストの包括性を評価するための優れた指標である理由を直感的に説明しています。 これらのノードに対応する特徴は、必ずしも私たちの言語で直感的に説明できるとは限らないことに注意してください (例: 2 つの目を持つオブジェクト)。しかし、DNN トレーニングの最適化プロセスでは、通常、それらはいくつかの「再利用可能な機能」、つまり、さまざまな入力に対して DNN を有用にする機能に対応するようになります。 研究者はこれまでにも、ニューロンの働きを視覚化する論文「ディープ ビジュアライゼーションによるニューラル ネットワークの理解」などで、ニューロンを自動的にアクティブにしようと試みてきました。しかし、検証にニューロン カバレッジを使用するというのは、新しくて良いアイデアであるはずです。 考えられる問題:ただし、ニューロン カバレッジ (ソフトウェア検証のコード カバレッジに似ています) は、実際には実装カバレッジであることに注意してください。また、実装カバレッジは、私たちの知る限りでは十分ではありません。主な理由は、不注意による脆弱性には役立たないからです。受信/送信 SW モジュールが送信を実装し忘れたり、「送信中の受信」問題を忘れたりした場合は、誰かが実際に送信テストを作成するまで (またはユーザーが自分で送信しようとするまで)、100% のコード カバレッジを達成してそれで終わりにすることができます。 カバレッジ(実装、機能など)に関する複数の議論を参照してください: https://blog.foretellix.com/2016/12/23/verification-coverage-and-maximization-the-big-picture/ DNN についても同じことが言えます。運転中の DNN を「右折」や慎重な方向転換、バスに落書きをする人などについてトレーニングし忘れると、バグの多いシステムで 100% のカバレッジを達成してしまう可能性があります。 著者の回答: 私たちも完全に同意します。完全なニューロン カバレッジ (コード カバレッジなど) では、すべての可能性のある脆弱性が見つかるとは限りません。そうは言っても、ニューロン カバレッジの定義を拡張して、さまざまな種類のカバレッジ (従来のソフトウェアのパス カバレッジのようなニューロン パス カバレッジなど) を含めることも検討しています。 ニューロンのカバー範囲を拡大すると少しは役立つと思います。運転中の DNN に、「道路上の犬」を検出するためのニューロンが 1 つと、「道路上の猫」を検出するためのニューロンがもう 1 つあると仮定します (これはかなり単純化しています)。したがって、それらを個別にカバーすることに加えて、反例 (「犬はいない」)、組み合わせ (「犬と猫がいる」、「猫はいるが犬はいない」)、シーケンス (「猫がいて、犬がいる」 - これは前述のニューラル パスのカバレッジです) もカバーする必要があります。 ただし、これは実装範囲のみなので、以下のコメントを参照してください。 他の実装と比較してDNNをチェックする彼らが動作をチェックした方法は、多かれ少なかれ異なる複数の DNN ベースの実装を比較し、それらが一致するかどうかを確認することでした。これはソフトウェアの「差分テスト」の拡張であり、(ハードウェア検証の経験がある人にとっては)基本的に従来の「参照モデルによるチェック」と同じです。 潜在的な問題:参照モデル チェックでは通常、参照モデルが (ほぼ) 完璧である、つまり信頼できると想定されます。もちろん、これは事実ではないので、潜在的な問題があります。 たとえば、見逃されたバグは見つかるでしょうか?トレーニング中に検討した DNN ケースの一部のみ考慮でき、他のケースは考慮できません。しかし、これで十分かどうかは疑問です。論文には次のように記されている。 テストされたすべての DNN が同じ間違いを犯した場合、DeepXplore は対応するテスト ケースを生成できません。しかし、ほとんどの DNN は独立して構築およびトレーニングされており、すべてが同じ間違いを犯す可能性は低いため、実際にはこれは大きな問題ではないことがわかりました。 しかし、これは、(a) 現実的で競争の激しい市場ではさまざまな実装が得られること、(b) 少なくとも 1 人の著者 (Tsunami など) が、これは必ずしも現実的ではないと考えていることを前提としています。 著者の回答: これはまさに鑑別検査の限界です。モデルを独立した方法でテストする 1 つの方法は、敵対的 DNN テスト手法を使用することです。この手法では、現在のところ、人間の目には見えないわずかな変動しか許容されません。おそらく、敵対的トレーニングを拡張して、広範囲の現実的な制約を使用することもできます。たとえば、光の効果を変えることによって。ただし、このアプローチの主な問題は、データ ラベルが不足していることです。 DNN モデルが正しい分類を行ったかどうかを判断するのは困難です。理論的には、いかなる摂動も画像の真のラベルを任意に変更する可能性があります。 実際、これは物事をチェックするための「スタンドアロン」の方法を持たないための非常に良い方法です。しかし、CDV オプション (これは多くの作業を意味します) では、チェック/アサーションの別個の手動セットを人間が記述する必要があると言われています。 たとえば、Udacity の運転ケースについて言えば、「他の車に向かって運転できない」などのチェックをいくつか記述できます...これらは確率的なチェックなので、簡単な作業ですが、自動運転車に取り組んでいる人が行う可能性があります。ちなみに、セキュリティの問題は機械学習だけでは決して解決できません。 これらの人々は、前述したように、「左折しましたか?保護されていない左折ですか?同じ道路に車がいない状態での左折ですか?雨の中での左折ですか?」など、機能カバレッジを使用して実装カバレッジを拡張します。 差分チェックには別の潜在的な問題もあります。大きな重複があるものの、それぞれが他方が考慮しないケースを考慮しているとします。その後、DeepXplore を実行すると、それらのケースが「矛盾している」とフラグ付けされ、それらすべてを調べて正しいケースを見つける必要があります (つまり、これは私の実装のバグですか? それとも誰かが忘れただけでしょうか?) さらに、「唯一の正しい答えがない」状況もしばしばあります。車が左に曲がったり右に曲がったりする場合や、決定の境界が異なる場合(「スタートしてもいいですか?」)などです。不一致が単に「ここにバグがあるかもしれない」という意味である場合、長い手動プロセスが必要になる可能性があります。 カバレッジを最大化し、制約に従いながらエラーをチェックする実行を駆動しますおそらくこれが最も興味深い部分です。彼らは次のように説明しています: 最後に、できるだけ多くの識別動作(つまり、複数の類似したディープラーニング システム間の違い)を明らかにしながら、ディープラーニング システムのニューロン カバレッジを最大化するテスト入力を生成する問題を、大規模な現実世界のディープラーニング分類器で効率的に解決できる共同最適化問題として定式化する方法を示します。従来のプログラムとは異なり、ディープラーニング システムで使用される最も一般的なディープ ニューラル ネットワーク (DNN) によって近似される関数は微分可能です。したがって、対応するモデルのホワイトボックス権限が与えられれば、これらの入力に対応する勾配を正確に計算できます。 私はこれが本当に気に入っています。これは、カバレッジ最大化とバグハンティングと呼ばれるものを同じツールに組み合わせたものです。彼らはまた、いくつかの制約の下でこれを実行しようとしました。たとえば、視覚タスクでは、画像を暗くしたり、画像の小さな角を覆ったりするだけでした。また、ファイル内のマルウェアを検出する際には、ファイルの構造にいくつかの制約を課すことを主張しました。 潜在的な問題:ここで大きな問題があります。私はこれを「制約問題」と呼んでいます。許容される制約が十分に柔軟ではないため、取得される入力は「トレーニングに使用された入力に若干の変更を加えたもの」のみになります。 柔軟な制約が何であるかを明確にすることが望ましいです。なぜなら、柔軟な制約によって、単純な変更と大幅な変更 (左側通行やバスへのペイントなど) の両方が可能になる一方で、完全に非現実的な変更 (車が空中に浮くなど) も防止されるからです。 これらすべては可能でしょうか?難しそうに聞こえますが、マルウェアの例は、制約をある程度カスタマイズできることを示しています。 ほとんどの検証で私が最も気に入っている結論は、CDV (カバレッジ駆動検証) の何らかのバリエーションです。したがって、私は、DNN ベースのシステムを含むすべてのシステムを検証するための、ランダム検証のモデルベースの入力を作成することを目指しています。 DeepXplore を使用する人々は、既存の入力を取得して変更する方法のみを議論します。それらを組み合わせる方法を見つけるのは興味深いでしょう。 著者の回答: おっしゃる通り、画像設定で提案した制約はまだ柔軟性が足りません。これらは、勾配によって効果的に誘導できるため考慮されます。実際、データ拡張技術は他にもたくさんあります。画像の場合、回転、反転、さらには意味変換(たとえば、BMW X6 を BMW X1 に変更する)も実行できます。ただし、勾配を使用してこれらの変換を効率的に計算することはできません。これらの制約を使用して画像をランダムに変換し、一部の変換によってモデル間で異なる状態が誘発されることを期待することしかできません。勾配によって効果的に誘導できるこれらの制約のタイプとプロパティを指定することは非常に興味深いでしょう。 …データ(画像など)の現実的なモデルや制約を見つけること自体が難しい問題です。 DeepXplore では、現実的な入力から開始し、変異したサンプルが有効であり、現実世界に現れることを期待します。また、ランダムなサンプルから始めてみたら、DeepXplore は差異を誘発する入力を見つけることができましたが、非現実的な画像のようには見えませんでした。 機械学習の世界では、同様のタスクを実行するための一般的なアプローチとして、Generative Adversarial Network (GAN) を使用する方法があります。ランダムなベクトルが与えられると、実際の入力と区別がつかない現実的な入力を生成することを学習できます (例: https://github.com/jayleicn/animeGAN)。私たちはこの技術を使って入力を生成する方法も研究しています。 私はブログで検証のための GAN について書きましたが、GAN はある程度直接的で現実的な検証入力を生成するのに役立つことに同意します。しかし、私はまだ「目新しさ」が限られているので十分ではないのではないかと疑っています。 私が本当に見たいのは、入力生成が何らかの強制的な高レベルの記述から生成されるパイプラインです。たとえば、次の(完全に推測的な)コンテンツについて考えてみましょう。テキストから画像へのニューラル ネットワークがあり、画像とテキストのつながりがあることをニューラル ネットワークに伝えると、「車が左から来ています」という説明に関連する画像が表示されます。私は(上記の投稿で)GAN と RNN を使用してこの種の問題に取り組む 1 つの方法について説明しましたが、それが唯一の方法ではない可能性があります。 次に、結果の画像 (または画像のシーケンス) を Udacity のドライバー DNN に入力すると、「必要なステアリング角度」が出力として得られます。ここで、画像に黒い邪魔な部分を追加する代わりに、テキスト入力にそれを行ってみましょう。また、テキストに論理的な制約を課すこともできます。 これがうまくいけば(おそらくうまくいくでしょう)、複数のこのようなテキストから画像への DNN の出力を合成シーン(「左から来る車、右に立っている犬、そしてちょうど青に変わった信号の組み合わせ」)に結合する別の DNN を適用することで、入力の複雑さと多様性をさらに高めることができるかもしれません。 この観点は、述べたとおりには機能しない可能性があります。私は単に、「実際の CDV (カバレッジ駆動検証)」に近い方向性を概説しようとしているだけです。 DNN における効率的な勾配ベースの共同最適化以前の投稿で、私は機械学習がインテリジェントな自動化システムの検証にもっと利用されるようになることへの期待を表明しました。参照: https://blog.foretellix.com/2017/05/25/one-shot-imitation-learning-and-verification/。理由の1つは次のとおりです。 ディープ ニューラル ネットワークは「微分可能な」コンピューティングに基づいているため、この特性により、アイデアに従って操作することが容易になります。この点に関する詳細な分析については、後の記事で説明します。 さて、「次の投稿」はあなたの目の前にあります。エラーの原因となる入力を計算する方法について著者がどのように説明しているかを見てみましょう。 大まかに言えば、私たちの勾配計算は DNN のトレーニング中に実行されるバックプロパゲーション操作に似ていますが、重要な違いがあります。私たちの方法とは異なり、バックプロパゲーション操作では入力値を定数として扱い、重みパラメータを変数として扱います。 言い換えれば、DNN のトレーニングと進化の基礎となる、基本的に効果的な同じ線形代数機構を使用して、カバレッジ ポイント (またはエラー、あるいはその両方) につながる入力を見つけるために他の処理を行っています。 通常のハードウェアおよびソフトウェア検証がどれほど難しいか考えてみてください。たとえば、特定のエラー ラインを実現するには、多くの手作業と組み合わせたスマート ランダム、コンコリック生成、(十分に小さいシステムの場合) モデル チェックなど、さまざまな方法を使用します。関連する参考資料は、この投稿の最後にあります (https://blog.foretellix.com/2016/09/01/machine-learning-for-coverage-maximization/)。しかし、DNN の場合は比較的簡単です。ちなみに、DeepXplore は静的で状態のない DNN についてのみレポートできますが、この手法は入力シーケンスを伴う強化学習などの問題を処理するように拡張できます。 これはさまざまな用途に使用できると思います (「DNN 勾配のその他の用途」というタイトルの論文セクションを参照)。たとえば、ここに予備的で漠然としたアイデアがあります。私は以前、「説明可能な AI」について書き、それが検証に役立つ理由(他の多くのことの中でも)について言及しました。おそらく、DeepXplore のような技術 (正確な境界とその境界に関する補完的なサンプルを見つける) を使用して、入力のローカル領域 (「この入力がこれになった場合、答えはこれになるはずです」) を特徴付け、ユーザーがそのように DNN を理解できるようにすることができます。 その他のコメント以下は、この論文を読んでいるときに私が見つけたいくつかのコメントです。 機械学習システムだけでは、すべての安全性の問題に対処できない可能性があります。「強化学習と安全性」(https://blog.foretellix.com/2017/03/28/misc-stuff-mobileye-simulations-and-test-tracks/)で述べたように、ほとんどの人は、DNN だけでは安全性に関連するすべてのエッジ ケースを考慮できないと考えています(間違ったデータで過剰にトレーニングするとシステムが通常の状態から逸脱するなど、多くの理由があります。たとえば、コードを読んでシステムが安全性の仕様を満たしていることを確信したい場合など)。したがって、DNN ではない何らかの「安全なラッパー」が必要になります (上記の記事では、そのようなラッパーを 3 つ挙げました)。 私の考えが正しければ (DeepXplore が DNN システムによって制約されていると仮定すると)、DeepXplore はジョブの一部しか実行できず、見つかった「エラー」ごとに、それを別のより大きなシステムに渡して、ラッパーがジョブを完了できるかどうかを確認する必要があります。これは簡単かもしれませんが、そうではありません。 著者はこう答えた。 あなたが正しいです。現実世界の自動運転車では、すべてのエラーケースの処理を DNN に直接依存するのではなく、DNN の可能性のある決定を処理するための何らかのラッパーが搭載されます。したがって、このラッパーも適切なテストターゲットになるはずです。 敵対的サンプルについて:私は「機械学習を使用して機械学習を検証しますか?」にいます。この投稿では、敵対的例について言及しました。私は次のように述べました。 この記事「機械学習における移転可能性: 現象から敵対的サンプルを使用したブラックボックス攻撃まで」(https://arxiv.org/pdf/1605.07277.pdf) では、さまざまな機械学習システム (ディープ ニューラル ネットワーク、サポート ベクター マシン、決定木など) における同じ欺瞞的なサンプルについて言及しています。 ***、この記事「敵対的サンプルの説明と活用」では、欺瞞的なサンプルをすべての線形モデルに転送する必要がある理由について説明します。さらに、この論文では、正しく分類された入力は入力空間内で「薄い多様体」のみを形成することが示されています。これらは誤解を招く例に囲まれていますが、入力スペースの大部分は、トレーニングの焦点とはまったく関係のない「無効な例」で構成されています。 同じタスクを実行するときに、1 つのディープラーニング実装を騙す敵対的サンプルが他の DNN 実装も騙す傾向がある場合、おそらくそれらの誤ったサンプルも同じことを実行できる可能性があります。これが正しければ、K が非常に大きくない限り、K 実装間の比較によるチェックは機能しません。 著者はこう答えた。 移転可能性というのは実に興味深い観察です。私たちの実験では、一部の入力状態は転送可能ですが、大部分は転送できないことがわかりました。実際、差異テストの目的は、そのような転送不可能な状態を見つけることです。 同時に、「無効な例」のスペースが実際に非常に大きい場合は、次のように分割する必要があることに注意してください。「トレーニングでは考慮されていないが、トレーニングに含める必要がある」(「左側通行」など)。同時に、「正当な理由によりトレーニングでは考慮されない」(「宇宙空間の車、一方が他方の上を飛んでいる車」など) にも分割する必要があります。これで、上で述べた非常に難しい「制約問題」に戻ります。 オリジナルリンク: https://blog.foretellix.com/2017/06/06/deepxplore-and-new-ideas-for-verifying-ml-systems/ |
<<: 私のディープラーニング開発環境: TensorFlow + Docker + PyCharm など。あなたの環境はどうですか?
>>: 機械学習におけるデータの不均衡の問題を解決するにはどうすればよいでしょうか?
人工知能は急速に発展しています。データによると、2016年から2020年にかけて、中国の人工知能市場...
起業プロジェクトの数、資金調達額、資金調達のスピードなど、AIは近年間違いなく注目の産業です。しかし...
機械学習は複雑な分野ですが、データの取得、モデルのトレーニング、予測の提供、将来の結果の改善のプロセ...
[[335970]]ビッグデータダイジェスト制作出典: medium編集者: Hippo採用は凍結さ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
人間の脳は地球上で最も効率的な計算装置です。わずか 20W の電力と 1.3kg の質量で、1 秒間...
ディープラーニングの人気は、基本的に人々の計算能力の追求によるものです。最近、MIT は警告を発しま...
人工知能は長年にわたって世界を支配しており、さまざまな分野における主要な問題が AI を使用して解決...
「世の中には2種類の人がいます。VRが世界を変えると考える人と、まだVRを試したことがない人です。」...