Technical Information

テストエンジニアから見た人工知能(AI)のテストの一考察

asset_approach_column_advanced-tech-ai_hero01.jpg

はじめに

人工知能(AI)によるシンギュラリティ(技術的特異点)の予測がされているが、すでに人工知能は産業界だけでなく一般社会生活でも利用され、その領域が拡大していることで、人工知能をテストするニーズが高まっている。しかし、人工知能をテストする技術が確立されているかといえば、信頼がおける革新的なテスト技術は現在のところ見当たらない。人工知能のテストをいかに考えればよいのか、テストエンジニアの知見を用いて考えてみる。ただし、前提として人工知能のテストを論じる場合には、「Testing for 人工知能」か「人工知能 for Testing」、つまり「人工知能をテストする」のか「人工知能でテストする」のかを明示する必要があるが、今回は、「Testing for 人工知能」としテスト対象を人工知能としたケースについて述べる。

株式会社ベリサーブ
品質保証部
技術フェロー 佐々木 方規

ところで、テストを実現させるには、マクロな視野(俯瞰的に人工知能を捉えること)とミクロな視点(人工知能を細分化すること)を両立させる必要がある。どちらにしてもテストベースとなる“人工知能を知る”ことが重要なポイントとなる。そこで、テストベースとして理解を深めるために、数名のテストエンジニアと議論を行ったが、人工知能を定義することの難しさが浮き彫りになった。さらに人工知能の特徴は、利用する学習データの質に依存すると考える。人工知能の利用は企業で広がりを見せ、CDO(Chief Data Officer/最高データ責任者)やデータ・サイエンティストの登用が増えている。企業がビジネスをデジタル化するデジタルトランスフォーメーション(DX)の流れは、幅広く人工知能が利用されるであろう。また、CDOは、企業のビジネスを加速させるため、自社のビジネスに IoT や人工知能を利用する取り組みを積極的に行っている。人工知能をテストするためには、これらのステークホルダーのニーズに応える必要がある。まずは、テストベースとなる“人工知能を知る”ために、人工知能の歴史を振り返りながら、人工知能をテストするためのポイントであるテストオラクル(※1) についても考えてみる。

  • ※1テスト対象のソフトウェアの実行結果と比較する期待結果のソース。オラクルは、実在する(ベンチマーク用の)システム、他のソフトウェア、ユーザマニュアル、個人の専門知識の場合があるが、コードであってはならない。(JSTQB ソフトウェアテスト標準用語集(日本語版)Version 2.3.J02より)

人工知能の歴史を振り返る

すでに人工知能は社会生活のさまざまなシーンでみられるようになってきている。スマートフォンの音声認識や Google の「RankBrain」など人工知能ベースのアルゴリズムがインターネット検索で実用化されており、高度な自動運転への適用も進んでいる。2045年問題(※2)で人工知能が人を超える時代が来ると言われている中、「アルファ碁(AlphaGo)」がトップ棋士に勝利したことは、次世代の到来を鮮明にした。 人工知能に対して造形を深めるために、少しだけ人工知能の歴史を振り返ってみる。これらは総務省が公開している平成28年版 情報通信白書(※3)を参考に述べている。

人工知能は1950年代~1960年代に第1次ブームを迎えている。第1次ブームでは、コンピューターによる「推論」「探索」が中心であり、自然言語処理や機械翻訳の研究は進められたが、定理証明などの単純な問題しか扱えなかったため、社会の実環境での利用にはほど遠く、次第にブームが過ぎていった。

1980年代に入ると人工知能は、第2次ブームとなった。人工知能に与える情報を形式化することで、専門分野の知識を取り扱うエキスパートシステムが登場した。しかし情報の形式化を人が行わなければならず、膨大な情報を取り扱うことができないため、活用範囲を限定せざるを得なかった。

2000年代に入ると、インターネットが爆発的に普及し、携帯電話でデータ通信ができるようになったことに伴い、人工知能が「ビッグデータ」を活用することになる。ここで注目されたのが機械学習(Machine Learning)であり、学習に人の介在を減らすことに成功した。また、学習した知識から特徴的な要素を人工知能が自ら学習する深層学習(Deep Learning)も注目された。第3次の人工知能ブームの到来であり、現在に至っている。

