Slide 1

Slide 1 text

ディープラーニング シリーズAI入門 深層学習 前編:自己符号化からCNNまで © FSCjJh3NeB 2021 (※ 但し画像を除く)

Slide 2

Slide 2 text

オートエンコーダ:自己符号化 n ちょっと変わったパーセプトロン u パーセプトロンは 教師あり学習 p 教師 と 出力 の間の差(誤差)を 最小化するよう 重み を学習 u 教師データに入力データをそのまま使う オートエンコーダ x1 xi xI … … … y1 yk yK … … = x1 = xi = xI 可視層 可視層 隠れ層 2

Slide 3

Slide 3 text

何の意味が??? n 隠れ層の素子数を,可視層より減らすのがポイント u もとの入力を,より少ないデータで表現できる p なんらか共通する要素を抽出するということ • たくさんの画像から,“りんご” に共通する情報を抜き出すイメージ p データの 圧縮 ともいえる 3

Slide 4

Slide 4 text

共通要素の抽出 001001001111010100111011100 101001001111010100111011110 001001001111010100111011000 011001001111010100111011101 011001001111010100111011111 水色部分はすべて共通なのだから,毎回記述する必要はない 一つ一つはことなるが,共通する因子を抜き出せれば, 共通部分は1回だけ記述すれば済むので情報量が減らせる! 4

Slide 5

Slide 5 text

共通要素の抽出 一つ一つはことなるが,共通する因子を抜き出せれば, 共通部分は1回だけ記述すれば済むので情報量が減らせる! 様々なイスに共通する因子にはイスの本質が隠れているはず 5

Slide 6

Slide 6 text

再び記号の話 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

Slide 23

Slide 23 text

逆誤差伝搬と勾配消失 問題はここ!!! f(x) は 活性化関数で,活性化関数にはシグモイド関数が使われるのだった とにかく,「なんか微分したやつの値が小さいのが問題らしい」と理解してればOK 「そうなんだ。シグモイド関数を微分したらそうなるんだね」くらいの気分でOK ※ 以前示したときと数式が微妙に違うのは無視する 微分というのは 各点における傾きなので 微分値を求めると… Max で 0.25 シグモイド関数 シグモイド関数を微分したやつ 23

Slide 24

Slide 24 text

活性化関数の工夫 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で必要になる知識なので耐えてください。

Slide 36

Slide 36 text

機械はどのように画像を表現するか n フィルタ処理 u フィルタとは,あるセルを中心に周りのセルの数値を どのように変化させるか表したもの 36 1 ぼかし処理用フィルタ 周りのセルの値の0.5倍と,自分の値を加算し, 置き換える…というフィルタ オリジナル 0.5 0.5 0.5 0.5 1 0.5 0.5 0.5 0.5 白のパネルは全部 0 とする

Slide 37

Slide 37 text

機械はどのように画像を表現するか n フィルタ処理 u フィルタとは,あるセルを中心に周りのセルの数値に 基づいて,セル値をどのように変化させるか表したもの 37 0.5 0.5 0.5 0.5 1 0.5 0.5 0.5 0.5 0.5 周囲のセルの値に0.5をかけて合計したものと, 自分のセルの値を足したものを,新たなセル値にする 黒のパネルは 1,白は全部 0 とする 端のパネルは処理できないので落とす

Slide 38

Slide 38 text

フィルタを用いた特徴抽出 n フィルタを使うと,画像の特徴を際立たせることも 38 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 2 3 3 2 4 2 3 1 3 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 ※ カーネルの各セル値は対象により最適値が異なる = 学習の余地がある 処理結果を 特徴マップ という このフィルタを カーネル,フィルタの適用を 畳み込み という

Slide 39

Slide 39 text

フィルタを用いた特徴抽出 n フィルタを使うと,画像の特徴を際立たせることも 39 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 2 3 3 2 4 2 3 1 3 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 このフィルタを カーネル,フィルタの適用を 畳み込み という ※ カーネルの各セル値は対象により最適値が異なる = 学習の余地がある 処理結果を 特徴マップ という

