オートエンコーダ:自己符号化
n ちょっと変わったパーセプトロン
u パーセプトロンは 教師あり学習
p 教師 と 出力 の間の差(誤差)を 最小化するよう 重み を学習
u 教師データに入力データをそのまま使う
オートエンコーダ
x1
xi
xI
… …
…
y1
yk
yK
… …
= x1
= xi
= xI
可視層 可視層
隠れ層
2
Slide 3
Slide 3 text
何の意味が???
n 隠れ層の素子数を,可視層より減らすのがポイント
u もとの入力を,より少ないデータで表現できる
p なんらか共通する要素を抽出するということ
• たくさんの画像から,“りんご” に共通する情報を抜き出すイメージ
p データの 圧縮 ともいえる
3
再び記号の話
n 記号とは…
u なんらかの基準により,世界を同値類に分けた結果
u 同値かどうか,同一性の判定が主問題
n 共通要素をもつ = なんらかの同一性をもつ
情報・次元の圧縮は
世界をうまく要約する,記号化する
ということに他ならない
6
Slide 7
Slide 7 text
オートエンコーダ:自己符号化
n 用語の整理
u 入力層,出力層を 可視化層 ともいう
u 入力層から隠れ層への処理: エンコード
u 隠れ層から出力層への処理: デコード
x1
xi
xI
… …
…
y1
yk
yK
… …
= x1
= xi
= xI
可視層 可視層
隠れ層
エンコード デコード
7
Slide 8
Slide 8 text
積層オートエンコーダ
n 単に隠れ層を多層にしてみたオートエンコーダ
u 4層以上の多層パーセプトロンのオートエンコーダー版
u 特に変わったアイデアではないのだが…
ディープニューラールネットワーク
これが 深層学習 の核
層ごとの貪欲法 と 事前学習 という
テクニックに工夫
8
Deep Neural Network: DNN
Slide 9
Slide 9 text
層ごとの貪欲法?
n ちょっと変わった学習のさせ方
u 多層パーセプトロンでは逆誤差伝搬で計算
p 勾配消失により多層にすると学習が進まない問題
p 積層オートエンコーダも結局同じ問題が起きる…
u オートエンコーダならではの解決策
p オートエンコーダでは自分と同じ出力を得たい
p 隠れ層でも自分と同じ出力を出すように学習させる
9
Slide 10
Slide 10 text
層ごとの貪欲法:図解0
n オートエンコーダは入力=出力
u 可視化層 と 隠れ層 の2層だけの構造ともいえる
x1
xi
xI
… …
…
y1
yk
yK
… …
= x1
= xi
= xI
やりたいことは 隠れ層 が入力と同じ出力を出せるようにすること
10
Slide 11
Slide 11 text
層ごとの貪欲法:図解1
n 積層オートエンコーダでも話は同じ
x1
xi
xI
… …
…
…
…
…
h1
h2
h3
hn
h1
層では,入力層を出力するように学習させる
x h1
x
x
11
Slide 12
Slide 12 text
層ごとの貪欲法:図解2
n 積層オートエンコーダでも話は同じ
x1
xi
xI
… …
…
…
…
…
h1
h2
h3
hn
h2
層では,h1
層を出力するように学習させる
h2
x
h1
h1
12
Slide 13
Slide 13 text
層ごとの貪欲法:図解3
n 積層オートエンコーダでも話は同じ
x1
xi
xI
… …
…
…
…
…
h1
h2
h3
hn
h3
層では,h2
層を出力するように学習させる
h3
x
h2
h2
13
Slide 14
Slide 14 text
層ごとの貪欲法:図解4
n 積層オートエンコーダでも話は同じ
x1
xi
xI
… …
…
…
…
…
h1
h2
h3
hn
hn
層では,hn-1
層を出力するように学習させる
hn
x
hn-1
hn-1
※ 基本的には隠れ層を1層進めるたびに ノードの数は前の層より減らさないとダメ
ノード数が同じなら特定の1ノードとの重みを1,それ以外を0でOK
情報の圧縮を考えるなら,増やすのも普通に考えると意味がない
14
Slide 15
Slide 15 text
隠れ層のノード数は本当に減らさないとダメ?
n 実は減らすどころか,増やしても良い
u スパース自己符号化器
p なにも考えないと前頁の脚注の通り,恒等写像で無意味
p 適切な制約を加えることで,うまく学習できる
p これにより,表現力を増すことができる
• 高次元空間にマッピングできる
x1
xi
xI
… …
…
y1
yk
yK
… …
= x1
= xi
= xI
15
Slide 16
Slide 16 text
n 層ごとの貪欲法により,データの圧縮はOK
u これができるだけで,とても便利
p というか,教師データがなくて良いという,
ニューラルネットの新しい使い道ができた!
u でも,可能なら 教師あり もうまくやらせたい…
16
Slide 17
Slide 17 text
積層オートエンコーダでの教師あり学習
n hn
層の学習は,hn-1
層のデータで行った
n ほしいのはy層(出力層)
u hn
層はy層に合うように学習しないといけないのに…
u hn
層 まで来たら,y層をつないで逆誤差伝搬
事前学習&ファインチューニング
17
Slide 18
Slide 18 text
ファインチューニング
n 最後の層に少し工夫
y1
yk
yK
x1
xi
xI
… …
… …
…
…
…
…
h1
h2
h3
hn
最後に適当な回帰層をくっつける
x y = x
分類問題の場合: ロジスティック回帰層(シグモイドかソフトマックス)
回帰問題の場合: 線形回帰層
あとは誤差逆伝搬で調整
18
Slide 19
Slide 19 text
何かだまされているような…?
n 勾配消失 で 深い層は計算できないのでは??
u 層ごとの貪欲法で何らかの重みは計算済み
u この(事前学習した)状態で逆誤差伝搬すると,
学習が良い感じに進む!!!
p 事前にいろいろやってきて,良い感じの値になってるので,
ちょっと調整するだけでうまくいくイメージ
層ごとの貪欲法 を用いた 事前学習 と
ファインチューニング で 教師あり学習
19
Slide 20
Slide 20 text
n ちなみに,こんなにページを割いて説明したのに
事前学習は最近は全く使われません…・
n すみません…
20
Slide 21
Slide 21 text
事前学習を用いない勾配消失対策
n 事前学習の課題
u 層ごとの貪欲法 による事前学習は非常に効果があり,
深層学習の有用性を示した
u でも,一層ずつ学習を積み重ねるので計算コスト大
u 勾配消失の原因 = 活性化関数の微分値が常に小数値
p 活性化関数自体をうまく設計しておけば良いのでは???
21
Slide 22
Slide 22 text
逆誤差伝搬
n 誤差の影響 δ を どんどん後ろに送る
u δ は 前のδ に重みと活性化関数の微分値をかけたもの
つながってるノード全部 の意
(l+1)層への入力の大きさ
※ f ではなく f’ (微分)な点に注意
j
前のノードまでの
誤差影響度の総和
(l+1)層までの誤差影響度
j
※ よくわからなければ,目をつぶっててください
22
活性化関数の工夫
n 微分して最大値が 0.25 など小さいのが問題
u じゃぁ,そうならない活性化関数使えば良いんじゃ…?
u 深層学習でよく用いられる活性化関数
p tanh(ハイパボリックタンジェント)関数
p ReLU (Rectified Liner Unit) 関数
その通りです…
24
Slide 25
Slide 25 text
tanh
n -1から1の出力値をとる関数
u シグモイド関数の代替として初期には用いられた
微分値の最大が 1.0
何もしなくても負の値を入れると負の値,
正の値を入れると正の値を出してくれるのも良いところ
(シグモイドは 0−1 の範囲だった。)
25
Slide 26
Slide 26 text
ReLU: Rectified Liner Unit
n ちょっと特殊な形の関数
u 現在一般的に用いられる関数
正の範囲で微分値が1.0
ゼロの時は微分ができないため,
その場合のみ,誤差伝搬がうまくできない問題も
(まあ0か1かに割り当てて無理矢理動かしますが)
26
Slide 27
Slide 27 text
ReLU の 家族
n よく似た派生形もいろいろ
u 負の範囲の微分値がゼロは嫌:Leaky ReLU
u 正の範囲の傾きを良い感じに:Parametric ReLU
u 傾きは適当で良いのでは??:Randomized ReLU
※ カエルの子供はカエルではなく
オタマジャクシです。念のため。
27
Slide 28
Slide 28 text
DNNいろいろ
n DNNと一口に言っても実は種類※が…
u CNN Convolutional NN
p 画像処理系でよく用いられるNN
u RNN Recurrent NN
p 自然言語処理系でよく用いられるNN
u LSTM Long-Short Term Memory
p 上記,RNNの拡張版
u GAN Generative Adversarial Networks
p DNNの種類ではなく,学習のさせ方だがこれも重要
28
※ 正確にはDNNの使い方,組み合わせ方の種類
Slide 29
Slide 29 text
Convolutional NN
画像処理に長けた歴史あるNN
29
CNN
CNN
Slide 30
Slide 30 text
:Convolutional NN
n 畳み込みニューラルネットワーク とも
u 画像処理系によく使われるNN
p 基本的なアイデアは意外と古く,1979年に日本の研究者
福島邦彦 先生 が発表した ネオコグニトロン などがベース
u 畳み込み層 と プーリング(サンプリング)層 を交互に積層
30
CNN
CNN
…の前に,NNでどうやって画像を扱うか?
そもそも計算機は画像を同処理・表現するか?
Slide 31
Slide 31 text
機械はどのように画像を表現するか
n テレビ・モニターの構造
u マス目が沢山並んでいて,そのマス目の色を様々に
変えることで情報を伝えている
u 色に関しては,赤緑青の光の重ね合わせで表現
31
こんな感じの格子が並んでいる N という記号を表示した例
Slide 32
Slide 32 text
機械はどのように画像を表現するか
n 色は前述の通り,赤緑青の重ね合わせ
u …3原色は 赤青黄 (Magenta, Cyan, Yellow)では??
p 色の三原色はCMYだが,光の3原色はRGB(Red, Green,Blue)
p モニターは発光して情報を伝えるので RGB が基本
32
ひとつひとつのセルはこんな感じで
RGBの発光量を調整して色を表現
Slide 33
Slide 33 text
青色LEDの素晴らしさ
n 学生の皆さんにはテレビ=液晶テレビですが…
u 2003年くらいまではブラウン管テレビ が一般だった
p 大きくて重く,奥行きがあり,30インチでも超大型
u なぜか???
u 赤のLED,緑のLEDはあったけど,青がなかったから
p LEDは発光力に優れ,壊れにくく,反応が高速!!!
p なのでずっと使いたかったのだが,青がないので使えなかった
33
2014年 青色ダイオードの発明に関連し,
日本人の研究者がノーベル賞を受賞!
Slide 34
Slide 34 text
ついでに画像の切り替え
n 動画自体はパラパラアニメの要領
u 静止画を高速に切り替えていくことで動画にみせる
n 静止画の切り替えは超単純
u 全部のセルを同時に変更したいけど,セルの数だけ
信号線を用意しないといけないので大変…
p ケーブルが超太くなる…
u 信号線は基本的にはRGBの3本の線だけ
p 1セルずつ順番に更新していく
p セルを高速に 走査 することで
一瞬で切り替わっているように見える
34
この更新の早さを リフレッシュレート という
Slide 35
Slide 35 text
機械はどのように画像を表現するか
n フィルタ処理
u 各セルに数値処理することで,画像をぼかしたり,
逆に鮮明化したりする
35
ぼかし処理
隣接するセルの値と,対象セルの値を
平均するなど,何らかの処理
オリジナル
例によって「これ何の授業でしたっけ?」となってると思いますが,
CNNで必要になる知識なので耐えてください。
移動不変性
n 計算機から見ると,1ピクセルズレただけでも
全く別の画像…
u フィルタは画像全体の中から,あるパタンに合致する
パタンを探すので,このズレ問題に対し対応できる
u これが 移動不変性
p ただし,画像が回転していたりする場合はダメ
42
重複は 1セル だけ。
だから全然違う画像。
元画像 比較画像
画像1次元化の課題
n 画像のサイズは大きい…
u かなり古い iPhone7 の段階で,4000 x 3000 を越える
p 色の情報を加えると, 4000 x 3000 x 3 = 3,600万 !!
• つまり 入力のサイズが 3,600万行 なので,学習に超時間がかかる…
u 画像の特徴をうまく抽出し,もっと少ない情報で
表現できるようにしてあげないと,実用に耐えない
u CNN は その辺の工夫を行った NN の手法
47
n 畳み込みニューラルネットワーク とも
u 画像処理系に解く使われるDNN
p 基本的なアイデアは意外と古く,1979年に日本の研究者
福島邦彦 先生 が発表した ネオコグニトロン
u 畳み込み層 と プーリング(サンプリング)層 を交互に積層
49
CNN
CNN
先ほど見た画像の特徴抽出のこと。
フィルタのどのセルにどのくらい重みをつけるかがポイント
ダウンサンプリングのこと。
Max か 平均 か位しかないので学習要素はない
特徴を際立たせつつ,少ない情報で表現する…のを繰り返す
これにより,物体の識別などを上手く行えるNN
Slide 50
Slide 50 text
n 共通する特徴を抜き出してどうこう…?
u 本資料の最初の方で,イスを例に説明したとおり
u 大量データの中からうまく共通した特徴を見つけ出す
というのが,世界の記号化
n CNN = 画像の特徴をうまく捉えて記号化する
u 畳み込み と プーリング だけで できるのか??
u 残念,できない!!
p と,いうわけで CNNの話が もう少し続きます
50
CNN
CNN
Slide 51
Slide 51 text
畳み込みに関するパラメータ
n 畳み込み を 行う上でのいくつかパラメータ
u フィルタの数
p 1種類のフィルタだけで良い感じに特徴が出せる…ことは希
p 何種類かのフィルタを用意して処理する
u フィルタのサイズ
p 小さすぎる(たとえば1x1)だと特徴が引っかかりすぎ,
大きすぎると引っかからなすぎ,ちょうど良いサイズにする必要
u フィルタの移動幅
p 1セルずつずらしても良いが大きいと処理に時間も…
p フィルタのサイズ以下なら3セルなど一気に動かしても良い
51
CNN
CNN
(まれ)
Slide 52
Slide 52 text
n ここまででわかったこと
u CNN は 画像 から,何かの特徴を出せるらしい
p NN で 画像を扱うには サイズを減らして1次元にする必要
p 畳み込み で 特徴を探り, プーリング でダウンサンプリング
• ネコのヒゲを捉えるフィルタ,ネコの柄を捉えるフィルタ…
などなど,いろんな 畳み込み と圧縮を多段階で行う,ということ
n 最終的に欲しいもの
u 画像 の 特徴 というのが具体的に何なのか知りたい
p ネコの画像を沢山与えて学習させたとして,
未知画像を これはネコ,これはネコじゃない と識別させたい
52
CNN
CNN
Slide 53
Slide 53 text
n ここまでで良い感じに画像は圧縮できた
n あとは普通の 教師あり でよいので,
画像を1次元化し,教師画像に対応するラベルを
普通に学習させるだけでOK!
u 1次元化した画像 と NN を接続する層を 全結合層 という
53
CNN
CNN
Slide 54
Slide 54 text
まとめ
n 基本的には 画像 をうまく扱うための NN
u 写真から ネコ を検出する… みたいなことを実現
n ポイント
u 大きな画像をそのまま扱うのは大変なので圧縮する
p 畳み込み と プーリング で,特徴を捉えつつダウンサイジング
p 良い感じにダイエットしたところで,普通に学習させる
u NN が 活躍するのは 畳み込み と 全結合 の2カ所
p 畳み込み 部分では,良い感じに特徴抽出できるよう学習
p 全結合 部分では,特徴とラベルの対応を学習
54
CNN
CNN
Slide 55
Slide 55 text
残る課題
n 特徴抽出に際して図形の平行移動は対応可能
n しかし,ちょっと回転したりすると対応不能…
n データの与え方の方を工夫する
u 1枚の画像を数度ずつ回転させて複数回与えたり,
おなじく拡大・縮小させて与えたり,反転したり,
ちょっとゆがめてみたり,一部を隠したり…
u どこまでも手間のかかることを…
p これだけでも超面倒だし,これを計算させるわけなので,
ひたすらめちゃめちゃ手間がかかる。
55
CNN
CNN
Slide 56
Slide 56 text
その後
n 毎度ながら,実はまだまだ続きが…
n ここまで見てきた CNN に DNN の要素は…?
u もちろん使える部分は多数あったが,基礎のアイデアが1979年に
あったことからも明らかに,DNNじゃなくても良い
u つまり,CNN 自体は DNN の一部分というわけではない
n DNN の 成功を受けて,より DNN を活用した発展系も
u AlexNet, VGG, GoogLeNet, ResNet などなど
56
CNN
CNN