ディープラーニング基礎ミニ教科書
ディープラーニングの全体像を NN → 最適化 → CNN → RNN/Transformer → 正則化 の 5 章で体系的に学べるミニ教科書。E 資格・G 検定対策にも、PyTorch を学ぶ前の概念整理にも。
ニューラルネットの仕組み
ニューラルネットワーク(NN) は、生物の脳神経系を模した計算モデル。入力 → 線形変換 + 非線形活性化 → 出力 という基本ユニットを多層に重ねたものが ディープラーニング。
1 つのニューロン
- : 入力
- : 重み(学習対象)
- : バイアス(学習対象)
- : 活性化関数(ReLU・Sigmoid・Tanh など)
多層パーセプトロン(MLP)
ニューロンを 層状に並べ、層と層を全結合(fully connected)で繋いだもの。入力層 → 隠れ層 × N → 出力層 の構造。
1 層だけでは線形分類器と同じ能力しかない(パーセプトロンの限界)。非線形活性化を挟んで多層化する ことで、論理回路のような 表現力指数増加 が起きる。XOR 問題のような『線形では解けない問題』が解けるようになる。
活性化関数
- ReLU(): 深層でも勾配が流れる定番
- Sigmoid: 出力 0〜1。分類の最終層に
- Tanh: 出力 -1〜1。中央性能良好
- Softmax: 多クラス分類の最終層(出力が確率分布に)
- GELU / Swish: Transformer の主流
誤差逆伝播法と最適化
学習 = 損失を減らすようにパラメータ(重み・バイアス)を更新する こと。これを支えるのが 誤差逆伝播法(backpropagation) と 勾配降下法。
学習の流れ
- 順伝播: 入力 → 各層を通って予測を出力
- 損失計算: 予測と正解の差(MSE・交差エントロピー等)
- 逆伝播: 連鎖律で各重みに対する勾配 を計算
- 更新: で重みを更新
損失関数
- 回帰: MSE(平均二乗誤差)・MAE(平均絶対誤差)・Huber 損失
- 2 値分類: Binary Cross-Entropy
- 多クラス分類: Categorical Cross-Entropy
- ランキング: Triplet Loss・Contrastive Loss
最適化アルゴリズム
- SGD: 確率的勾配降下法。シンプル、収束遅い
- Momentum: 慣性で振動を抑制
- Adagrad / RMSprop: 学習率を勾配の大きさで自動調整
- Adam: Momentum + RMSprop。現代の標準
- AdamW: Adam に正しい weight decay。Transformer 学習で標準
学習率と Warmup
学習率(learning rate)は 最も重要なハイパーパラメータ。大きすぎると発散、小さすぎると収束しない。Cosine Annealing(滑らかに減少)+ Warmup(最初は小さく → 徐々に上げる)が現代の標準。
Learning Rate Range Test(LR Finder): 学習率を徐々に大きくして損失をプロット。損失が最も急速に下がる手前が最適値。fast.ai 流の経験則。
CNN ─ 画像処理の標準
CNN(Convolutional Neural Network) は画像処理に特化した NN。畳み込み層 + プーリング層 + 全結合層 の組み合わせで、画像から階層的に特徴を抽出する。
畳み込み層(Convolution)
カーネル(フィルタ) を画像にスライドさせて、局所領域の重み付き和 を計算。
主要パラメータ: - カーネルサイズ: 3×3 が標準 - ストライド: スライド幅。2 以上で出力サイズが小さくなる - パディング: 端に 0 を詰めてサイズ調整 - チャネル数: 出力の特徴マップ数
プーリング層(Pooling)
- Max Pooling: 領域内の最大値を取る。位置不変性を獲得
- Average Pooling: 領域内の平均
- Global Average Pooling(GAP): 各チャネル全体の平均。最終層の全結合代わりに使うと過学習を抑制
代表的アーキテクチャの変遷
- LeNet(1998): 手書き数字認識の元祖
- AlexNet(2012): ImageNet 革命。GPU 使用 + ReLU + Dropout
- VGG(2014): 3×3 conv を深く積む
- ResNet(2015): スキップ接続で 100 層超を実現
- EfficientNet(2019): 幅・深さ・解像度を均衡良くスケール
- Vision Transformer(2020): CNN を捨て Transformer のみで画像を
層を深くすると勾配消失で逆に悪化していたのを、ショートカット接続(入力をそのまま足す)で解決。100 層 → 1000 層 が現実的になり、画像認識精度が飛躍的に向上。最新の Transformer や Diffusion でも標準で使われる発想。
import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self, num_classes=10):
super().__init__()
self.features = nn.Sequential(
nn.Conv2d(3, 32, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.Conv2d(32, 64, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.AdaptiveAvgPool2d(1),
)
self.classifier = nn.Linear(64, num_classes)
def forward(self, x):
x = self.features(x).flatten(1)
return self.classifier(x)RNN・LSTM・Transformer ─ 系列データ
テキスト・音声・時系列など 順序のあるデータ を扱うアーキテクチャ。RNN → LSTM → Transformer と進化してきた。
RNN(Recurrent Neural Network)
前のステップの出力を次の入力に渡す 構造で、可変長の系列に対応。
問題: 長期依存で 勾配消失/爆発。長い文章の文脈を保持できない。
LSTM / GRU ─ ゲート機構
- LSTM(Long Short-Term Memory): 入力ゲート・忘却ゲート・出力ゲートで情報を選択的に保持
- GRU(Gated Recurrent Unit): LSTM を簡略化、計算が軽い
- 用途: 機械翻訳・音声認識・時系列予測
Transformer ─ 現代の主役
2017 年論文「Attention is All You Need」で発表。RNN を完全に捨て、Self-Attention のみで系列を処理。
- 並列計算可能 → 大規模学習に向く
- 長距離依存 を直接捉える
- LLM(GPT・BERT・Claude) の基盤
- 派生: ViT(画像)・Whisper(音声)・AlphaFold2(タンパク質)
Self-Attention は『入力の各トークンが他のどのトークンに注目すべきか』を学習する仕組み。文章の中の代名詞が指す先・関連語の関係性を、固定的な構造ではなく データから動的に学ぶ のがポイント。
正則化と過学習対策
ディープラーニングは 過学習(overfitting)しやすい ─ 表現力が高すぎて訓練データを丸暗記してしまう。正則化 でこれを抑制。
1. Weight Decay(L2 正則化)
損失関数に 重みの二乗和ペナルティ を追加して、重みが大きくなりすぎないようにする。。AdamW では正しい重み減衰として組み込まれている。
2. Dropout
学習時に 確率 p で各ニューロンの出力を 0 に する。
効果: - 共適応(co-adaptation)を防ぐ - 暗黙のアンサンブル効果
標準値: p = 0.5(全結合層)・p = 0.1〜0.2(畳み込み層)
推論時: dropout を解除し、出力を p 倍にスケーリング(または学習時に 1/(1-p) 倍する Inverted Dropout)
3. Batch Normalization
ミニバッチごとに 平均 0・分散 1 に標準化し、学習可能なスケール ・シフト を加える。
効果: - 学習が高速・安定 - 大きな学習率を使える - 軽い正則化効果
現代の代替: Layer Normalization(Transformer 標準)・Group Norm(小バッチ向け)
4. データ拡張(Data Augmentation)
- 画像: 回転・反転・クロップ・色調変更・Cutout・Mixup
- テキスト: 同義語置換・Back Translation
- 音声: SpecAugment・ピッチシフト
- 新発想: GAN や Diffusion で合成データを生成
5. Early Stopping
検証損失が改善しなくなった時点で学習を停止。Keras なら EarlyStopping コールバック、PyTorch Lightning でも標準機能。
6. 転移学習・ファインチューニング
事前学習済みモデル(ImageNet の ResNet、大規模テキストの BERT)を使い、自分のタスクに合わせて少し再学習 する。少データでも高精度 を実現する強力な手法。Hugging Face Hub が事前学習モデルの共有プラットフォーム。
画像分類の標準パターン: ImageNet 学習済み EfficientNet(or ResNet) + AdamW + Cosine LR + データ拡張(RandAugment) + Mixup + Early Stopping。これだけで 多くのデータセットで 90% 超 が出せる。
LLM ファインチューニング: LoRA(Low-Rank Adaptation)で省メモリに重みを少しだけ更新する手法が標準。
次のステップ
- [E 資格 教科書](/certs/e-shikaku/textbook) ─ より体系的な深層学習
- [G 検定 教科書](/certs/g-test/textbook) ─ 概念ベースで網羅
- [プログラミング入門](/programming) ─ PyTorch / scikit-learn で実装
- [時系列分析](/time-series) ─ 系列データの伝統的アプローチ
- [ブログ: Transformer の数学](/blog/transformer-math)