Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ニューラルネットワークの数理

13,835 views

Published on

数物セミナー冬の大談話会にて

Published in: Engineering
  • Be the first to comment

ニューラルネットワークの数理

  1. 1. ニューラルネットワークの数理 東京大学前期教養学部2年 大森 亮 1
  2. 2. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 2
  3. 3. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 3
  4. 4. 機械学習とは 通常のアルゴリズム: - 人間が明示的に解法の手順を与え問題を解く。 - 決められた規則に従って計算を多数回反復することはコンピューターの 得意分野。 - しかし、人間が手順を与えるのには限界がある、(ex. 画像認識、音声認 識、自然言語処理、ゲーム等のAI、etc.) そこで… 4
  5. 5. 機械学習とは 機械学習と呼ばれる技術を用いる。 - 人間が自然に行っている学習をコンピューター上で実現する様々な手法 の総称である。 - 多数のデータから分類の方法などを学習し、学習の方法のみをプログラ ムすれば評価方法を自身で身につける。(明示的なプログラムは必要ない) - 検索エンジン、医療診断、スパムメールの検出など幅広い分野に用いら れている。(wikipediaより) 5
  6. 6. 機械学習とは  本講演では、数多ある機械学習の手法の中でも 「ニューラルネットワーク(Neural Network)」 に話を限定する。 6
  7. 7. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 7
  8. 8. ニューラルネットワークの原理 Neural Network = 神経回路 - 神経細胞は(とても大雑把に言うと)樹状 突起からシナプスを通じて他の神経細胞 に信号が伝わっている。 - 信号伝達の強さはシナプスによって異 なる 8 樹状突起 シナプス
  9. 9. ニューラルネットワークの原理 Neural Network = 神経回路 - 樹状突起から伝達する信号がある強さ に達すると急激に電位が変化する。 (cf.ステップ関数) 9 樹状突起 シナプス h(a) = ( 0 (a < 0) 1 (a 1) )
  10. 10. ニューラルネットワークの原理 これを模式化する。 「単層パーセプトロン」 -        は入力 -        は重み係数 -   は活性化関数 -  は出力 10 h(·) y 樹状突起 シナプス x1 x2 y h(·) ・ ・ ・ xD w1 w2 wD x1, x2, · · · , xD w1, w2, · · · , wD
  11. 11. ニューラルネットワークの原理 入力の重みによる線形結合 活性化関数による非線形変換 11 y = h(a) バイアス x1 x2 y h(·) ・ ・ ・ xD w1 w2 wD a = DX i=1 wixi + w0
  12. 12. ニューラルネットワークの原理 入力の重みによる線形結合 バイアスの再現のために、常に    の入力を追加。その入力から の重み変数がバイアスとなる。 12 x1 x2 y h(·) w0 x0 = 1 x0 ・ ・ ・ xD w1 w2 wD a = DX i=0 wixi a = DX i=1 wixi + w0
  13. 13. 活性化関数による非線形変換 活性化関数としては、ステップ関数よ りもロジスティックシグモイド関数な どのなめらかな関数を使うと便利。 ロジスティックシグモイド関数: ニューラルネットワークの原理 13 y h(·)y = h(a) h(a) = 1 1 + exp( a)
  14. 14. ニューラルネットワークの原理 どのように学習させるのか?(2クラス分類を例に) - 入力ベクトルの集合            と、対応する目標ベクトル(答 え)の集合           が与えられる。 - 2クラス分類の場合、各々の目標ベクトルは      で表せる。 - 入力   に対する出力  が   と一致しているなら正しいとする。 - 尤度最大化=負の対数尤度の最小化 - 正しさの尺度となる誤差関数(負の対数尤度)を最小にすることを考える。 14 {xn} (n = 1, 2, · · · , N) {tn} (n = 1, 2, · · · , N) {xn} {yn} {tn} tn 2 {0, 1}
  15. 15. ニューラルネットワークの原理 どのように学習させるのか?(2クラス分類を例に) - 活性化関数にロジスティックシグモイド関数を用いる(値域(0,1) - 誤差関数に交差エントロピー関数を用いる。 -    が最小になるような重み係数  を求めればよい。 15 h(a) = 1 1 + exp( a) E(w) = NX n=1 {tn ln yn + (1 tn) ln(1 yn)} E(w) w
  16. 16. どのように学習させるのか?(2クラス分類を例に) - 重みwがw+δwまで微小に移動した時、誤差関数の変化は と表せる。E(w)が最小となる点においては となるので、これを満たすようなwを見つける。 ニューラルネットワークの原理 16 wT rE(w) rE(w) = 0 rE(w) = ✓ @E @w0 , @E @w1 , · · · , @E @wD ◆T
  17. 17. どのように学習させるのか?(2クラス分類を例に) - 解析的に解くのは不可能に近いので、もっとも単純なアプローチとして、 重みwの初期値w(0)をとり、 のように、勾配 E(w)の逆方向にw(τ)を小さ く進めて更新することを繰り返す方法である。 (最急降下法) - η>0は、学習率と呼ばれている。 ニューラルネットワークの原理 17 w(⌧+1) = w(⌧) ⌘rE(w(⌧) )
  18. 18. ニューラルネットワークの原理 どのように学習させるのか?(2クラス分類を例に) - この方法ではすべての訓練データを一度に扱っていて、バッチ手法と呼 ばれている。データの数が多い場合、それぞれの反復ステップで時間がか かる。 オンライン手法を用いるのが実用上便利。 w(⌧+1) = w(⌧) ⌘rE(w(⌧) ) 18
  19. 19. ニューラルネットワークの原理 オンライン手法 - 誤差関数は、それぞれの訓練データから得られる誤差の和として と書ける。それぞれの反復ステップについてnをランダムに取り、 とする。計算量が少なくて済む。 - 局所的最小値への収束を回避できる可能性がある。(個々のデータの停留 点と一般に一致しないため。) E(w) = NX n=1 En(w) w(⌧+1) = w(⌧) ⌘rEn(w(⌧) ) 19
  20. 20. ニューラルネットワークの原理 2クラス分類での学習の例 - 2次元平面上のデータの分類。簡単の 為、誤差関数として二乗和誤差を用い る。 - 各ステップで、ランダムに選んだnに ついて、各i (i=0,1,2)で次のスライドの ような計算を行う。 20 x1 x2 w1 w2 y h(·) w0x0
  21. 21. 2クラス分類での学習の例 ニューラルネットワークの原理 x1 x2 w1 w2 y h(·) w0x0 w (⌧+1) i = w (⌧) i ⌘ @En(w(⌧) ) wi = w (⌧) i ⌘ @ wi 1 2 (yn tn)2 = w (⌧) i ⌘(yn tn) @yn wi = w (⌧) i ⌘(yn tn) @ wi (a) = w (⌧) i ⌘(yn tn) (a) (1 (a)) @ wi X wdxd = w (⌧) i ⌘(yn tn)yn (1 yn) wi 21 xi
  22. 22. 2クラス分類での学習の例 - ここで、ロジスティックシグモイド 関数の微分についての性質 を用いた。 ニューラルネットワークの原理 @ (a) @a = @ @a 1 1 + exp( a) = exp( a) (1 + exp( a)) 2 = (a) (1 (a)) 22 x1 x2 w1 w2 y h(·) w0x0
  23. 23. ニューラルネットワークの原理 2クラス分類での学習の例 - 単層パーセプトロンはロジスティック回帰 と等価で、線形な分離しか出来ない。 - 例えばxor集合のような入り組んだデータ は分離出来ない 23 そこでニューラルネットワーク!
  24. 24. ニューラルネットワークの原理 ニューラルネットワーク (多層パーセプトロン) - 先ほどの単層パーセプトロンを 沢山つなげたもの。(図は2層の例) 24 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 入力層 中間層 出力層 x0 x1 xD zM z0 z1 yK y1 w (1) MD w (2) KM w (2) 10
  25. 25. ニューラルネットワークの原理 ニューラルネットワーク (多層パーセプトロン) - 重みベクトルwの次元が大きい ため、複雑な分類が可能。 25
  26. 26. ニューラルネットワークの原理 ニューラルネットワーク (多層パーセプトロン) - 矢印の向きに計算する。(有向閉 路は無いと仮定) - このネットワークの場合は、 26 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 入力層 中間層 出力層 x0 x1 xD zM z0 z1 yK y1 w (1) MD w (2) KM w (2) 10 yk(x, w) = 0 @ MX j=0 w (2) kj h DX i=0 w (1) ji xi !1 A
  27. 27. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 27
  28. 28. 学習と誤差逆伝搬 ニューラルネットワークでの学習 - 重みベクトルwの次元が増えただけで学習の方法は単層の場合と同じ。 などの式に従って最適なwを求める。(これはオンライン手法の場合) - その際、出力層から入力層に向かい、前に計算した結果を用いて漸化式 的に E(w)を高速に計算することが出来る。その様子から、誤差逆伝搬と 呼ばれる。 28 w(⌧+1) = w(⌧) ⌘rEn(w(⌧) )
  29. 29. 学習と誤差逆伝搬 学習の手順 Step1 訓練データの選択(ランダムに) Step2 出力の計算(途中のa,zも保存) Step3 誤差逆伝搬 29 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 入力層 中間層 出力層 x0 x1 xD zM z0 z1 yK y1 w (1) MD w (2) KM w (2) 10
  30. 30. 学習と誤差逆伝搬 誤差逆伝搬 という記法を用いると、       よ り、 δjを求めるためには、 30 zi j k 1 zj wji wkj ・ ・ ・ j = @En @aj aj = X i wjizi @En @wji = @En @aj @aj @wji = jzi @En @aj = X k @En @ak @ak @aj = X k k @ak @zj @zj @aj = h0 (aj) X k wkj k
  31. 31. 学習と誤差逆伝搬 誤差逆伝搬 - 特に、活性化関数にロジスティックシグモイ ド関数を用いた場合、 が成り立つため、 のように  がz,δ,wのみで漸化式的に計算可能 31 zi j k 1 zj wji wkj ・ ・ ・ j = h0 (aj) X k wkj k = zj(1 zj) X k wkj k = 0 (a) = @ (a) @a = (a)(1 (a)) @En @wji = @En @aj @aj @wji = jzi @En @wji = @En @aj @aj @wji = jzi
  32. 32. 学習と誤差逆伝搬 活性化関数や誤差関数の選び方 - 問題の型により自然に定まる。尤度の最大化。 - 回帰問題の場合、活性化関数は恒等関数、誤差関数は二乗和関数。 - 2クラス分類の場合、活性化関数はロジスティックシグモイド関数、  誤差関数は交差エントロピー関数(または二乗和関数)。 - 多クラス分類の場合、活性化関数はソフトマックス関数、誤差関数は  多クラス交差エントロピー関数。 32
  33. 33. 学習と誤差逆伝搬 - もし2クラス分類の活性化関数に恒等関数、誤差関数に二乗和を用いると? (緑:ロジスティック回帰モデル、赤:二乗和モデル) - 二乗和モデルは外れ値に敏感なので分類には適さない。 33
  34. 34. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 34
  35. 35. 実装上の課題 重みの初期値 - すべて同じにしてはいけない。 入る重み係数も出る重み係数もすべて等しいユニットは学習の進み方も等しく、表現で きる次元が減る。 - 0にしてはいけない。 誤差逆伝搬で更新されず0のまま - 一般的には乱数を使って設定する。 35
  36. 36. 実装上の課題 ネットワークの構造の決定 - 層にユニットを幾つ配置するか、どのようにつなげるか、何層にするか など事前に決めなければならないことが多い。 - 層の数が多いと、誤差逆伝搬が入力層まで進まずに消えてしまう。(勾 配消失問題) - そのため2層(中間層が1層)にするのが安全。 36
  37. 37. 実装上の課題 過学習 - 訓練用のデータに適合しすぎて、同じ事前分布で得られたデータに対し て認識や回帰が上手くいかないこと。 - wの次元に対してデータ数が少ないと起こりすい。(図は正弦関数のデー タ集合への回帰の、中間層のユニット数が1,3,10の時の学習例) 37
  38. 38. 実装上の課題 過学習 - 過学習が起きている時は重み係数の絶対値がとても大きくなっているた め、誤差関数に正則化項を導入するのが一手。(λは正則化係数) - この新しい誤差関数の勾配は、 であり、誤差逆伝搬でも計算しやすい形である。 38 eE(w) = E(w) + 1 2 wT w r eE(w) = rE(w) + w
  39. 39. 実装上の課題 学習率ηの決め方 - 大きすぎると極小値付近で振動して収束せず、小さすぎると学習が進ま ず、時間も掛かるため、ある程度適切に設定する必要がある。 - 先ほどの最急降下法ではなく、共役勾配法を用いれば手動で設定せずに 済む。(バッチ手法向き) - 学習を進めてみてE(w)が増加していれば学習率が大きすぎるということ になるので、適宜E(w)の減少を確かめて学習率を調整する方法もある。 39
  40. 40. 実装上の課題 - 数学的によくわかっていないことも多いが、実装してみて上手くいけば いい。 - データ集合を訓練用とテスト用に分け、訓練用データで得られたネット ワークでテスト用のデータを認識し、その認識率(正解率)を調べる。 - 認識率が高ければ、良い学習が行われたということになる。 40
  41. 41. 目次 機械学習とは ニューラルネットワークの原理 学習と誤差逆伝搬 実装上の課題 深層学習とは 41
  42. 42. 深層学習とは 幅広い分野を指すが、簡単に言うと、ニューラルネッ トーワークの階層を深くしたもの。 - 勉強が追いついていないため、簡単な紹介に留める。 - 深層ニューラルネットワーク(DNNs),畳み込みニューラルネットワーク (CNN),再起的ニューラルネットワーク(RNN)などなど 42
  43. 43. 深層学習とは 畳み込みニューラルネット ワーク(CNN) - 画像認識などに使われている方法。 畳み込み層(圧縮)とブーリング層(平 行移動や回転に対する普遍性)が交互 に。 - 勾配消失が起こらないように、活 性化関数に工夫。 43
  44. 44. 深層学習とは ニューラルネットワークは入力ベクトルと目標ベク トル(答え)が与えられた教師あり学習だが、深層学 習ではこれに事前学習として教師なし学習を組み合 わせることがる。 - cf.自己符号化器 44
  45. 45. 深層学習とは 自己符号化器 - 例えば、砂時計型のニューラルネッ トワーク - 入力と出力が一致するように学習。 データの適切な圧縮方法を与える。 - 繰り返すことでさらに圧縮可能(積 層自己符号化器) 45
  46. 46. ご清聴ありがとうございました。

×