トレンド情報 / 記事を探すCOLUMN

AIはソフトウェアテストにどう関係してくるのか

更新日|2019.05.17

八ツ山金尚

AIはソフトウェアテストにどう関係してくるのか

日常生活にあふれるAI技術

AI(または人工知能)という言葉をニュース等で頻繁に耳にし、おそらくは仕事でも徐々に使われるようになり、「AIってなんだろう」と思っている方も多いと思います。

我々ソフトウェアテスト業界でも、先日「JaSST'19 Tokyo」というシンポジウムがあり、そこでは基調講演や招待講演を始め様々なAIに関連する発表が行われていました。

日常生活では、問い合わせ対応等でAIが案内をしてくれることも見られるようになりました。
また、AI技術が活用された製品であるLINE Clova等のスマートスピーカー持っている人も多いのではないでしょうか。

他にもGoogle翻訳が最新のAI技術を取り入れて精度が改善されたある病気の診断がAIによる画像認識で人間より高精度に行われたなど私たちの周りは今やAIが使用されている製品やサービスが多くみられるようになっています。

AIはどこまで広がっていくのか

AI_software2_main2

AIの活用はどの分野で今後期待されているのか、AIの活用の範囲はどこまで広がるのか、AIの活用が進み社会にどのような影響を与えるのか、というようなAIが与える影響に関する話題は日々絶えず議論されています。

そもそも、AI自体に関する研究分野が形成されたのは1956年のダートマス会議と呼ばれる研究集会からであり、この会議で初めて人工知能という言葉が用いられるようになりました。
そこから、第1次AIブーム(1950年代後半~1960年代)、第2次AIブーム(1980年代~1990年代半ば)を経て、現在は第3次AIブームにあるといわれており、前述のように、AIが使用されている製品が数多くみられるようになりました。

この背景には、クラウド技術の活用や、機械学習のライブラリがオープンソース化されてきているということがあります。
機械学習のライブラリとしては代表的なものとしては、「Tensor Flow」、「Keras」、「Chainer」などがあり、名前を目にしたことがある人も多いのではないでしょうか。
これらの背景がなければ、AI技術はより難しいものと認知され、これほどの広がりを見せることはなかったでしょう。

大きな広がりを見せるAIを活用した技術の中で、注目されているものとしては、自動運転やロボットといった分野があります。

自動運転においてはディープラーニングが最も成果を挙げている画像認識が応用されており、ロボットにおいては運動の習熟を行うために深層強化学習という手法が適用できないかということが取り組まれています。
また、上記以外にも、クリエイティブな活用として「AIは人間以上の小説を書けるのか」等のトピックがあります。

では上記のようなAIの活用はどこまで広がるのでしょうか。
私個人の意見としては、技術的な可能性だけを踏まえると、上にあげたような技術はいずれ実現されると考えています。

その理由としては、AIは特定の分野に限れば、DeepMind社のAlphaGoのように人間を超える性能を見せていることと、AIを取り巻く技術が日々進歩していることにあります。
AIに関する技術は、第3次AIブームにおいて代表的なディープラーニングを中心に次々と出てきており、また将来的には量子コンピュータ等のハードウェア等のAI発展の手助けになるかもしれない技術の可能性も議論されてきています。

例えばインターネットがそうであったように、AIが私たちの日常のどこにでもある状態もそう遠くはないのではないでしょうか。
実際にディープラーニングは電気、自動車、インターネットのようなGeneral Purpose Technology(汎用目的技術)ではないかという意見もあります。
かつてAmazonが登場し、流通の仕組みが変化したように、AIの活用により、新たなサービスが創造され、産業構造が変化する可能性も大いにあると言えるでしょう。

そもそもAIって何? 今は何が流行っている?

AI_software2_main1

AIという言葉についての認識について考えてみます。
学術的な立場では、専門家の間でもAIの定義に違いがあることが知られていますが、研究を通して目指しているものとして、「コンピュータを使って、学習・推論・判断など人間の知能のはたらきを人工的に再現すること」だと言われています。

