LESSON

実践テクニッククイズ

Step 5 で学んだ深層学習の実践テクニックの知識を確認しましょう。5問中4問以上の正解で合格です。


Q1. Dropout

Dropout について正しい記述はどれですか?

  • A: 学習時と推論時の両方でニューロンをランダムに無効化する
  • B: 学習時のみニューロンをランダムに無効化し、推論時は全ニューロンを使用する
  • C: 推論時のみニューロンを無効化して計算を高速化する
  • D: ニューロンを永久的に削除してモデルを軽量化する

正解: B

解説: Dropout は学習時のみランダムにニューロンを無効化します。推論時は全ニューロンを使用し、学習時にスケーリングされた出力(inverted dropout)をそのまま使います。model.eval() で自動的に切り替わります。


Q2. BatchNorm と LayerNorm

Transformer で LayerNorm が BatchNorm より好まれる理由はどれですか?

  • A: LayerNorm の方が計算が高速だから
  • B: LayerNorm はバッチサイズに依存せず、可変長系列にも適用しやすいから
  • C: LayerNorm の方がパラメータ数が少ないから
  • D: BatchNorm は NLP で使用できないから

正解: B

解説: BatchNorm はバッチ方向に正規化するため、小さいバッチサイズでは統計量が不安定になります。LayerNorm は各サンプル内の特徴量方向に正規化するため、バッチサイズに依存せず、可変長のテキスト系列にも自然に適用できます。


Q3. 学習率スケジューリング

Warmup を使う主な理由はどれですか?

  • A: 学習時間を短縮するため
  • B: 学習初期にランダムな重みが大きく更新されて不安定になるのを防ぐため
  • C: GPU メモリの使用量を削減するため
  • D: 過学習を完全に防止するため

正解: B

解説: 学習開始時のランダムな重みに対して大きな学習率を適用すると、パラメータが不安定に振動する可能性があります。Warmup で最初は小さい学習率から始め、徐々に本来の学習率に引き上げることで、安定した学習を実現します。


Q4. デバッグ

以下のコードの問題点はどれですか?

model.eval()
outputs = model(test_data)
loss = criterion(outputs, test_labels)
loss.backward()
test_accuracy = compute_accuracy(outputs, test_labels)
  • A: model.eval() が不要
  • B: テスト時に loss.backward() を実行しており、不要な勾配計算でメモリを浪費している
  • C: criterion がテスト用でない
  • D: compute_accuracy の引数が間違っている

正解: B

解説: テスト時は勾配計算が不要です。loss.backward() を実行すると不要な勾配が計算され、メモリが浪費されます。テスト時は with torch.no_grad(): で勾配計算を無効化し、loss.backward() を呼ばないようにすべきです。


Q5. Mixed Precision Training

Mixed Precision Training の主な利点はどれですか?

  • A: モデルの精度が必ず向上する
  • B: メモリ使用量の削減と学習速度の向上を、精度をほぼ維持しながら実現できる
  • C: CPU のみで学習できるようになる
  • D: 過学習を完全に防止できる

正解: B

解説: Mixed Precision Training は FP32 と FP16 を適切に混合することで、メモリ使用量を約50%削減し、GPU の Tensor Core を活用して学習速度を1.5-3倍に向上させます。精度はほぼ同等に維持されます。


結果

5問中の正解数を確認してください。

  • 5問正解: 素晴らしい!Step 6 の総合演習に進みましょう。
  • 4問正解: 合格です。間違えた問題を復習してから次へ進みましょう。
  • 3問以下: Step 5 のレッスンを再度読み直してから、もう一度挑戦しましょう。

推定所要時間: 15分