深層学習 第2章 順伝播型ネットワーク

機械学習の本を輪読することになりましたので，ノートを残していきたいと思います．
教材は機械学習プロフェッショナルシリーズ「深層学習」(岡谷貴之)(12刷)です．
至らない点がありましたらご指摘頂ければ幸いです．
本投稿(連載)を一緒に読めば事前知識なしでも読み進められる...といったものを目指しています．

# 本章の内容
第2章の大まかな内容は下記の通りです．
　1. 順伝播型ネットワークの定義
　2. 種々の活性化関数の紹介
　3. 種々の問題に対する出力層の設計と誤差関数
種々の問題を順伝播型ネットワークで定式化し，真値との誤差を表す関数の導出までを行います．この値を縮めるように学習することが，以降の章での課題となるようです．

# 記号の定義
ここでは以降を読むのに最低限必要な記号や定義を列挙します．
詳細な定義や説明は教材または既に様々な方の投稿にあるため，割愛します．

## ネットワークの表現
任意の層$l(1, 2...,L)$への入力を$\boldsymbol{u}^{(l)}$,重みを$\boldsymbol{W}^{(l)}$，バイアスを$\boldsymbol{b}^{(l)}$，出力を$\boldsymbol{z}^{(l)}$，最終的な出力$\boldsymbol{z}^{(L)}$を$\boldsymbol{y}$とする．
層$l+1$への出力は$\boldsymbol{u}^{(l+1)} = \boldsymbol{W}^{(l+1)} \boldsymbol{z}^{(l)} + \boldsymbol{b}^{(l+1)}$，$\boldsymbol{z}^{l+1} = \boldsymbol{f} (\boldsymbol{u}^{(l+1)})$と表される．$f$は活性化関数と呼ばれる．
ネットワークと入力の組を$\boldsymbol{y}(\boldsymbol{x}; \boldsymbol{w})$と表す．

## 活性化関数
ロジスティック関数

```math
f(u) = \frac{1}{1+e^{-u}}
```

正規化線形関数

```math
f(u) = max(u, 0)
```

ソフトマックス関数

```math
f(u_i) = \frac{ exp(u_{k}^{(L)}) }{ \sum_{i=1}^{K}exp(u_{j}^{(L)}) }
```

# 本文詳細

## 2.4 出力層の設計と誤差関数

### 2.4.2 回帰
訓練データに対して，それを近似する関数を求める方法です．下図の例では，赤い点が訓練データ，青い曲線が回帰で求めたデータです．求め方としては，幾つかのパラメータを含む仮定した関数と訓練データの差異の累計を取り，それを最小化するパラメータを見つけます．下図の例では，4次式で表せそうだなどと当たりをつけ，$y = ax^4 + bx^3 + cx^2 + dx + e$として訓練データとの差異の累計を取り，それを最小にするパラメータ$a$から$e$を求めます．
<div align="center"><img src=https://upload.wikimedia.org/wikipedia/commons/9/94/Linear_least_squares2.png width=150px height=180px></div>

### 2.4.3 二値分類
回帰分析と異なる点は，回帰分析では量的データ(eg 金額，身長)を扱うのに対して，二値分類では質的データ(eg 男女，血液型)を分析する点です．このようなデータの分析には，回帰分析の二乗誤差を当て嵌めても意味がありません．

本項の大まかなストーリーとしては，下記の通りです．
　0. このニューラルネットの出力層の活性化関数はロジスティック関数である．
　1. 二値分類を「ある入力$x$を与えた時に出力が1となる確率」即ち$p(d=1|\boldsymbol{x})$とモデル化した．事後確率はロジスティック関数で表せるため都合が良い．
　2. そうすると，事後確率の分布は$ p(d|\boldsymbol{x}) = y(\boldsymbol{x}_n;\boldsymbol{w})^d(1-y(\boldsymbol{x}_n;\boldsymbol{w}))^{1-d} $と 表される．
　3. 出力は$1$になる確率なのだから，全ての訓練データ$\boldsymbol{x}$を用いて，出力の積が最大となるものを定式化しよう．これを最大にする$\boldsymbol{w}$が一番良い精度のパラメータのはずだ．

#### 読みにくい箇所のフォロー
>べき乗の性質を使ったトリックを使うと，事後分布 $ p(d|\boldsymbol{x}; \boldsymbol{w}) $を，$d = 0$, $d = 1$の事後分布を使って，$ p(d|\boldsymbol{x}) = p(d = 1|\boldsymbol{x})^{d} p(d = 0 | \boldsymbol{x})^{1-d}$(2.7)のように表現できます．

「べき乗の性質を使ったトリック」の指すものは，$d$の取り得る値が$0, 1$であることを利用し，$p(d = 1 | \boldsymbol{x})$と$p(d = 0 | \boldsymbol{x})$を繋げ，場合分けを1つの式(2.7)で表している点です．(2.7)を見ると，$d = 0$であれば$p(d = 0| \boldsymbol{x})$が残ることが分かると思います．なおベルヌーイ分布と呼ばれる形です．

>事後確率$p(d = 1 | \boldsymbol{x})$はuのロジスティック関数に一致します．

簡単な式変形ですが一応．
見やすさのため $ a = p(\boldsymbol{x}, d = 0)$, $ b = p(\boldsymbol{x}, d = 1) $ とおきます．
$ u \equiv \log \frac {b}{a}  \Leftrightarrow e^{-u} = \frac\{a}{b} $であり，条件付き確率は，$ p(d = 1 | \boldsymbol{x}) = \frac{b}{a + b} = \frac{1}{1 + e^\{-u}}$ です．

### 2.4.4 多クラス分類

事後確率でモデル化，最尤推定を用いる点は二値分類と大差ないので特に補足する点はないと思います．
多クラス分類では出力ユニットが複数後あるため，それらの和が常に1になるよう，活性化関数にソフトマックス関数を使を用いることで，確率として扱う点がみそですね．

#### 読みにくい箇所のフォロー

>このような冗長性があるので，学習でネットワークの重みを決めようとするとき，出力層に入る結合の重み$\boldsymbol{W}^{(L)}$が1つに定まらなくなってしまいます．このままでは学習の進み具合が著しく遅くなるなどの弊害があるので，...(略)

(定数が入ることによって，入力ベクトルが1つに定まらなくなるようなことが書かれていますが，それがどう計算に影響を与えるかは分かりませんでした．分かり次第追記します．)


# 補足事項
## 事後確率
パラメータ$\theta$が与えられたとき$y$となる確率を $p(\theta|x)$ と書き，$y$の事後確率と呼びます．

```math
p(\theta|x) = \frac{p(\theta, x)}{p(x)}
```

## 尤度
パラメータ$θ$を決めたときのデータ$x$の事後確率$p(x∣θ)$を$\theta$の尤度と呼びます．
ある現象がパラメータ$\theta$により決まると確率分布に従うと仮定して，得られたデータ$x$をもとに確率を計算します．

次は第3章「[確率的勾配降下法](http://qiita.com/y_ujitoko/items/dce196506fbc43069ab5)」です．友人(u_ujitoko)が易しく丁寧に解説してくれるはずです．