深層学習

ドロップアウト

訓練時にユニットを確率的に無効化し、共適応を崩す正則化手法です。推論時は訓練時のスケールを合わせる実装を忘れません。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

ドロップアウトは、訓練時の各フォワードパスでユニットをランダムに無効化する手法です。特定のユニット同士がいつも組になって答えを出す共適応を崩し、欠けた状態でも予測できる表現を学習させます。

毎回メンバーをくじ引きで休ませたチームが、誰か一人に依存せず仕事を進めるようになる仕掛けです。

なぜ必要か

大きなネットワークは表現力が高い一方、訓練データへの合わせ込みが起きます。ドロップアウトでは、ユニットとその接続を確率的に外すため、訓練のたびに異なる「薄い」ネットワークになります。原論文の解釈では、これは指数個のサブネットワークを共有パラメータで訓練し、それらの予測を平均することの近似です。実際に全ネットワークを別々に持つ必要がない点が実用上の要所です。

場面起きていることねらい
訓練マスクで一部のユニットを落とす共適応を崩し、複数の薄いネットワークを学習する
推論マスクを使わず一つのネットワークを動かす学習したアンサンブルの平均を近似する

仕組み

入力を x\mathbf{x}、ドロップ率を pp、各要素を残すマスクを m\mathbf{m} とします。mim_i は確率 1−p1-p で1、確率 pp で0になるベルヌーイ変数です。訓練時の出力は、現在主流の inverted dropout なら次です。

x~=m⊙x1−p\widetilde{\mathbf{x}} = \frac{\mathbf{m} \odot \mathbf{x}}{1-p}

⊙\odot は要素ごとの積です。分母で割るのは、入力の期待値を訓練前と揃えるためです。したがって推論時はマスクを掛けず、層はそのまま入力を返します。古い説明で見る「推論時に重みを 1−p1-p 倍する」方式は、訓練側で割らない実装に対応します。両方を同時に適用すると出力を二重に縮めるので、どちらの流儀かを確認します。

試験でどう問われるか

問われ方正解に寄る条件引っかけ
訓練時の挙動ユニットをランダムに落とし、共適応を抑える推論時にも毎回ランダムに落とす
アンサンブル解釈指数個の薄いネットワークの平均を単一ネットワークで近似するサブネットワークを個別に保存して平均する
スケール調整inverted dropout は訓練時に 1/(1−p)1/(1-p) 倍する訓練時と推論時の両方で縮小する
モード切替評価時はマスクを無効化するeval 忘れで推論結果が毎回変わる

実装で確かめる

NumPyで、訓練時だけマスクとスケールを適用する最小例です。p は落とす確率なので、残す確率を別に掛けない点に注意します。

import numpy as np

rng = np.random.default_rng(0)
x = np.ones(100_000)
p = 0.2
mask = rng.random(x.shape) >= p
train_y = mask * x / (1 - p)       # inverted dropout
eval_y = x                         # 評価時は恒等写像
print(round(train_y.mean(), 3), eval_y.mean())

取り違えやすいもの

対象ドロップアウトとの切り分け
通常の重み減衰重みの大きさへ直接ペナルティを掛ける。ユニットを落とす操作ではない
推論時のランダム化通常の評価ではマスクを止める。意図的に複数回サンプルする使い方とは別
バッチ正規化などの正規化層学習・評価で統計や挙動が変わる層。ドロップアウトのマスク処理と同じものではない
inverted dropout手法の別物ではなく、訓練時にスケールを済ませる実装流儀

正規化層と近接して置く場合は、各層の統計をどのモードで計算するかが変わります。ドロップアウトの前後で分布が揺れるため、既存モデルへ機械的に挿入せず、配置と評価モードを実装仕様として確認します。

想起チェック

ドロップアウトは何をランダムに無効化するか

訓練時のユニットです。対応する接続も実質的に外れ、フォワードパスごとに異なる薄いネットワークになります。

inverted dropout で推論時に何をするか

訓練時に 1/(1−p)1/(1-p) 倍して期待値を合わせるため、推論時はマスクも追加スケールも使わず恒等写像にします。

推論結果が毎回変わるとき最初に確認することは何か

評価モードへ切り替わっているかを確認します。推論時にも訓練用のマスクが動いている可能性があります。

出典