📚 AWS 機械学習試験対策 まとめノート(AIF → MLA 対応)

1. SageMaker 組み込みアルゴリズム(用途別早見表)

SageMaker(AWS のマネージド機械学習プラットフォーム)には、用途別の事前実装アルゴリズムが用意されています。問題でよく問われる「この用途ならコレ」を整理します。

用途 最適アルゴリズム 理由・特徴
高次元かつ疎(スパース:ほとんどがゼロ)な特徴量での分類・回帰(例:ユーザーID×商品ID) Factorization Machines(FM:因子分解機) ワンホットエンコーディング(カテゴリ値を 0/1 ベクトルに展開する手法)後の大規模疎行列を効率的に扱える
多系列の時系列予測(数百店舗・SKU など) DeepAR 系列横断で共通モデルを学習。related_time_series(関連時系列)や categorical features(カテゴリ特徴量)でイベントフラグやSKU IDを渡せる
ストリーミング/時系列の教師なし異常検知 Random Cut Forest(RCF:ランダムカット森) リアルタイムで異常スコアを返す
画像のピクセル単位領域抽出(建物の輪郭など) Semantic Segmentation(セマンティックセグメンテーション:意味的領域分割) 各ピクセルにクラスを割り当てる
カテゴリ変数が多い表データの分類 CatBoost(JumpStart 経由) 欠損値・高カーディナリティ(カテゴリ値の種類が多い)に強い
高速なテキスト分類・単語埋め込み BlazingText supervised モードで __label__クラス名 形式の入力ファイルを使う
IPアドレスとユーザーの組み合わせ異常検知 IP Insights 不正アクセス検知向け
二値分類・回帰の定番 XGBoost 勾配ブースティング系の代表

2. ハイパーパラメータ調整:SageMaker AMT(Automatic Model Tuning:自動モデル調整)

AMT はモデルの最適なハイパーパラメータ(学習率や木の深さなど、人間が事前に決めるパラメータ)を自動探索する機能です。

戦略の選び分け

  • Bayesian Optimization(ベイズ最適化):過去の試行結果を使って次の試行点を賢く選ぶ。試行回数を抑えたいときに最適。Warm Start(過去ジョブを Parent として再利用)も可能。並列度は抑えめにするのが定石。
  • Hyperband(ハイパーバンド):性能の悪い試行を早期停止(Early Stop)してリソースを節約。学習が長時間で、序盤のロス(損失:予測と正解のズレ)から優劣が判別しやすいニューラルネットワーク学習 に特に有効。並列度を高くできる。
  • Random / Grid:単純探索。並列度を高くできる。

設定要素

  • ObjectiveMetric(目的指標)の最大化/最小化を指定
  • ParameterRanges で連続値・整数・カテゴリの範囲を定義
  • 複数指標の同時最適化は非対応 → 学習スクリプト内で 複合スコア(例:F1スコアと推論レイテンシの加重平均) を計算して出力する

3. 大規模言語モデル(LLM:Large Language Model)の効率的微調整

GPU メモリが限られるなかで巨大モデルを学習するための技術群です。

PEFT(Parameter-Efficient Fine-Tuning:パラメータ効率的微調整)

モデル全体ではなく、小さな追加モジュールだけを学習する手法の総称。

  • LoRA(Low-Rank Adaptation:低ランク適応):元の重み行列に低ランク(小さなサイズ)の追加行列だけを学習。フル微調整より圧倒的に省メモリ。
  • QLoRA:4bit 量子化(重みを4ビット整数に圧縮)+ LoRA。VRAM(GPU メモリ)制約が厳しいときの最適解。Hugging Face DLC(Deep Learning Container:深層学習用コンテナ)で bitsandbytespeft ライブラリを併用するのが SageMaker での王道。
  • Adapter Tuning:各層に小さなアダプタ層を挿入して学習。
  • Prompt Tuning:学習可能な「ソフトプロンプト」(埋め込みベクトルとしてのプロンプト)のみを学習。

