深層学習自動デバッグ技術

石川 冬樹
国立情報学研究所 アーキテクチャ科学研究系 准教授 / 先端ソフトウェア工学・国際研究センター 副センター長

徳本 晋
富士通株式会社 富士通研究所 研究本部 人工知能研究所 AI品質PJ シニアリサーチャー
細やかなニーズに応えるAIを
―Engineerable AIプロジェクトの概要を教えてください。
石川:企業のAI活用が進み、AIに係るガイドラインが発表されるなど、第三次AIブームが訪れています。その今、技術者としてAIにどう向き合うかが話題になっています。
従来のプログラムは、人が一定のルールを定め、人が動かすものでした。一方で、機械学習は多数のデータを準備し、データの中に隠れている規則性を導きだし、予測や検知、識別をするものです。つまり、人のコントロールや調整が効きません。また、今のAIは、多数のデータを用意し、そこから導き出された回答が概ねニーズを満たすことに重点を置き、例えば10,000件のうち9,000件が正解であれば良しとします。しかし、残りの10%内に本当は欲しい解があるケースもあり、企業にとっては信頼性や安全性に欠け、普及のネックになっています。医療や交通等の重要な社会インフラにおける産業的活用を考慮すると不十分です。AIの精度を上げるのはもちろん、細やかなニーズにも応えることができる質的向上も必要です。ここをソフトウェア工学の力で、成し遂げたいと考えています。
Engineerable AIプロジェクトは、医療や自動運転などディペンダビリティが重要となる領域を見据え、細やかなニーズに応えるAIシステムのための“Engineerable AI”技術に取り組んでいます。

人がAIをコントロールする
―Engineerable AIプロジェクトでは、「知識融合型深層学習技術」と「深層学習自動デバッグ技術」の2つに取り組んでいます。ここでは、「深層学習自動デバッグ技術」について説明いただけますか。
石川:AIはさまざまな分野で期待が高まっています。しかし、従来のAIでは学習に大量のデータを必用とするため、少ないデータしか取得できない場合や、修正を要する場合の対応が困難です。
デバッグ技術とは、ソフトウェア工学の言葉で、プログラムのバグを見つけて直す作業です。この技術を機械学習で作ったAIでも上手く活用し、修正可能にすることを目指し、自動運転PoCフィールドにて進めていきます。
これまでのAIにおけるデバッグは、通常訓練に用いるデータを追加したり変更したりするなどし、システム全体の改修・更新を図り対応します。しかし、AIはニューラルネットワークであり、何百万個のパラメーターが稼働しているため、既存プログラムのように不具合箇所を明確に検知することが難しく、不具合部分のみ改修するなどのコントロールができません。場合によっては、修正でシステム全体が変わってしまうこともあり、ある部分を直そうと再訓練すると、別の部分が上手くいかなくなるなど、モグラたたきのような状態になります。このように結果が非常に不確実で予測不可能。これでは、製造業や自動運転などのニーズに上手く応えることができません。
例)バグ位置推定技術の応用