第1次、第2次が一過性のブームに終わった背景として、社会が要求する人工知能への期待が高く、現実との乖離が大きかったことが原因と推論されている。これらを背景に人工知能のテストでも、現実と乖離がないことを追及していく必要がある。

  • ※2The Singularity Is Near: When Humans Transcend Biology(Ray Kurzweil 著)内で、2045年は人工知能が人間の知能を超えるシンギュラリティ(Singularity)、つまり「特異点」とされている。
  • ※3特集 IoT・ビッグデータ・AI~ネットワークとデータが創造する新たな価値~
    http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h28/pdf/28honpen.pdf

テストエンジニアが考える人工知能をテストする時の課題

先にも述べたが、テストをする場合にはテストベースを明らかにする必要がある。何を対象とするのか、要求元とテスト担当者間でテストについての合意形成をすることが重要である。 しかし、テスト対象が人工知能の場合は、期待値を示すテストオラクルを用意することが困難である。そもそも期待値など存在しないのではないかと考えている。 同じプロダクトの人工知能を利用しても、与えた学習データそのものや、そのデータの与え方で結果が異なる。また、人工知能の利用者にとっては、人工知能からのアウトプットは想定した期待値のみを求めていない。 例えば検索処理であればヒット率の高い結果の順位よりは、検索者自身が本当に知りたい情報を求めている。これらの検索結果は、検索者自身が気づいていない暗黙的な場合もある。 検索者自身が人工知能の推論結果を得ることで、本当に求めていた結果が想像していたものと異なったことに気が付くこともある。 これらはカットオーバー時のクライテリアだけを求めるような現在のテストの技術では対応が難しく、人工知能の特性に合わせたテストの進め方を構築していく必要がある。
(参照 図.V字モデルの開発プロセスと繰り返し学習)

V字モデルの開発プロセスと繰り返し学習

また、独立行政法人 情報処理推進機構(IPA)が「デジタルトランスフォーメーション(DX)に向けたスキル変革の方向性」の中で検討している、「高速仮説検証サイクル(※4)」のような技術の変革も必要になってくる。 テスト経験が豊富なテストエンジニアへ人工知能と聞いてイメージすることは?と問うと、人工知能を構成するテクノロジーとして、知識ベースとなるデータの領域(データ収集、解釈/理解、蓄積、探索分析)から、各種認識/理解技術、機械学習と深層学習およびアプリケーション領域の一部に至る広い範囲を定義している、という答えが返ってきた。 さらに回答者によりこれらの定義に違いも見られた。これら人工知能の定義の曖昧さもテストの課題と考えられる。そこでイメージを形成しやすくするために人工知能の特徴的な行為を見ながら、本稿で取り扱う人工知能を絞り込んでみる。

  • ※4(独)情報処理推進機構 ITSS+(プラス)・ITスキル標準(ITSS)・情報システムユーザースキル標準(UISS)関連情報 https://www.ipa.go.jp/files/000065688.pdf

人工知能搭載システムを知るために整理分類する

人と人工知能が会話をし、人を支援する社会はSF映画のシーンに多く登場してきた。それらはコンピューターであり、ロボットであり形態はさまざまであるが共通している点がある。それは、人と人工知能がパートナーとして共存している点である。本項では人工知能搭載システムは人の能力を補完していると考えて、人工知能搭載システムを知るために人をモデルに整理を行う。 現在の人工知能搭載システムは多くの技術によって構成され支えられているが、その必要でかつ代表的な技術をいくつかに分類してみる。

① 認識
人の視覚、聴覚、(味覚、嗅覚)、触覚の5感にあたる機能は人工知能搭載システムでは、各種のセンシングしたデータを用いて認識を行う。しかし、基本的に人工知能搭載システムの認識は、データによる分類となる。例えば、人は猫の写真を見せると猫と認識するが、人工知能搭載システムは学習データから同じ特徴を持つデータ群を抽出するにすぎない。これらの認識には人の記憶にあたるビックデータなどからの学習データに大きく依存する。