「まず何から試すべきか」の順序

  1. プロンプトエンジニアリング(指示文の工夫):追加データがわずかで、フル微調整のコストをかけたくないとき
  2. RAG(Retrieval-Augmented Generation:検索拡張生成):自社データを根拠に回答させたいとき
  3. PEFT(LoRA / QLoRA):少量データで挙動を変えたいとき
  4. フル微調整 + 継続事前学習(Continued Pre-training):本格的なドメイン適応が必要なとき

4. 分散学習:規模に応じた使い分け

状況 使うべき機能
データが大きい(数十GB〜TB)、モデルは1GPUに収まる SMDDP(SageMaker Distributed Data Parallel:SageMaker 分散データ並列)
モデル自体が1GPUに収まらない SMP(SageMaker Distributed Model Parallel:SageMaker 分散モデル並列) でレイヤをノード間に分割
データもモデルも巨大(8ノード×8GPU等) SMP + SMDDP の組み合わせ
ZeRO Stage 3(メモリ最適化技術)や Flash Attention を使いたい SMDDP の Sharded Data Parallel(分割データ並列)+ Hugging Face DLC
数百〜数千GPUの長時間ジョブ、自動復旧したい SageMaker HyperPod

5. Amazon Bedrock と RAG(検索拡張生成)

Bedrock は基盤モデル(Claude、Llama など複数モデル)をAPI経由で使える AWS のマネージドサービスです。

主要機能

  • Knowledge Bases:社内文書をベクトル化して登録し、RAG を構築。ベクトルストアとして OpenSearch Serverless / Aurora PostgreSQL(pgvector)/ MongoDB Atlas / Pinecone / Redis Enterprise Cloud が利用可能。
  • Guardrails:ハルシネーション(生成AIが事実と異なる内容をもっともらしく出す現象)対策。ソース外回答の禁止などのポリシーを設定。
  • Model Evaluation:自動評価(ROUGE などの組み込みメトリクス)と人手評価(自社ワーカー or AWSマネージドワーカー)を併用可能。
  • Provisioned Throughput:Custom Model(カスタムモデル)を SLO(Service Level Objective:サービス品質目標)で使うために MU(Model Unit:モデルユニット)を購入して専用キャパシティを確保。
  • Batch Inference:CSV を投入し非同期処理。月1000万件レベルのレイテンシ許容ケースで Claude Haiku(軽量モデル) との組み合わせがコスト最適。
  • Custom Model Import:SageMaker JumpStart で微調整したアーティファクトを Bedrock に取り込み可能。

RAG のベクトル類似度

  • 典型的な距離メトリクスは Cosine Similarity(コサイン類似度:ベクトルの角度ベースの近さ)
  • OpenSearch を独自運用する場合は k-NN プラグイン(k-Nearest Neighbors:k近傍法)を使い、KNN フィールドで検索

チャンク戦略(PDFを意味のある単位に分割する方法)

  • セマンティックチャンク:意味境界を保って分割
  • 固定サイズチャンク:例えば 300トークン + 20% オーバーラップ

6. 評価指標の選び方

これは試験で最も問われる領域です。

業務要件 最適な指標
偽陰性(実際は正例なのに負例と予測)を避けたい(病気の見逃し、不正の見逃し) Recall(再現率)
偽陽性(実際は負例なのに正例と予測)を避けたい Precision(適合率)
二値分類で正例/負例の順序付けの良し悪し AUC(Area Under the Curve:ROC曲線下面積)
不均衡データ(例:不正取引0.5%)の総合評価 PR-AUC(Precision-Recall AUC) や F1スコア
多クラス分類で少数クラスを取りこぼしたくない Macro F1(クラスごとのF1を単純平均、少数クラスも公平に反映)
時系列予測でビジネスサイドにも分かりやすい MAPE(Mean Absolute Percentage Error:平均絶対パーセント誤差)
DeepAR の不確実性も含めた評価 wQL(Weighted Quantile Loss:重み付き分位点損失) を複数分位点で算出

