AI 実装検定 教科書
**AI 実装検定** は、一般社団法人 **エッジ AI 協会** が主催する、AI を **実装する力** を測る検定です。**S 級(専門家)/ A 級(中級)/ B 級(入門)** の 3 段階があり、Python ・ NumPy ・ PyTorch / TensorFlow といった **実装ライブラリの基本 + 主要モデルのコード理解** が中心。G 検定(概念中心)と E 資格(高度数学 + 実装)の **中間** に位置する実務寄りの試験です。本教科書は A 級を中心に、S 級も視野に入れて 10 章で体系的に解説します。
目次
- 第 1 章 · AI 実装検定 ─ 試験の全体像S/A/B の 3 段階の位置付け、出題範囲、対策プランを整理します。
- 第 2 章 · Python と NumPy の実装基礎AI 実装で頻出する Python 文法と NumPy の挙動を整理します。
- 第 3 章 · 機械学習の基礎と scikit-learn教師あり / 教師なし / 強化学習の概念と、scikit-learn の Estimator API を整理します。
- 第 4 章 · モデル評価とハイパーパラメータ評価指標 ・ 交差検証 ・ ハイパーパラメータ探索を整理します。
- 第 5 章 · ニューラルネットワークの基礎順伝播 ・ 誤差逆伝播 ・ 活性化関数 ・ 損失関数を整理します。
- 第 6 章 · PyTorch の実装パターンTensor / Module / Dataset / DataLoader / 学習ループを整理します。
- 第 7 章 · TensorFlow / Keras の実装パターンKeras Sequential / Functional API / カスタム学習ループを整理します。
- 第 8 章 · 主要モデル ─ CNN / RNN / Transformer画像 ・ 系列 ・ 自然言語の 3 大アーキテクチャを実装目線で整理します。
- 第 9 章 · デプロイ ・ エッジ AI ・ MLOps学習済みモデルの本番運用、エッジデバイスでの推論、軽量化技術を整理します。
- 第 10 章 · 受験対策の総まとめ範囲別チェックリストと、試験当日のコツをまとめます。
第 1 章 · AI 実装検定 ─ 試験の全体像
AI 実装検定の位置付け
AI 実装検定 は、AI のコードを 読める / 書ける / 設計できる 力を、3 段階(S/A/B)で測ります。G 検定が概念・倫理を、E 資格が高度な数学と実装を問うのに対し、本資格は 「実務で AI のコードを書く現場」を直接的に問う のが特徴です。
- 主催: 一般社団法人 エッジ AI 協会
- 等級: S(専門家) / A(中級) / B(入門) の 3 段階
- 形式: オンライン IBT(自宅 / 会社受験可)
- 問題数 / 時間: A 級 60 問 / 60 分(参考)
- 回答方式: 4 択選択式 + コード読解
- 合格基準: 級ごとに異なる(参考: A 級 70%)
他検定との位置付け
- G 検定(JDLA): AI 概念 ・ 歴史 ・ 倫理(コード問題ほぼなし)
- 生成 AI パスポート(GUGA): 生成 AI の活用リテラシー
- AI 実装検定 B 級: AI 実装の入門。コードの基礎が読める
- AI 実装検定 A 級: 中級。NumPy / PyTorch のコードを書ける / 設計できる
- AI 実装検定 S 級: 専門家。設計判断や論文レベル
- E 資格(JDLA): 高度な数学 + DL 実装。認定講座が必要
学習プランと前提知識
前提知識(A 級基準)
- Python の文法(リスト ・ 関数 ・ クラス)が読める
- 高校数学レベル(行列の積、偏微分の概念)を理解している
- Jupyter / Colab を起動して動かせる
- NumPy のブロードキャストが何となく分かる
100 〜 150 時間プラン(A 級向け)
- Week 1 〜 2: Python + NumPy の手を動かす演習(本サイトの[Python データ分析 教科書](/certs/python-data/textbook)第 2 〜 3 章)
- Week 3 〜 4: 機械学習の基礎(scikit-learn) + 評価指標 → 第 3 〜 4 章
- Week 5 〜 7: ニューラルネット + PyTorch / TensorFlow の基礎 → 第 5 〜 7 章
- Week 8: 主要モデル(CNN / RNN / Transformer)→ 第 8 章
- Week 9: デプロイ + エッジ + MLOps の入口 → 第 9 章
- Week 10: 演習 + 模擬試験 → 第 10 章
本検定はコード読解問題が頻出。動かさずに読める力 をつけるには、PyTorch / TensorFlow チュートリアルのコードを 写経(コピーせずタイプ) が最強。30 分 × 30 日で『どこに何が書いてあるか分かる』感覚が身につきます。
第 2 章 · Python と NumPy の実装基礎
Python の実装で押さえるべき文法
- 内包表記 / ジェネレータ式: メモリ効率と可読性
- ラムダ + map / filter / sorted: 関数型風の処理
- デコレータ: `@torch.no_grad()` などライブラリ使用で頻出
- コンテキストマネージャ(`with`): ファイル / モデル評価 / GPU 操作
- 型ヒント: `def f(x: torch.Tensor) -> torch.Tensor:`
- dataclass: パラメータ束ね
from typing import List
from dataclasses import dataclass
@dataclass
class Config:
lr: float = 1e-3
batch_size: int = 32
epochs: int = 10
def batch_loader(data: List[int], batch_size: int):
"""ジェネレータでミニバッチを返す"""
for i in range(0, len(data), batch_size):
yield data[i : i + batch_size]
cfg = Config(lr=1e-4)
print(cfg)
for b in batch_loader(list(range(10)), 3):
print(b)NumPy の挙動と落とし穴
- shape と axis: ニューラルネットでは `(batch, channel, height, width)` の規約が標準
- ブロードキャスト: shape の末尾から比較、サイズ 1 は伸ばす
- view と copy: スライスは元の view、`.copy()` で独立
- float32 vs float64: GPU は float32 が標準。混在は性能と精度に影響
- ufunc(`np.exp / log / sin`): 要素単位の高速演算
(1) 形状を 末尾から比較、(2) 各次元のサイズが 同じ or 1 or 一方が存在しない なら適合、(3) サイズ 1 の次元は 複製 されたかのように振る舞う。これが分かるだけで NumPy のエラーの 8 割が消えます。
第 3 章 · 機械学習の基礎と scikit-learn
教師あり / 教師なし / 強化学習
- 教師あり: 入力と正解ラベルのペアから学習。回帰 / 分類
- 教師なし: ラベルなしデータからパターン発見。クラスタリング / 次元削減
- 強化学習: 環境との相互作用で報酬最大化。AlphaGo / 自動運転
- 自己教師あり学習(SSL): データ自身から擬似ラベル。LLM の事前学習はこれ
scikit-learn の共通 API
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
pipe = Pipeline([
('scaler', StandardScaler()),
('clf', RandomForestClassifier(n_estimators=100, random_state=0)),
])
scores = cross_val_score(pipe, X, y, cv=5)
print('CV mean:', scores.mean())代表的なモデルとその使い分け
- 線形 / ロジスティック回帰: 解釈性 ◎、ベースライン
- 決定木: 解釈性 ◎、過学習しやすい
- ランダムフォレスト: バギング、OOB スコア利用
- 勾配ブースティング(XGBoost / LightGBM): テーブルデータの王者
- SVM: マージン最大化、カーネル法
- k-NN: 単純、スケーリング必須
- k-means / DBSCAN: クラスタリング
- PCA: 次元削減、可視化
第 4 章 · モデル評価とハイパーパラメータ
評価指標 ─ 分類と回帰
分類
- Accuracy / Precision / Recall / F1
- ROC-AUC: 閾値非依存、不均衡やや弱
- PR-AUC: 不均衡に強い
- Log Loss: 予測確率の質
- Confusion Matrix: TP/FP/TN/FN
回帰
- MSE / RMSE: 大きな誤差を罰する
- MAE: 外れ値に頑健
- : 説明分散の割合
- MAPE: 相対誤差(0 近傍で不安定)
ハイパーパラメータ探索
- Grid Search: 全組合せ網羅。次元の呪い
- Random Search: 同予算で Grid より発見率高
- ベイズ最適化: ガウス過程で次の試行を選ぶ。Optuna が標準
- Hyperband / BOHB: 早期終了 + ベイズ
- ASHA(非同期的成功半減): 並列性高い大規模探索
import optuna
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
def objective(trial):
n = trial.suggest_int('n_estimators', 50, 500)
md = trial.suggest_int('max_depth', 3, 20)
clf = RandomForestClassifier(n_estimators=n, max_depth=md, random_state=0)
return cross_val_score(clf, X, y, cv=5).mean()
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=20)
print(study.best_params)第 5 章 · ニューラルネットワークの基礎
順伝播と誤差逆伝播
ニューラルネットの 1 層は 線形変換 → 活性化関数 の組み合わせ。 という形が基本ブロックです。学習は 誤差逆伝播(backpropagation) で各パラメータの勾配を計算し、勾配降下で更新します。
- 順伝播(Forward): 入力から出力を計算
- 損失関数(Loss): 出力と正解の差を測る
- 逆伝播(Backward): 連鎖律で各パラメータの勾配を計算
- 更新(Optimizer): SGD / Adam で重みを更新
活性化関数と損失関数
活性化関数
- Sigmoid: 。出力 (0, 1)。勾配消失しやすい
- tanh: 。Sigmoid より中心化
- ReLU: 。深層 NN の標準。死に ReLU 問題
- Leaky ReLU / GELU / Swish: ReLU の改良版
- Softmax: 多クラス分類の出力
損失関数
- MSE: 回帰
- Cross Entropy: 分類
- Binary Cross Entropy: 2 値分類
- Hinge Loss: SVM
- Triplet Loss: 距離学習
最適化手法と勾配の問題
- SGD: 確率的勾配降下。学習率の調整が必要
- Momentum: 過去の勾配方向を加味
- Adam: 適応的学習率 + Momentum。標準
- AdamW: Adam + 適切な weight decay
- RMSprop: 勾配の二乗平均で正規化
深いネットでは Sigmoid を重ねると 勾配が層を遡るたびに小さくなる(勾配消失)、または異常に大きくなる(勾配爆発)現象が起きやすい。ReLU + 適切な初期化(He / Xavier)+ Batch Norm が標準的な対策です。
第 6 章 · PyTorch の実装パターン
Tensor と autograd
import torch
# Tensor の作成
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]], requires_grad=True)
print(x.shape, x.dtype, x.device)
# 演算は autograd により計算グラフが構築される
y = (x ** 2).sum()
y.backward()
print(x.grad) # dy/dx = 2x = [[2,4],[6,8]]
# GPU 利用
if torch.cuda.is_available():
x_gpu = x.to('cuda')- `requires_grad=True`: 勾配計算の対象
- `backward()`: 自動微分で勾配計算
- `detach()`: 計算グラフから切り離す
- `with torch.no_grad():`: 推論時に勾配計算を停止(メモリ節約)
Module と学習ループ
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
# モデル
class MLP(nn.Module):
def __init__(self, in_dim=10, hidden=32, out_dim=2):
super().__init__()
self.fc1 = nn.Linear(in_dim, hidden)
self.fc2 = nn.Linear(hidden, out_dim)
def forward(self, x):
h = torch.relu(self.fc1(x))
return self.fc2(h)
# ダミーデータ
X = torch.randn(1000, 10)
y = torch.randint(0, 2, (1000,))
loader = DataLoader(TensorDataset(X, y), batch_size=32, shuffle=True)
model = MLP()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)
for epoch in range(5):
for xb, yb in loader:
optimizer.zero_grad() # 勾配リセット
out = model(xb) # 順伝播
loss = criterion(out, yb) # 損失
loss.backward() # 逆伝播
optimizer.step() # 更新
print(f'epoch {epoch} loss {loss.item():.4f}')`zero_grad → forward → loss → backward → step` の 5 ステップ が PyTorch の核。これさえ覚えていれば、どんな複雑なモデルでも構造は同じです。試験でもこの 5 行のいずれかが空欄になるパターンが頻出。
Dataset / DataLoader / Transform
- Dataset: `__len__` と `__getitem__` を実装
- DataLoader: バッチ化 + シャッフル + 並列化
- Transform: 画像 ・ テキストの前処理パイプライン
- `num_workers`: 並列ロードでデータ I/O 高速化
- `pin_memory=True`: GPU 転送高速化
第 7 章 · TensorFlow / Keras の実装パターン
Sequential API と Functional API
import tensorflow as tf
from tensorflow.keras import layers, models
# Sequential API
model_seq = models.Sequential([
layers.Input(shape=(10,)),
layers.Dense(32, activation='relu'),
layers.Dense(2, activation='softmax'),
])
# Functional API(分岐 / 結合に強い)
inputs = layers.Input(shape=(10,))
h = layers.Dense(32, activation='relu')(inputs)
outputs = layers.Dense(2, activation='softmax')(h)
model_fn = models.Model(inputs=inputs, outputs=outputs)
model_fn.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'],
)
model_fn.summary()- `compile`: optimizer / loss / metrics を一括指定
- `fit`: 学習を 1 メソッドで実行
- `evaluate`: テストデータで評価
- `predict`: 予測
- Callback: EarlyStopping / ReduceLROnPlateau / ModelCheckpoint
TensorFlow と PyTorch の使い分け
- PyTorch: 研究 ・ Kaggle ・ 論文実装で主流。動的グラフで書きやすい
- TensorFlow / Keras: 本番デプロイ ・ TF-Lite(モバイル)・ TFX が強み
- JAX: 関数型 + XLA で高速。Google 内部で増加
- 最近の傾向: PyTorch 2.0 + torch.compile で性能ギャップ縮小、PyTorch がデファクト化
第 8 章 · 主要モデル ─ CNN / RNN / Transformer
CNN(画像認識)
- 畳み込み層: 局所特徴を抽出。重みの共有
- プーリング層: 空間方向にダウンサンプル
- 全結合層: 最終的な分類
- Batch Normalization: 学習安定化
- Dropout: 過学習抑制
- 代表モデル: LeNet / AlexNet / VGG / ResNet / EfficientNet / Vision Transformer(ViT)
RNN / LSTM / Transformer
- RNN: 時系列の順序を扱う。勾配消失に弱い
- LSTM / GRU: ゲート機構で長期依存を扱う
- Seq2Seq: 機械翻訳の古典構造(エンコーダ + デコーダ)
- Transformer: Attention 機構。並列化可能、現代の LLM の基盤
- BERT / GPT / T5 / Llama: Transformer の派生
RNN は 順次処理 で並列化が困難、長距離依存も覚えにくい。Transformer は Self-Attention で すべての位置を一度に見渡せる ため、(1) GPU で並列学習でき大規模化が容易、(2) 長距離依存を捉えやすい。これが LLM 時代を切り拓いた本質です。
強化学習と生成モデル
- Q-learning / DQN: 行動価値関数を学習
- Policy Gradient / PPO: 方策を直接最適化
- Actor-Critic: 価値と方策を併用
- GAN: 生成器 + 識別器の敵対学習
- VAE: 潜在空間からのサンプリング
- 拡散モデル: ノイズ除去で生成。画像生成の主流
第 9 章 · デプロイ ・ エッジ AI ・ MLOps
エッジ AI の特徴
エッジ AI はクラウドではなく デバイス側 で AI 推論を行う設計。スマホ ・ 監視カメラ ・ 自動車 ・ 工場などで導入が進み、プライバシー / 低遅延 / オフライン動作 / 通信コスト削減 が動機です。
- TensorFlow Lite: モバイル / マイコン向け軽量 TF
- ONNX: フレームワーク間相互運用
- TensorRT: NVIDIA GPU 向け最適化
- OpenVINO: Intel CPU / GPU 向け
- Core ML: Apple デバイス向け
- TPU / NPU: 専用ハードウェア
モデル軽量化技術
- 量子化(Quantization): float32 → int8 / int4 で 4 〜 8 倍軽量化
- プルーニング(Pruning): 不要な重みを削除
- 蒸留(Distillation): 大モデル(教師) → 小モデル(生徒)
- MobileNet / EfficientNet-Lite: モバイル向けの設計済モデル
- LoRA / QLoRA: LLM の効率的微調整(低ランク適応)
int8 量子化で メモリ 4 倍 / 速度 2 〜 3 倍 が典型。精度低下は通常 1% 未満で、適切なキャリブレーションを行えば実務で問題になりません。LLM では GGUF / AWQ / GPTQ といった量子化形式が普及しており、家庭の PC でも 7B 〜 70B モデルが動かせるようになっています。
MLOps の基礎
- 実験管理: MLflow / W&B / Neptune
- モデルレジストリ: バージョン管理 + ステージング
- 特徴量ストア: 訓練 / 推論で同じ特徴量を再利用
- CI/CD for ML: テスト + 自動デプロイ
- 監視: 予測分布 ・ 遅延 ・ ドリフト検出
- A/B テスト / シャドーデプロイ: 安全な新モデル投入
第 10 章 · 受験対策の総まとめ
範囲別チェックリスト
- 第 2 章: NumPy のブロードキャスト 3 規則・shape の規約
- 第 3 章: 教師あり/なし/強化学習の違い、scikit-learn の Estimator API
- 第 4 章: 評価指標(分類/回帰)、Optuna による探索
- 第 5 章: ReLU / Adam / 勾配消失 / Batch Norm
- 第 6 章: PyTorch の `zero_grad → forward → loss → backward → step` 5 行
- 第 7 章: Keras Sequential / Functional API / Callback
- 第 8 章: CNN / RNN / Transformer の特徴と代表モデル
- 第 9 章: 量子化・プルーニング・蒸留 / TFLite・ONNX
- MLOps: 実験管理・モデルレジストリ・ドリフト検出
試験当日のコツ
- 1 問 1 分 のペース感覚。コード読解問題は『まず関数名を見る』で 6 割解ける
- 極端な選択肢に警戒: 『常に』『必ず』は誤答が多い
- A 級は B 級を含む: B 級向けの基礎事項も出る
- 前日 30 分の復習: PyTorch / Keras の代表シグネチャを実機で確認
合格後のステップアップ
AI 実装検定 A 級 → E 資格(JDLA、より深い数学 + 実装)が王道。または 生成 AI パスポート → G 検定 で AI の事業活用や倫理側を補強する道もあります。本サイトの[/textbook](/textbook)で各検定の教科書にアクセスできます。
AI 実装検定 A 級は AI エンジニア / 機械学習エンジニア / データサイエンティスト の中堅以下のシグナルとして機能します。S 級 + 実務経験 だと AI 専門職としての強い認定になります。