本稿は ディープラーニング (Deep Learning / DL) に関する記事です。
| この記事の要点 |
- ディープラーニングは「多層ニューラルネット」を使う機械学習。画像・音声・言語の非構造化データで圧倒的
- 主要アーキテクチャ: MLP / CNN / RNN-LSTM / Transformer / Diffusion / GAN / VAE
- 2017 年の Transformer 登場以降、自然言語処理だけでなく画像・音声まで席巻し、LLM / 生成 AI の土台に
- 典型ワークフロー: 事前学習 (大量データ) → ファインチューニング (用途別) → デプロイ
- 必須: GPU / TPU、自動微分、勾配降下法、誤差逆伝播
- 主要フレームワーク: PyTorch(主流)/ TensorFlow / JAX
- 失敗の代表: 勾配消失 / 過学習 / 過剰なリソース消費 / 学習データの偏り
|
ディープラーニングとは?
ディープラーニング (深層学習) は、機械学習の一分野で、多層のニューラルネットワークを使ってデータから自動的に特徴量と予測ロジックを学習する手法です。「深層」とは、ネットワークの層が多い (Deep = 何十〜数百層) という意味です。
古典機械学習が人が特徴量を設計するのに対し、ディープラーニングは特徴量設計までモデルが自動で行うのが本質的な違いで、これにより画像・音声・自然言語といった非構造化データで人間を超える精度を達成しました。
ニューラルネットの基本
| 要素 | 役割 |
| ニューロン (ノード) | 入力に重みをかけて合計し、活性化関数を通す最小単位 |
| 層 (Layer) | ニューロンの集まり。入力層 / 中間 (隠れ) 層 / 出力層 |
| 重み (Weight) | 学習で更新されるパラメータ |
| バイアス (Bias) | 各ニューロンに加える定数 |
| 活性化関数 | 非線形性を導入。ReLU / GELU / Sigmoid / Softmax |
| 損失関数 | 予測と正解の差を測る。交差エントロピー / MSE |
| 勾配降下法 | 損失を減らす方向に重みを更新。SGD / Adam / AdamW |
| 誤差逆伝播 (Backpropagation) | 連鎖律で勾配を計算するアルゴリズム |
| エポック / バッチ | 学習の単位(全データ 1 周 / 小分け) |
主要アーキテクチャ
| アーキテクチャ | 得意なデータ | 代表用途 |
| MLP (多層パーセプトロン) | 表形式・低次元 | 分類・回帰(古典タスク) |
| CNN (畳み込みニューラルネット) | 画像・空間データ | 画像認識・物体検出・セグメンテーション |
| RNN / LSTM / GRU | 時系列・短〜中文長の系列 | 翻訳・音声 (Transformer 登場以前の主流) |
| Transformer | 系列・マルチモーダル全般 | LLM・画像 (ViT)・音声 (Whisper)・動画 |
| Encoder-Decoder | 系列 → 系列 | 翻訳・要約 |
| GAN (敵対的生成ネット) | 画像 | 画像生成(旧主流。現在は Diffusion) |
| VAE (変分オートエンコーダ) | 画像・潜在表現 | 表現学習・生成 |
| Diffusion Model | 画像・動画・音声 | Stable Diffusion / DALL·E / Sora の中核 |
| GNN (グラフニューラルネット) | グラフ構造 | 分子・SNS・推薦 |
| Autoencoder | 任意 | 次元削減・異常検知 |
Transformer がもたらしたもの
| 補足: 「Attention is All You Need」(2017) |
Google の論文で提案された Transformer アーキテクチャは、Self-Attention(自己注意機構)を中核に、系列内の任意の位置同士の関係を並列に学習できる構造です。RNN の逐次計算と違って GPU で大規模並列化でき、学習データとパラメータ数を増やすほど性能が伸びる「スケーリング則」が成立する点が革命的でした。
これにより BERT (2018) や GPT (2018〜) が誕生し、近年の LLM・生成 AI のすべてが Transformer の上に建てられています。さらに画像 (ViT)、音声 (Whisper)、動画、マルチモーダル (Gemini / GPT-4o / Claude) と適用範囲も急拡大しました。
|
現代 DL の典型ワークフロー: 事前学習+ファインチューニング
| 段階 | 内容 | 担当 |
| 事前学習 (Pretraining) | 大量の未ラベルデータで汎用表現を学習(自己教師あり学習) | 大企業・研究所(数千〜数万 GPU) |
| ファインチューニング (SFT) | 少量のタスク特化データで微調整 | 個人〜中堅企業でも可能 |
| RLHF / DPO | 人間の好みデータで応答品質を整える | 主要 LLM ベンダー |
| LoRA / QLoRA | 軽量ファインチューニング(一部パラメータのみ更新) | 個人 GPU でも可能に |
| 蒸留 (Distillation) | 大モデルの知識を小モデルへ転送 | 本番デプロイ向け軽量化 |
| 量子化 (Quantization) | INT8 / 4-bit で省 VRAM 化 | 推論時の最適化 |
画像系の代表モデル
| モデル | タスク |
| LeNet / AlexNet / VGG / ResNet / EfficientNet | 画像分類(CNN 系の歴代) |
| Vision Transformer (ViT) | 画像分類(Transformer 系) |
| YOLO / DETR / Faster R-CNN | 物体検出 |
| U-Net / SegFormer / SAM | セグメンテーション |
| Stable Diffusion / DALL·E / Midjourney | 画像生成 (Diffusion ベース) |
| CLIP | 画像とテキストの結合埋め込み(マルチモーダルの基礎) |
自然言語・音声系の代表モデル
| モデル | 用途 |
| Word2Vec / GloVe | 単語埋め込み(古典) |
| seq2seq + Attention | 翻訳(Transformer 以前) |
| BERT | 双方向 Transformer。文の理解タスク |
| GPT 系 | 自己回帰 Transformer。生成タスク |
| T5 / FLAN-T5 | Encoder-Decoder Transformer |
| Llama / Mistral / Qwen / Gemma | OSS LLM |
| Whisper | 音声認識 (OSS) |
| Wav2Vec2 / HuBERT | 音声表現学習 |
必要なハードウェアとフレームワーク
| 用途 | 推奨 |
| 学習 (小規模実験) | NVIDIA RTX 3060 (12GB) 〜 4090 (24GB)、Apple Silicon (MPS)、Google Colab |
| 学習 (中規模) | RTX 4090 / RTX 6000 Ada、AWS p4 / Lambda Labs、複数 GPU |
| 学習 (LLM 大規模) | H100 / B200 多数 + DeepSpeed / FSDP、TPU |
| 推論 | CPU でも可、GPU で高速、ONNX Runtime / vLLM / TensorRT |
| 主流フレームワーク | PyTorch(研究実装の事実上の標準) |
| 本番運用 | TensorFlow / TFLite、ONNX Runtime |
| 研究 (Google 系) | JAX / Flax |
| 事前学習モデル利用 | Hugging Face Transformers |
最小サンプル: PyTorch で MLP
|
import torch, torch.nn as nn, torch.optim as optim
# データ (例)
X = torch.randn(1000, 20)
y = (X.sum(dim=1) > 0).long()
# モデル
model = nn.Sequential(
nn.Linear(20, 64), nn.ReLU(),
nn.Linear(64, 2),
)
loss_fn = nn.CrossEntropyLoss()
opt = optim.AdamW(model.parameters(), lr=1e-3)
# 学習ループ
for epoch in range(20):
logits = model(X)
loss = loss_fn(logits, y)
opt.zero_grad(); loss.backward(); opt.step()
if epoch % 5 == 0:
print(f"epoch {epoch}: loss={loss.item():.4f}")
|
応用分野(2026年現在)
- 大規模言語モデル (LLM): ChatGPT / Claude / Gemini / Copilot
- 画像生成 / 動画生成: Stable Diffusion / Midjourney / Sora / Veo
- 音声認識 / 合成: Whisper / ElevenLabs / Suno
- マルチモーダル: 画像 + テキスト QA (LLaVA / Gemini)
- 科学・医療: AlphaFold (タンパク質構造)、AI 創薬、医療画像診断
- 自動運転: 物体検出、経路計画、模倣学習
- レコメンド: 動画配信・EC・広告
- ゲーム / ロボット: AlphaZero、操作学習
運用上のヒント
| Tips |
- 事前学習モデルから始める: ゼロから学習は非現実的。Hugging Face の事前学習モデル + ファインチューニング
- 小さく試す: フルデータ・大モデルでいきなり走らせない。データ 1% / 小モデルで動作確認
- 混合精度 (bf16 / fp16): 学習速度 2 倍、VRAM 半分
- 学習率スケジューリング: warmup + cosine annealing で安定
- 勾配クリッピング: 学習が発散したら導入
- Early Stopping: 過学習前に止める
- データ拡張: 画像は flip / crop / mixup、テキストは back-translation
- 実験管理: W&B / MLflow / TensorBoard でハイパラとメトリクスを残す
- 再現性: シード固定 + 依存ライブラリのバージョン固定
|
注意点
| よくある落とし穴 |
- 勾配消失 / 勾配爆発: 深い RNN で起きやすい。LSTM / 残差接続 / 正規化で対処
- 過学習: パラメータが多すぎる。Dropout / Weight Decay / Early Stopping
- データ漏洩: 前処理時に train と test を混ぜない
- 不均衡データ: 多数クラスに引きずられる。クラス重み / オーバーサンプル
- GPU 不足: 大型モデルはフル精度で 8 GB GPU には載らない。LoRA / 4-bit / 蒸留
- 学習データの偏り: モデルがそのまま差別的予測を出す
- ベンチマーク汚染: LLM の学習データに評価セットが含まれていることがある
- 環境再現困難: CUDA / cuDNN / Python / 各ライブラリのバージョン整合
- 本番のレイテンシ・コスト: 学習時の精度だけで判断しない
|
学習ロードマップの例
- 機械学習 の基礎を押さえる(特に教師あり / なし、評価指標)
- AI に必要な数学(線形代数 + 微積 + 確率)
- PyTorch の公式チュートリアルで MLP / CNN を実装
- 畳み込み (CNN) と画像分類 → 転移学習
- Transformer の仕組みを学ぶ(Attention is All You Need)
- Hugging Face Transformers で BERT / GPT 系を使う
- LoRA / QLoRA でファインチューニング
- RAG・エージェントを LangChain / LlamaIndex で実装
関連