「すべての人にAI」の時代を迎え、多くの人が機械学習(ML)に何らかの形で触れるようになりました。 データを必要とするすべての企業が、人工知能と機械学習を使用してビジネスを分析し、自動化されたソリューションを提供しようとしているようです。 「フォーチュン・ビジネス・インサイトは、機械学習の市場価値が2027年までに1,170億ドルに達すると予測しています。」 機械学習の人気により、関連する知識を持たない多くの初心者が業界に参入するようになりました。もちろん、それ自体は良いことですが、機械学習プロジェクトを実際の運用環境に統合することは想像するほど簡単ではないことも理解する必要があります。 図: 750 社に基づく Algorithmia の 2020 年のエンタープライズ ML 使用状況イメージ 「アルゴリズミアの調査によると、機械学習モデルに取り組んでいる企業の55%がまだそれを実用化していない」 ここで言及する価値があるのは、機械学習を簡素化するプラットフォームを提供するスタートアップ企業である Algorithmia が、2017 年 6 月に Google から 1,050 万ドルのシリーズ A 資金調達ラウンドを完了したことです。 モデルのトレーニングに必要なデータとコンピューティング リソースがあれば、機械学習プロジェクトの実装はかなり簡単だと多くの人が考えているようです。 しかし、これは完全に間違っています。 この仮定により、モデルを展開することなく多くの時間とお金が無駄になる可能性が高くなります。 図: 機械学習のライフサイクルに関する素朴な仮定 この記事では、機械学習プロジェクトのライフサイクルが実際にどのようなものか、またライフサイクルの各段階で使用できるツールについて詳しく説明していきます。 そんなに単純じゃない:機械学習のライフサイクルを見る
実際には、機械学習プロジェクトは単純ではありません。データ、モデル、評価の改善を繰り返すプロセスであり、完全に完了することはありません。 このサイクルは、モデルの結果と評価を使用してデータセットを改良することに重点を置いているため、機械学習モデルの開発に不可欠です。さらに、高品質のデータセットは、高品質のモデルをトレーニングするための最も信頼性の高い方法です。 このサイクルの反復速度によって、費やす必要のあるコストが決まります。幸いなことに、品質を犠牲にすることなくこのサイクルをスピードアップできるツールがあります。 図: 機械学習ライフサイクルの実際の例 他のシステムと同様に、展開された機械学習モデルも継続的に監視、保守、更新する必要があります。モデルを展開して忘れてしまい、実際の世界でも残りの時間はテスト セットと同じように動作することを期待することはできません。 現実の環境に展開された機械学習モデルは、モデルに偏りが見つかったり、新しいデータ ソースが追加されたり、追加の機能が必要になったりするなどの理由で更新する必要があります。 そして、これらすべてにより、プロジェクト全体がデータ、モデル、評価のサイクルに戻ります。 次のセクションでは、機械学習ライフサイクルの各段階を詳しく説明し、各段階で使用できる一般的なツールを紹介します。 フェーズ1: データ
図: 機械学習サイクルのデータ部分 私たちの最終的な目標は高品質のモデルですが、優れたモデルをトレーニングするための鍵の 1 つは、モデルに渡されるデータの量にあります。 データ側における機械学習ライフサイクルの関連ステップは次のとおりです。 1. データ収集最初のステップは、最終的なデータの品質に関係なく、できるだけ多くの生データを収集することです。この生データのうち、注釈が付けられるのはごく一部であり、コストの大部分はそこから発生します。 また、モデルのパフォーマンスが問題になる場合は、必要に応じて大量のデータを追加すると便利です。 よく使用される公開データセットのリストは次のとおりです。 https://medium.com/towards-artificial-intelligence/best-datasets-for-machine-learning-data-science-computer-vision-nlp-ai-c9541058cf4f 2. 注釈モードを定義するこのリンクは、ライフサイクルのデータ ステージで最も重要な部分の 1 つですが、見落とされがちです。 適切に構築されていない注釈スキーマを使用すると、不明瞭なクラスやエッジ ケースが発生し、モデルのトレーニングが困難になる可能性があります。 たとえば、オブジェクト検出モデルのパフォーマンスは、サイズ、位置、方向、切り捨てなどのプロパティに大きく依存します。したがって、注釈付け時にオブジェクトのサイズ、密度、遮蔽などのプロパティを含めると、モデルがデータ内の重要な情報を学習するのに役立ちます。 このプロセスに役立つ一般的なツールを 2 つ紹介します。 Matplotlib、Plot - データのプロットプロパティを見つけるのに役立ちます Tableau - データをより深く理解するのに役立つ分析プラットフォーム 3. データ注釈データに注釈を付ける作業は、同じ作業を何時間も繰り返して実行する必要がある面倒な作業です。これが、注釈サービスが普及した理由の 1 つです。多くの人は、自分でデータに注釈を付ける作業に多くの時間を費やしたくないのです。 その結果、アノテーターは多くのミスを犯します。ほとんどのアノテーション会社は最大エラー率(最大エラー率 2% など)を明示していますが、より大きな問題は、アノテーション モードの定義が不十分なために、アノテーターがサンプルに異なるラベルを付ける可能性があることです。 ただし、アノテーション会社のチームがこれを発見することは難しいため、自分で確認する必要があります。 以下に、よく使用されるさまざまな注釈サービスを示します。 Scale、Labelbox、Prodigy - 人気の注釈サービス Mechanical Turk - クラウドソーシングによる注釈 CVAT - DIY コンピュータ ビジョン アノテーション Doccano - NLP 専用の注釈ツール Centaur Labs - 医療データラベリングサービス 4. データセットと注釈を改善するモデルのパフォーマンスを向上させるために多くの時間を費やすことになります。 モデルが学習しているがパフォーマンスが低い場合、その原因はほとんどの場合、モデルのパフォーマンスを制限するバイアスやエラーを含むトレーニング データセットにあります。 モデルの改善には通常、ハード サンプル マイニング (たとえば、モデルがデータセット A でパフォーマンスが低い場合は、データセット A に類似した新しいデータをトレーニング データに追加する)、モデルによって学習されたバイアスに基づいてデータセットを再調整する、新しいラベルを追加して既存のラベルを改善するための注釈スキーマの更新が含まれます。 データセットと注釈を改善するためによく使用されるツールは次のとおりです。 DAGsHub - データセットのバージョン管理 FiftyOne - データを視覚化してエラーを見つける フェーズ2: モデル 図: 機械学習ライフサイクルのモデル部分 このプロセスの出力は「重要に見えるモデル」ですが、この部分は実際にはサイクル全体の中で最も時間がかかりません。 図: 業界ではモデルよりもデータセットに多くの時間が費やされている 既存の事前トレーニング済みモデルを調べるこのステップの目標は、できるだけ多くのリソースを使用して、モデル構築プロセスを可能な限り最良の状態で開始することです。 「転移学習」は今日のディープラーニングの中心です。ゼロからモデルを作成するのではなく、関連するタスクで事前トレーニングされた既存のモデルを微調整する場合があります。 たとえば、マスク検出モデルを作成する場合、GitHub から事前トレーニング済みの顔検出モデルをダウンロードすると良いでしょう。この顔検出モデルはより成熟しており、人気があり、予備的な作業もより多く行われているからです。 このプロセスで一般的に使用されるツールと方法は次のとおりです。 FiftyOne モデル動物園 - 1 行のコードでモデルをダウンロードして実行 TensorFlow Hub - トレーニング済み ML モデルのリポジトリ modelzoo.oo - さまざまなタスクとライブラリ用の事前トレーニング済みのディープラーニングモデル トレーニングループの構築データは、事前トレーニングに使用されたデータとまったく同じタイプではない可能性があります。 たとえば、画像データセットの場合、モデルのトレーニング パイプラインを設定するときに、入力解像度やオブジェクト サイズなどの要素を考慮する必要があります。 さらに、ラベルのクラスと構造に合わせてモデルの出力構造を変更する必要があります。 PyTorch Lightning は、限られたコードでモデルトレーニングをスケールアップする簡単な方法を提供します。 このプロセスで一般的に使用されるツールは次のとおりです。 Scikit Learn - 古典的な機械学習システムを構築して視覚化する PyTorch、PyTorch Lightning、TensorFlow、TRAX - 人気のディープラーニング Python ライブラリ Sagemaker - Sagemaker IDE で機械学習システムを構築およびトレーニングする 実験の追跡このステップでは、サイクル全体で複数回の反復が必要になる場合があります。 最終的にはさまざまなモデルをトレーニングすることになるため、モデルのさまざまなバージョンと、それらをトレーニングするために使用したハイパーパラメータおよびデータを注意深く追跡しておくと、整理整頓に役立ちます。 このプロセスで一般的に使用されるツールは次のとおりです。 Tensorbord、重みとバイアス、MLFlow - モデルのハイパーパラメータを視覚化して追跡する さらに、ここにちょっとしたヒントがあります: 自分のタスクが完全にユニークだと思う場合でも、トレーニング前に使用できるトリックがいくつかあります。たとえば、教師なしまたは半教師ありの方法でモデルを事前トレーニングし、元のデータ全体のごく一部のみを使用して微調整することを検討できます。 タスクに応じて、合成データを使用してモデルを事前トレーニングすることもできます。 目標は、微調整データセットをモデルパラメータのいくつかの貴重なレイヤーのトレーニングにのみ使用すれば済むほど、データを十分に表現するモデルを取得することです。 フェーズ3: 評価 図: 機械学習ライフサイクルの評価部分 トレーニング データを学習したモデルを正常に取得したら、次のステップは、そのモデルが「新しいデータ」でどのように機能するかを詳しく調べることです。 機械学習モデルを評価するための主な手順は次のとおりです。 モデル出力の視覚化トレーニング済みのモデルができたら、すぐにいくつかのテストケースを実行して出力を観察する必要があります。 これは、テスト セット全体で評価を実行する前に、トレーニングまたは評価パイプラインにエラーがあるかどうかを確認する最適な方法です。 さらに、このプロセスの結果により、2 つのクラスが誤ってラベル付けされているなど、モデルに明らかなエラーがあるかどうかがわかります。 次のツールが役立ちます。 OpenCV、Numpy、Matplotlib - カスタム視覚化スクリプトを記述できます FiftyOne - 画像や動画のコンピュータービジョンタスクの出力を視覚化する 適切な測定方法の選択いくつかのサンプルの出力を観察した後、モデルの全体的なパフォーマンスを比較するのに役立つ 1 つまたは複数のメトリックを作成する必要があります。 特定のタスクに最適なモデルを確実に取得するには、最終目標と一致するモデル メトリックを作成する必要があります。 同時に、追跡したい他の重要な特徴を発見したときにも、メトリックを更新する必要があります。たとえば、オブジェクト検出モデルが小規模なオブジェクトに対してどの程度のパフォーマンスを発揮するかをテストする場合は、メトリックの 1 つとして「境界ボックス < 0.05」を使用できます。 ただし、これらのメトリックは複数のモデルのパフォーマンスを比較するのに便利ですが、開発者がモデルのパフォーマンスを向上させるプロセスを理解するのに役立つことはほとんどないことに注意することが重要です。 このプロセスでは、次のツールが一般的に使用されます。 - Scikit Learn - 一般的な指標を提供する
- Python、Numpy - カスタムインジケーターの開発に使用できます
失敗例を見てみよう入力したトレーニング データによってモデルのパフォーマンスが決まります。モデルが何かを学習したが、パフォーマンスが予想よりも悪かった場合は、データを確認する必要があります。 モデルが適切に機能する例を確認することは有用ですが、モデルが誤った予測を行う例を確認することが最も重要です。これらの例を十分に観察すると、モデルが一貫して失敗する例の種類が徐々にわかるようになります。 たとえば、下の画像は、後輪が誤検知された Open Images データセットの例を示しています。この誤検知の結果の原因は、注釈が欠落していることです。したがって、データセット内のすべての注釈をチェックし、他の同様のエラーを修正すると、タイヤ上のモデルのパフォーマンスを向上させることができます。 画像: タイラー・ガンター この段階で一般的に使用されるツールは次のとおりです。 FiftyOne、Aquarium、Scale Nucleus - データセットをデバッグすることでエラーを見つけることができます ソリューションを開発するモデルのパフォーマンスを向上させる方法を見つけるための最初のステップは、失敗ケースの特性を特定することです。 ほとんどの場合、トレーニング データを追加して問題を解決する必要がありますが、トレーニング データはランダムに追加するのではなく、テスト失敗例に類似したデータである必要があります。さらに、パイプラインの前処理または後処理の手順を変更したり、注釈を変更したりすることもできます。 解決策が何であれ、それはモデルの失敗例を理解することから生まれます。 フェーズ4: 生産 図: モデルのデプロイ この段階で、評価メトリックで適切に機能し、限界例で重大なエラーを起こさないモデルがようやく完成します。 さて、何をする必要がありますか? モニターモデルこのステップでは、デプロイメントをテストして、モデルがテスト データで評価メトリックと推論速度に従って引き続き実行されることを確認する必要があります。 この段階で一般的に使用されるツールは次のとおりです。 Pachyderm、Algorithmia、Datarobot、Kubeflow、MLFlow は、モデルとパイプラインのデプロイと監視に役立ちます。 Amazon Web Services、Google AutoML、Microsoft Azure - これらは機械学習モデル向けのクラウドベースのソリューションです 新しいデータの評価トレーニング済みのモデルを実際の運用で使用するということは、モデルでテストされたことのないデータをフレームワーク全体に継続的に入力する必要があることを意味します。 このプロセスでは、いくつかのアクションが特に重要です。1. 指定したメトリックを使用して新しいデータを評価する 2. 特定の例を詳しく調べる。これらのアクションを使用すると、モデルが新しいデータに対してどのように機能するかを確認できます。 モデルを理解し続けるモデル内の一部のエラーやバイアスは深く根付いている場合があり、発見されるまでに長い時間がかかることがあります。 このプロセス中は、モデルの問題を引き起こす可能性のあるさまざまなエッジ ケースや傾向を発見するために、モデルを継続的にテストおよび調査する必要があります。そうしないと、これらの問題が顧客に発見される可能性があります。 拡張機能すべてが完璧であっても、モデルが期待した利益をもたらさない可能性があります。 現在のモデルの機能を拡張する方法は無数にあります。新しいクラスを追加したり、新しいデータ フローを開発したり、既存のモデルをより効率的にしたりすることで、現在のモデルはより優れたものになります。 さらに、システムのパフォーマンスを向上させる必要がある場合は、機械学習のライフサイクルを再起動してデータとモデルを更新し、評価して、新しいシステムが期待どおりにスムーズに動作することを確認する必要があります。 参考リンク: https://towardsdatascience.com/the-machine-learning-lifecycle-in-2021-473717c633bc |