修正したい失敗ケースに影響している部分の分析・局所化等により、対象を絞ったパラメーター調整
正解・不正解を全体でシャッフルせず、自動修正で培ってきた技術を応用し、直したいポイントだけ手を加えることで、ユーザーが求める最適解を導き出せないかを、自動運転PoCフィールドでチャレンジしています。
徳本:AIは、さまざまなデータを集めたうえでロジックを自動的に決定します。また、ロジック自体も何万とあり、名前がついていないロジックも多数あります。誤った解を導き出すロジックを特定することすら、普通はできません。逆を言えば、偶然直すこともできますが、これではエンジニアリングと言えません。AIの挙動やその良し悪しに関する知識を調べることで、その挙動を望ましい形に修正するデバッグ技術に取り組んでいます。人がコントロールし、かつ自動で修正することを目指しています。
リスク軽減・期間削減・コスト削減
―「深層学習自動デバッグ技術」が進んでいくことで、得られるメリットを教えてください。
石川:AIを全体シャッフルして改修したのでは、細かなニーズに応えていくことは難しく、試行錯誤の連続になります。試行錯誤ではなく、狙ったポイントだけを修正できることが一番の大きな変化です。
自動運転において道路標識の認識誤りや通行人を検知できないなどの問題が起きた際、修正には膨大な時間を要します。修正したい特定のAI性能を抽出し、狙った修正が可能となることで、システム開発の時間削減、自動運転の安全性向上、保証の実現に貢献します。一直線にゴールに向かって進められることが大きなポイントです。
徳本:狙ったところを少ないデータで素早く直すイメージですね。例えば製造ラインで不具合が生じた場合、即直さなければなりません。少ないデータでかつ自動化でデバッグ作業が行えれば、改修の見通しがつきやすくなり、その分リスクも軽減できます。当然、コストメリットも高いと思われます。
最も難しいフィールドで挑戦
―自動運転をフィールドに挑戦されている理由は。
石川:市街地の自動運転では、歩行者や道路標識など、さまざまなものを検知、識別しなければなりません。最も安全性が求められる領域であり、非常にシビアな画像認識力が求められます。また、不具合が発生した際に、直し続けることができることがとても重要です。この自動運転という高いハードルをクリアできれば、他の分野での活用もしやすくなります。
自動運転のメインとなる技術は画像認識です。現状、画像認識へのニーズが非常に高いこともあります。
デグレーション率を下げる
―「深層学習自動デバッグ技術」として取り組まれている「NEURECOVER : Regression-Controlled Repair of Deep Neural Network with Training History」(以下NeuRecover)について教えてください。
徳本:「NeuRecover」は、従来の自動プログラム修正技術を応用し、ディープニューラルネットワーク(DNN)上のどこのパラメーターに不具合があるかを解析し、ピンポイントで修正する技術です。
これまでのお話の通り、再訓練によるDNN上でのデバッグはとても困難です。そのためには、デグレードを抑えつつ、特定の対象を修正する技術が必要です。従来のAIを使わない自動プログラム修正技術では、対象とした欠陥の修正はできますが、デグレードに対しての対策が不十分でした。また、修正しにくい失敗データを修正しようとすると、他のデータに対するデグレードにつながる恐れがありました。
従来手法はデグレードの対策が不十分

修正しにくい失敗データを修正しようとすることによって、他のデータに対するデグレードにつながる恐れがある
そこで、訓練履歴を用いたDNN修正に注目しました。改善・退行テストデータを分類し、重み差分、後方影響度、前方影響度を測定し、それぞれの大きさの順に重みをソートします。退行/改善データに対して前方影響度と後方影響度の上位で共通の重みを抽出し、重み差分が大きい重みのうち、退行データに影響し、改善データに影響しない重みの集合を特定し、その後、集合演算による欠陥局所化を特定していきます。実験結果でも「NeuRecover」は他の手法と比べてデグレーションが低いことが示されました。
提案手法:訓練履歴を用いた欠陥局所化

訓練履歴中のモデルと修正対象のモデルを比較し、退行に影響し、かつ、改善に影響しない重みを特定する
産業界からもデグレーション率低下は求められてる事項です。デグレーション率を下げる狙いを達成できたことは大きな一歩。リスクをコントロールできるようにしたことは、まさにエンジニアブルだと思います。
実験結果:NeuRecoverは他手法よりデグレーションを抑えている

NeuRecoverは従来手法(Arachne)と再訓練(Retraining)と比較して、デグレーション(グラフの負方向の伸び)を抑止できている
今後、多様なモデルデータでの出力安定化や、十分に訓練されたモデルに対する修正方式への着手などの課題に取り組んでいきます。なお、「NeuRecover」を3月中旬に「SANER2022」で発表する予定です。富士通研究所TechBlogでの紹介記事もあわせて参照してください。
石川:「NeuRecover」は非常に難しいことに取り組んでいますが、有望なデバッグ技術のひとつであり、期待しています。
さまざまなモデルケースを用いて開発・検証
―今後の活動スケジュールを教えてください。
石川:Engineerable AIプロジェクトは、JST未来社会創造事業による支援のもと、2024年度までの5年間実施予定で、まずは2022年度の中間審査にむけて活動を進めていくこととなります。2022年度は、研究者や実務者から共通事例として参照できる自動運転におけるさまざまなモデルケースを提供いただき、「NeuRecover」をはじめ、あらゆるアプローチを試していきます。さまざまなデバッグ技術の開発・検証を進め、狙った箇所にアプローチできているか、デバッグ作業により高リスク部分を実際につぶせているか、逆に増えていないかなどを検証し、まとめていきます。
Engineerable AIプロジェクトは、「深層学習自動デバッグ技術」と「知識融合型深層学習技術」の研究開発を進め、AIの高度化を図ります。