G-gen の佐々木です。当記事では Google Cloud(旧称 GCP)の認定資格の一つである、Professional Machine Learning Engineer 試験の対策や出題傾向について解説します。
基本的な情報
Professional Machine Learning Engineer とは
Professional Machine Learning Engineer 試験は、Google Cloud における AI/ML サービス全般の知識に加え、機械学習モデルの開発、運用に関する一般的な知識、およびそれを Google Cloud 上でどのように実現するかについての専門的な知識が問われる試験です。
Google Cloud 認定資格の中でも Google が提供するサービスに関する出題が比較的少なく、それに対して機械学習モデルの開発、運用に関する出題が非常に多いことが特徴的な試験となっています。
2023年 8月現在で 英語版のみ の提供となっています。
試験費用は $200 で試験時間は 2時間、問題数は 50~60問の多項選択式となっています。
難易度
Professional Machine Learning Engineer 試験の難易度は、Google Cloud 認定資格の中でも特に高いと言えます。
その理由として、この試験では Google Cloud の AI/ML サービスに関する知識だけではなく、機械学習モデルの開発に関する一般的な知識が問われる点、また現在は試験が日本語に対応していないため、機械学習に関する専門的な用語を英語で理解していないと問題文を読み解くことができない点が挙げられます。逆に言えば、普段から業務などでこれらに触れる機会がある方であれば、他の試験よりも楽に合格できるでしょう。
試験対策
以下の勉強方法はあくまで一例であり、最適な方法は、受験者の予備知識や経験によって異なるものとご了承ください。
- Professional Data Engineer 試験 を学習し、合格することで Google Cloud におけるデータ系サービスの理解を深める。
- 公式の 試験ガイド で試験範囲を理解する
- developers.google.com の機械学習コース を読む。
- Vertex AI、BigQuery ML、各種 API 系サービスといった Google Cloud の AI/ML 系サービスを学習する
- 公式の 模擬試験 を受験し感覚を掴む
- 当記事の出題傾向を読み、足りない知識領域をカバーする学習を行う
3番の developers.google.com の機械学習コースは試験範囲と密接に関わる資料ですが、初学者には難しいと思われるかもしれません。その場合、まずは機械学習に関する基礎的な知識を入門書で学ぶことをおすすめします。
そのほか、日本ディープラーニング協会が提供する G 検定 のシラバスなどを参考にするのもよいでしょう。このシラバスのうち「機械学習の具体的手法」「ディープラーニングの概要」「ディープラーニングの手法」については Professional Data Engineer 試験にも出てくる用語が多く見られます。
機械学習の一般的な知識
代表的な機械学習アルゴリズム
機械学習で使用される代表的なアルゴリズムについて、基本的な理解を深めます。
計算式などの詳細を理解する必要はありませんが、どのアルゴリズムをどのような場面で使用すればよいかといった点や、アルゴリズムごとの強み(精度やトレーニング時間、説明可能性など)を理解しておくと良いでしょう。
以下は代表的なアルゴリズムの例です。
用途 | アルゴリズム | アルゴリズムの英語表記 |
---|---|---|
回帰モデル (regression model) | 線形回帰 | linear regression |
決定木ベース(Random Forest、XGBoost) | decision tree | |
分類モデル (classification model) | ロジスティック回帰 | logistic regression |
サポートベクターマシン | Support Vector Machine, SVM | |
決定木ベース(Random Forest、XGBoost) | decision tree | |
ニューラルネットワーク (neural network) 言語処理系 |
RNN | - |
LSTM | - | |
word2vec | - | |
ニューラルネットワーク (neural network) 画像処理系 |
CNN | - |
ResNet | - | |
ニューラルネットワーク (neural network) 時系列データ |
RNN | - |
LSTM | - | |
その他 | レコメンデーション | recommendation |
主成分分析 | principal component analysis, PCA | |
クラスタリング (k-means) | clustering | |
強化学習 | reinforcement learning |
評価指標
機械学習における評価指標について理解を深めます。
評価指標とは、機械学習モデルの性能を評価するための指標であり、モデルの予測精度や予測の偏りなどを測定するために使用します。
回帰問題における評価指標
売上予測などの回帰問題において使用される評価指標を理解します。
決定係数(R2)、二乗平均平方根誤差(RMSE)、平均絶対誤差(MSE) のような代表的な指標の特徴を把握しておきましょう。
分類問題における評価指標
メールのスパム判定や EC サイトでの購入有無の予測のような分類問題に対して使用する評価指標を理解します。
正解率(Accuracy)、適合率(Precision)、再現率(Recall)、F値(F-value) といった基本的な評価指標は頻出です。ローンの審査分析や健康診断での疾病発見の分析など、問題に応じてどの評価指標を利用すべきか把握しておきましょう。
それら評価指標を算出するために必要となる真陽性(True Positive)、偽陽性(False Positive)、真陰性(True Negative)、偽陰性(False Negative) の概念についても理解しておきましょう。
参考:機械学習の評価指標 分類編:適合率や再現率、AUC(ROC曲線、PR曲線)を解説
ヒューリスティック
優れた機械学習モデルの開発には大量のデータが必要であり、データが不十分な場合は ヒューリスティック(Heuristic) を使用した予測に劣る精度しか実現できないこともあります。
機械学習による解決を急がず、まずはヒューリスティックを使用して問題に対処しながらデータを貯めていくことも重要であることを覚えておきましょう。
参考1:ML エンジニアリングのベストプラクティス
参考2:ヒューリスティックな知識
機械学習モデルの開発、運用における課題の解決
データの前処理
データの前処理は機械学習モデルの開発工程における大部分を占めると言われており、当試験でも基本的な前処理の手法を問われます。
欠損値の処理
欠損値のあるデータの場合、そのカラムが重要でなければ削除したり、データのばらつきが小さければ平均値等で補填したりするなど、カラムの重要度に応じた対処方法を押さえておきましょう。
参考:欠損値の対処法
カテゴリカル変数の扱い
トレーニング時のカテゴリカル変数の扱い方を学んでおきましょう。
学習手法によってはカテゴリカルな変数はそのまま使用することができず、変数を数値化する必要があります。特に、ダミー変数用いて数値化を行う処理は One-Hot エンコーディング といいます。
参考:ダミー変数(One-Hotエンコーディング)とは?実装コードを交えて徹底解説
不均衡データの対策
トレーニングに使用するデータに偏りがあると、完成したモデルが目的に沿った働きをしなくなる可能性があります。例えば異常検知のような課題では、異常データが発生する頻度がそもそも少ないと、全て「正常」と判断するようなモデルでも正解率がかなり高くなってしまいます。
この場合、オーバーサンプリング や アンダーサンプリング によってデータの数を調整することがあります。どちらを行うかは収集したデータの量を考慮する必要があります。
また、トレーニング時に少数派のデータに 重み(重要性) をつけることで、少数派データの予測精度を重視してトレーニングを行う方法もあります。不均衡データへの対処方法として、特にこの 3 つを押さえておきましょう。
過学習の対策
機械学習モデルがトレーニング時のデータに過剰に適合してしまう 過学習(Overfitting) について理解を深めます。
過学習の原因としては、一般的に以下のようなものが挙げられます。
- 学習の反復(エポック)が多すぎる
- 使用するパラメータが多すぎてモデルが複雑になっている
- トレーニングデータが少なすぎる
- リーケージ(leakage) が起きている。
それぞれの原因に対する対策をしっかり押さえておきましょう。
参考1:〜AutoMLで実践する〜 ビジネスユーザーのための機械学習入門シリーズ 【第 4 回】AutoML のための ML デザイン
参考2:機械学習で入ってはいけないデータが混入する「リーケージ」とその対策
正則化
過学習の対策としての 正則化(regularization) の手法を理解します。正則化ではモデルの各特徴の重みに対してペナルティを課すことでモデルの過学習を抑制します。L1 正則化 と L2 正則化 をしっかり区別し、特徴に対してどのような処理を行い、どのような効果が期待できるかを押さえておきましょう。
L1 正則化ではあまり重要ではない特徴に対して重みを 0 にする(もしくは 0 に近づける)ことで、L2 正則化では各特徴の重みの大きさに応じて大きなペナルティを課すことで、モデルの汎化性能を高めます。L1 正則化では不要な特徴を排除する次元圧縮の効果があるのに対し、L2 正則化では影響力の強い特徴を弱めつつ、影響力の弱い特徴を活用できるようにします。
また、正則化とは異なる概念ですが、標準化(standardization, Z-score normalization)、正規化(normalization, Min-Max normalization)という英語でも日本語でも混同しやすい単語に注意します。それぞれ何をするものなのか、しっかり整理しておきましょう。
参考1:機械学習の正則化とは?L1正則化とL2正則化やPythonでの実装までカンタン解説!
参考2:【統計・機械学習】標準化(Standardization)と正規化(Normalization)とは?初心者向けにわかりやすく解説
早期停止
早期停止(early stopping) とは、モデルのトレーニングの際に、トレーニングデータに対する過学習が起こる前に学習を終了させる手法です。トレーニングデータとテストデータのそれぞれに対する予測の誤差(訓練誤差、テスト誤差)のうち、後者が大きくなる前に学習を打ち切ります。
参考:早期終了
トレーニングの改善
機械学習モデルの開発ではトレーニングをただ実行するだけではなく、モデルの精度をより高めるための工夫が求められます。
また、使用するデータの量や質により、膨大な計算時間を費やすこともあります。
ハイパーパラメータの調整
ハイパーパラメータの調整(hyperparameter tuning)について理解を深めます。
たとえば、モデルがなかなか収束しない場合に 学習率(learning late) を調整したり、エポック数 を調整して過学習が起こらない程度でトレーニングを終えたり(early stopping)といった調整をすることがあります。
トレーニング時間の改善
試験では、「モデルの精度をできる限り落とさずに」「コストを節約しながら」などの条件つきで、トレーニング時間を改善する方法が問われます。このような制約がある場合、シンプルに CPU、GPU などの計算資源を増やすといった力技で解決することができない場合があります。
こうした制約の下では、たとえば浮動小数点数に bfloat16 形式を使用することで、モデルの精度の低下を抑えつつ、計算量を減らすことでトレーニング時間を短縮する方法があります。
交差検証
機械学習モデルの開発では、データセットをトレーニングデータとテストデータに分け、トレーニングデータで学習を行ったあと、テストデータに対する予測を行うことでモデルを評価します。このとき、評価を一度しか行わないと、テストデータに対する予測精度がたまたま良くなる可能性があります。
交差検証(Cross-Validation) では、トレーニングデータとテストデータを交差させ、それぞれの分割パターンに対する評価を平均することで最終的な評価値とします。なぜ交差検証を行う必要があるのかをしっかり覚えておきましょう。
参考:交差検証(Python実装)を徹底解説!図解・サンプル実装コードあり
モデルのモニタリングと改善
機械学習モデルが完成して実運用が始まった後でも安心できません。モデルの精度を維持したり、予測のパフォーマンスを改善したりなど、さらなる努力が必要となる場合があります。
スキューとドリフト
一度モデルを開発したあとでも、時間の経過にしたがって現実世界の状況が変化し、データの分布が変わってしまうことでモデルの精度は劣化します(予測ドリフト)。また、データの収集方法や前処理の問題で、トレーニング時と実際の予測時のデータの分布がそもそも異なる場合もあります(Training-serving skew)。
これらは適切な方法でモニタリングし、検知した場合はモデルを再トレーニングするなどして改善する必要があります。機械学習モデルの運用において非常に重要な要素のため、しっかり覚えておきましょう。
Google Cloud では Vertex AI Model Monitoring という機能でこれらのモニタリングを行うことができます。
モデルのトレーニングに利用したデータを利用してスキュー検出を有効にすることで、モデルのトレーニング/サービングスキュー(training-serving skew)をモニタリングできます。トレーニングデータを使えない場合や、トレーニングデータではなく本番環境での経時的な変化を捉えたい場合、ドリフト検知(drift detection)を使います。
モデルの軽量化手法
精度が高いモデルが完成しても、その複雑さなどによりメモリ使用量や計算量が膨大になり、リソース不足によるパフォーマンスの低下が懸念されます。特に IoT などのエッジデバイスにモデルを乗せる場合に考慮しなければならない問題です。
以下のような、代表的なモデルの軽量化手法の概要を把握しておきましょう。
- 枝刈り(Pruning)
- 量子化(Quantize)
- 蒸留(Distillation)
Google Cloud の機械学習サービス
Vertex AI
Google Cloud の代表的な AI/ML サービスである Vertex AI は頻出となっています。
Vertex AI は Google Cloud 上で機械学習ワークロードを構築するためのツール群です。どのような場面でどのツールが使用できるかをしっかり理解しておきましょう。
Vertex AI の各ツールの概要については以下のブログをご一読ください。
Vertex AI Training
Vertex AI Training では、Google Cloud のマネージドなインフラストラクチャを使用して機械学習モデルのトレーニングを行うことができます。トレーニングには AutoML と カスタムトレーニング の 2種類があります。それぞれ、どのような場面で使用すれば良いのかを整理しておくことが重要です。
AutoML では、トレーニングに使用するデータを Google Cloud にアップロードするだけで、データの前処理からハイパーパラメータ調整、トレーニングの実行までを全て自動で行うことができます。機械学習に精通したエンジニアがいない場合や、機械学習モデルの開発に時間や人的コストがかけられない場合に非常に有用なツールです。
カスタムトレーニングでは、トレーニングを実行するコードをユーザ側で用意し、Vertex AI の ビルド済みのコンテナ 上で実行します。ビルド済みのコンテナでは、Vertex AI でサポートされている機械学習フレームワークやライブラリしか使用できません。
Vertex AI でサポートされていないフレームワーク、ライブラリを使用したい場合は、それらを含めた カスタムコンテナイメージ をユーザ側で作成して使用できます。
参考1:AutoML 初心者向けガイド
参考2:トレーニング コードの要件
Vertex AI Model Registry
Google Cloud では、機械学習モデルを Vertex AI Model Registry に格納し、モデルを一括で管理することができます。モデルによる予測を行うためには、エンドポイントにモデルをデプロイする(Vertex AI Endpoints)か、Model Registry で管理されているモデルを直接使用します(Vertex AI Batch Prediction)。
また、モデルをエクスポートすることで、オンプレミスや別のクラウドプロバイダを含む任意の環境でモデルをホストすることもできます。
重要な機能としては、Model Registry で管理する機械学習モデルはバージョン管理することができ、モデルに対するどの変更が影響を及ぼしたかをバージョン間で比較することができます。
参考:Vertex AI Model Registry を使用したモデルのバージョニング
Vertex AI Endpoints
Vertex AI Endpoints では、モデルをフルマネージドなコンピューティングノードにデプロイすることで、予測リクエストを同期的に処理(オンライン予測)するエンドポイントを生成することができます。
Endpoints の重要な機能として、1つのエンドポイントに対して複数のモデルをデプロイすることができ、モデルごとにトラフィックの割合を調整することができます。これを利用することで、モデルの新しいバージョンをカナリアリリースすることが可能です。
Vertex AI Batch Prediction
Vertex AI Batch Prediction では、Cloud Storage オブジェクト(CSV)もしくは BigQuery テーブルをデータソースとして、1 回のリクエストで大量のデータに対する予測を行うことができます(バッチ予測)。
モデルを何かしらのエンドポイントにデプロイすることなくサーバーレスで予測を行うことができるため、モデルによる予測をリアルタイムで行う必要がない場合はこちらを使用します。Endpoints とのユースケースの違いはしっかり覚えておきましょう。
参考:バッチ予測と説明の取得
Vertex Explainable AI
Vertex AI では Vertex Explainable AI により、機械学習モデルが予測を行う際に「各特徴が予測にどの程度影響を及ぼしているか」を可視化することができます(特徴アトリビューション)。これにより、モデルの出力を人間が理解できるような形で説明し、モデルが期待通りに動作できているかどうかを検証できます。
特徴アトリビューションには Shapley 値サンプリング方式(Sampled Shapley)や統合勾配方式(Integrated gradients)、XRAI(eXplanation with Ranked Area Integrals)といった手法が利用できます。モデルの種類に応じてどの特徴アトリビューション手法が使用できるかを整理しておきましょう。例えば、ディープラーニングで建築物の部品の異常検知を行う場合で、その画像が陽性になったことを説明するには、どのような方式を使えばよいか、回答できるようにしておきましょう。
Vertex ML Metadata
機械学習ワークフローで生成されたメタデータは Vertex ML Metadata で一元管理することができます。
メタデータを使用することで、アーティファクト(機械学習ワークフローで使用・生成されたデータやモデル)やコンテキスト(アーティファクトと機械学習ワークフロー実行に関する情報の組)をクエリにより追跡・分析することができます。
参考:ML メタデータの分析
BigQuery ML
BigQuery ML を使用することで、BigQuery 上で Google SQL クエリを使用して機械学習モデルを構築、実行することができます。BigQuery を利用するがゆえの利点と制約があるため、Vertex AI との使い分けなど、ユースケースをしっかり把握しておきましょう。
たとえば、Google Cloud で表形式データを使用して機械学習モデルを開発する場合、まず選択肢として挙がるのは Auto ML ですが、AutoML に使用できる データ構造の要件 (行数の制限など)によりそれが達成できない場合や、SQL のみを使用して開発を行いたい場合などは BigQuery ML が候補に挙がります。
また、データが全て BigQuery に格納されているのであれば、BigQuery 上にモデルをインポートして予測を行うことで、コストや予測のパフォーマンス、管理の容易さといったメリットを享受できます。
事前トレーニング済み API サービス
機械学習モデルの開発を支援するサービスだけではなく、Google によって事前にトレーニングされた様々な機械学習モデルを API を通して使用できるサービス群があります。これらのサービスは、機械学習を使用して解決したい課題に特有のデータがない(専用のモデルを開発する必要性が低い)場合や、機械学習によるソリューションを手早く構築したい場合に役立ちます。
以下のような事前トレーニング済み API が提供されています。それぞれサービス名と用途を対応付けて覚えておきましょう。
サービス名 | 説明 |
---|---|
Vision AI | 画像内のオブジェクトを検出する。また画像や PDF 中の文字を抽出する OCR 機能などが利用可能。 |
Video AI | 動画内のオブジェクト、場所、アクションを分析する。 |
Translation AI | 高速かつ動的な機械翻訳を利用できる。 |
Natural Language AI | テキストの感情分析、エンティティ分析 (固有名詞の抽出)などが利用可能。 |
Speech-to-Text | 音声を文字に変換することができる。 |
Text-to-Speech | 文字から人間の自然なイントネーションの音声を生成できる。 |
データ系サービス
データに関する分野の試験ということで、Professional Data Enginner の出題範囲と重複するサービスの理解も問われます。
Dataflow、Dataproc、Dataprep、Pub/Sub、Composer、Data Loss Prevention などのデータ系サービスのユースケースをしっかり把握しておきましょう。
Google Cloud における機械学習モデルの開発
機械学習パイプラインの構築
機械学習モデルの継続的な改善のために、トレーニング、検証、デプロイの各ステップをオーケストレートするパイプラインを構築します。
パイプラインの構築には、TensorFlow Extended (TFX) や Kubeflow Pipelines といったオープンソースフレームワークを使用します。Google Cloud では、VertexAI Pipelines を使用することで TFX や Kubeflow Pipelines SDK を使用したサーバーレスな機械学習パイプラインを利用することができます。
参考1:TensorFlow Extended、Vertex AI Pipelines、Cloud Build を使用した MLOps のアーキテクチャ
参考2:パイプラインの構築
インフラストラクチャの選定
Google Cloud で機械学習パイプラインを構築する際のインフラストラクチャ選定に関する理解を深めます。
GPU、TPUの利用
モデルのトレーニングや予測のパフォーマンス改善のため、GPU や TPU を使用する場合があります。これらのリソースはリージョン/ゾーンによっては使用できないケースがあることを覚えておきましょう。
トレーニングの際にはデータを ミニバッチ というサブセットに分割して処理を行うことがあります。バッチサイズを大きくするケース、小さくするケースのそれぞれを押さえておきましょう。
たとえば、使用する GPU や TPU の数が増やす場合、バッチサイズを大きくすることでリソースを効率的に使用し、より高速な計算を行うことができるようになります。逆に、これらのリソースをあまり確保できない場合は、バッチサイズを小さくして計算負荷を減らすようにします。
参考1:GPU について
参考2:Cloud TPU の概要
参考3:複数の GPU に対する深層学習トレーニングをスケーリングするためのハイパーパラメーターの調整の重要性
preemptible VM を使用したコスト節約
GPU や TPU は高価なリソースであり、パフォーマンスとコストがトレードオフとなります。
トレーニングにチェックポイントを設けることができる場合などは、プリエンプティブル VM(Preemptible VM) を使用してコストを節約することができます。「preemptible」と「checkpoints」はセットで覚えておきましょう。
参考1:プリエンプティブル VM インスタンス
参考2:プリエンプティブル TPU
データエンジニアリング
機械学習に使用するデータは Cloud Storage や BigQuery に格納します。
Professional Data Enginner の出題範囲と重なっていますが、Google Cloud におけるデータの ETL / ELT パイプラインのパターンはしっかり理解しておきましょう。
機械学習ワークロードにおける例としては、Dataflow から事前トレーニング済み API サービスや Vertex AI Endpoints に対して予測リクエストを送信し、結果を BigQuery に書き込むようなパターンがあります。
参考1:ETL とは
参考2:データパイプライン・ELT とは - BigQueryを徹底解説!(基本編)
TensorFlow におけるパイプライン最適化
TensorFlow を使用して機械学習モデルを開発する場合、TFRecord 形式のデータを使用することで、通常ではメモリに収まらない大規模なデータセットであっても効率的にトレーニングすることができます。
また TendorFlow では、tf.data API を使用することで、TFRecord 形式を含む様々な形式のデータを効率的に処理するための複雑なパイプラインを構築することができます。
参考1:人工知能フレームワーク入門(第4回):TensorFlowのデータフォーマット「TFRecord」を使う
参考2:tf.data: TensorFlow 入力パイプラインの構築
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2025 Fellowに選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805