ディープラーニングの
歴史と背景
AIのニューストレンド
AIのニューストレンド
AIのニューストレンド
AIのニューストレンド
なぜ,いま
(ディープな)ニューラルネットなのか?
岡之原さんのスライドから
なぜ,いま Deep Learning なのか?
Internet Google Facebook Twitter
AI の歴史的背景
2010 2000 1990 1980 1970 1960 第1期 第2期 第3期(たぶん) inspired from 岡谷貴之(東北大),麻生英樹(産総研),岡田真人(東大) 今ココ Perceptron (Rosenblatt 57) Neocognitron (Fukushima 80) Conv. net(LeCun+ 89) Deep learning (Hinton+ 06) “Linear Separable”
(Minski & Papert 68)
Back Prop. (Rumelhart+ 86) SVM (Vapnik 95) 脳型AI 第5世代コンピュータ エキスパートシステム 知識工学 1982∼92 Watoson(IBM) 記号処理的AI オントロジー semantic web カーネル法の勃興 知識獲得の難しさ 特徴表現の難しさ 理論的な限界
Deep Learning(深層学習)とは?
神経回路(ニューラルネット)モデルを用いた人工知能技術 脳の働きを模した構造と学習方式 深い階層構造を持つことが特徴 Input Recognition It’ s “5” It’ s “5”ディープラーニングは新技術?
歴史的には 1960 年代くらいまで れる 要素技術には新しいことはそれほどない(多分) DeepMind は比較的枯れた技術で成功 第2期のブームから大きく変化したもの データの質と量: Internet, SNS, Cloud… 計算機環境: パッケージ化,GPU の勃興…ニューラルネット(NN)の基礎知識
NN を構成する3要素 基本ユニット(ニューロン) 決定論的ユニット 確率的ユニット ネットワークアーキテクチャ 階層型 相互結合型 学習ルール 教師あり学習 教師なし学習神経回路モデルのはじまり
ニューラルネットワーク (NN) は脳構造の真似から 脳は 140億個の神経細胞(Neuron) から構成される http://ja.wikipedia.org http://www.scholarpedia.org/article/Neuron ニューロンのモデル化ができるか?ニューロンの特性
ニューロンは 2値表現活性(ON)状態/非活性(OFF)状態 閾値処理による発火制御
McCulloch-Pitts 素子モデル
最初の数理的ニューロンモデル (McCulloch&Pitts 43) 入力は線形重ねあわせ 活性化関数 f ( ): 閾値制御 u y x1 y x2Σ
u θ w1 w2McCulloch-Pits モデルでできること
モデルパラメータ {w, θ} の変更→様々な論理素子 u y x1 y x2Σ
u θ w1 w2w
1w
2θ
AND 1 1 1.5 OR 1 1 0.5 NAND -1 -1 -1.5y y
モダンNN の基本素子ユニット(1)
決定論的ユニット
内部状態: 入力の線形和 出力: 非線形活性化関数 Logistic-Sigmoid Rectified LinearHyperbolic Tangent, etc... y1 y3 x1 x2 x3 y2 u f (u) uj = 3 X i=1 wji xi + bj yj = f ⇣uj⌘ 内部状態 出力
u j = 3 X i=1 w jixi + b j y j ⇠ p(yj | uj) y y
モダンNN の基本素子ユニット(2)
確率的ユニット
内部状態: 入力の線形和 出力: 確率変数値 内部状態 uj は事後確率の パラメータとして用いられる x1 x2 x3 y2 z2 内部状態 出力 p(yj | uj) = 1 1 + e uj などネットワークアーキテクチャ
ニューラルネットワークアーキテクチャとは? 素子と素子とをどう繋いでネットワーク構築するか? 全体の構成に関する議論 階層型アーキテクチャ 相互結合型アーキテクチャ それ以外の観点も在る 結合がスパース/全結合か?階層型アーキテクチャ
入力パターンを順次変換していくアーキテクチャ 入出力が層単位で定義され一つの階層が変換された入力を記述 素子の状態更新順序は一意に決定 (Feed forward など) Input Output PerceptronDeep Convolution Net Neocognitron
GoogLeNet などなど
相互結合型アーキテクチャ
全ての素子が互いに結合することを許すアーキテクチャ 素子集合全体で一つの状態を表す 素子の更新順序によって状態が変わってくる 連想記憶モデル Boltzmann Machineu y x1 y x2
Σ
u θ w1 w2NN の学習とは?
モデルパラメータ {w, θ} で振る舞いが変化 モデルパラメータをデータから決定する→学習w
1w
2θ
AND 1 1 1.5 OR 1 1 0.5 NAND -1 -1 -1.5教師あり学習
(supervised learning)
入力データ x に対して 教師信号 t が設定されている 出力 y が t と一致するように {w,θ} を調整 y x1 w2 w1 t x2 x2 x1 (0,0) (1,0) (0,1) (1,1) AND 素子 1 → 1 → 青だと思う 赤です教師なし学習
(unsupervised learnning)
与えられるのは入力データ x のみ 入力 x が似ているかどうかでグループ分け等 (クラスタリング) y x1 w2 w1 x2 x2 x1 1 → 0 → 前見た 青に似ているPopulation coding (Desimone+ 84, Tanaka+ 84)
NN の歴史的背景
2010 2000 1990 1980 1970 1960 第1期 inspired from 岡谷貴之(東北大),麻生英樹(産総研),岡田真人(東大) 今ココ Perceptron (Rosenblatt 57) Neocognitron (Fukushima 80) Conv. net(LeCun+ 89) Deep learning (Hinton+ 06) “Linear Separable”
(Minski & Papert 68)
Back Prop. (Rumelhart+ 86) SVM (Vapnik 95) Boltzmann Mach. (Hinton+ 85)
Simple / Complex cell (Hubel & Wiesel 59)
Perceptron
(Rosenblatt 57)
Perceptronがやりたかったこと
パターン認識: 与えられた入力をどうにかして分類 入力空間を分離すること 線引きはどうやってするか? 0 0 : 1 1 : 0 0 入力データ→ベクトル 新規入力: 赤?青?Perceptron のアーキテクチャ
McClloch-Pits ニューロンによる階層型ネットワーク S層 → A層 間は固定ランダム結合 A層 → R層 間が学習で決定される結合 Response Layer{x
n}
Sensory Layer Associative Layerx
3n 1x
2nx
1ny
2(x
n)
y
1(x
n)
y
3(x
n)
It's "1"単純 Perceptron による識別
2入力1出力単純パーセプトロンφ
2φ
1 y = sgn 0 BBBBB B@ X j wj j 1 CCCCC CA = sgn (w0 + w1 1 + w2 2) w0 + w1 1 + w2 2 = 0 1 2 y クラス1 クラス2 AND 素子Perceptronの学習(1): 誤り訂正学習
Hebb 学習則 教師 t と出力 y の関係により w を修正 目標 {xn, tn} が与えられたとき y(xn) = tn としたい 正解 tn と出力 yn が不一致のときのみ w を修正 解が存在する場合,正しい解に収束する→デモ y x w t単純パーセプトロンの限界
単純パーセプトロン:一本の直線での境界分離(線形分離)
XOR 問題は解けない (Minsky & Papert 68)
→ NN 第1次 冬の時代
クラス1 クラス2
φ
2単純パーセプトロンの限界の打破
XOR 問題の解法 複数の分離直線を使えば分離可能 各線の分離結果を合成→階層化は妥当(多分) クラス1 クラス2x
2x
1{x
n}
{z
n}
x
1x
2x
0z
0z
1z
21
1
y
Original Perceptron のやっていること
中間層での表現 (上手くいった場合) 入力空間での表現y
2(x
n)
y
1(x
n)
y
3(x
n)
{x
n}
x
3n1
x
2nx
1nSensory Associative Response
中間層の訓練はどうすれば?
固定ランダム結合
部分はどう学習させるのか?
y
2(x
n)
y
1(x
n)
w
20 w21 w22w
23y
3(x
n)
{x
n}
x
3n 1x
2nx
1n Sensory Layer Associative Layer Response Layer It's "1"Population coding (Desimone+ 84, Tanaka+ 84)
NN の歴史的背景
2010 2000 1990 1980 1970 1960 第1期 inspired from 岡谷貴之(東北大),麻生英樹(産総研),岡田真人(東大) 今ココ Perceptron (Rosenblatt 57) Neocognitron (Fukushima 80) Conv. net(LeCun+ 89) Deep learning (Hinton+ 06) “Linear Separable”
(Minski & Papert 68)
Back Prop. (Rumelhart+ 86) SVM (Vapnik 95) Boltzmann Mach. (Hinton+ 85)
Simple / Complex cell (Hubel & Wiesel 59)
Multi-Layer Perceptron
(Rumelhart+ 86)
多層Perceptron
(MultiLayer Perceptron: MLP)
単純 Perceptron の線形分離問題→
階層性
による打破
入力
x
,
出力
y
の他以外に
中間層(隠れ層)
z
を持つ
信号は一定方向(入力から出力へ向けて)で処理
x0 x1 xD z0 z1 zM y1 yK wM D(1) wKM(2) w10(2) hidden units inputs outputsMLP にできること
適切な設定(隠れ層の素子数,結合重み)を選べば 任意の関数を任意精度で表現できる.(Irie 88, Funahashi 89){x
n}
{z
n}
x
1x
0z
0z
1z
21
1
z
3y
x
1y
x
1y
x
1y
x
1y
どんな解でも表現出来る
こと
と
どうやったら解に到れるか
多層ネットワークの学習の難しさ
誤り訂正教師信号 t は1階層であれば対応可能 中間層 z1, z2 に対する教師信号はどう生成する? u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 x1 x2 z1 z2 y t w11(1) w22(1) w12(1) w21(1) w1(2) w2(2) z1 θ z2 θ u u OK! NG!Error Back-propagation
単純 Perceptron の線形分離問題 → 階層性による打破 多層Perceptron (MLP)の学習則 基本アイディアは勾配法 微分の連鎖則を活用 x0 x1 xD z0 z1 zM y1 yK wM D(1) wKM(2) w10(2) hidden units inputs outputs線形Perceptronの勾配学習法(1)
2乗誤差の勾配を用いる学習則 デルタ則,adaline 則 (Widrow-Hoff 60) 勾配を使うには微分可能性が必要 →活性化関数に線形関数を使う u y x1 y x2Σ
u w1 w2 u y x1 y x2 Σ u θ w1 w2 McCuloch-Pittst
線形Perceptronの勾配学習法(2)
E(w) = 1 2 n tn y(xn) 2 コスト関数 パラメータ更新則E(w)
w
@E @w > 0 @E @w < 0{x
n}
t
1nt
2nt
3n{t
n}
y
2(x
n)
y
1(x
n)
y
3(x
n)
x
3n1
x
2nx
1nw
(1)w
(2)MLPでの勾配学習(1)
線形ニューロンであれば勾配を用いた学習は可能 微分の連鎖則(chain-rule) を適用 ただし線形写像の多重適用なので実用的な意味は余りない u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 x1 x2 z1 z2 y t w11(1) w22(1) w12(1) w21(1) w1(2) w2(2) z1 u z2 u y u @E(w) @w(1)22 @E(w) @w(2)2MLP の勾配学習に線形性ではなく微分可能性では? 微分の連鎖則(chain-rule) を適用 多層に意味を持たせるためには 微分可能な非線形活性化関数であれば良い u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 u y x1 y x2 Σ u θ w1 w2 x1 x2 z1 z2 y t w11(1) w22(1) w12(1) w21(1) w1(2) w2(2) z1 u z2 u y u @E(w) @w(1)22 @E(w) @w(2)2 z1 u z2 u y u
MLPでの勾配学習(2)
MLP アーキテクチャの具例
yk tk k j wkj i wji 入力層 x 隠れ層 z 出力層 y3層 Multi Layer Perceptron(MLP) アーキテクチャ 隠れ層を中間層表現として持つ
信号の処理方向は一方向
n 番目の出力値 回帰問題 2値分類 多値分類: Softmax 関数
MLP 学習のコスト関数例
yk tk k j wkj i wji 入力層 x 隠れ層 z 出力層 y ynk = yk(xn; w) En(w) = 1 2 X k ⇣ tnk ynk⌘2連鎖則による微分の導出(1)
コスト関数
y
kt
kk
j
w
kji
w
ji j微係数
割と面倒
(に見える…)連鎖則による微分の導出(2)
コスト関数
y
kt
kk
j
w
kji
w
ji j微係数
誤差
δ の導入ですっきり
誤差
δ は,上位層からの逆方向の伝達
(Back propagation) で記述可能
誤差逆伝搬法の実装
xi yk uzjj uk δj Feed forward を一旦計算 k = 0(uk)(yk tk) Back Prop. を計算 勾配を計算 xi yk zj uj δk tk uk誤差逆伝搬法の適用
コスト関数
E
n(w) はパターン事に定義可能
1サンプルごとに動かす
(Online learning)→ 局所解の問題
平均勾配で動かす
(Batch learning)
→ 学習が遅い
確率的降下法(Stochastic GD)
(Amari 67, Bottou+11,12)誤差逆伝搬法の適用
準ニュートン法や,共益勾配法 (Le+11)
AdaDelta(Zeiler 12), AdaGrad(Duchi+11), Adam(Kingma+15) など
学習係数最適化
Back prop. の応用先
XOR 問題 (Rumelhart+ 86)Auto-Encoder (Ackley+ 85), 画像圧縮(Cottrell+ 87) NETtalk (Sejnowski & Rosenberg 87)
ソナー音識別(Gorman & Sejnowski 88)