一方で、世間一般での認識について考えてみると、専門家内で定義が異なっているため、世間一般の認識はさらに曖昧なものとなっていることは容易に想像がつきます。
ただ、世間一般で人工知能といわれるものを、「入力」と「出力」の関係から整理すると下記の4つのレベルに分類され、それぞれできることや期待される役割が異なることが知られています。

レベル1:シンプルな制御

このレベルに対応するものとしては、「単純な制御プログラムを搭載しているものが挙げられます。

周囲の温度の変化に伴い温度調整を行うエアコンや食材に合わせて温度調整を行う冷蔵庫などがこのレベルの製品の代表です。
このレベルのものに関しては、制御工学やシステム工学という分野ですでに歴史があるものがあてはまります。

レベル2:古典的な人工知能

このレベルに対応するものとしては、「探索・推論・知識データを用いることで状況に応じて複雑なふるまいをする」ものが挙げられます。
ロボットや将棋のプログラムなどがあてはまります。

レベル3:機械学習

このレベルの人工知能は、ビックデータをもとに自動的に判断等を行います。
商品のレコメンドやGoogleの検索エンジン等、入力と出力がデータをもとに学習されているものがあてはまります。
このレベルのものには、昔はレベル2であったが、機械学習を取り入れることで、レベル3に上がってきているものもあります。

レベル4:ディープラーニング

このレベルの人工知能は、特徴量(注目すべきデータの特徴)と呼ばれるもの自体を学習するものがあてはまります。
従来はこの特徴量を人間側で与えて学習を行う必要がありましたが、ディープラーニングは特徴量自体を学習によって獲得することができます。
このレベルの人工知能は、天気予報や画像認識、音声認識等の幅広い分野に活用されつつあります。

上にあげた中で現在流行っているのは「ディープラーニング」です。
これは「ニューラルネットワーク」という仕組みを多層化したもので、人間の神経細胞のように、それぞれの神経が、受け取った情報を様々な角度からそれぞれ評価し、次の神経に情報を伝えていくような仕組みです。
ディープラーニング自体は機械学習における1つの技術ですが、流行っている大きな理由として学習のしくみの違いがあります。

そもそも、機械学習の枠組みとして代表的なものは「教師あり学習」、「教師なし学習」、「強化学習」があります。それぞれについては簡単に説明すると下記のようなものとなります。

教師あり学習は、教師データ(入力とそれに対する正解ラベルの組)を用いて、予測値を正解ラベルに近づけることを目的として学習を行う手法です。

教師なし学習は、教師データを用いずに、データの本質的な構造を見つけ出す手法のことを指します。
強化学習とは、行動に対する報酬(行動をとった結果として、それが良かったか悪かったかという情報)を最大化する方策の獲得を目的とした手法を指しています。

これらの学習を行う際に、ディープラーニング以前に用いられていた手法では、機械学習を適用したい分野の知識をもとに、学習に必要がデータを事前に処理を行う必要があり、さらに前述のように学習に用いるデータの特徴量の設定を人間が与える必要がありました。

一方で、ディープラーニングを用いた手法では、特徴量の設定が必要なく、データと計算量が多ければ精度が上がるという特徴を持っています。
データの処理というが不要というわけではなく、データをどのように取得するか、そのデータ対する正解データをどのように与えるかという部分がボトルネックとはなりますが、ディープラーニング自体が特徴量を学習するため、データの事前処理は従来の方法ほど必要としなくなりました。

つまり、ディープラーニングでは、従来人間が与えていた特徴量の設定を行う必要がなく、特徴量を自分自身で獲得することができるため、人間の介入が少なくて済むという特徴があります。

機械学習においては、「あらゆる問題に対して万能なアルゴリズムは存在しない」というノーフリーランチ定理というものが存在し、常にディープラーニングの手法が有効というわけではないですが、その汎用性の高さから活用範囲は広がり続けています。

さらに、強化学習にディープラーニングの手法を用いた深層強化学習という技術も、クラウド等の仕組みとも合致して脚光を浴びています。
強化学習は汎用性が非常に高く、行動に対する評価、つまりその結果の正否や結果に対するスコアが与えられるものであれば適用可能です。

