2016年10月9日

深層学習 (機械学習プロフェッショナルシリーズ) の式展開メモ

  この投稿では,MLP 本あるいは,MLPS 本 (Machine Learning Professional Selease 本) の内の一冊である,深層学習 (岡谷 貴之 著) の式展開のメモを (基本的には,書籍中で,式・話し共に十分丁寧な展開がされているので,一部私が戸惑った部分のみ) 残します. この本では,ニューラルネット周辺の数学的な背景について,網羅的に説明されています. 本記事投稿時点では,ニューラルネットについて網羅的に扱っている書籍は殆ど存在しておらず, また,論理展開が丁寧であることから, 深層学習 (Deep Learning) を用いた機械学習の入門書としては,もっとも優れた本の内の一冊だと思います.

深層学習 (機械学習プロフェッショナルシリーズ)
著者: 岡谷 貴之
出版社: 講談社
発売日: 2015/04/08
メディア: 単行本
ページ数: 176 ページ





  3.5 過適合の緩和
  3.5.2 重みの制約
  p. 30
\begin{align*} E_t({\bf w})\equiv\frac{1}{N_t}\sum_{n\in D_t}E_n({\bf w})+\frac{\lambda}{2}\|{\bf w}\|^2 \end{align*}   を微分して, \begin{align*} \nabla E_t({\bf w})\equiv\frac{1}{N_t}\sum_{n\in D_t}\nabla E_n({\bf w})+\lambda{\bf w} \end{align*}   となる部分について考える.


  p 次元ノルムの定義を確認すると [1], \begin{align*} \|{\bf x}\|_{p}\equiv\left(\sum^N_{i=1}|x_i|^p\right)^{\frac{1}{p}}=\sqrt[p]{|x_1|^p+|x_2|^p+\cdot\cdot\cdot+|x_N|^p} \end{align*} である.ここでは,ユークリッドノルムなので,$p=2$ の場合を考えれば良い.
  また,$\nabla$ は,このとき $w$ の $\grad$ の意味で使われているため, \begin{align*} \nabla_{w}\equiv\left(\frac{\partial}{\partial w_1},\frac{\partial}{\partial w_2},\cdot\cdot\cdot,\frac{\partial}{\partial w_{Nt}}\right) \end{align*} である.第 1 項の微分は自明のため,第 2 項についてのみ考えると, \begin{align*} \frac{\lambda}{2}\|{\bf w}\|^2&=\frac{\lambda}{2}\left(\sqrt{|w_1|^2+|w_2|^2+\cdot\cdot\cdot+|w_{Nt}|^2}\right)^2\\ &=\frac{\lambda}{2}\left(|w_1|^2+|w_2|^2+\cdot\cdot\cdot+|w_{Nt}|^2\right)^2 \end{align*} ここで,先ほどの $\nabla$ の定義を思い出して, \begin{align*} \nabla\frac{\lambda}{2}\|{\bf w}\|^2&=\frac{\lambda}{2}\left[2w_1,2w_2,\cdot\cdot\cdot2w_{Nt}\right]\\ &=\lambda\left[w_1,w_2,\cdot\cdot\cdot w_{Nt}\right]\\ &=\lambda{\bf w} \end{align*} となります.
  特筆するほどではないかもしれませんが,絶対値ノルムの扱いに慣れていないと不安になります.(また,今回は $f(x)=|x|^2=x^2$ であり,絶対値を考慮する必要がないため,省略していますが,本来は絶対値の微分であることにも,注意が必要です)





  3.6.5 モメンタム
  p. 38 11 行目 「$\mu=0.9$ とセットしたとすると,これは学習係数を 10 倍したことに相当します」について考える.


  実際のところ,2 項関漸化式を解けば 10 倍という値が出てくることは容易に推測できますが,一応計算してみます.

  2 項関漸化式 \begin{align*} \Delta{\bf w}^{(t)}=\mu\Delta{\bf w}^{(t-1)}-\epsilon\nabla E_t \tag{1} \end{align*} を解く.ただし,簡便のため,$\color{red}\epsilon\nabla E_t$ を定数として扱う. $(1)$ 式を, \begin{align*} &\Delta{\bf w}^{(t+1)}-\alpha=\mu\left(\Delta{\bf w}^{(t)}\ \ \ -\alpha\right)\\ \Leftrightarrow \ \ &\Delta{\bf w}^{(t)}\ \ \ -\alpha=\mu\left(\Delta{\bf w}^{(t-1)}-\alpha\right) \tag{2} \end{align*} の形に変形すれば,数列 $\left(\Delta{\bf w}^{(t+1)}-\alpha\right)$ を,公比 $\mu$ の等比数列として扱える.
  $(2)$ 式より, \begin{align*} &\Delta{\bf w}^{(t)}-\alpha=\mu\left(\Delta{\bf w}^{(t-1)}-\alpha\right)\\ \Leftrightarrow \ \ &\Delta{\bf w}^{(t)}-\alpha=\mu\Delta{\bf w}^{(t-1)}-\mu\alpha\\ \Leftrightarrow \ \ &\Delta{\bf w}^{(t)}\ \ \ \ \ \ \ =\mu\Delta{\bf w}^{(t-1)}+\alpha\left(1-\mu\right)\tag{2'} \end{align*} となる.$(1)$ 式と $(2')$ 式を比較すると, \begin{align*} -\epsilon\nabla E_t&=\alpha(1-\mu)\\ \Leftrightarrow \ \ \ \ \ \ \ \ \ \ \ \alpha&=\frac{-\epsilon\nabla E_t}{1-\mu} \tag{3} \end{align*} となる.   また,$(2)$ より, \begin{align*} \Delta{\bf w}^{(t)}-\alpha&=\mu\left(\Delta{\bf w}^{(t-1)}-\alpha\right)\\ \Leftrightarrow \ \ \frac{\Delta{\bf w}^{(t)}-\alpha}{\Delta{\bf w}^{(t-1)}-\alpha}&=\mu \end{align*} より, \begin{align*} \frac{\Delta{\bf w}^{(t)}-\alpha}{\Delta{\bf w}^{(t-1)}-\alpha} \frac{\Delta{\bf w}^{(t-1)}-\alpha}{\Delta{\bf w}^{(t-2)}-\alpha}\cdot\cdot\cdot \frac{\Delta{\bf w}^{(2)}-\alpha}{\Delta{\bf w}^{(1)}-\alpha} &=\mu^{(t-2+1)}\\ \Leftrightarrow \ \ \frac{\Delta{\bf w}^{(t)}-\alpha}{\Delta{\bf w}^{(1)}-\alpha} &=\mu^{(t-1)}\\ \Leftrightarrow \ \ \ \ \Delta{\bf w}^{(t)}-\alpha &=\mu^{(t-1)}\left(\Delta{\bf w}^{(1)}-\alpha\right)\\ \Leftrightarrow \ \ \ \ \ \ \ \ \ \ \ \Delta{\bf w}^{(t)} &=\mu^{(t-1)}\left(\Delta{\bf w}^{(1)}-\alpha\right)+\alpha \end{align*} となる.$(3)$ 式を代入して, \begin{align*} \Delta{\bf w}^{(t)} &=\mu^{(t-1)}\left(\Delta{\bf w}^{(1)}-\alpha\right)+\alpha\\ \Leftrightarrow \ \ \Delta{\bf w}^{(t)} &=\mu^{(t-1)}\left(\Delta{\bf w}^{(1)}-\frac{-\epsilon\nabla E_t}{1-\mu}\right)+\frac{-\epsilon\nabla E_t}{1-\mu} \end{align*} となる.ここで,$\mu<1$ の場合, \begin{align*} \lim_{t \to \infty}\left(\Delta{\bf w}^{(t)}\right) &=\lim_{t \to \infty}\left\{\mu^{(t-1)}\left(\Delta{\bf w}^{(1)}-\frac{-\epsilon\nabla E_t}{1-\mu}\right)+\frac{-\epsilon\nabla E_t}{1-\mu}\right\}\\ &=\frac{-\epsilon\nabla E_t}{1-\mu}\\ &=\frac{1}{1-\mu}(-\epsilon\nabla E_t) \end{align*} となり,$\frac{1}{1-\mu}(-\epsilon\nabla E_t)$ に収束する.これは,$\mu=0.9$ のときに学習係数を 10 倍にしたことに相当する.





  3.6.6 重みの初期化
  p. 39

  $w_{ji}$ を初期化する際に,どのような分散 $\sigma^2$ を与えると,ネットワークへの入力 $u_j$ の分散 $\sigma_u^2$ が適切な分散となるかを知りたい. このため,$\sigma$ と $\sigma_u$ を結ぶ関係式を導出する. すなわち,$u_j=\sum_{i}w_{ji}x_i$ で $j$ と $w_{ji}$ を固定したときに, $x_i$ を $N$ 回ランダムに選び直したときの $u_j$ の標準偏差 $\sigma$ が, \begin{align*} \sigma=\sigma_u/M^{1/2} \end{align*} となることを示す.(ただし,p. 38 より,$w$ の分布は,$w_{ji}\sim N(\mu,\sigma^2)=N(0,\sigma^2)$ より,平均 $\mu$ は $\mu=0$ である)

  ※ 確率変数 ${\bf x}$ が,平均 $\mu$ で分散 $\sigma^2$ の多変量正規分布に従う場合,${\bf x}\sim N(\mu,\sigma^2)$ などと表現する.[2]


  一般的に,$x_i$ の $i$ の変化に対する分散 $V_i(x_i)$ は,各変数を,