⚠️ 不正検知の典型ワナ:AUC が 0.95 でも本番で誤検出が多いケース → PR-AUC を追加 し、scale_pos_weight(正例重み比)と判別しきい値を AMT でチューニング。

7. データ前処理・不均衡対策・データリーケージ

クラス不均衡(正例が極端に少ない)への対処

  • scale_pos_weight を「負例/正例比」に設定(XGBoost)
  • sample_weight を行ごとに付与
  • SMOTE(Synthetic Minority Over-sampling Technique:合成少数クラス過サンプリング) で少数クラスを合成
  • 評価には F1 / PR-AUC / aucpr を使う

目的変数が右に偏った分布の回帰

  • log変換 で学習 → 予測後に expm1(=exp(x)-1) で逆変換

時系列のデータリーケージ(未来情報の混入)防止

  • 学習・検証・テスト分割を 時系列順 に行う
  • 特徴量は 過去から未来の方向のみ で計算する

バイアス検出(SageMaker Clarify)

  • 学習前の偏り検知に pre-training bias metrics
    • CI(Class Imbalance:クラス不均衡指標)
    • DPL(Difference in Proportions of Labels:ラベル比率差)
  • 学習後の解釈には SHAP値(SHapley Additive exPlanations:各特徴量の予測寄与度をゲーム理論で算出)をグローバル集約。

8. 過学習(オーバーフィッティング)対策

手法 説明
L2正則化(Weight Decay:重み減衰)/ Ridge回帰 重みの二乗和を損失に加えてスケールを抑制。多重共線性(特徴量同士の相関が強すぎる問題)緩和にも有効
Dropout 学習中にランダムにニューロンを無効化
Early Stopping(早期停止) 検証指標が改善しなくなったら学習終了。XGBoost なら early_stopping_rounds=20(20ラウンド連続で改善なしなら停止)
Data Augmentation(データ拡張) 画像ならランダムクロップ・反転で学習データを水増し
転移学習(Transfer Learning) 事前学習済みモデルを少量データで微調整。JumpStart で簡単に実現可能

9. アンサンブル学習(複数モデルを組み合わせて精度向上)

手法 性質
Bagging(バギング:Bootstrap Aggregating) 並列学習、分散低減。ブートストラップサンプリング(重複ありランダム抽出)で多様性確保。代表例:Random Forest
Boosting(ブースティング) 直列学習、バイアス低減。弱学習器を逐次学習し誤差を補正。代表例:XGBoost / LightGBM / CatBoost
Stacking(スタッキング) メタ学習、異種統合。複数モデルの予測を別の上位モデル(メタモデル)でさらに学習

勾配ブースティング3兄弟の違い

  • XGBoost:最も広く使われる定番。SageMaker Built-in でも提供
  • LightGBM:ヒストグラムベースで高速
  • CatBoost:順序回帰でカテゴリ列を扱いやすい

AutoGluon Tabular の鉄板運用

  • presets="best_quality" で多層スタッキングし、CV(Cross-Validation:交差検証)を増やして頑健性を高める。

10. SageMaker 周辺機能(MLOps関連)

  • SageMaker Experiments:実験ごとのメトリクス・コードバージョン・ハイパーパラメータをトラッキングして比較
  • SageMaker Pipelines:ML ワークフローの構築。TrainingStep(学習)→ ProcessingStep(前処理・評価)→ ConditionStep(条件分岐)→ RegisterModelStep(モデル登録)の流れが定番。同一入力・同一構成のステップはキャッシュで再実行スキップ可能
  • SageMaker Debugger:学習中の異常を自動検知。組み込みルール:exploding_tensor(勾配爆発)、VanishingGradient(勾配消失)、LowGPUUtilization(GPU低使用率)など。アクション設定でジョブ自動停止可能
  • SageMaker Profiler:フレームワーク・システム両方のメトリクスを可視化。GPU使用率が低いボトルネック特定に有効
  • SageMaker Clarify:バイアス検出・モデル説明性(SHAP値)
  • SageMaker Model Registry:モデルバージョン管理
  • SageMaker Model Cards:モデルの目的・データ・評価結果・倫理的考慮を文書化(ガバナンス強化)
  • SageMaker Autopilot:AutoML(自動機械学習)。アルゴリズム選択・特徴量エンジニアリング・チューニングを自動化。時系列予測では target 列名・timestamp 列名・予測ホライズン(予測期間)・頻度を指定
  • SageMaker JumpStart:事前学習済み基盤モデル(Llama 等)をワンクリックでデプロイ・微調整。業界別ソリューションテンプレートも提供
  • SageMaker Data Wrangler:データ前処理 GUI。Insights Report 機能で相関やヒストグラムを最少工数で確認
  • SageMaker Neo:エッジデバイス(Jetson Nano 等)向けにコンパイル最適化
  • SageMaker FMEval:(Foundation Model Evaluations:基盤モデル評価)JumpStart や独自モデルを複数指標で自動評価

