人工知能システムのソフトウェア品質検査


2018年 03月 12日

去年くらいから、人工知能を使ったさまざまなシステムが氾濫している。
実際、十分な良質なデータが用意できれば、なかなか良い結果が得られる、得られることがあるのはわかってきた。
そういうことで、試作して様子を見る段階から、実運用に次第にシフトしているのも事実だ。

しかし、人工知能を用いたシステムの場合、テストが難しい。
それも、人工知能ゆえの本質的な難しさがある。
今回は、それについて、まだぼんやりしている私見を書いてみた。あくまで私見である。

人工知能においては、データを、学習用とテスト用に分けて、学習が進むと、テストデータによる評価も上昇し、結果が満足できるようになったところで、この人工知能は十分に賢くなった、使えると判断することが多い。
しかし、それだけで、人工知能システムが正常に動く、さらには実運用に使う、つまり社会の中で使ってよいのだろうかという問題がある。

学習データに入っていることは、まあ正しい結果が出るだろう。
テストデータについては、用意されたデータが入力された場合には、まあまあOKということに過ぎない。

人工知能は、しっかり検討して作られたモデルに従って動いているわけではない。
それどころか、モデル、処理の仕組みを考えるのを放棄して、人工知能にその仕事を押し付けているようなところがある。
大量のデータから、ある種のモデルをコンピュータ内に作るわけだが、同じデータを入れても同じモデルができる訳ではない。というより、同じデータを利用しても毎回違う結果になる。
これは、確率、統計にしたがって、テキトウに学習するので、そうなってしまう。
それでも、何らかのモデルがコンピュータ内に構築されているのだから、それを調べればといっても、できあがったモデルはブラックボックスである。

今の人工知能では、学習データにあった内容については非常に良い結果、専門家よりはるかに優れた結果を出すことがよくある。
しかし、データに用意されていなかったようなデータが来た場合、結果はどうなるか分かったものではない。

どうしても現状で使いたいが、安全性も保証したいと思うと、人工知能の結果を別の方法で安全チェックしないといけない。
ダメなら、安全チェックを通過するまで再計算するという手はある。
でも、これが使えるのは、リアルタイム性を要求しない場合に限られる。
運が悪いと、永久に再計算をし続けることもありうる。

今の人工知能は、ディープラーニングに限らず、進化計算などでも、基本は確率統計の罠から抜け出せない。

安全性は、どのくらいにすれば良いのだろうか?
社会は、コンピュータには100%の正解を求めるのが常だ。
人間は間違えるもの、コンピュータは間違えないもの、という考えが強い。

しかし、人工知能は脳、遺伝など生物を手本にしているのに、コンピュータは間違えないというのは無理難題である。
人工知能も人間程度、有能な人間程度には間違いを犯すこともあるのは必然なのではないだろうか。

人工知能の納品検査について考えてみよう。
人工知能を利用したシステムを発注して開発が終わり、納品検査をするとき、どうすれば良いのだろうか?
確率統計にしたがって動くシステムで1000回テストしても、1001回めには異常が発生する可能性がある。
さらに、統計確率的に動く世界なので、プログラムにバグが入っていても、統計的に誤魔化されてしまう可能性も高い。
いずれにしても、今までの納品検査の考えをそのまま当てはめるのは困難であるのだが、人工知能を利用したシステムを発注する側に、それだけの考えが無いことが多く、実際色々問題になっているようだ。

….と書いただけでは説得力に欠けると思われるので、このような分野の論文を1つ紹介しておく。

機械学習工学に向けて、丸山宏著、日本ソフトウェア科学会第34回大会(2017年度)講演論文集

日本ソフトウェア科学会

丸山宏氏は、あのChainerで有名な株式会社Preferred Networksの最高戦略責任者(Chief Strategy Officer)である。

この問題は、たぶん今年さまざまな形で取り上げられ、研究会なども立ち上がるのではないかと思われているようだ。