Deep Learning(An MIT Press book) 6.2.2.3

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

今日の範囲は出力ユニット(その2)。多値分類に使う multinoulli 分布(softmax 関数)の話。

PRML で出てくる「Bernoulli 分布の多値バージョン」に multinoulli 分布という名前がついていた(本書の造語?)のが衝撃でした。

Chapter 6 Deep Feedforward Networks

6.2 Gradient-Based Learning

6.2.2 Output Units

6.2.2.3 Softmax Units for Multinoulli Output Distributions

  • n個の離散値変数の分布を表現するときは softmax 関数(softmax(z)_i={exp(z_i)}{\sum_j exp(z_j)})を使う
  • 2変数に対する Bernoulli 分布をn変数に一般化して multinoulli 分布を得る
  • log softmax 関数(z_i - log \sum_j exp(z_j)
    • 第1項は saturate しない
    • 第2項は max_j z_j を近似したものになっている
      • 最も大きい z_j にペナルティがかかる
      • 正解(第1項)と一致している場合は互いに打ち消しあうのでペナルティがかからない
  • 正則化していない場合は softmax 関数は頻度カウントによる確率と同じ
  • 対数尤度以外の目的関数は softmax 関数にはうまく働かない
    • 特に squared error
  • softmax 関数は入力値同士の差が極端なときに saturate する
  • softmax 関数の入力に同じスカラー c を足しても結果は同じになる
    • c として max_i z_i をとることで numerically stable になる
  • softmax の入力としてn個のパラメータをとる方法とn-1個のパラメータをとる方法がある
    • n個の確率値を足すと1になる制約があるのでn-1個で十分
    • n個でもn-1個でも大きな差はないので実用上実装のシンプルなn個を使う
  • softmax って実は softargmax だよね