![見出し画像](https://assets.st-note.com/production/uploads/images/87882178/rectangle_large_type_2_b94594b0bbfc1875ad73b76ea7f11d4a.png?width=1200)
Data-centric AI とは
はじめに
R&D 室の渡邉です.
本日は,機械学習界隈ではお馴染みの Andrew Ng 先生が提唱されている Data-Centric AI について A Chat with Andrew on MLOps: From Model-centric to Data-centric AI という動画の内容を中心に紹介していきたいと思います.
2021 年頃に出てきた話なので何番煎じか分からないくらいの紹介になりますがお付き合いいただければと思います.
Model-centric AI から Data-centric AI へ
はじめに Data-centric AI とは何なのかという話ですが,Data,Centric,AI という Word からデータを中心とした AI っぽいことを言っているのは想像が付くかと思います.そうです,Data-centric AI とはデータに重きを置いたアプローチのことです.
他に何 centric AI があるのかという疑問が生じる方もいるかもしれませんが,Data-centric AI と比較されるのは,Model-centric AI というものになります.
動画では,AI System は機械学習モデルを含むアルゴリズム部分の Code と機械学習モデルを訓練するために必要となるデータやシステムへの入力となる Data から構成されていて,これまでは Data を固定して Code の改善に注力した Model-centric AI の研究開発が盛んに行われてきていましたが,今後は Code を固定して Data の改善に注力するような Data-centric AI が重要になってくるのではないかという話がされております.
モデルの改善 vs. データの改善
機械学習のモデルを作る上でデータの質は非常に重要で,改めて言われなくても分かってるよという方がほとんどかと思います.所々,”,” の数が異なる .csv ファイルを受領し各カラムの意味が正しくなるように隠されたルールを解き明かしてデータの整形を行なったり,表記揺れの激しい文章データを処理するために手動で辞書を作成することに小宇宙を燃やした経験がある方も多いのではないでしょうか.
動画では鉄の欠陥検査で,Baseline の Accuracy が 76.2% であるのに対して,最新のモデルのアーキテクチャを用いた Model-centric なアプローチでは Accuracy が向上しなかった一方で,データを見直してデータの質を向上した Data-centric なアプローチでは,93.1 % の Accuracy を達成したという実際にあったプロジェクトの例が紹介されていました.
前述の通りデータの質が重要なことは改めて言うまでもないですが,データの質を改善するプロセスを単なる preprocess としてではなく, MLOps のサイクルの中にデータの質を改善するプロセスを入れ,データの質を監視,改善していく考え方が紹介されており,この考え方が必要なことは認識されていますがそれほど重要視されてない部分ではないかと感じました.これについては後程詳しく紹介します.
データの改善(ラベルの一貫性)
データの質の改善と言っても,改善を必要とする要因が前述のような本当にあった怖い話のような話に起因するようなもの以外の場合も当然あります.動画の中では,画像中からイグアナの位置を検出するような Object Detection タスクのためのデータに付与するラベルの例が紹介されていました.
![](https://assets.st-note.com/img/1664412395781-hoWyVJ7b8P.png?width=1200)
左がラベル付与前の画像で,イグアナが存在している領域を四角(Bounding Box)で囲むことを複数名に指示して実行するとします.このとき,「イグアナに Bounding Box を付与して下さい」という指示を出した場合,上段真ん中の画像のように 2 匹のイグアナの Bounding Box が重ならないようにする作業者もいれば,上段右側の画像のように Bounding Box の重なりを許容する作業者もいるかと思います.さらに,「各イグアナに Bounding Box を付与して下さい」と言ってはないので,下段の画像のように 2 匹をまとめて 1 つの Bounding Box を付与する作業者もいるかもしれません.このようなラベルの付与の仕方に一貫性がないようなデータは,機械学習のモデル作成する上で性能に悪影響を与えることが予想されます.
これまではこのようなデータの修正は行うのは個々の機械学習エンジニアに依存していた部分ですが,これをシステマチックに行った方がよいという主張がなされています.
下記はそのフローの一例となります.
2人(複数)のラベルを付与する作業者に同じ画像に対してラベルを付与してもらう
付与されたラベルの一貫性を計測する
一貫性がないクラス(例えばイグアナのクラス)については,ラベルを付与するための指示を修正する
上記を一貫性がある状態になるまで繰り返す
特に 2. についてはどうやってやるんだと思う方が多いと思います.動画内では Tool を開発するなどしてこれらのフローを実施するという説明されているので,現状タスク依存ということもありこれという方法はないのではないかと思います.
データ量とデータの質
データの質の重要性についてはこれまで述べてきた通りですが,どういう場面でよりデータの質が重要になって来るかという点についても動画内で紹介されていました.結論を先に申し上げますと,データ量が少ない場合ほどよりデータの質は重要になって来ます.
下記は動画内で紹介されているスライドを切り取ったもので,横軸がヘリコプターのモータへ入力する電圧で縦軸がモータの回転スピード,❌印が取得したデータを表していて,与えられたデータを元に電圧から回転数を予測する機械学習モデルを作る(青い線が引けるようになるモデルを作る)ことを考えます.実際はもっとデータが必要になりますがこれはあくまで諸々を簡略化した例として見て頂ければと思います.
![](https://assets.st-note.com/img/1664412395906-JpTb4r7Ky3.png?width=1200)
左がデータ量が少なくてデータの品質が低いもの,中央がデータ量が多くてデータの品質が低いもの,右がデータ量が少なくてデータの品質が高いものを表しています.見て頂いて分かる通り,左のデータ量が少なくてデータの品質が低いものから予測精度の高いモデルは難しいことが分かるかと思います.一方,中央と右側では似たような精度のモデルが出来そうですが,中央は大量のデータを必要としデータ収集やラベル付けのコストが高くなってしまうという問題があります.特に製造業や医療分野などではデータを大量に用意すること自体が難しいという場面が多いのではないかと思います.
データの質が低い場合と高い場合とで同等の精度を達成するためにどれくらいのデータ量の差になるのかという話も実際にあった事例を元に紹介されていました.
![](https://assets.st-note.com/img/1664412396027-R4q7JRquyr.png?width=1200)
横軸が訓練に用いたデータ量で縦軸が性能を表しており,赤い線がデータの質が低い場合,緑の線がデータの質が高い場合で,データの質が低い場合は 0.6(mAP) を達成するのにデータの質が高い場合と比較して約 3 倍ほどのデータ量が必要になるという状況が発生しています.
私個人の感覚としては 3 倍という数字は中々大きな開きだなと感じますし,データ量が増えれば訓練にも時間が掛かり,電力をより多く使用するのでお財布にも地球にもやさしくないと思います.もちろん,ここに出て来る数字はタスクやデータ依存なのであくまでもこの例ではこれくらいの差があったという話となりますが,データの質が如何に大事であるかはこの例からもお分かりいただけるかと思います.
データの質を確保する MLOps
それでは,データの質が高い状態を維持した状態で機械学習を用いたプロジェクトを運用するにはどうしたらよいでしょうか.
![](https://assets.st-note.com/img/1664412395884-coT7U9LAWr.png?width=1200)
この図はざっくりですが機械学習のプロジェクトを進める上でのライフサイクルを表しています.
具体的には,最初にスコープつまり何をするかを決定します.例えば画像分類を行うなどです.次に画像分類を行うためのデータ収集を行い,次に収集したデータを用いてモデルの訓練を行い,訓練したモデルを本番環境に deploy し,フィードバックを得て改善していくという流れとなります.
動画では,このライフサイクルを回すのは MLOps チームであり,データの質を確保するには MLOps チームが各フェーズにおいて次のような問いに答えられる必要があるという話が紹介されています.
まず,データの収集フェーズにおいてはデータの定義や収集方法です.これは機械学習のモデルを訓練する上で必要となるラベル付けを含むデータの準備に関するものです.
次に,モデルの訓練フェーズにおいては,モデルの性能を向上させるためにどのようにデータを収集すればよいのかです.これは作成したモデルについて error analysis を行いながらデータの改善による修正方法を考えるといったものです.
次に,本番環境に機械学習モデルを投入するフェーズでは,concept/data drift を検出するためにどういうデータを収集する必要があるかです.これは,機械学習モデルの運用中にモデルの性能の劣化を検出するためにどういうデータを収集して性能のモニタリングをする必要があるかということです.
モデルの性能をモニタリングをできるようにした上で,運用中にモデルの性能劣化が検出されれば,error analysis を行い性能劣化の原因,改善方法を考えデータの改善を行ない,モデルを改善して改善したモデルを本番環境に投入するというライフサイクルをシステマチックに回していくことで,データの質を高い状態に保ちながら機械学習プロジェクトを運用できるのではないかと説明されていました.
Big Data から Good Data へ
動画の終盤で今後様々な Field で AI System が広がっていくには,データを大量に集めるということに注力する状態から Good Data を集めることに注力する状態に変わっていくことが大事であるというお話がされていました.
Good Data とは以下のように定義されています.
Defined consistently (definition of labels y is unambiguous)
Cover of important cases (good coverage of input x)
Has timely feed back from production data (distribution covers data drift and concept drift)
Sized appropriately
1 つ目はこれまで述べて来ていた付与するラベルに曖昧性のない状態,2 つ目は不足なく入力とするデータの分布をカバーできている状態,3 つ目は現在のデータがタイムリーにフィードバックされていてモデルの性能劣化を検知できる状態,4 つ目は量が適切である状態を指し,これらを満たすようにデータを収集,修正する仕組みをツールを開発するなどして出来るだけシステマチックに作り上げることが重要になります.
おわりに
現状では,まだまだ上記全てのツールの開発や仕組み作りは発展途上で各々が必要なものを手作りまたは手動で実行したりという状態ではないでしょうか.ただし,モデルの性能劣化を検知する仕組みについては,Amazon SageMaker Model Monitor や Vertex AI Model Monitoring など主要なクラウドサービスで既に提供されているものもあったりします.
今後,Data-Centric AI のような考え方が盛り上がって来て必要十分なデータを寝てても用意できるような未来が早く来て欲しいと個人的には思っています.