$x_i$
: $N 個のサンプル=\{x_i|i=1...N\}$
$\mu$
: $x$ の平均 ($\mu=\frac{1}{N}\sum_{i=1}^N x_i$)
$\sigma$
: 変数 $x_{i}$ の $i$ 方向の変化に対する標準偏差
$\sigma^2$
: 変数 $x_{i}$ の $i$ 方向の変化に対する分散
$f_i(x_i)$
: 変数 $x_{i}$ の $i$ 方向の変化に対する分布関数

と置いたとき, \begin{align*} V_i(x_i)&\equiv\frac{1}{N}\sum_{i=1}^N (x_i-\mu)^2=\sigma^2\\ V_i(x_i)&\equiv\sum_{i=1}^N (x_i-\mu)^2f_i(x_i)=\sigma^2 \end{align*} と定義される.
  今回は,各種変数を,
${\bf X}$
: $N$ 枚の画像サンプル (平均 $\color{red}0$,分散 $\color{red}V_n(x_{in})$ を $\color{red}1$ に標準化されていると仮定する)
  ${\bf X}=\{{\bf x_{n}}|n=1...N\}$,
  ${\bf x}=\{x_{i}|i=1...M\}$,
$M$
  対象とするユニットの入力側結合の数
$\mu$
: $x$ の平均 ($\mu=\frac{1}{N}\sum_{i=1}^N x_i$)
$\sigma_u$
: 変数 $u_{jk}$ の $k$ 方向の変化に対する標準偏差
$\sigma_u^2$
: 変数 $u_{jk}$ の $k$ 方向の変化に対する分散
$\sigma$
: 変数 $w_{ji}$ の変化に対する標準偏差
$\sigma^2$
: 変数 $w_{ji}$ の変化に対する分散
$f_n(x_{in})$
: 変数 $x_{in}$ の $n$ 方向の変化に対する確率密度関数
$f_n(u_{in})$
: 変数 $u_{in}$ の $n$ 方向の変化に対する確率密度関数

