2018 年 4 ⽉ 10 ⽇開催 第 72 回 JIPDEC セミナー「⼈⼯知能の品質保証とは」「⼈⼯知能の品質保証とは」
⽇本アイ・ビー・エム株式会社
東京基礎研究所部⻑

インダストリー・ソリューション
セキュリティ＆サービス
リサーチ・スタッフ・メンバー
早稲⽥⼤学⼤学院

細川⾮常勤講師

宣啓⽒

本⽇の講演タイトル「⼈⼯知能の品質保証とは？」には以下 4 通りに解釈できる曖昧さがある。
1.

⼈⼯知能で品質保証（⽅法の話）

2.

⼈⼯知能で品質保証なんてできるのか？（実現性の話）

3.

⼈⼯知能の品質保証はどうやってやるべきか？（要望・要求・理想レベル）4.

⼈⼯知能の品質保証は可能か？（実現性の話）■⼈⼯知能で品質保証
まず⼈⼯知能で品質保証が可能かという話からしたい。
例えば、「TODO というコメントが残存している」という未完成を⽰すバグを⼈⼯知能で検出することはできるか。
////TODO:ロギング処理などというコードは「ロギング」処理が⽋落していることをレビューを通じて「TODO」として指摘、つまり処理なしの処理になっており TODO の意味がない。
このプログラムの場合、何がソフトウェア⽋陥なのか。”TODO”があることか、処理が空なことか、エラーハンドラになっていないことなのか?
さらに、/// TODO3:フェールセーフ機能（現状異常にせず、ServiceTrace に出⼒するのみ、/// 異常にする場合、ソースコード上のコメントを削除すること）

1

2018 年 4 ⽉ 10 ⽇開催 第 72 回 JIPDEC セミナー「⼈⼯知能の品質保証とは」

は、「コメントを削除すること」とは「コメントになっているところを普通の⾏に戻せ」なのか「コメントになっているところを⾏ごと削除しろ」と⾔っているのか⼆義性がある。しかも「異常にする場合」、「ソースコード上のコメントを削除すること」とあるので、異常にしない場合は削除するのかしないのかわからない。TODO を書いた⼈と実⾏した⼈の意識合わせをしなければならない。
こうした⼆義性のあるものに従うことは、誤った修正にミスリードする可能性がある潜在的なバグであり、実装した瞬間に実バグになる。実バグを⽣み出すタイプの TODO ⽂章といえる。AI は意味を理解しないので「⼆義性があり、潜在バグの可能性が⾼い」ということをどうわからせるかが問題だ。AI に単純にバグをとらせようと思っても難しい。せいぜい TODO の記述箇所を⾒つけるくらいしかできない。⼈間ならば修正順序まで⼤体推測できるものを AI に実装させるというのはかなり難しい領域である。
従来の品質管理は内在しているバグの数のみで保証すると思うが、コンピュータのバグには学問的な定義がない。「何が故障であり何がバグであるか」という定義が学習する元データになるが、AI では学習の対象となる悪いデータが集まっていない。
■⼈⼯知能の品質保証
⼈⼯知能搭載兵器や⾃動運転、医療分野などあらゆる産業⾯で⼈⼯知能システムの発展に伴い、パブリックセンサーやオープンなデータを検出し、上⼿く取り扱うことが現在の鍵になってきている。

（図１）
2

2018 年 4 ⽉ 10 ⽇開催 第 72 回 JIPDEC セミナー「⼈⼯知能の品質保証とは」

私たち⼈間はどうしてバナナとぶどうの違いを認識できるのか？「バナナ」＝「⻩⾊くて細⻑くいもの」と定義すると図１にあるような唐⾟⼦やキリンも「バナナ」といえる。開発者じゃない⼈はよく「⼤量のデータを⾷わせれば必ず⼈⼯知能が成⽴する、育っていく」と誤解しているが、AI はラベルを付けて分類したものでしか学習できない。
「プログラムのバグを AI で⾒つけられないか」とよく聞かれるが、バグの性質、挙動、被害がラベル付けされて初めて品質保証に役⽴てることができる。現在集まっている⼤量のデータを AI に学習させるために⼈間が認識、整理し AI に学習させるためのラベル付けをするところまで⾄っていない。AI はまだ意味を理解しておらず、あくまで与えられた特徴から似たものを探してくるところまでしかできていない。
AI はまだ照合や推論の域を出ておらず、本⽇のテーマ「⼈⼯知能の品質保証」というタイトルに多義性があり、「⼈⼯知能で」、「⼈⼯知能を」という⼆つの解釈ができるという意味論を理解できない。
2016 年 10 ⽉にホワイトハウスから『AI 研究開発ガイドラインの組織化に向けた提⾔』が出された（図 2）。この中に「AI ネットワークシステムはその挙動が説明でき、検証可能であること（透明性原則）」とあるが、AI は意味を理解しないので「私（AI）は望まれていない答え、嫌な答えをしていないか」という⾃省をしたり意味を考えながら会話を進めることが現時点ではできない。

