見出し画像

AIプロダクトに対する品質保証の基本的考え方

私はAIプロダクト品質保証コンソーシアム(QA4AI)で、AIプロダクトの品質保証ガイドラインを作成する活動を行っています。

AIプロジェクトをいくつか経験してきた中で、その品質基準については曖昧なまま案件が進むことが多々あり、品質が保証できないことで実運用の障壁になっていると感じていました。同様の疑問を持っている方も多くいらっしゃるのではと思い、QA4AIで公開していることや、自分なりの経験を踏まえて、noteに書くことにしました。

私自身、品質保証についてまだまだ知識不足なところもありますが、いくつかAIプロジェクトを経験したことを共有することで、今後AIプロジェクトを行う方たちのご参考になりましたら幸いです。

AIプロダクトの特徴

今回の対象は以下のような特徴を持ったAIプロダクトに限定します。

・主にML技術(帰納的開発)を前提とする
・確率的ふるまいをする
・CACE(Changing Anything Changes Everything)性がある
・自動化が必要

演繹的開発(一般的なシステム開発)は、今回の対象からは外れます。

品質保証活動の5つの軸とバランス

AIプロダクトに対する品質保証は5つの軸とそのバランスでQAの活動を評価します。以下が5つの軸になります。

・Data Integrity(データがきちんとしているか)
・Model Robustness(モデルがきちんとしているか)
・System Quality(システム全体としての価値・動作保証)
・Process Agility(プロセスの機敏性)
・Customer Expectation(顧客の期待値)

結論を先に伝えると次のように、5つの軸のバランスで品質保証の良し悪しを確認します。

スクリーンショット 2020-05-17 11.04.21

Data Integrity

Data Integrity (DI)では、データがきちんとしているかを確認します。主に次のような項目がチェックポイントとして挙げられます。

・量は充分か、コストは適正か
・ラベルは妥当か
・求める母集団のサンプルか、実データか、不必要なデータが含まれていないか、データに関する要求事項を満たしているか、データに関する制約に反していないことを監視しているか
・必要な要素を適切に含んだサンプルか
・偏りやバイアス、汚染は無いか
・複雑すぎないか、単純すぎないか
・それぞれのデータは常識的な値か、外れ値は本当に外れているデータか、欠損に意味はないか、 外れ値や欠損値の扱いは適切か
・データ内の性質(多重共線性など)は適切に考慮されているか
・含むべきでない母集団のデータと混ざっていないか
・学習用データと検証用データは独立しているか
・学習時のふるまいと提供時のふるまいに齟齬はないか
・所有権や著作権・知的財産権、機密性、プライバシーは適切に考慮されているか
・オンライン学習を行う場合、その影響を適切に考慮しているか
・学習用プログラムやデータ生成プログラムの不具合によってデータの意味が毀損されないか

主にデータの妥当性・有効性を確認します。データ品質が保証されないと、いくらモデル精度が高くても実運用では使い物にならないことがあります。

Model Robustness 

Model Robustness (MR)では、モデルがきちんとしているかを確認します。主に次のような項目がチェックポイントとして挙げられます。

・正答率、適合率、再現率、F値
・汎化性能
・AUROC(Area under Receiver Operating Characteristic)など
・学習は適切に進行したか
・局所最適に陥っていないか
・適切なアルゴリズムかどうかの検討は行ったか
・適切なハイパーパラメータかどうかの検討は行ったか
・十分に交差検証などを行ったか
・ノイズに対して頑健か
・十分に多様なデータで検証を行ったか
・デグレードは許容可能な範囲か、デグレードの影響範囲を把握できているか、学習は再現可能か
・モデルが陳腐化していないか
・実データに対する予測品質が劣化していかないか
・目標メトリクスの計測が難しい場合、計測できるメトリクスとの関連は妥当か

重要なポイントとしては、「精度が高ければ品質が良い」というわけではありません。ある特定のデータに対して過学習されている状態のモデルでは、テスト時に100%の精度になりますが、実データに対しては期待する精度に届かない場合があります。

System Quality

System Quality (SQ)では、システム全体としての価値は高いか、予期しないことが発生しても対応可能か確認します。主に次のような項目がチェックポイントとして挙げられます。

・システムを全体として、および意味のある単位で評価を行ったか
・価値は適切に提供されているか
・発生しうる品質事故の致命度は許容できる程度に低く抑えられているか
・システムの事故到達度・安全機能・耐攻撃性は充分か
・品質事故を引き起こしうる事象の発生頻度は低いと見積もることができるか
・保証性、説明可能性、納得性は充分か
・AIの寄与度を抑えられているか
・性能などシステムのふるまいが劣化していかないか
・システムが依存する他の(AIの、もしくは非AIの)システムの変更は迅速かつ適切に反映できるか、不具合の影響を充分低く抑えられるか

