「正しい/正しくない」では測れないAIのテスト結果
さらに高橋氏は、AIのテストが面倒な理由として「自動化の難しさ」を挙げた。これには巨大化・複雑化するほどオラクル問題(期待値が定義できない)が顕在化するため、入力に対して出力される期待値を適切に設定しない限り自動化テストを行えないことが背景にある。
機能そのものだけではなく、判断の難しい非機能のテストにも細かく対応する必要がある点も理由の1つだ。こうした点を踏まえ、高橋氏は「AI製品の複雑さに比べそれに対応するテスト手法は極端に少ない」と現状を口にした。
テスト手法自体はニューロンカバレッジ(ソフトウェアやシステムを構成するニューロンが、どれだけ活性化されたかを測定する)というやり方が存在する。しかし、高橋氏は「ニューロンカバレッジが100%だったとしても、そのAIの機能が担保されているわけではない。コードカバレッジなど、他のやり方との合わせ技が必要」と説明した。
続けて、高橋氏は境界値や同値分割、状態遷移などの機能テストにおける手法として「メタモリフィックテスト」を挙げた。これは同じ入力に対して何らかの変更があった際、変更前の出力との関係性に照らし合わせて論理的に正しいかどうかを判断する手法だ。画像にノイズを入れることでAIの誤認識を誘発することもできるため、高橋氏は「AIの台頭によって、これまでとは違った形のセキュリティも必要になる」と警鐘を鳴らした。
生成AIを用いた自動化においては、AIが「学習データを基にアウトプットした成果物」のデータを再度学習するため、学習内容がダイナミックに更新されていく。エンジニアは学習モデルそのものはもちろん、この学習データの推移を理解する必要があるため、自動化の期待値生成が「不可能とは言わないが、かなり厳しい」(高橋氏)という。
高橋氏はこの難しさを表す例として、混合行列のテスト標本を示した。たとえば100のケースに「猫」を入れてAIに判別させた際に「92ケースが猫で、残り8ケースは猫ではない」という結果が返ってきたとする。追加のテストとして50ケースに猫以外のデータを入れて再度判別させると、「45ケースは猫ではなく、5ケースは猫」と返された場合、この品質で製品として出荷できるかという判断は非常に難しい。
「出力が無限であり、なおかつブレが生じる場合には、必ず開発者やデータサイエンティストが一丸となって出荷判定基準を決めなければならない」と強く主張する高橋氏。「どういうテスト結果が出るのかは事前におおよそわかるが、難しいのはその結果を『どう判断するか』だ」と、自動化の難しさの本質を説明した。
AIソフトウェアのテストは「コードを書き終わってからがスタート」
最後に、高橋氏はAIの今後の展望について述べた。「テスト手法の体系化は欧州が積極的に研究や発信を行っており、今後進んでいく」としたうえで、「AIがAI製品をテストする日はそのうち来る。あと3~4年は来ないと思うが、AI製品を出荷する際にその3~4年をどう立ち回るかが重要な課題だ」と示す。
今後はテスト担当者に求められるスキルはドラスティックに変化するため、データサイエンティストに近いものがテスト担当者の必須スキルとなる可能性もある。高橋氏はテスト担当者の職務についても、「品質を決める際は本当にタフな判断をしなければならないので、タフな判断を下すためのデータを集めるのが品質担当者の仕事になる」と所感を述べた。
今後事業者はどうするべきかという点については、「シフトレフトできるものはなるべくそうしたほうがいい」としつつ、シフトライトで開発を行うAIソフトウェアの場合は、品質保証の定義を明確にしたうえで、「コードを書き終わってからがスタートであることを肝に銘じるべき」と改めて注意喚起する。
高橋氏は、全体の予算計画やリソース配置はリリース後のテストまで含めて行うべきと助言しつつ、今後のAI製品の開発について「終わったから次のプロジェクトに行こう、という世界ではなくなるので、テストエンジニアのスキルはどんどん広がるだろう」と展望を述べて講演を締めた。