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 変換:
- 線形出力層は条件付きガウス分布の平均を与えるのにも使われる:
- 共分散の場合は正定値でないといけないが、線形出力層ではその制約を満たすのは難しい
- 線形ユニットは saturate しないので gradient-based な最適化は困難
6.2.2.2 Sigmoid Units for Bernoulli Output Distributions
- sigmoid 出力ユニット:
- z を logit とよぶ
- yz の exponentiation と normalization によって Bernoulli 分布 を得る
- 損失関数に cross-entropyを取ると、
- ζ は softplus 関数(ReLU をソフトにしたようなやつ)
- model が正しいときだけ saturate する
- model が間違っているときは |z| を返す
- 勾配を shrink しないのでよい
- mean squared error による損失関数は σ が saturate するとき常に saturate してしまうのでよくない
- 解析的には sigmoid の対数は常に定義され、有限
- cross-entropy 損失関数は σ に対してではなく z の関数とするのがよい
- σ はアンダーフローするので