と定義しておく.
  これから計算するのは,入力 ${\bf X}=\{{\bf x}_n|n=1,\cdot\cdot\cdot,N\}$ が $n$ 方向にランダムに変化したときの分散である. このとき,変数 $x_i$ および $u_j$ の変化を,変数 $n$ の変化によって $x_{in}$,$u_{jn}$ と表す.このとき,$u_{jn}$ の $n$ 方向の変化による分散を $V_n(u_{jn})$ とする.

(I): 分散 $V_n(u_{jn})$ を求める.
  変数 $x_i$ が $n$ 方向に変化するとき,変数 $u_j$ \begin{align*} u_j=\sum_{i}^M w_{ji}x_i \end{align*} は,$n$ 方向の変化を加えた変数 $u_{jn}$ として, \begin{align*} u_{jn}=\sum_{i}^M w_{ji}x_{in} \end{align*} と表記される.このとき,$u_{in}$ の $n$ の変化に対する分散 $V_n(u_{in})$ は,$\mu=0$ と 確率密度関数 $f(u_{jn})=f(x_{in})=\frac{1}{N}$,および,先に入力 $x_{in}$ の平均を $0$ と仮定したことに注意して, \begin{align*} \sigma_u^2=V_n(u_{in}) &=\sum_{n=1}^N \left(u_{in}-\mu)^2f(u_{jn}\right)\\ &=\sum_{n=1}^N \left(u_{in}-0)^2f(u_{jn}\right)\\ &=\sum_{n=1}^N \left(\sum_{i=1}^M w_{ji}x_{in}\right)^2f(u_{jn})\\ &=\sum_{i=1}^M w_{ji}^2\sum_{n=1}^N \left(x_{in}-0\right)^2f_n(u_{jn})\\ &=\sum_{i=1}^M w_{ji}^2\sum_{n=1}^N \left(x_{in}-0\right)^2f_n(x_{in})\\ &=\sum_{i=1}^M w_{ji}^2V_n(x_{in}) \tag{1} \end{align*} となる.

(II): 分散 $V(w_{ji})$ を求める.
  確率密度関数 $f(w_{ji})$ は,離散一様分布 [3] なので,$f(w_{ji})=\frac{1}{M}$ となることに注意すると,分散 $V(w_{ji})$ は, \begin{align*} \sigma^2=V(w_{ji}) &=\sum_{i=1}^M \left(w_{ji}-\mu)^2f(w_{ji}\right)\\ &=\sum_{i=1}^N \left(w_{ji}-0)^2f(w_{ji}\right)\\ &=\frac{1}{M}\sum_{i=1}^Mw_{ji}^2 \tag{2} \end{align*} となる.

