Deep Learning(An MIT Press book) 6.2.2.1 - 6.2.2.2

Deep Learning(An MIT Press book) の要点メモシリーズ。

今日の範囲は出力ユニット(前半)。回帰に使う線形ユニットと分類に使う sigmoid ユニット。

損失関数を cross-entropy にする場合、分布を渡さないといけない。線形ユニットの場合はガウス分布に、sigmoid ユニットの場合は Bernoulli 分布に通す、という感じです。

Chapter 6 Deep Feedforward Networks

6.2 Gradient-Based Learning

6.2.2 Output Units

  • 任意の output unit は hidden unit としても使うことができる

6.2.2.1 Linear Units for Gaussian Output Distributions

  • 線形ユニット = 非線形性のない affine 変換: \hat{y}=W^{\top}h+b
  • 線形出力層は条件付きガウス分布の平均を与えるのにも使われる: p(y|x)=N(y;\hat{y},I)
  • 共分散の場合は正定値でないといけないが、線形出力層ではその制約を満たすのは難しい
  • 線形ユニットは saturate しないので gradient-based な最適化は困難

6.2.2.2 Sigmoid Units for Bernoulli Output Distributions

  • sigmoid 出力ユニット: \hat{y}=\sigma(z), z=w^{\top}h+b
    • z を logit とよぶ
  • yz の exponentiation と normalization によって Bernoulli 分布 P(y)=\sigma((2y-1)z) を得る
  • 損失関数に cross-entropyを取ると、-log \sigma((2y-1)z)=\zeta((1-2y)z)
    • ζ は softplus 関数(ReLU をソフトにしたようなやつ)
    • model が正しいときだけ saturate する
    • model が間違っているときは |z| を返す
      • 勾配を shrink しないのでよい
  • mean squared error による損失関数は σ が saturate するとき常に saturate してしまうのでよくない
  • 解析的には sigmoid の対数は常に定義され、有限
  • cross-entropy 損失関数は σ に対してではなく z の関数とするのがよい
    • σ はアンダーフローするので