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

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

Sogetiの考える「人工知能のテスト」を調べてみた。

 2018年3月、「AIプロダクト品質保証コンソーシアム」の設立が発表されました。

monoist.atmarkit.co.jp

 略称は「QA4AI」、つまり「AIのためのQA」ですね。前回の翻訳記事は「QAのためのAI」だったので、今回は「AIのためのQA」も含めた話題を紹介します。TPI NEXTやTMapで知られるSogetiによるホワイトペーパー「人工知能のテスト」です。

TPI NEXT? ビジネス主導のテストプロセス改善

TPI NEXT? ビジネス主導のテストプロセス改善

 目次は以下の通り。かいつまんで紹介してみます。

1 Executive summary
2 Setting the scene
3 Testing of Artificial Intelligence
4 AI Quality Engineering Skills
5 Conclusion
6 Acknowledgments

1. 概要

 要点は以下の3点です。

  • 人工知能(AI)が台頭してきて、人々の生活を変え始めている。
  • AIがテストを代替するソフトウェア開発においては、アジャイルやDevOpsの流れで定着してきた2週間といったサイクルでも遅い。
  • テストに関する既存の知識は、AIのためのテスト、AIによるテストにおいても有効だが、新たなスキルも必要になる。

2. 準備

 まず、単語について簡単に説明しています。特徴的なのは以下の2つ。

  • Machine Intelligence: 機械知能。「AI」という言葉を使った途端に、「本当のAIとは」と話が逸らされていくので、AIやMLと同じような意味で使っているとのこと。
  • Cognitive IT: コグニティブIT。知覚と知識に基づいて振る舞うことのできる情報技術。テストや品質保証のためにコグニティブITを使うことを、Sogetiでは「コグニティブQA」と呼んでいます。

 次に、AIを用いたシステムをテストすること(testing OF AI)と、AIを用いてシステムをテストすること(testing WITH AI)の二つを説明しています。 後者は「デジタルテスティング」と表現されてもいます。

3. AIをテストする

6つの軸

 AIの品質の軸として以下の6つを挙げ、目新しいものとして後の3つについて詳述しています。

  1. Mechanical(機械)
  2. Electrical(電気)
  3. Information Processing(情報処理)
  4. Machine Intelligence(機械知能)
  5. Business Impact(ビジネス・インパクト)
  6. Social Impact(社会的インパクト)

 本ペーパーで何度か言及されることですが、テスターに求められる作業として、以下の二つが挙げられています。

  • システムが時間(と学習)につれて変化していくため、システムの出力が満たすべき境界や許容範囲を決め、テスト中も本番環境でも、その範囲に収まっていることを確認する。
  • 入力に対する出力への影響を理解する。また、システムの入力を制限して、出力への影響を限定する。

 入力と出力の両方に注目していることがポイントです。また特に後者については必ずしも開発中の話ではないようです。リリース後にユーザからの入力から学習する前提で、それを継続的にモニターすることを求めています*1
 4章では、Microsoftのチャットボットが起こした問題に言及しつつ、機械がどのように学んでいるのか、入力に対してどのように反応しているのかを理解する必要があるとしています。

www.buzzfeed.com

 また「社会的インパクト」について、新技術が社会や個人にもたらす影響に注意を払う必要があり、社会学や心理学の知見が必要としています。ソフトウェア品質保証の「V&V」では検証(Verification)と妥当性確認(Validation)があり、特に後者では「仕様どおりに」作られていることよりも、その製品が本来求められている要求を満たしているかを確認することが必要になりますが、その範囲が「ユーザ」という個人から、さらに拡張されている感じですね。

AIのテストにおける確認事項

 例に挙げられた確認事項は以下のように、技術的な側面だけでなく、社会的側面、法的側面、倫理的側面についても言及があるのが特徴です。

  • 受け入れ条件は何か
  • 最小工数でその条件をテストするために、テストケースをどうデザインするか
  • トレーニングとテストでデータを分離しているか
  • テストデータは、予想されるデータを適切に代表しているか
  • テストとトレーニングデータは法的なフレームワークに準拠しているか
  • トレーニングデータは偏っていないか
  • モデルの期待出力は何か
  • モデルがオーバーフィット/アンダーフィットしていないか
  • ソリューションは非倫理的ではないか
  • 性能と堅牢性は十分か

4. AI品質保証のエンジニアリング技術

必要となる知識

 テスト技法やテスト管理など、既存のテスト関連技術は今後も応用できる一方で、今後新たに必要になるスキルセットについて言及しています。

  • 機械学習、ビッグデータ解析、クラウドコンピューティング
  • PythonやScalaなどのプログラミング言語、TensorFlowのようなOSS
  • 数学。特に統計・微分積分・線形代数・確率
  • A/Bテスティング、メタモルフィックテスティング
  • ハードウェアアーキテクチャ
  • 機械、電気。ロボットが物理的なものなら。
  • 生物学、経済学、社会科学、心理学。データサイエンティストにとって使い道が多い。
  • 哲学や倫理学。インテリジェントなソフトウェアの世界では重要さを増す。

 A/Bテストやメタモルフィックテスティングについては、以下の動画や記事をご覧ください。


What A/B Testing is & How to Use It www.kzsuzuki.com

セキュリティ、プライバシー

 データポイズニングやAdversarial Examplesといった攻撃手法や、フィルターバブル*2、偏見の増幅による差別の拡大といったビッグデータの課題、顔認識技術の発達によるプライバシーの問題などについて言及しています。たとえばKasperskiのこの記事が参考になるかもしれません。

blog.kaspersky.co.jp

5. 結論

 第5章では、AIのテスト、AIによるテストにおいて求められるスキルが列挙されています。上述の「知識」と重複する部分もありますが、よりマネジメント・ビジネスに近い内容もあるので、ぜひホワイトペーパーをご覧ください。

 また最後の主張として、これらの高度なスキルをすべてもった人間を連れてくるのは困難なので、既存のスキルを備えたメンバーに対し、新たな教育の投資をしていこうと書かれています。前の翻訳記事では「AIによって仕事を失ったりはしないよ!」みたいな論調でしたが、AIをテストしようとする人は、これまで以上にハードな継続的学習が必要になりそうです。とってもげんなりワクワクしますね!

www.kzsuzuki.com

終わりに

 と、それなりに原稿を書いたところで、ソフトウェアテストヒストリアン・辰巳敬三さんのこのツイート・・・。まったく追いつかない・・・。

*1:そのモニターにもまた、AIが使われるであろうという前提で。

*2:「インターネットの検索サイトが提供するアルゴリズムが、各ユーザーが見たくないような情報を遮断する機能」(フィルター)のせいで、まるで「泡」(バブル)の中に包まれたように、自分が見たい情報しか見えなくなること。 via Wikipedia