11. コンテナとスクリプトの実行方式

  • Script Mode(スクリプトモード):AWS 提供の Deep Learning Container を使いつつ、自分のスクリプトをエントリポイントとして指定。requirements.txt で依存追加可能
  • BYOC(Bring Your Own Container:独自コンテナ持ち込み):独自 Dockerfile を ECR(Elastic Container Registry)にプッシュ。最大の柔軟性。要件:ENTRYPOINT で /opt/ml/code 配下の学習スクリプトを呼び出せること
  • Hugging Face Estimator:Hugging Face DLC を簡単に使える専用Estimator。Endpoint デプロイ時は環境変数 HF_MODEL_IDHF_TASK を指定するだけ

Docker イメージ最適化

  • マルチステージビルドで成果物のみを最終イメージにコピー
  • 必要な依存パッケージのみインストールしレイヤキャッシュを意識

12. 半教師あり/自己教師あり学習(少量ラベル + 大量未ラベル)

  • Pseudo-labeling(疑似ラベリング):モデルの予測を疑似ラベルとして未ラベルデータに付与
  • Self-supervised pre-training(自己教師あり事前学習):ラベル不要のタスクで表現学習 → 本タスクで fine-tune

13. その他覚えておきたいAWSサービス

  • Amazon Comprehend:マネージド NLP(自然言語処理)。カスタム分類でラベル付きデータをアップロードするだけで本番品質モデル取得
  • Amazon Textract:マネージド OCR(光学文字認識:画像からテキスト抽出)

14. その他細かいテクニック

  • チェックポイント保存:checkpoint_s3_uri を指定し torch.save で保存 → 中断後再開可能
  • クラスタリングの最適K決定:Elbow法(肘法) を SSE(Sum of Squared Errors:誤差平方和)または Inertia で評価/Silhouette Score(シルエットスコア) を最大化
  • CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)のフィルタ:低層は色やエッジなどの局所特徴、高層は形状や物体パーツなどの高次特徴を学習
  • トークナイズ高速化:Hugging Face tokenizers の Fast(Rust実装) トークナイザを使う
  • シーケンス長統一:99パーセンタイル長で打ち切り+ミニバッチ単位の動的パディング(dynamic padding)で GPU メモリ効率最大化
  • VPC内安全推論:Endpoint を VPC モード(仮想プライベートクラウド内通信)で作成
  • 強化学習(Reinforcement Learning)フレームワーク:SageMaker は Ray RLlib と Coach をサポート

🎯 試験対策のキーポイント整理

・「疎な高次元 → Factorization Machines」「多系列時系列 → DeepAR」「異常検知 → Random Cut Forest」 はパターン暗記
・「GPUメモリ足りない LLM 微調整 → LoRA / QLoRA」 は鉄板
・「ハルシネーション抑制 → RAG(Knowledge Bases)+ Guardrails」 はセット
・AMT の戦略選択:少試行で良解 → Bayesian、長時間NN学習 → Hyperband
・不均衡データの評価:AUC だけでなく PR-AUC と F1 を組み合わせる
・時系列の前処理:データリーケージ防止のため時系列順分割