AI Platform を利用すると、機械学習(ML)ワークフローを構成する多くのタスクを行うことができます。このドキュメントでは、ML プロセス全体の概要と、各 AI Platform サービスがプロセスに適している場所について説明します。
サービスの概要については、AI Platform の技術概要をご覧ください。
機械学習の簡単な説明
機械学習(ML)は人工知能(AI)のサブフィールドです。ML の目的は、コンピュータにデータを与えて学ばせることです。コンピュータが取るべき行動を表すコードを記述するのではなく、意図する動作の例に基づいて適応するアルゴリズムをコードで提供します。結果として得られるプログラムは、アルゴリズムと学習された関連パラメータで構成されます。これは、トレーニング済みモデルと呼ばれます。
ML ワークフロー
下の図は、ML ワークフローの段階の概要を示しています。青色で塗りつぶされたボックスは、AI Platform がマネージド サービスと API を提供する場所を示します。
本番環境に対応したモデルを開発して管理するには、次の段階を順番に完了する必要があります。
データを入手して準備する。
モデルを開発する。
データで ML モデルをトレーニングする。
- モデル トレーニング
- モデルの精度を評価する
- ハイパーパラメータを調整する
トレーニング済みモデルをデプロイする。
モデルに予測リクエストを送信する。
- オンライン予測
- バッチ予測
継続的に予測をモニタリングする。
モデルとモデル バージョンを管理する。
これらの段階は繰り返し行うことができます。プロセスのどの時点でも、再評価して前のステップに戻ることが必要になる可能性があります。
以下では、これらの段階を詳しく説明します。
始める前に問題を評価する
問題を ML で解決する方法を検討する前に、解決しようとしている問題について考える必要があります。次の点を検証してください。
解決すべき問題が明確に定義されているか
ML を使用してデータのパターンを認識する場合、さまざまなアプローチが可能です。モデルから取り出そうとしている情報とその情報が必要な理由を定義することが重要です。
問題の解決に ML が最良の方法かどうか
教師あり ML(このドキュメントで説明している ML のスタイル)は、特定の種類の問題に適しています。
モデルのトレーニングに大量のデータを使用できる場合にのみ、ML での問題解決を検討してください。十分なデータ量がどのくらいかは一概にいえません。モデルに含める特徴(データ属性)が多いほど、モデルのトレーニングを適切に行うために必要なインスタンス(データレコード)の数も増加します。特徴エンジニアリングのガイダンスについては、ML のベスト プラクティスをご覧ください。
また、データセットをトレーニング用、評価用、テスト用の 3 つのサブセットに分割することも必要です。
問題をより簡単に解決できる具体的な方法がほかにないかどうか検討してください。
モデルの成功をどのように測定するか
ML モデルを作成する際は、モデル開発フェーズをいつ終了するかの判断が大きな課題になります。モデルの改善を永久に続けたいと考えがちですが、得られる精度の改善はだんだん小さくなります。プロセスを開始する前に、何をもって成功とするかを決めておく必要があります。機械学習に求める精度を検討してください。また、その精度でのエラーの結果についても考えておく必要があります。
データを入手して準備する
他の特徴に基づいて推測(予測)できるように、属性(ML では特徴といいます)を含む大量のトレーニング データにアクセスできる必要があります。
たとえば、モデルで住宅の販売価格を予測するとします。この場合、特定地域の住宅の特徴(各住宅の販売価格も含む)を記述した大量のデータを用意します。
データ分析
データを用意したら、データを分析して理解し、トレーニング プロセスの入力として使用できるように準備する必要があります。たとえば、次のような作業が必要になります。
- 複数のソースから取得したデータを結合し、合理化して 1 つのデータセットにまとめる。
- データを可視化してトレンドを探す。
- データ中心の言語やツールを使用して、データのパターンを見つける。
- データの特徴を特定する。特徴は、モデルで使用するデータ属性のサブセットで構成されます。
- データをクリーニングして異常値を見つける。異常値の原因としては、データエントリや測定エラーが考えられます。
データの前処理
前処理のステップでは、有効でクリーンなデータをモデルのニーズに最も適した形式に変換します。データの前処理の例を次に示します。
- 数値データを正規化して共通のスケールにそろえる。
- データに書式設定ルールを適用する。たとえば、テキスト形式の特徴に含まれている HTML タグを除去します。
- 単純化によってデータの冗長性を低くする。たとえば、テキスト形式の特徴を Bag of Words 表現に変換します。
- テキストを数値で表す。たとえば、カテゴリ的な特徴に存在する可能性のある値のそれぞれに値を割り当てます。
- キー値をデータ インスタンスに割り当てる。
データ探索と準備のための Google Cloud サポート
TensorFlow には、AI Platform で使用できる前処理ライブラリがあります(tf.transform など)。
AI Platform に scikit-learn パイプラインをデプロイして実行すると、トレーニングとオンライン予測用の組み込み変換を適用できます。適用するカスタム変換はベータ版です。
カスタム予測ルーチン(ベータ版)をデプロイして、トレーニング中にデータを前処理したのと同じ方法で AI Platform が予測時に入力データを前処理するようにできます。
また、次の Google Cloud サービスについてもご検討ください。
Vertex AI Workbench ユーザー管理ノートブックは、JupyterLab ノートブックとあらかじめパッケージ化された Deep Learning VM Image インスタンスであり、データの準備、探索から迅速なプロトタイプ開発までのような、ディープ ラーニングのデータ サイエンス タスクに最適化されています。
BigQuery は、標準 SQL を使用したリアルタイム データに関するアドホック分析を可能にするフルマネージドのデータ ウェアハウス サービスです。
Dataproc は、Apache Spark クラスタと Apache Hadoop クラスタを実行するためのフルマネージド クラウド サービスです。
Dataflow は、ストリーミング(リアルタイム)のデータとバッチ(履歴)モードのデータを同等の信頼性と明瞭度で変換・活用するためのフルマネージド サービスです。
Dataprep は、構造化データと非構造化データの視覚的な探索、クリーニング、準備を行うためのインテリジェントなサーバーレス データサービスです。
モデルをコーディングする
確立された ML 技法を使用してモデルを開発します。既存の技法を使用しない場合は、新しいオペレーションとアプローチを自分で定義します。
TensorFlow のスタートガイドを参照して TensorFlow の学習を始めます。scikit-learn のドキュメントまたは XGBoost のドキュメントの説明に沿ってモデルを作成することもできます。次に、AI Platform と連動するように設計されたいくつかのコードサンプルを調べます。
モデルのトレーニング、評価、調整を行う
AI Platform は、クラウドでモデルのトレーニングと評価を行うために必要なサービスを提供します。また、AI Platform では、トレーニング プロセスを最適化するハイパーパラメータ調整機能を利用できます。
モデルをトレーニングするときに、データ属性(特徴)の目標値がすでにわかっているデータをモデルに供給します。モデルを実行してトレーニング データの目標値を予測します。これにより、モデルが適切にデータに適合し、目標値をより正確に予測できるように設定を調整できます。
同様に、トレーニング済みのモデルを評価する場合は、目標値を含むデータをモデルに供給します。モデルによる予測の結果と評価データの実際の値とを比較し、モデルに適した統計的技法を使用して成果を測定します。
実行するトレーニング ステップの数など、トレーニング プロセスの制御に使用するオペレーションや設定を変更することで、モデルを調整することもできます。 この手法をハイパーパラメータ調整といいます。
モデルのテスト
トレーニングでは、既知のデータにモデルを適用し、結果を改善するために設定を調整します。アプリケーションのニーズを十分に満たす結果が得られたら、アプリケーションで使用するシステムにそのモデルをデプロイしてテストする必要があります。
モデルをテストするには、最終的なアプリケーションと本番環境のインフラストラクチャにできるだけ近いコンテキストでデータをモデルに渡します。
トレーニングと評価に使用するものとは別のデータセットを使用する必要があります。テストのたびに別のデータセットを使用するのが理想的です。これにより、過去に処理したことのないデータでモデルのテストを行うことができます。
また、モデルの性質に応じてさまざまなテストデータを作成することもあります。たとえば、特定の場所や時点ごとに別のデータセットを使用する場合や、さまざまなユーザー世代を模倣するようにインスタンスを分割する場合です。
テストプロセスでは、テストの結果に基づいてモデルのパラメータとハイパーパラメータを調整します。モデルの中や、モデルとアプリケーションの残りの部分との相互作用で問題が見つかることもあります。
クラウドにモデルをホストする
AI Platform には、トレーニング済みの ML モデルをクラウドにアップロードするツールが用意されています。このツールを使用して、モデルに予測リクエストを送信できます。
トレーニングしたモデルを AI Platform にデプロイするには、機械学習フレームワークのツールを使用してトレーニング済みのモデルを保存する必要があります。これにより、トレーニング済みのモデルを表す情報をファイルにシリアル化し、このファイルをクラウドにデプロイして予測を行います。
次に、保存したモデルを Cloud Storage バケットにアップロードし、Cloud Storage に保存したモデルのパスを指定して AI Platform でモデルリソースを作成します。
モデルをデプロイする際に、カスタムコード(ベータ版)を指定して、予測リクエストの処理方法をカスタマイズすることもできます。
モデルに予測リクエストを送信する
AI Platform は、クラウド内のモデルから予測をリクエストするために必要なサービスを提供します。
トレーニング済みのモデルから予測を取得するには、オンライン予測(HTTP 予測ともいいます)とバッチ予測の 2 つの方法があります。どちらもクラウドでホストされた機械学習モデルに入力データを渡し、各データ インスタンスについて推定を取得します。
予測サービスをモニタリングする
予測は継続的にモニタリングします。AI Platform には、実行中のジョブを調査するための API があります。さらに、さまざまな Google Cloud ツールで、Cloud Logging や Cloud Monitoring など、デプロイされたモデルのオペレーションがサポートされています。
モデルとモデル バージョンを管理する
AI Platform には、REST API、gcloud ai-platform
コマンドライン ツール、Google Cloud コンソールなど、モデルとバージョンを管理するためのさまざまなインターフェースが用意されています。
次のステップ
- Keras を使用し、AI Platform Training と AI Platform Prediction を始める。
- カスタム コンテナを使用してトレーニングする方法を確認する。
- AI Platform の組み込みアルゴリズムを使用してコードを記述することなく、TensorFlow と XGBoost のモデルをトレーニングする方法を確認する。
- カスタム予測ルーチンを使用して、オンライン予測リクエストの前処理と後処理を追加する方法を確認する。
- カスタムコードとカスタム scikit-learn 変換をオンライン予測パイプラインに追加する。
- AI Platform Training と AI Platform Prediction について詳しく確認する。