Slide 40

Slide 40 text

フィルタを用いた特徴抽出 n フィルタを使うと,画像の特徴を際立たせることも 40 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 2 3 3 2 4 2 3 1 3 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ※ カーネルの各セル値は対象により最適値が異なる = 学習の余地がある 処理結果を 特徴マップ という このフィルタを カーネル,フィルタの適用を 畳み込み という

Slide 41

Slide 41 text

畳み込みの意味 n 画像の特徴を際立たせる ← パタン抽出器として機能するということ 41 1 0 1 0 1 0 1 0 1 2 3 3 2 4 2 3 1 3 画像全体の中から, このXっぽい部分を探すと… 真ん中と,左上,右上,右下 あたりには合致しそうな箇所が! うまくフィルタを設計してあげることができれば, この画像には,こんな特徴がこのくらいある…ということが表現できる ひとつの画像にもいろいろな特徴があるので, 複数のフィルタを使って特徴をつかむ &

Slide 42

Slide 42 text

移動不変性 n 計算機から見ると,1ピクセルズレただけでも 全く別の画像… u フィルタは画像全体の中から,あるパタンに合致する パタンを探すので,このズレ問題に対し対応できる u これが 移動不変性 p ただし,画像が回転していたりする場合はダメ 42 重複は 1セル だけ。 だから全然違う画像。 元画像 比較画像

Slide 43

Slide 43 text

プーリング n 単に情報を減らすダウンサンプリングも似た感じで可能 43 0 -9 -3 1 3 0 -4 5 -1 2 2 9 0 8 2 4 3 5 8 9 -1 2 0 8 このダウンサンプリング処理を プーリング という Maxプーリングという処理だと, 周囲のセル中,最大のもので置換 4つのセルを1つにするとして, Max は 8 なので,8とする プーリング は フィルタと違い,決められた演算を行うのみ

Slide 44

Slide 44 text

プーリング 44 元画像(800x600) 4x4平均 8x8平均 16x16平均 16x16(1/16)でも,意外と元の画像はなんとなく理解できる & プーリングも移動不変性に効果がありそうなことが分かる

Slide 45

Slide 45 text

NNでどうやって画像を扱うか n NNはベクトルは扱えるが… u これまで見てきた例はすべて1次元ベクトル u 画像は2次元,色も加えると3次元ベクトル u どのようにして扱うか? p 考えられる2つの戦略 • NNを多次元(最低2次元)でも扱えるようにする • 画像の方を1次元にする 45

Slide 46

Slide 46 text

NNでどうやって画像を扱うか 46 C1 C2 C3 B1 B2 B3 A1 A2 A3 C1 B1 A1 A2 C3 B3 これを… … こうする A1B A1G A1R B1R C3B C3G … 色情報があれば さらに分解

Slide 47

Slide 47 text

画像1次元化の課題 n 画像のサイズは大きい… u かなり古い iPhone7 の段階で,4000 x 3000 を越える p 色の情報を加えると, 4000 x 3000 x 3 = 3,600万 !! • つまり 入力のサイズが 3,600万行 なので,学習に超時間がかかる… u 画像の特徴をうまく抽出し,もっと少ない情報で 表現できるようにしてあげないと,実用に耐えない u CNN は その辺の工夫を行った NN の手法 47

Slide 48

Slide 48 text

フィルタとNN 48 ここで,単純パーセプトロン再び 単純パーセプトロンは,入力に重みをかけて加算し, 活性化関数を通して出力するモデル これは先ほど見たフィルタそのもの!! あるセルと,周囲のセルの値が入力されたときに フィルタの値(重み)をかけて加算していた 単純パーセプトロンじゃなくすればさらに高精度に特徴を得られる

Slide 49

Slide 49 text

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