(I) の $(1)$ 式,(II) の $(2)$ 式より, \begin{align*} \sigma^2 =\frac{\sigma_u^2}{M V_n(x_{in})} \tag{3} \end{align*} となる.ここで,入力 $x_{in}$ の画像は,平均を $0$,分散 $V_n(x_{in})$ を $1$ に標準化していると仮定しているので,$(3)$ 式は, \begin{align*} \sigma^2 &=\frac{\sigma_u^2}{M V_n(x_{in})}\\ &=\frac{\sigma_u^2}{M}\\ \Leftrightarrow \ \ \sigma &=\frac{\sigma_u}{\sqrt M} \end{align*} となる.以上で導出は示された.





  4.4.3 勾配の差分近似計算
  p. 53

  勾配の差分近似を行う場合に,刻み幅 $\epsilon$ は,一般的に,
\begin{align*} \epsilon =\sqrt{\epsilon_c}|w_{ji}| \end{align*} と選べば (大きな誤差を生み難いことが多く) 良い.


  これは, 参考文献 [55] の p. 229 "5.7 Numerical Derivatives" で詳細が説明されている. 目的の式は,p. 230 の 式 (5.7.5) である. このページを探すことが大変な作業であったためメモしておく. (なお,同様に参考文献として上げられていた文献 [35] では,この部分の計算が省略されているため,お勧めしない)

"参考文献 [55] W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery. Numerical Recipes 3rd Edition: The Art of Scientific Computing. Cambridge University Press, 2007."
※ 1st Edition および 2nd Edition では,差分近似の解説が無かったように記憶しているので,注意.

"参考文献 [35] 伊理 正夫,藤野 和建.数値計算の常識 .共立出版,1985."





  5.3.2 主成分分析との関係
  p. 60


  主成分分析に関するもろもろは,以前記事でまとめた.





  5.5 データの白色化
  p. 70 最終行 「一方 PCA 白色化では,各フィルタは離散コサイン変換の基底に酷似しており,それぞれ特定の空間周波数・位相にチューニングされていることがわかります.」


  離散コサイン変換を理解するのが大変そうだと思って,放置している.進捗及び進捗の予定はないので,だれか超絶丁寧で分かり易い記事を書いて教えて下さい.




以上となります.

  Deep Learning を学ぶには,他に下記の上 2 冊も有名です.
  1 番目の書籍では,MLPS 深層学習 を執筆された 岡谷 貴之 先生 も共著として執筆されています. 内容としては,人工知能学会誌で 2013-14 年に連載されていた全 7 回の深層学習の解説記事を大幅に加筆修正したものとなっています. (加筆前の記事は,CiNii の定額アクセスに加入している (大学などの) ネットワークから「深層学習 人工知能学会」などと検索すると,「<連載解説>Deep Learning(深層学習)〔第X回〕」のようなタイトルで投稿されています.)
  2 番目の書籍は,2016 年 10 月 11 日現在において,アマゾンの人工知能カテゴリでベストセラー 1 位を獲得している書籍で,現在私が最も興味を抱いている書籍です.
  3 番目の書籍は,Deep Learning が主題ではありませんが,かずー氏 (@kazoo04) こと五木田 和也さんの書いた書籍で,青木健太郎さんの書くイラストが可愛いと話題沸騰中です. 「終わりに」で "かずー氏が親指を立てながら溶鉱炉に沈んでいくシーン" (※真に受けないで下さい) が非常に感動的だそうです. 数式は一切出てこないので,私としては残念ですが,かずー氏はブログ (Sideswipe) 非常に詳細な汎用人工知能に関す記事 (人工知能アドベントカレンダー) を投稿されており,こうした内容に関しても触れられているようなので,一度読んでおこうと思っています.

深層学習 Deep Learning (監修:人工知能学会)
著者: 麻生 英樹, 安田 宗樹, 前田 新一, 岡野原 大輔, 岡谷 貴之, 久保 陽太郎, ボレガラ ダヌシカ
監修: 人工知能学会
編集: 神嶌 敏弘
出版社: 近代科学社
発売日: 2015/11/05
メディア: 単行本
ページ数: 267 ページ


ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
著者: 斎藤 康毅
出版社: オライリージャパン
発売日: 2016/09/24
メディア: 単行本 (ソフトカバー)
ページ数: 320 ページ



コンピューターで「脳」がつくれるか
著者: 五木田 和也
イラスト: 青木健太郎
出版社: 技術評論社
発売日: 2016/09/27
メディア: 単行本
ページ数: 176 ページ




参考資料


0 件のコメント:

コメントを投稿