自動運転の際の物体認識や判断、病気の判断、投資や資産運用等がその適用が容易と考えられる分野の最たる例でしょうか。

AIはソフトウェアテストにどう関係してくるのか

AIとソフトウェアテストがどう関係してくるか、という点については2つの面があります。

1つ目は当然AI搭載製品をテストする機会が増えるということ。
実際にQbook+を運営している弊社バルテスでもAI搭載製品を検証するお話は複数いただいており、今後より一層増えることを想定しています。

2つ目はAIによってソフトウェアテストの技術自体が進歩するということです。
AIを使用してソフトウェアテストの各フェイズを加速させようという動きは多々あり、その中心は現在テスト実行フェイズのようです。
今回のJaSST'19 Tokyoでも、基調講演でTariq King氏がAI-driven testingと称して講演をされておりました。

本コラムでは、1つ目の「AI搭載製品のテスト」についてより具体的に書いていきます。
というのも、JaSST'19 Tokyoの招待講演で公立はこだて未来大学の松原仁氏が人工知能についてお話をして下さっていたこともありますが、ソフトウェアテストという仕事は、AIの活用には比較的適していない分野ではないかと個人的に考えており、それより先にAI搭載製品のテストについて考えることが多くのテストエンジニアにとって急がれるだろうと考えているからです。

AI自体が抱えている問題

AI搭載製品をソフトウェアテストの観点から見た時には、下記のような問題を抱えていると私は捉えています。

  • 期待結果がはっきり決まっていない点、
  • 構造が複雑で、カバレッジを上げるのが非常に難しい点

1つ目の「期待結果がはっきり決まっていない点」については、 昨今のAIを用いる目的の一つが「人間以上の正確性」となっていることに関連します。
AIの出力結果を人が分かる形で説明することは難しく、何が期待結果通りで、何が不具合なのか、設計者または実施者が判断しながら検証を行わないといけないかもしれません。

さらに追加学習などを行えば、従来は正しかった出力が変更されてしまう可能性もあります。
これについては、より深いテスト対象の理解や、品質目標の設定を、一部グレーなままにする等を検討する必要が出てくるでしょう。

2つ目の「構造が複雑である」点については、例えばディープラーニングだと、構造上入力から出力までに考えられる経路が数百万、数千万通りということもあります。
もちろん従来のテストでも「全数テストは不可能」と言われている通り、構造は非常に複雑なのですが、AIが絡んでくると複雑性が格段に増加します。

しかし、複雑性があがったのに比例してテストの工数も増加するわけではなく、より効率的なテスト実施が求められるようになります。
さらに、テスト実施に関して、どのような手法を用いるか、第三者検証用のデータとしてどのようなデータを準備すればよいかということについては、AIを搭載していないソフトウェアと異なるアプローチを考慮する必要があります。
そのため、テストの効率化のためにテスト自動化へのより一層の取り組みや、それこそAIを用いたソフトウェアテスト技術の発展を目指していかなければなりません。

おわりに

本コラムでは一般的に「AI」に対してのテストについて議論しましたが、実際はAIといっても様々な技術が使われており、その種類によって検証の計画も変更しなければなりません。

それに対応するためにはAIの仕組みや仕様の理解を深めることはもちろんですが、そのシステムにあったテストを選択できるように、ソフトウェアテストの方法論や様々な技法についての知識も深めておかなければいけないでしょう。

関連サイト

参考資料

参考文献

  • 「人工知能は人間を超えるか ディープラーニングの先にあるもの」 松尾豊著
    角川EPUB選書 021
  • 「AI白書2019」 独立行政法人情報処理推進機構 AI白書編集委員会編
    KADOKAWA
  • 「ディープラーニング活用の教科書」 日経クロストレンド編
    日経BP社

資料ダウンロード

ライター:八ツ山金尚

バルテス株式会社 第2ソフトウェアテスト事業部

車載系案件に従事した後、現在は医療系案件に従事。 社内では「JSTQB Foundation Level」の研修講師も担当。 他に取得している資格としては「JDLA Deep Learning for...