ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

プロダクト出力の確率論性質と品質保証

機械学習・AIの文脈における「確率論」(probabilistic)といえば、以下が思い当たる*1

  1. 機械学習のモデルトレーニングにおいて、最初に与えるシード値によっては同じデータセットでも違うモデルになりうる。モデルが違うと、同じ入力であっても別の出力になりうる。
  2. テキスト系生成AIにおいては、出現確率が閾値内に入る単語群から単語を選定して出力するため、同じ入力であっても別の出力になりうる。
  3. 機械学習のモデルによる出力は、「確信度が高い」ものであって、100%とは限らない。そして、確信度が100%であっても正解とは限らない。

確率論的とか非決定論的(non-deterministic)とかいう話をするときは、どの意味で語っているのかをハッキリさせておくといいだろう。

さて、品質保証の文脈で、このようなツイートを見かけた。

従来はOK/NGを明確に判断できたものが、AIプロダクトでは「明らかに間違っているものを排除する」というアプローチに変わらざるを得ない。

このツイに対し、伊藤由貴さんはこう言っている。

QAが決定論から確率論になったのって生成AI時代だからというよりは元からそうなんじゃないかなという気がしてる 誰かにとっての価値だよね、という時点でもう確率論な気がしている

これらの話自体に異論はないのだけれど、冒頭に書いた「確率論的」とはまた違う話に思える。

両者をどう仕分けるといいのだろうと考えてみると、これはソフトウェアテストでいうところの、「実際の結果」(actual result) の話なのか、「期待結果」(expected result) の話なのかで考えるとよさそうだ。

冒頭の話は、「実際の結果」が確率論的、つまり「同じ入力でも、実際の結果が同じになるとは限らない」 ということを言っている。
一方でツイートは、「どのような出力になるべきかという期待結果を、開発者が一意に指定できるとは限らない」 という話にみえる。伊藤さんが引用しているWeinbergの「品質とは、誰かにとっての価値である」しかり、James Bach・Michael Boltonの「品質とは、誰かにとっての、ある時点での価値である」しかり。

「本当の期待結果」 を開発者・QAエンジニアが事前に知りえない、何ならWeinbergらのいう「誰か」でさえ明示的に示すことができない(かもしれない)というのは、AI時代以前からの品質保証の悩みであり面白さでもある。
ただ、AIプロダクトにおいてはそれが顕著になる。

簡単な例でいうと、AIによる文章要約タスク。
要約された結果に対して、「完全に正解」「完全に不正解」のいずれにもならず、「そこそこいいけれど、改善の余地あり」といった判断になりうる。それこそ「明らかに間違っている」のラインを決めるのも難しい。
ただ、これを「確率的」と言ってしまうと、ちょっと違うようにも思う。期待結果自体が確率に関係しているわけではないからだ。

大雑把に言うと、こんな風に整理*2できるだろうか。「パラダイム」という言葉を使ってみよう。かっこいいからだ

パラダイム 期待結果 実際の結果
平和な世界 客観的に決められる 一意に決まる
従来の品質保証 主観的にしか決められない 一意に決まる
AIプロダクトの品質保証 主観的にしか決められない 確率的にしか決まらない

ともあれ、「AIプロダクトの品質保証」パラダイムにおいては、「主観的」と「確率的」が掛け合わせて効いてくる、これこそが難しさの源泉なのではないかと思う。

*1:知識が浅いので、誤解があったら優しく教えていただきたい

*2:もちろんこれは大雑把な整理である。「従来の品質保証」パラダイムにおいても、たとえば「定量的に性能要件が決められていたとしても、実際のレスポンスタイムは実行ごとに異なりばらつきがある」といったことが起こる。