スキルアップ
【シリーズ】先進技術事例:メタモルフィックテスティングのPoC(第1回)

ベリサーブは、ソフトウェアやシステムのテスト・品質保証を本業にしていることから、最近ではAIを含んだシステムのテストや品質保証を依頼される機会が増えてきています。AIに対するテスト手法の中で最も有名なものがメタモルフィックテスティングです。本稿では、メタモルフィックテスティングの概要をご説明するとともに、実際にメタモルフィックテスティングをPoC※してみた結果についてお伝えします。
※ PoC(Proof of Concept:概念実証)とは、新しいアイデアや技術の実現可能性を検証することを指します。PoCはプロジェクトの失敗リスク低減に貢献するため、AIやIoTなど新しい技術の導入がビジネスで重要視されている昨今、特に注目を集めています。
メタモルフィックテスティングとは
「入力に対してある一定の変化を与えると、出力の変化が理論上予想できる」という関係(メタモルフィック関係)を用いることで、正否判断が可能なテストを得る[1]のがメタモルフィックテスティングです。通常のテストでは、入力を与えて特定の出力を観測しますが、入力に「変化」を与えて出力の「変化」を観測する、というのがメタモルフィックテスティングです。つまり、一つの値・データに着目するのが通常のテストで、変化に着目するのがメタモルフィックテスティングということです。
メタモルフィック関係の代表的なものとして挙げられるのは、「入力に対してある変化を与えても、出力が変化しない」というものです。例えば、画像から数字を認識するAIモデルがテスト対象の場合において、テストデータとして「1」と書いてある画像を用意したとします。この元画像に対してどこかに1ピクセルだけノイズを追加しても通常は(よほど粗い画像でない限り)同じく「1」と認識できるはずです。ここで「1ピクセルのノイズを追加する」が入力に対して与えた変化で、出力の変化が「どちらも『1』と認識できる」となります。
AIは一般的に、ルールベースのプログラムとは違い、入力の変化がどのような出力の変化につながるか分からないという特性があります。よって、メタモルフィックテスティングのような手法を用いて、データ空間におけるテストデータのカバレッジを広げていくことが重要となる場面があります。
メタモルフィックテスティングの使いどころ
メタモルフィックテスティングには複数の使いどころがあります。一つは、AIモデルそのものに対するテスト、もう一つは、AIモデルの訓練プログラムに対するテストです。
前者は比較的分かりやすいと思います。学習済みのAIモデルをテスト対象とし、そのAIモデルに対して入力Aと、変化させた入力A’を加え、出力の変化を観測します。AIモデルの出力が入力を変えた時に満たすべき関係性を保っているかを確認することが目的です。このテストでFailした場合、AIモデルそのものが「何かおかしい」ということになります。
一方、理解が少し難しくなるのが後者です。テスト対象は前述の通り、AIモデルを訓練する際のプログラム(訓練プログラム)です。訓練プログラムに対して訓練データXを用いてモデルYを作ったとします。メタモルフィックテスティングにおいては、その訓練データXを変化させた訓練データX’を同じ訓練プログラムに対して入力し、モデルY’を生成します。そして、モデルYとモデルY’に対して同一のテストデータBを入力し、得られる出力CとC’の関係を比較します。出力CとC’の関係を用いたテストがFailした場合、訓練プログラムがおかしい、ということになります。
これらの2つのメタモルフィックテスティングをAIモデルの開発プロセスに組み込んだのが下の図です(図表1)。

メタモルフィック関係の例
実際の事例では、以下の表(図表2)のようなメタモルフィック関係(Metamorphic Relation:MR)を定義し、概念検証(Proof of Concept:PoC)を実施しました。”Train”が先述の訓練プログラムに対するテスト、”Test”がAIモデルに対するテストを示します。この事例では時系列データを扱うAIモデルに対して、表に示すようなメタモルフィック関係の定義を行い、実際に関係が成立することを示すことができました。つまり、このメタモルフィック関係を用いたテストに一定の意味があることが示された、ということです。

まとめ
メタモルフィックテスティングは、その名前がなじみのない単語からできていることもあり、少し難解です。ただ、AIのテストが求められる中でメタモルフィックテスティングを手段の一つとして持つことは必須だと考えています。今回は時系列データを対象にしたAIモデルをターゲットにしましたが、今後は他の種類のモデルに対して使えるメタモルフィックテスティングについても試していきたいと考えています。
■参考文献
[1]Tsong Yueh Chen, Fei-Ching Kuo, Huai Liu, Pak-Lok Poon, Dave Towey, T. H. Tse,Zhi Quan Zhou, Metamorphic Testing: A Review of Challenges and Opportunities, ACM Computing Surveys, Vol.51 No.1, 2018 年
この記事は面白かったですか?
今後の改善の参考にさせていただきます!