（図 2）

3

2018 年 4 ⽉ 10 ⽇開催 第 72 回 JIPDEC セミナー「⼈⼯知能の品質保証とは」「⼈間の尊厳とネットワークに接続する AI の研究開発を⾏う上で個⼈の⾃主性（⾃律性）を尊重すること（倫理原則）」とあるが倫理というのは地域（regional）や宗教（religious）によっても異なり、A さんに不快なものが B さんに快適だったりするので尊重しようがない。また、いわゆる ChatBot に代表されるユーザー対話を伴う AI アプリケーションの場合も、学習元となるデータの品質に応じてユーザーに対する反応が望ましい・望ましくないといった快・不快問題を内包する。これは従来の開発におけるプログラムではなくデータの問題で、これをバグと呼ぶことは果たして適当といえるか。
「AI の研究者・開発者は、ネットワーク分散された AI であっても、ユーザー（やその他の受益者）に対して説明責任を果たさなくてはならない（アカウンタビリティー原則）。」についても、AI は毎分毎秒データを⾷わされて賢くなっていくものなので、例えば 1 秒間隔で 10 回 テ ス ト すると 1 回 ⽬ と 2 回 ⽬ で 同 じ結 果が 出 ない 可能 性 があ る。 決 定 的（deterministic）な関数のファンクションテストではないので、どうテストしたらいいのか、どこまでテストしたらいいのかが明確でない。つまり、⼈⼯知能を品質保証しようとしてもテストができない、終わりがない。
AI の品質保証にはたくさんの課題がある。アメリカではロボットが⼈を襲わないよう、AI ⾃⾝が⾃分（AI）を殺す「アポトーシス問題（⾃分⾃⾝を⽌められない）」が話題になっているが⾃分がシャットアウトできたことを確認できないのでそういう機能は実現できない。
良いデータを⾷わせれば AI は賢くなると思われているが、私は「やってはいけないことだけ学習させれば良い」と思っている。例えば⾃動運転⾞が安全に左折するために、前⾛⾞、並⾛⾞、後続⾞、路⾯の摩擦係数、歩⾏者、⾃転⾞といったすべての組み合わせを掛け算でテストすると安全が保障されるのは数兆ケースの事例を検証したあと、つまり数千年後といわれる。そうではなくて、前後左右にぶつかったらアウト、⼈や⾃転⾞を轢いたらアウト、と条件を⾜していくと検出数が数⼗ケースにまで減る。⼈⼯知能のテストは背理法でテストすると検出数が極端に減る。シミュレーションしたらおそらく数分程度で済むだろう。ただし、それでその⾃動⾞を販売して良いかというのは法律学や倫理観の問題になってくる。
⼈⼯知能システムの安全を守るには、防衛、検知、修正・訂正、軽減という 4 段階のガードをかけていく AI のための AI を⾛らせるイメージで考えていただくと分かりやすい（図3）。私も「悪魔回路」と「良⼼回路」から成り、良⼼回路の振る舞いを悪魔回路が常にチェックする AI を作りたいと思っており、少なくとも⼈間を殺したり暴⾛したりする状態を⽌められる安全装置をかけて作ろうというところまできている。

42018 年 4 ⽉ 10 ⽇開催 第 72 回 JIPDEC セミナー「⼈⼯知能の品質保証とは」

（図３）
■まとめ
AI の品質の領域をきちんと捉えている国は⽇本を含めて今のところ存在しない。世界中の学会、組織で「テスト技法を作ろう」というレベルであり、品質に包括的かつ真正⾯から取り組めてはいない。もし、本分野に取り組んでいたり問題を抱えている会社さんがあれば是⾮呼んでいただきたい。AI と品質の問題は⼀社レベルではなく市場全体で取り組むべき課題だと考えている。今後とも是⾮皆さんと知⾒を共有していきたいと考えている。

5