Process Agility 

Process Agility (PA)では、一連のプロセスの機動性(クイックに作業できるか)を確認します。主に次のような項目がチェックポイントとして挙げられます。

・データ収集の速度とスケーラビリティは充分か
・充分短い反復単位で反復型開発は行っているか、
モデル・システムの品質向上の周期は充分短いか
・運用状況の継続的なフィードバックは頻繁か
・リリースロールバックは簡便で迅速に行えるか
・新しい特徴量を迅速に追加できるか、モデルを迅速に改善できるか / 学習や推論のデバッグを行う手段を有しているか
・段階的リリースやカナリアリリースの度合は適切か、リリース直前にシステム全体やモデルの評価を行っているか
・開発・探索・検証・リリースなどの自動化は充分か
・データ、モデル、環境、コード、出力などについて適切に構成管理が行われているか
・開発者やチームは技術的に充分納得し共感しているか
・開発チームは適切な能力を持った人財を備えているか
・経験を技術に反映させられているか
・開発チーム外のステークホルダーは充分納得しているか

Customer Expectation

Customer Expectation (CE)では、(良くも悪くも)顧客の期待値の高さを確認します。主に次のような項目がチェックポイントとして挙げられます。

・顧客側期待の高さ
・確率的動作という考え方の非受容
・顧客側でのリスク・副作用の無理解や非受容
・継続的実運用への近さ
・データの量や質に対する認識の甘さ
・狙っているのが「人間並み」なのかどうか
・法規制、著作権や知財、プライバシー、コンプライアンス、社会的受容が必要な度合
・"合理的"説明を求める度合、"外挿"や"予測"をしたがる度合
・"原因"や"責任(者)"を求めたがる度合
・納得感を共感する風土や雰囲気、仕事の進め方の少なさ
・顧客担当者・チームで意思決定できる権限の少なさ・範囲の狭さ

バランスが良い・悪いとは?

「バランスが良い=顧客の期待に沿っていると保証できることが期待できる状況」。つまり以下のような状態です。

・DI/MR/SQ/PAに不足がない状況
・DI/MR/SQ/PAに対して顧客の期待が適切である状況

スクリーンショット 2020-05-17 11.08.58

上の図のように、顧客の期待値に対して、残り4つの軸が不足なく満たされている場合をバランスが良い、つまり品質が保証されている状態とします。

反対に、「バランスが悪い=顧客の期待に対してDI/MR/SQ/PAが不足している状況」。つまり以下のような状態。

・DI/MR/SQ/PAのいずれかが不足している状況
・顧客の期待が高すぎる状況

スクリーンショット 2020-05-17 11.09.55

私の経験上、概念実証(PoC)の段階では、顧客期待値が高く、上図のような状態になっているプロジェクトが多くある気がします。

品質保証活動のバランスの可視化

AIプロダクトの品質保証の基本的ガイドラインとしては、DI/MR/SQ/PAおよびCEの5つの軸のバランスを可視化すると良いです。

スクリーンショット 2020-05-17 11.08.58

可視化の方法は色々考えられるので、5つの軸のチェックポイントをもとに組織ごとに定義して可視化を行ったので問題ありません。

まだ可視化できていない組織であれば、5つの軸のチェックポイントを積み重ねた点数を利用しても良いかもしれません。

開発フェーズと面積

品質保証活動において、開発の段階(PoC、ベータ版、継続的実運用など)ごとに、面積は異なるが、5つの軸のバランスは取れている必要があります。

スクリーンショット 2020-05-17 11.13.35

例えば、PoCはあくまで概念実証なため、システム全体としての品質やスケーラビリティなどは求められないでしょう。ただ顧客期待値は高い場合があるため、AI技術に対する期待値の調整が必要になります。

ベータ版では、システムの品質やモデルがきちんとシステム上で動作するかなどが求められ、実運用では継続的にデータ・モデルを更新することや、何かあったときのインシデント対応の素早さなどが大事になってきます。

このように、開発フェーズに合わせて段階的に面積を大きくしてくことがプロジェクトをスムーズに進める上で理想的な状態です。

AIプロダクトの品質保証について、より詳しく知りたい方はQA4AIが公開しているスライドをご確認ください。

最後に

私は、アジャイルチームのための教師データ作成サービス「FastLabel」を開発・提供しています。5つの軸のうち、データ収集・整備のProcess Agility(PA)に特化したサービスになります。

スクリーンショット 2020-05-17 11.36.30

自動ラベル付けやアクティブラーニングを使用して、高品質な教師データ作成を効率的に行えます。データのアノテーションに関して、興味・相談のある方はぜひお問い合わせください。



サポートして頂くと、こちらからもサポート返しさせて頂きます。