Upload
t2c
View
435
Download
2
Embed Size (px)
Citation preview
Back Propagation(2014/12/15)
情報系学部3年T2C_ ( TwitterID:@T2C_ )
本日の流れ1. 前回までの流れ
2. 誤差逆伝播法
1. 誤差逆伝播法とは
2. 簡単な例
3. 詳細
1. シグモイド関数
2. チェインルール
3. 出来る事
4. 問題点
5. 所見
1
対象:誤差逆伝播法Back Propagation
2
前回までの流れ
• 深層学習(Deep Learning)、SUGOI
• パーセプトロン→誤差逆伝搬(多層パーセプトロン)
→DL
• 単純パーセプトロンを構成(前回)、NNの基礎へ
3
流れを追うために誤差逆伝播をやってみよう(今回)
誤差逆伝播法とは• 1986年 ラメルハート教授らにより発表される
• 3層以上のニューラルネットワークである必要
• 教師あり学習
• 局所解(求めるものを完全に求められる保証なし)
• やりたい事…入力→(何らかの判別・分類)→出力• (何らかの判別・分類)を自動化し未知の入力に対しても望む処理が出来る
4
簡単な例(概要)• 以前紹介したもの
→これを分けてみる
5
x2
x1
(0 , 0) (1 , 0)
(1 , 1)(0 , 1)
表1.2次元上のXOR
ワケラレナイヨー
x2 = -x 1 +1.5x2 = -x 1 +0.5
簡単な例(分類ネットワーク)
6
• 中数字は閾値(それを超えると発火)
• OR→ x1 + x2 -0.5 > 0 の時発火• NAND→-x1 - x2+1.5 > 0 の時発火• AND→OR+NAND – 1.5 > 0の時発火• (先ほどの直線2本と対応)
• →下の斜線より上の領域 かつ上の斜線より下の領域 を指す
図1.XORのネットワーク実装
簡単な例(真偽表)
7
入力層 中間層 出力層
x1(入力) x2(入力) a1(OR) a2(NAND) y(AND)
0 0 0 1 0
0 1 1 1 1
1 0 1 1 1
1 1 1 0 0
• 中間層の素子一つは、一つの線形判別関数に相当する• パーセプトロン(先週)がXORを解けないのは入力層から中間層に至る結合係数(重み)を変更する手段がないため
表2.XORネットワークの真偽表
誤差逆伝播法(詳細)• 先ほどまでの話を一般化する
• 総数m層のネットワークを考える
• k層の i 番目の素子への総入力を 𝑥𝑖𝑘 ,出力を 𝑦𝑖
𝑘 とする
• K-1層の i 番目からk層の j 番目の素子への結合係数を𝑤𝑖𝑗𝑘−1 ,𝑘と表記する
• 𝑦𝑖𝑘 = 𝑓 𝑥𝑖
𝑘 =1
1+exp(𝑥𝑖𝑘)
1 , 𝑥𝑗𝑘 = 𝑖𝑤𝑖𝑗
𝑘−1 ,𝑘 ∗ 𝑦𝑖𝑘−1 [2]
8
シグモイド関数• [1]式の
1
1+exp(𝑥𝑖𝑘)のような関数をシグモイド関数と呼ぶ
• Xの値や係数により閾値を付随させたり、勾配を変更出来る
• 活性化関数とも言い、発火を2値でなくアナログ値でも表示
9図2.Sigmoid関数のプロット(Python)
誤差逆伝播法• あるデータxと教師信号tが与えられたときの2乗誤差Eは
E =
𝑗
(𝑦𝑗𝑚 − 𝑡𝑗)
2 =
𝑗
(δ𝑗𝑚)2 3
• このEを減少させる方向に結合係数wを以下の式で更新してゆく
Δ𝑤𝑖𝑗𝑘−1 ,𝑘 = −휀
𝜕𝐸
𝜕𝑤𝑖𝑗𝑘−1 ,𝑘 [4]
• [4]式右辺の微分はチェーンルールを用いて
𝜕𝐸
𝜕𝑤𝑖𝑗𝑘−1 ,𝑘 =
𝜕𝐸
𝜕𝑦𝑗𝑚
𝜕𝑦𝑗𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 = 𝑗 δ𝑗
𝑚 𝜕𝑦𝑗𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 [5] と書ける
10
チェーンルール(復習?)• 𝑦 = 𝑦( 𝑧 𝑥 )の様な合成関数の微分を
展開無しに𝑑𝑦
𝑑𝑥=
𝑑𝑦
𝑑𝑧
𝑑𝑧
𝑑𝑥と表す事が出来る
• 例えばy = (x+1)2を微分する時𝑥2 + 2𝑥 + 1から微分
→x+1=zと置いて𝑑𝑦
𝑑𝑧
𝑑𝑧
𝑑𝑥= 2z * 1 =2x+2 と求める
• y = (x+1)999などでもすぐ出来る事が利点
• 繋がりがある事が条件(例だとyはxの関数、xはzの関数)
11
誤差逆伝播法• 同様にして 𝑗 δ𝑗
𝑚 𝜕𝑦𝑗𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 の微分箇所は
𝜕𝑦𝑗𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 =
𝜕𝑦𝑗𝑚
𝜕𝑥𝑗𝑚
𝜕𝑥𝑗𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 [6]と表せる
•𝜕𝑦
𝜕𝑥はsigmoid関数なので
𝜕𝑦
𝜕𝑥= 𝑦 1 − 𝑦 [7]
•𝜕𝑥𝑗
𝑚
𝜕𝑤𝑖𝑗𝑚−1 ,𝑚 = 𝜕𝑦𝑖
𝑚−1 [8]
• まとめると[4]式は
Δ𝑤𝑖𝑗𝑚−1 ,𝑚 = −휀
𝑗
δ𝑗𝑚 𝑦𝑗
𝑚 1 − 𝑦𝑗𝑚 𝑦𝑖
𝑚−1 9
• これが最上位層とその一つ下の層の結合係数の更新式12
誤差逆伝播法(中間層以下)• 次に中間層以下第n層(n≠m)の素子 𝑦𝑗
𝑛 の結合係数の更新
• 誤差Eを素子 𝑦𝑗𝑛 で微分していく([9]式の導出と似ているので省略)
𝜕𝐸
𝜕𝑦𝑗𝑛 =
𝑘
δ𝑘𝑛+1 𝑦𝑘
𝑛+1 1 − 𝑦𝑘𝑛+1 𝑤𝑘𝑗
𝑛 ,𝑛+1 [10]
• ゆえに結合係数の更新式はΔ𝑤𝑖𝑗
𝑘−1 ,𝑘 = −휀𝛿𝑗𝑘𝑦𝑗
𝑘 1 − 𝑦𝑗𝑘 𝑦𝑖
𝑘−1 11
• また、 𝛿𝑗𝑘 =
𝑦𝑗𝑘 − 𝑡𝑗 (𝑘 = 𝑚)
𝑖 δ𝑙𝑘+1𝑤𝑗𝑖
𝑘 ,𝑘+1(その他)[12] である
• [12]式の下部は1つ先の層の誤差と重みの総和 =BP!13
出来る事(一例/推測)• 画像処理(認識、加工 等)
• 音声処理(同)
• 自然言語処理(認識、理解、情報抽出 等)
→データ処理(マイニング、リスク・需要予測、センサー、セキュリティ(暗号や最適化)、意思決定、情報幾何 等)
14
問題点• 局所解に陥る可能性
• 本当に求めたい物でなく近傍の解があればそこに落ち着いてしまう
• 過学習• 学習を繰り返す→教師信号に依存し過ぎて未知データに対して弱化
• ネットワークの構造決定法が無い• 各層の個数、最適な重み 他
15Deep Learning
所見• 応用法は知ったがその具体的な方法がわからない、ムズカシイ
• 完全理解までは程遠い
• 入出力の対応関係が直感的でない
• 数式アレルギー、克服出来るのでは
• やたらと勉強に時間がかかるが大変に面白い
• 神の言語Python16
参考資料• 熊沢 逸夫(1998) 『学習とニューラルネットワーク』 森北出版
• 浅川伸一 『バックプロパゲーション』http://www.cis.twcu.ac.jp/~asakawa/waseda2002/bp.pdf
• David Adler(2012)『Simple Back-propagation Neural Network in Python source code (Python recipe)』http://code.activestate.com/recipes/578148-simple-back-propagation-neural-network-in-python-s/
(Webサイトは全て2014/12/14 閲覧)
17
ありがとうございました
18