② 学習/推論
人の脳にあたる機能グループとして、「推論・探索」「エキスパートシステム」「機械学習」があり、中でも「深層学習」では自立的に学習する。

③ 制御
人の動作にあたるものとして、自動車の自動運転技術などの機械制御やIoTなどを利用した家電を含む設備のコントロールなどを行う。特に組込み製品に搭載されている人工知能はリアルタイム性が求められ、人を介在せずに制御が行われることも多い。

人工知能搭載システムが司ることは人と酷似しているが、得手不得手がある。人工知能搭載システムは大規模な情報を学習する能力や推論する回数は優れているが、有名なAIのフレーム問題(※5)の存在も認識しておく必要がある。

  • ※5J.McCarthy and P.J.HayesSome philosophical problems from the standpoint of artificial intelligence, Machine Intelligence, vol.4, pp.463-502 (1969)

プロダクトとしての人工知能だけでなく
社会基盤のインフラとしての人工知能

高度な人工知能がさまざまなビジネスシーンで利用されることは、人が責務を持って判断してきたことを人工知能が変わって行うこと、そして社会がこれらの意思決定を受け入れる環境が整備されることが重要であると考える。 現在では、自動運転技術(運転支援技術)により交通事故が減少している。すでに自動車保険の料率に運転支援システム搭載車両の有無が適用されている。 近未来で自律した高度な自動運転車が町中を走行していることは容易に想像ができる。こうした環境下で事故が発生した場合に、社会が人工知能を冷静に受け入れるだけの状況になっている必要がある。事故が発生した場合には、徹底的に事故解析しプロダクトとして人工知能の改善が図られ、社会に人工知能への落胆を生じさせてはならない。社会的不安は人工知能への期待を衰退させ、第3次ブームの終焉につながる。

人工知能をテストすることは、社会的に影響を与えるリスクの検討もテストエンジニアに求められてくると感じている。 これらはプロダクトとしての人工知能をテストするだけでなく、人工知能と共存する環境まで考える必要がある。 人工知能に対する社会的な成熟度が向上することも必要であるが、テストエンジニアは人工知能の正しさでなく、人工知能によって操作された結果や導き出されたものの受け入れやすさを確認することが重要であると考える。

人工知能の役割や責務をテストするという考え方
~捉え方とアプローチ~

次に具体的にテストする時の考え方を示す。極端ではあるが、人工知能として構成されるプロダクト全体をブラックボックスとして考えてみた。処理の方法や構造が全く不明なブラックボックスのテストは IPO(Input Process Output)を利用して考える。ブラックボックスでは Process(処理)は単なる変換処理とするが、その処理結果の Output(期待値)が人工知能では不定となる。(図1)

図1.テスト視点のIPO

通常のテストでは、IPOは一意に決まっており、与えた条件の下で出力される期待値は変化しない。そのため、考えられるさまざまな条件と出力される期待値を確認することでテストが成立している。しかし、人工知能は自立的に結果を学習データから推論するため、成熟すると想定とは異なる期待値が出力される場合も考慮しなければいけない。(図2)

図2.テスト視点の人工知能のイメージ

これらを利用シーンで考えると、莫大な学習データから人工知能に推論を行わせる時、利用者が推論可能な結果だけであれば人工知能の利用価値は低い。そこで Process(処理)と Output(期待値)を包含して人工知能の果たすべき役割/責務(※6)としてこの振る舞いを検討してみることにする。では人工知能に求める役割/責務はどのように定義すればよいのだろうか。プロダクトに役割/責務を定義するのは供給者や利用者となる。供給者はプロダクトの利用シーンを考え、利用者が利用価値を決める。 プロダクトの例を挙げて説明してみる。人工知能を搭載した掃除用ロボット(※7)がある。お掃除ロボットの役割は人に代わって掃除することにあるが、責務としては人が掃除した場合と同等か、人に変わって掃除することでなんらかの価値をあたえることにある。お掃除ロボットでは、効率よく掃除するために、掃除を行う範囲やホームベース(待機や充電などするための位置)を学習する。学習データを利用することでさまざまなレイアウトにも対応でき、さらには無作為に掃除をすることがなくなる。家具などを移動した場合も学習データを自立的に変更して掃除を可能にしている。お掃除ロボットの場合は、掃除の順序を正確にトレースして実施することは価値にはならない。人が掃除する場合でも、一方向でなく逆方向など、違う方向から掃除するときれいに掃除ができる。学習データを利用して、できるだけ同じルートを通らないことで、異なる方向から掃除を可能にしている。(図3)

