「テストは全部合格」なのに、AIシステムが動いていなかった話

 文・監修:宮本 太郎

画面にはエラーが出ず、テストも全部合格。それでも、機能が数週間まったく動いていなかったことがあります。医療AIを発注する側が知っておくと役立つ「静かな故障」の見つけ方。

システム開発では、プログラムが正しく動くかを自動で確かめる「テスト」を用意します。テストが全部合格していれば安心、と考えるのが普通です。

ところが、AIや日本語のデータを扱うシステムでは、テストが全部合格しているのに、肝心の機能が動いていないことがあります。エラーも出ません。今回は、私たち自身が経験した3つの例と、そこから考えた「発注前に開発会社へ聞いてほしい質問」を紹介します。

例1:日本語の照合が、全文コピーのときしか当たらなかった

社内で使っている医療ニュースの要約ツールに、「この記事を保存して」と頼むと、記事の題名と照らし合わせて保存する機能があります。この機能が、数週間まったく効いていませんでした。

原因は、言葉を空白で区切って照合する作りでした。英語なら単語の間に空白がありますが、日本語にはありません。そのため、題名を一字一句そのまま書いたときしか一致せず、「の」と「での」のような助詞のわずかな違いでも「該当なし」になっていました。

テストが合格していたのは、テスト用のデータに空白入りの人工的な題名を使っていたからです。実際の題名で試していれば、すぐに気づけたはずでした。

例2:論文の数値と完全に一致しても、計算式は壊れていた

健診データから心血管病のリスクを推定する計算を実装したときのことです。公開されている論文の付録に載っている検証例と、10個の数値がすべて完全に一致しました。

それでも念のため、計算式の一部をわざと壊して結果が変わるかを確かめたところ、壊しても結果が変わらない箇所が3つ見つかりました。その検証例が、たまたまその部分がゼロになる条件だったため、そこが壊れていても気づけなかったのです。

1つの正解例と一致することは、計算全体が正しいことの証明にはなりません。そこで、値が大きくなれば結果も大きくなるはずだ、といった式の形そのものもテストで確かめるようにしました。(なお、この計算式は米国の集団をもとに作られたもので、日本人に当てはめる妥当性は別に検討が必要です。)

例3:精度が上がったように見えたのは、分母が減っていたから

紙の健診票をAIで読み取る検証では、AIが表の一部を黙って読み飛ばしていました。読まなかった行は採点の分母から外れるため、一致率はかえって高く見えていました。

別の場面では、読み取った値の根拠として表示する画像の切り抜きが、実は隣の行(「体重」ではなく「標準体重」の行)を指していたこともあります。値そのものは正しかったので、誰も疑いませんでした。

発注前に、開発会社へ聞いてほしい3つの質問

これらの経験から、医療AIの開発を依頼するときに確かめていただきたいことを3つにまとめました。

  1. 「実際のデータの書き方で、テストしていますか?」 人工的にきれいに整えたデータだけで試していないか。日本語の表記ゆれ、空欄、様式の違いを含めて確かめているか。
  2. 「わざと壊したときに、テストが失敗することを確かめましたか?」 テストが本当に機能を見張っているかは、壊してみないと分かりません。何も検出しないテストは、いつまでも合格し続けます。
  3. 「その割合や件数の分母には、何が入っていますか?」 「一致率95%」「エラー0件」と聞いたら、何を数えたのかを確認してください。読めなかったもの、処理されなかったものが分母から消えていないか。「0件」は、見つからなかったという意味で、存在しないという証明ではありません。

静かな故障は、医療では特に怖い

医療や健康のデータを扱う仕組みでは、静かな故障は、もっともらしい誤りとして現場に届きます。だからこそWithDrAIでは、テストを書くだけでなく、わざと壊して確かめることを開発の手順に組み込んでいます。

AIシステムの開発や、すでにお使いのシステムの点検について、お気軽にご相談ください。

まずはお気軽にご相談ください

「AIで何かできそうだが、何から始めればよいか分からない」段階からのご相談を歓迎します。医師×AIの視点で、貴社の課題に合ったアプローチをご提案します。