ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

AI/DLシステムの説明可能性と組み合わせテストの関係

はじめに

 辰巳敬三さんが先日、このようなツイートをされていました。

 「An Application of Combinatotial Methods for Explainability in Artificial Intelligence and Machine Learning」(人工知能や機械学習の説明可能性に対する組み合わせメソッドの適用)。

csrc.nist.gov

 AIを組み込んだシステムの説明可能性(explainability)は、よく言及されるところです。5月に発行された『AIプロダクト品質保証ガイドライン』では、説明可能性について以下のように述べています。

 説明可能性・解釈性(Explainability/Interpretability)は、システムからの出力を用いる人間が、出力を得る際に用いられた判断基準(モデルが学習した規則性)について把握することができる程度を表す〔ガニング2016〕。要求や振る舞いを明確に形式知として書き出せない場合でも機能を実現できることが機械学習の強みである。しかし、人間が出力を参考にして意思決定を行う場合など、アプリケーションによっては説明可能性・解釈性が必要となる。

 説明可能性をもったAIは、「XAI」(eXplainable AI)と呼ばれています。
 システムがどのような推論を経て最終的な判断・結論を得たかを考える説明可能性の話と、ソフトウェアテスト技法の文脈で現れる組み合わせテスト。一体何が関係あるのかと思って、紹介いただいた資料を読んでみました。なお本資料はホワイトペーパーのドラフトという位置づけです。

概要

 もしかするとこちらを見れば一瞬で理解できるのかもしれませんが・・・。

csrc.nist.gov

 以下、ポイントを要約してみます。誤読あればご指摘ください。

Abstract

  • 組み合わせテストにおける欠陥の所在特定(location)の方法を、AIによる判断の説明に適用することができる。
  • 適用するのは、対象の特性(characteristics)に基づいてメンバーシップを決定する、分類(classification)の問題。
  • メンバーであれば持っているが、非メンバーは持っていない特性の組み合わせを特定する。

Background

  • AIの正確さと説明可能性はトレードオフの関係にある。
    • たとえばCNNは現在もっとも正確な方法であるが、内部計算についての説明には欠けている。ドメインには詳しいがAI/MLに詳しくない人に、結論を理解してもらう必要がある。
    • ルールベースのシステムは結論を理解しやすい。たとえば、「もし症状Aが、症状Bか症状Cと一緒に現れていたら、診断はXである」というロジックがわかる。一方、正確さでは劣る。
  • 機械学習における分類の問題と、ソフトウェアの組み合わせテストにおける欠陥の所在特定は、ともに非常に多くのプロパティや値の組み合わせを特定することが目的。
    • 組み合わせテストにおいては、SUTの故障のトリガーとなる組み合わせ
    • AI/DLシステムにおいては、ある結論を導き出す組み合わせ
  • AI/DLシステムが結論を導く変数の組み合わせを特定するために、組み合わせテストのツールを活用できる。

Fault Location

  • 組み合わせテストの難しさは、faultのトリガーになる要素が1つでないことに起因する。どの値の組み合わせが故障につながるのかを特定したい。
    • 15個あるパラメタから4個の組み合わせをとると、1,365パターンになる。
  • 従来のパラダイムとしては、「成功したテストには現れず、失敗したテストに現れる組み合わせ」を探す。前者に現れる組み合わせは明らかにトリガーでない。
  • ComXAIというツールを使って、クラスに分類されなかったデータにおける、t-way組み合わせを分析する。

Examples

  • 「爬虫類かそうでないか」の分類を、16個の属性から判定する例。2つの属性の組み合わせ(2-way)は120、3つの属性の組み合わせ(3-way)は560種類ある。
  • たとえば属性の1つ「歯があるかないか」が取りうる値には「歯がある」「歯がない」があるが、これらの値はともに、「爬虫類」クラスに分類されたものにも、「非爬虫類」クラスに分類されたものにも現れる。つまり、属性「歯があるかないか」は、単独ではクラスを識別することができない
  • 次に2-way。「歯がある」「足の数が4」という組み合わせは、「非爬虫類」クラスのデータのうち2.1%に現れる組み合わせ。よってこれでもクラスの識別のための属性群としてはまだ弱い。
  • 3-wayになると、「爬虫類」クラスのデータには現れるが「非爬虫類」クラスのデータにはまったく現れない値の組み合わせが出てくる。
    • たとえば、「水棲である」かつ「歯がある」かつ「足の数が4」。
  • これらの組み合わせは、「爬虫類である」と判断するためのルールと見なすことができる。

Discussion

  • 「あるクラスには現れるが、それ以外のクラスには現れない」パラメタ値の組み合わせを見つけてルールセットとすることで、AI/DLシステムによる結論に、直感的な説明を与えることができる。
  • 結論の説明だけでなく、DLの分類モデルのアルゴリズム実装にもこのアプローチを使うことができるかもしれない。
  • 小規模な問題であっても組み合わせパターンは膨大になるため、得られたルールセットは巨大なものになりうる。また過学習も問題になる。

所感

 AIシステムと組み合わせテストの関係がまったく想像つかなかったのですが、読んでみるとシンプルなアイデアで、面白いと思いました。ただ、いくつかよくわからない部分もあります*1

(1)どちらにも現れない組み合わせ

 上の例を借りると、「非爬虫類のデータには現れない値の組み合わせは逆に、爬虫類であると判定するためのルールと見なすことができる」というアイデアです。でもたとえば「足が13本である」というデータは、「爬虫類」側にもない(または希少)なので、「爬虫類」であるとする判定には使うべきでないでしょう。「爬虫類クラスのデータには十分に現れている組み合わせ」であることも必要条件なのではないかと思いました*2

 「足が13本」のような極端な話でなくても、「爬虫類」クラスのデータにたまたま現れなかった値の組み合わせをもって「非爬虫類」クラスに分類するためのルールとされても困る。これが Discussion にあった過学習の問題でしょうか。

(2)用意されたデータ

 「画像を見てどの動物かを分類する」というシステムにおいて、「歯がある」「足が4本ある」のような属性と値のセットがデータとして与えられるのは普通なのかな?と思いました。
 このペーパーでは、爬虫類か否かの分類の例の他、二酸化炭素濃度などのセンサーデータから部屋が使用中か空きかを判定する例と、リンパ系造影法(lymphography)の画像から病理診断を行う例が紹介されています。ともに、分類を行うための属性と値が明確。属性自体が不明の場合はまた話が別ですね。

(3)予想もしなかった組み合わせ

 ルール導出の結果、「なるほど」と思えるものだけでなく、「はあ!?」となる「ルール」が現れる可能性があります。一見、まったく無関係に思える組み合わせが、結論に関与しているようなケースです。これにどう対応するのかというのが疑問でした。
 これは Conclusion and Research Direction の最後にちらっと書かれています。

 クラスを特徴づける要素の組み合わせがユーザの期待に合致しないようであれば、導出されたクラスに欠陥があるのかもしれない。あるいは、予期していなかった関係が結果に影響しているのかもしれない。いずれにしても、モデルをより理解することにつながる。

 得られた組み合わせ・ルールを必ずしも真と見なすわけではなく、モデルの見直しや、未知の要因の発見につなげるのですね。

*1:ペーパーの問題ではなく、読む側の問題だと思われますが・・・

*2:ComXAIで計算しているのは、「爬虫類」のデータに現れた組み合わせに絞っているのかもしれない。