in

AIモデルが正しく学習したかを確かめる方法

文/ Flow AI Blog 編集部

【要約】AIモデルの性能を向上させる仕組み:
1. データアノテーションと結果検証を支援する「ラベルシステム」の構築
2. 安全保障機能の確保
3. DevOpsの概念をAI開発と運営に浸透させる

FLOW AIは元トレンドマイクロ社のベテランITマネージャーであるチャールズ・チャン氏を招き、長年最前線でAIチームを管理してきた経験と、AIプロジェクトの実行経験についてお話をお伺いしました。

前回の記事では、AIモデルがうまく機能しない時に可能な原因と、一連のデバッグの流れを紹介しました。今回は、データアノテーションと結果検証を支援する「ラベルシステム」について話したいと思います。

ラベルシステムとは?

モデルのパフォーマンスを評価、異常はないかを確認するには、最も効果的な方法は「自動的にアノテーションと結果の検証をやってくれるシステム」を構築してモニタリング作業を任せることです。

このラベルシステムの主な役割は2つあります。一つは、データの間に「AIモデルの性能が想定以下、問題を特定するためには?」で触れたフィーチャー・コリジョンやアノテーション品質の問題はないかを見極める手助けをし、それをエンジニアにフィードバックしてデータストリーム全体の質を上げることです。もう1つは、これらのデータを更にモデルに投下して再学習させ、性能の底上げを図ります。

以前にも話しましたが、AIプロジェクトを立ち上げて必要データ量を決める前に、まずAIの命題は可変・不変のどちらかを区別する必要があります。

命題が不変なものなら、エンジニアはただ十分なデータを収集して要件を満たせるようモデルをトレーニングすれば、そのまま製品化段階まで進められます。しかし命題が可変の場合、前述のように自動的にモデルの状況をモニタリングし最適化を行ってくれるシステムが必要となります。

ラベルシステムが必要な理由は?

勘のいい方はお気づきかと思いますが、エンジニアはAIモデルに問題はないかを検証するために、それを執行するAIシステムを別途構築しなければなりません。

しかし、そんなアノテーションと検証の手助けに留まらず、モニタリングや最適化まで自動的にやってくれる高性能AIシステムを作れるなら、それより性能が劣るであろう元の機械学習モデルに固執することはないじゃないか、という矛盾が発生します。

一見、二者択一の状況に見えますが、よくよく考えてみたらそうでもありません。モデルを監視・制御するシステムがなければ、そもそも学習成果を検証できませんから。

ほとんどの人からすれば、こういうシステムは開発終盤、AIモデルが実際にリリースされてデータストリームを予測する需要が出来てから構築するものでしょう。実は、このシステムと機械学習モデルは白と黒じゃなくて、鶏と卵みたいな共存関係です。

経営判断と同じ、AIモデルの開発自体が一種の取捨選択です。ラベルシステムの存在はその必要性がありますが、運用する際注意すべき点は主に2つあります:応答時間とコストです。

仮にラベルシステムが正しい結果を出力するまで1時間かかるとします。実際のビジネスシーンではそこまで待てないことが多いので、まず普通のAIモデルを使って素早く対応させて、1時間後また正しい結果でそれを評価・検証するというやり方もできます。

また、ラベルシステムのほうが精度高い反面、人力によるアノテーションよりもコストが嵩張ります。こういう場合、データを全部システムに丸投げするのではなく、いくつか重要な、代表的なデータを取り上げてラベリングさせたほうがよりいいコストパフォーマンスを見込めます。

ラベルシステムをどうやって構築するの?

ラベルシステムはAIモデルの監視以外にも、データストリームから得たものを使ってモデルを再学習させるという大事な役割があります。

モデルの再学習は、先に精確なアノテーション済みデータを用意しておく必要があります。前述のようにこれをラベルシステムで行うと比較的に高い精度を得られますが、コストも高くなります。そこで、より慎重で、コストも抑えられるやり方があります。

具体的には、教師なし学習(Unsupervised Learning)の手法を用いて母集団のデータを代表する重点データを取り上げて、トレーニングに使用します。つまり、手持ちのデータを種類ごとに分類し、更に中から各カテゴリの特徴を表すデータを抜き取って全体の代表とするやり方です。

データの用意ができたら、モデルに投下すればシステムはこの実際のデータ流(Real Traffic)をリアルタイムで処理し、一旦データストレージを出力してから、モデルによる検証を経てアップデート、最後にフィードバックすることでAIモデルの性能を向上させます。

(画像出典:トレンドマイクロ社)