図3.配置を記憶することで、掃除する方向を変える

決められた処理を動作することが期待されているのでなく、人の手を介さず掃除を完了することが責務として期待されている。

  • ※6オブジェクト指向設計の責務とは異なる。
  • ※7特定はしないが市販されている製品を参考に記述している。

人工知能のテストに求められるエンジニアリング

人工知能は、認識/学習し、推論/判断を自立的に処理する特性を持っていることは前述しているが、これにより人工知能をテストすることは、従来のテストと大きく異なる部分がある。製品(プロダクト)として人工知能のテストを考えた時は、ほとんどの場合、従来のテストプロセスやテスト技法を用いればよい。しかし、人工知能の学習と推論を利用しているシステムとしてテストを考えた場合は、ユースケースシナリオの考慮を避けては通れない。ユースケースシナリオには、人工知能が学習データを伴うことで成長することを考慮する必要がある。成長のしかたは、利用シーンごとに異なり特定することは難しくテストを困難にする。これら成長するシステムに対して、処理や振る舞いでなく役割と責務を定義するアプローチ方法を提案した。これは人工知能の推論結果を期待値として扱うのではなく、受け入れられるかを判定することになる。一方で、学習データにより成長するシステムの概念は、カットオーバークライテリアモデル(※8)のようにリリースのときに最高品質を求めることではなく、システムの成長とともに利用者も成熟することで新たな要求が生み出される。これらは繰り返し行われるインクリメンタル開発に近い。しかし、インクリメンタル開発と大きく異なる点は、カットオーバーされた人工知能のシステムは、開発が継続して行われているとは限らない点である。つまり開発期間中に将来の学習内容での変化を想定したテストが必要となる。 このような人工知能のシステムに対して、単一の開発プロジェクト内で完結するスパイラルフレームモデル(※9)を採用したテストシナリオを提案する。スパイラルフレームモデルは、学習データを段階的に成長させるように一連のユースケースシナリオを少しずつ変化させながら繰り返して行う。一度に学習データを与えるのでなく、適切に分割した学習ゴールにしたがって成長過程の確認を行う。開発中のテスト期間に成長過程を確認することで、学習データおよび学習方法の良し悪しを確認する。これらは人工知能の課題でもある過学習(※10)や成長過程で学習データをロールバックすることが難しいことにも、対応することを期待している。

  • ※8単一のシステムや製品の開発においてリリースや出荷時点で品質基準の達成を目標とする開発のやり方
  • ※9一連のユースケースシナリオをサイクリックに実施する。
  • ※10“教師あり学習”において、データが多すぎたり、典型なもので無かったりした場合、未学習のデータに適合できなくなる状態のこと

最後に

テストエンジニアリングは、人工知能によって多くの変革が起こり、そのためテストエンジニアも価値観を変えていく必要がある。いままでは、仕様に定義されていたフューチャや機能が満足していることがテストの目的であった仕様ベースのテストが主流で、フューチャや機能の期待値は仕様に定義され不変であった。この考え方では学習したことによって変化する期待値をテストで考えることは困難である。また、人工知能が人に代わって知的作業を行うことは社会生活が大きく変化することを意味する。システムや製品のテストでは、利用者と供給者の関係を中心とした閉鎖的な環境条件であった。人工知能や IoT でのビッグデータなどの利用は、システムの利用者以外とのつながりもあり、社会システムとしてオープンな環境条件を考慮しなければいけない。