途中でエンジニアの手動チェックが必要ですが、問題がなければこれらの代表的なデータを先ほどの母集団データ群に適用させ、全てアノテーション済みデータとして扱うことでモデルの再学習に利用できます。

AIモデルを導入したら、ラベルシステムは実際のデータストリームを予測し、それが終われば放置するだけで自動的にこのAIモデルの健全性をモニタリングしてくれます。

重要だが見落とされがちなAI安全保障機能

2018年と2019年では、2機のボーイング737 MAX旅客機が離陸から数分も経たないうちに墜落し、搭乗者全員が死亡した事故がありました。調査の結果、自動操作システムとパイロットが飛行機の制御を奪い合った末、制御不能になったことが原因だと判明しました。何故このような不幸な事件が起きてしまったのか、それは安全保障機能が搭載されていなかったからである。

モデルに異常が発生した場合、人間が即座に介入できて専門家の判断によりAIの決定権を解除できる、この「最終防衛ライン」とも言える仕組みがあれば、大きな事故を未然に防げるはずです。

DevOpsの精神を開発と運営の過程に組み込もう

トレンドマイクロの社内開発チームは、ソフトウェア開発のみならずAI開発と運営にもDevOps精神を実践し続けています。最後に、AIモデルのDevOpsはどんなものか紹介して終わりたいと思います。人工知能/機械学習サビースのリリースは、ゴールではなく始まりにすぎません。

機械学習の運営は、性能監視、エラー修正とアップデートが中心となり、良し悪しを決める絶対的な基準はありません。モデルは常に最適化し続けるべきものであり、これに関しては3つの面から考えてみるといいでしょう。

(画像出典: Medium )

どんなデータが欲しいか

今までの経験によれば、実際の運用シーンでAIがうまく機能できない理由の多くは、アルゴリズムに運用現場のデータを与えてなかったからです。そのため、早めに導入して実際のデータを集めるのはAIプロジェクトを成功させるための最重要ステップです。

機械学習を行う際、データ量を気にする人もいればデータの多様性を追求する人もいます。実は1つ、よりいい方法があります。「データ・サンプリング」を通して時間と資源利用の効率を上げることです。

仮にここに2億件のデータがあるとします。昔ならそれらを全部トレーニングに投入しますが、今だと中から代表的なデータ500万件を抜き取ってトレーニングに使い、なんと両方の差は1%以下。最近はサンプリング用のツールも手に入りやすいので、時間と労力に役立ちます。

②損切ラインはビジネス価値とコストによって変わるもの

AIモデルの育成にどれだけのデータが必要?」の記事でも触れましたが、AIプロジェクト開始前にまずビジネス命題に合わせた評価指標(マトリクス)を定める必要があります。AIモデルだと、よく使われるメトリクスはTP(True Positive)、TN(True Negative)、FP(False Positive)、FN(False Negative)などがあります。しかしこれらを定義するのは、実は簡単なことではありません。

メール用のウィルス対策AIを例に取りますと、同時ランサムウェアとにマルウェアの2種類がある場合、どっちを優先的にブロックするべきか?実務上、プロジェクトマネージャーが決めることが多いですが、最終的に企業が求めるビジネス価値を反映させなければなりません。

運用コストの面から考えると、AIモデルが60~70点の結果を出せてコスト削減にも役立つなら、無理して90点を求めることはありません。90点を達成できても、コストが高くなるならやらない選択肢もあります。大事なのは、天井まで性能を高めるではなく、重点利益を達成できるかどうか、そして採算を取れるかどうかである。

最初の問題から検証しよう

完成したモデルがちゃんと機能するかどうか、どうやって調べるのでしょうか?こういう時は、当初の解決したい「問題」に立ち返ってみましょう。

最初から満点を取るのではなく、一歩ずつデータを辿って小規模なPOCを繰り返し、ゴールに達成できるかを検証します。可能だと確認してから、投資を検討しても遅くありません。

思うように進めなくても、DevOpsを使って素早く調整を行い、次の四半期に路線変換するかどうかを検討し、ダイナミックかつ柔軟に市場とお客様のニーズに対応すれば問題ありません。

AIが実装されてから、目標は市場・お客様を満足させることに変わります。「DevOps」チームワークの流れは、前述の3つのポイントに全て含まれており、参考になれたら幸いです。

関連記事
AI命題の見つけ方
AIモデルの性能が想定以下、問題を特定するためには?


AIモデルの性能が想定以下、問題を特定するためには?

精確なAIデータを得る方法