Copyright (c) Brains Consulting, Inc. Japan
Deep Learningについて
2017年12月1日
ブレインズコンサルティング株式会社
JUAS ビジネスデータ研究会 AI分科会
Copyright (c) Brains Consulting, Inc. Japan
0.Agenda
1
1. アウトライン
2. 多層パーセプトロン(MLP)
~ 従来のニューラルネットワーク
3. オートエンコーダ(AE)
~ わかりやすいディープラーニング
4. 再帰的ニューラルネットワーク(RNN)
~ 音声認識で研究されているディープラーニング
5. 畳み込みニューラルネットワーク(CNN)
~ 画像認識でよく使われるディープラーニング
6. まとめ
7. Q&A
Copyright (c) Brains Consulting, Inc. Japan
1.アウトライン
2
• 本発表の概要
– ディープラーニングの主な手法について紹介
• 代表的な手法であるMLP, AE, CNN, RNNを紹介
• 実用化が進んでいるCNNは、具体性を重視して解説し、
• MLP, AE, RNNについては、ポイント絞って概説する
– まとめとQ&A
Copyright (c) Brains Consulting, Inc. Japan
2.多層パーセプトロン(MLP)
3
多層パーセプトロン
(MLP)
Copyright (c) Brains Consulting, Inc. Japan
MLPの概要
4
• 多層パーセプトロン(MLP)とは
– 神経細胞を模したパーセプトロンを多層化したニューラルネットワーク
入力層 中間層
(隠れ層)
出力層
𝑘=1
𝐾 𝑛
𝑓𝑛
𝑤𝑗,2
𝑛
𝑤𝑗,𝑘
𝑛
𝑤𝑗,3
𝑛
𝑤𝑗,1
𝑛
𝑤𝑗,𝐾
𝑛
𝑦1
𝑛−1
𝑦2
𝑛−1
𝑦 𝑘
𝑛−1
𝑦3
𝑛−1
𝑦 𝐾
𝑛−1
𝕪 𝑛−1 = (𝑦1
𝑛−1
, … , 𝑦 𝐾
𝑛−1
)
𝕨𝑗
𝑛
= (𝑤𝑗,1
𝑛
, … , 𝑤𝑗,𝐾 𝑛
𝑛
)
𝐾 𝑁個𝐾0個 𝐾1個
𝑦𝑙
𝑛
𝑦𝑗
𝑛
: = 𝑓𝑛
𝑘=1
𝐾 𝑛−1
𝑤𝑗,𝑘
𝑛
𝑦 𝑘
𝑛−1
+ 𝑏𝑗
𝑛
𝑗:層番号
𝑙:ノード番号
𝑛
𝐾 𝑛個
:
:
: :
:𝑗
: :
𝑖
ユニット
𝑛 − 1
𝐾 𝑛−1個
Copyright (c) Brains Consulting, Inc. Japan
フォワードパゲーション
5
• フォワードパゲーション
– データを入力してユニット(ニューロン)を活性化を模した計算
入力層 中間層
(隠れ層)
出力層
𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個
:
:
: :
:𝑙
: :
𝑘
活性化
𝕪 𝑛: = 𝑓𝑛 𝑊 𝑛 𝕪 𝑛−1 + 𝕓 𝑛
𝕪 𝑛
= 𝑓𝑛 𝑊 𝑁
𝑓𝑛−1 ⋯ 𝑓1 𝑊1
𝕪0
+ 𝕓1
⋯ + 𝕓 𝑁
ここで、𝕪0
は、入力ベクトルで、データ
テーブルの1行に相当する。
𝕪 𝟎
から順番に活性化していく。
𝑓𝑛は、活性関数と呼ばれ、 中間層で
はsigmoid, tanh, ReLu等が利用され
る。出力層に出力する活性化関数は、
クラス分類ではsoftmaxが利用され
る。
𝑛
𝑛 − 1
𝕪0
𝕪 𝑁
Copyright (c) Brains Consulting, Inc. Japan
ニューラルネットワークの学習
6
• 確率的勾配降下法(SGD)
– ニューラルネットワークでは、勾配情報を使って学習(修正)する
– コスト関数𝐸の最小化が目的である
𝐸:コスト関数
𝑤𝑗,𝑖
𝑛
:第n層の各重み
𝜕𝐸
𝜕𝑤 𝑗,𝑖
𝑛 :第n層の各重みに対
する傾き(勾配の1次元分)
【重みの学習】
𝑤𝑗,𝑖
𝑛
⟵ 𝑤𝑗,𝑖
𝑛
− 𝛼
𝜕𝐸
𝜕𝑤𝑗,𝑖
𝑛
𝛼は、学習率と呼ばれ、0.0~1.0の間で
指定する。
自動微分可能なライブラリ(Theano,
Tensorflow等)では、以下のような行列
で計算できる。
𝑊 𝑛
⟵ 𝑊 𝑛
− 𝛼𝛻𝐸 𝑊 𝑛
【バイアスの学習】
重みの学習と同様に更新する。
𝑏𝑗
𝑛
⟵ 𝑏𝑗
𝑛
− 𝛼
𝜕𝐸
𝜕𝑏𝑗
𝑛
𝕓 𝑛 ⟵ 𝕓 𝑛 − 𝛼𝛻𝐸 𝕓 𝑛
−𝛼
𝜕𝐸
𝜕𝑤 𝑗,𝑖
𝑛 :傾きの逆方向に補正す
ることで、局所最小値(勾配が
0 )の方向に重みを修正する
Copyright (c) Brains Consulting, Inc. Japan
バックプロパゲーション
7
• バックプロパゲーション (誤差逆伝播法)
– コスト関数をより小さくするように、重みを後ろから修正していく学習法
入力層 中間層
(隠れ層)
出力層
𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個
:
:
: :
:𝑙
: :
𝑘学習
(重みを修正)
【誤差𝛿の逆伝播】
𝜹𝒋
𝒏
≔
𝜕𝐸
𝜕𝑢𝑗
𝑛
=
𝑘=1
𝐾 𝑛
𝜹 𝒌
𝒏+𝟏
𝑤 𝑘,𝑗
𝑛+1
𝑓𝑛
′ 𝑢𝑗
𝑛
ここで、𝑢𝑗
𝑛
は、活性化関数𝑓の入力変数
(ユニットjの入力活性量)で、次式で
与える。
𝑢𝑗
𝑛
≔
𝑖=1
𝐾 𝑛
𝑤𝑗,𝑖
𝑛
𝑦𝑖
𝑛−1
+ 𝑏𝑗
𝑛
重み、バイアスに対する勾配は、次式
になる。
𝜕𝐸
𝜕𝑤 𝑗,𝑘
𝑛 = 𝜹𝒋
𝒏
𝑦 𝑘
𝑛−1
,
𝜕𝐸
𝜕𝑏 𝑗
𝑛 = 𝜹𝒋
𝒏
後ろの層の誤差 𝜹𝒋
𝒏+𝟏
を使って対象層の誤差
𝜹𝒋
𝒏
を計算(誤差逆伝播)し、𝜹𝒋
𝒏
を使って、
重み、バイアスを再帰的に修正する。
𝑛
𝑛 − 1
※ バイアスの修正も、𝜹𝒋
𝒏
を使って同様に修正していく
𝜹𝒋
𝒏+𝟏
𝜹𝒋
𝒏
Copyright (c) Brains Consulting, Inc. Japan
勾配消失問題
8
• 勾配消失問題 (注:勾配が爆発する問題もある)
– 逆に辿るほど、修正に使う誤差𝜹𝒋
𝒏
(つまり勾配𝛻𝐸 𝑊 𝑛
,𝛻𝐸 𝕓 𝑛
)が消失していく
入力層 中間層
(隠れ層)
出力層
𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個
:
:
: :
:𝑙
: :
𝑘学習
(誤差が減衰)
【誤差𝛿の消失】:概説
(例)𝑓𝑛
′
:sigmoid
𝜹𝒋
𝒏
=
𝑘=1
𝐾 𝑛
𝜹 𝒌
𝒏+𝟏
𝑤 𝑘,𝑗
𝑛+1
𝑓𝑛
′ 𝑢𝑗
𝑛
≈
1
4
𝐾 𝑛 𝑤 𝑎𝑣𝑔
𝑛+1 𝜹 𝒂𝒗𝒈
𝒏+𝟏
つまり、ユニット数𝐾 𝑛に対し、
1
4
𝐾 𝑛 𝑤 𝑎𝑣𝑔
𝑛+1 < 1
の時、𝜹 𝒎𝒂𝒙
𝒏 < 𝜹 𝒂𝒗𝒈
𝒏+𝟏
𝑛
𝑛 − 1
活性化関数としてsigmoidを使うとき、
𝑤 𝑎𝑣𝑔
𝑛+1
を、0~1で初期化することが多いた
め、比較的成立しやすい条件である
Copyright (c) Brains Consulting, Inc. Japan
そして、ディープラーニングへ
9
• プレトレーニング
– 層間の結合毎に学習することで勾配消失を回避する手法
入力層 中間層
(隠れ層)
出力層
𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個
:
:
: :
:𝑙
: :
𝑘
𝑛
𝑛 − 1
隣り合う層単位で、学習を行うことで
入力層に近い層の勾配消失を回避し、
入力層側の学習が進むようにする
ディープラーニングでは、プレト
レーニングを行い、学習不足を回
避することで、精度向上を図る手
法がある。(オートエンコーダ、
RBM)
Copyright (c) Brains Consulting, Inc. Japan
3.オートエンコーダ(AE)
10
オートエンコーダ
(AE)
Copyright (c) Brains Consulting, Inc. Japan
AEの概要
11
• オートエンコーダ(AE)とは
– 出力が入力を再現するように学習させるニューラルネットワーク
入力層
中間層
(隠れ層)
出力層
𝐾個𝐾個
𝐾′
個
(𝐾′
< 𝐾)
𝕩 𝕩
𝑊
(0,1,1,0,1) (0,1,1,0,1)
𝕪 = (0.9,0.7,0.3)
𝑊′𝕦 = (123,79, −10)
𝑓1
𝑓1
𝑓1
0
1
1
0
1
0
1
1
0
1
𝑊11
𝑊12
𝑊13
𝑊14
𝑊15
𝕩 ≒ 𝕩
【出力≒入力】:入力の再現を学習
𝕩 ≔ 𝑓2 𝑊′ 𝑓1 𝑊𝕩 + 𝕓 + 𝕓′
教師データを入力ベクトル𝕩として学習を行う。
(𝕓, 𝕓′
は、中間層、出力層のバイアス・ベクトル)
コスト関数を、二乗誤差とした場合は、次式で表される。
𝐸 ≔
𝑛=1
𝑁
𝕩 𝑛 − 𝕩 𝑛
2
ここで、𝕩 𝑛 は、トレーニング用データの𝑛番目のレコー
ドを指す。
この𝐸(誤差)を極小化する𝑊, 𝑊′
, 𝕓, 𝕓′
をSGD等のアルゴ
リズムで学習する。
𝑓2
𝑓2
𝑓2
𝑓2
𝑓2
Copyright (c) Brains Consulting, Inc. Japan
次元圧縮
12
• エンコードとデコード
– 中間層のユニット数を少なくすることで、中間層で次元圧縮
入力層
中間層
(隠れ層)
出力層
𝐾個𝐾個
𝐾′
個
(𝐾′
< 𝐾)
𝕩 𝕩
𝑊
(0,1,1,0,1) (0,1,1,0,1)
𝕪 = (0.9,0.7,0.3)
𝑊′𝕦 = (123,79, −10)0
1
1
0
1
0
1
1
0
1
𝕩 ≒ 𝕩
【エンコード】:入力層 → 中間層
𝕪 ≔ 𝑓1 𝑊𝕩 + 𝕓
【デコード】 :中間層 → 出力層
𝕩 ≔ 𝑓2 𝑊′𝕪 + 𝕓𝑓1
𝑓1
𝑓1
𝑓2
𝑓2
𝑓2
𝑓2
𝑓2
左の例では、5次元(入力層のユニット数)の入力
データを、3次元(中間層のユニット数)に圧縮
(エンコード)し、中間層の3次元データを、5
次元(出力層のユニット数) =入力層の次元に復
元(デコード)する。
中間層のユニット数を入力層のユニット数よりも大きく
すると、 𝕪 = 𝑾𝕩 + 𝕓 = 𝕩 (恒等変換)を学習し得るため、
次元圧縮できるとは限らない。そのため、次元圧縮する
場合、中間層のユニット数は、入力層よりも小さくする。
Copyright (c) Brains Consulting, Inc. Japan
PCAとの関係
13
• オートエンコーダとPCA(主成分分析)
– 活性化関数を使用しないオートエンコーダは、PCAと同等
入力層
中間層
(隠れ層)
出力層
𝐾個𝐾個
𝐾′
個
(𝐾′
< 𝐾)
𝕩 𝕩
𝑊
(0,1,1,0,1) (0,1,1,0,1)
𝕪 = (0.9,0.7,0.3)
𝑊′𝕦 = (123,79, −10)0
1
1
0
1
0
1
1
0
1
𝕩 ≒ 𝕩
【PCA】:次元削減の1手法
PCAは、訓練データ 𝕩 𝑛 の共分散行列Σ:
Σ ≔
1
𝑁
𝑛=1
𝑁
𝕩 𝑛 − 𝕩 𝕩 𝑛 − 𝕩 ⊺
の固有ベクトルℙ 𝑘を軸(1座標)とした主成分に分解す
る。(PCAは、固有値分解)
この固有値分解は、最小化問題
min
𝐴,𝕞
𝑛=1
𝑁
𝕩 𝑛 − 𝕞 − 𝐴⊺ 𝐴 𝕩 𝑛 − 𝕞 2
の解と一致し、 𝐴, 𝕞 = (𝑃, 𝕩) である。ここで、P は、主
成分ℙ 𝑘を並べた行列である。
これは、コスト関数Eを二乗誤差としたオートエンコーダ
の最小化問題と一致する。(𝑊 = 𝐴, 𝕓 = 𝐴𝕞, 𝑊′
=
𝐴⊺
, 𝕓′
= −𝕞, 𝑓1, 𝑓2:恒等写像と対応させる。)
Copyright (c) Brains Consulting, Inc. Japan
• 積層オートエンコーダ(Stacked Auto-Encoder)
– 入力層側からオートエンコーダを積み上げながら学習する手法
積層オートエンコーダ(SAE)
14
学
習
学
習
活
性
化
学
習
学
習
入
力
入
力
学習済の重み、
バイアスを使っ
て活性化
学
習
学
習
活
性
化
入
力
活
性
化
学習済の重み、
バイアスを使っ
て活性化
学習
各結合毎に学習した後、通
常のMLP同様にバックプロ
パゲーション等で学習
入
力
活性化
①
②
③ ④
⑤
①~④をプレトレーニング、
⑤をファインチューニングと呼ぶ
Copyright (c) Brains Consulting, Inc. Japan
4.再帰的ニューラルネットワーク(RNN)
15
再帰的
ニューラルネットワーク
(RNN)
Copyright (c) Brains Consulting, Inc. Japan
• リカレントニューラルネットワーク
– 層間の時間的影響をモデル化したニューラルネットワーク
– データレコードの順番によって、結果が変わるモデルに適す
• 音、音声、単語列、等
– 時間方向に層を展開すると、深層ニューラルネットワークとみなせる
(構成例)(構成例)
RNNの概要
16
RNN
②
③
𝑡 = 1
① ①
② ②
③ ③
𝑡 = 2 𝑡 = 3
…
時間方向の展開図
①
Copyright (c) Brains Consulting, Inc. Japan
• RNNの種類 (代表種の紹介)
(構成例)
Fully
RNNの種類
17
No. 名称 概要
1. Fully Recurrent Network 自身を含めたすべてのユニットで有向結合
2. Hopfield Network 自身を除くユニットで対称な有向結合
3. Elman Networks 中間層(過去)から中間層(未来)の時間方向に有効結合
4. Jordan Networks 出力層(過去)から中間層(未来)の時間方向に有効結合
5. Echo State Network 中間層がランダムな疎結合(1%程度の結合、等)
6. Long Short Term Memory Network 特殊な隠れノードを持つネットワーク
(構成例)
Hopfield
𝑊12
𝑊21
𝑊23
𝑊32
𝑊13
𝑊31
𝑾𝒊𝒋 = 𝑾𝒋𝒊
(𝑾𝒊𝒊 = 𝟎)
(構成例)
Jordan
(構成例)
ESN
(構成例)
LSTM
∫ ∫ ∫ ∫
𝜫 𝜫
𝜫
𝚺
忘却
ゲート
Copyright (c) Brains Consulting, Inc. Japan
• Elman Networks
– 音声認識では、主にElman Networks タイプのRNNが広く利用される
– 1つ前の時刻の隠れ層の出力を現在時刻の隠れ層への入力とする
– 一般に、RNNと言えば、Elman Networks タイプを指すことも多い
(構成例)
時間方向の展開図
音声認識におけるRNN
18
(構成例)
Elman
𝑡 = 1 𝑡 = 2 𝑡 = 3 𝑡 = T
【定式化】 𝑇:入力系列の長さ(1文の音声特徴ベクトル列、等), 𝑡 = 1, ⋯ , 𝑇 に対して、
𝑋𝑡 = [𝕩1, ⋯ , 𝕩 𝑡]:入力系列の時刻𝑡までの部分列とすると、以下のように式で表せる。
ℎ 𝑡 𝑋𝑡 ≔ 𝑓 𝑢 𝑡 𝑋𝑡
𝑢 𝑡 𝑋𝑡 ≔ 𝕓 + 𝑊1
𝕩 𝑡 + 𝑅ℎ 𝑡−1 𝑋𝑡−1
𝕪 𝑡:1-of-N 方式(正解ラベルの次元/ユニットのみ1, その他は0を出力)
𝑾 𝟏
𝑾 𝟐
𝑾 𝟏
𝑾 𝟐
𝑾 𝟏
𝑾 𝟐
𝑾 𝟏
𝑾 𝟐
𝑾 𝟏
𝑾 𝟐
𝑹
𝑹 𝑹 𝑹𝒉 𝟏 𝒉 𝟐 𝒉 𝟑
𝒉 𝑻
𝕩 𝟏 𝕩 𝟐 𝕩 𝟑
𝕩 𝑻
𝕪 𝟏 𝕪 𝟐 𝕪 𝟑
𝕪 𝑻
Copyright (c) Brains Consulting, Inc. Japan
• BPTT: Back Propagation Through Time
– 時間方向にネットワークを展開し、誤差逆伝播法で学習する。
(構成例)
RNNの学習
19
𝑾 𝟏
𝑾 𝟐
𝑹
Elman(3層の例)
𝒉 𝟏𝕩 𝟏 𝕪 𝟏
𝑾 𝟏
𝑾 𝟐
𝑹
𝒉 𝟐𝕩 𝟐 𝕪 𝟐
𝑾 𝟏
𝑾 𝟐
𝒉 𝑻𝕩 𝑻 𝕪 𝑻
⋮ ⋮
【コスト関数】:交差エントロピー
𝐸 ≔
𝑛=1
𝑁
𝐸 𝑛 , 𝑤ℎ𝑒𝑟𝑒 𝐸 𝑛 ≔
𝑡=1
𝑇
𝐸 𝑛,𝑡
𝐸 𝑛,𝑡 ≔ − log ℎ 𝑡,𝑞 𝑋 𝑛
ここで、𝑁:入力系列(文等)の数、𝑋 𝑛は、𝑛番目の入力系列で
ある。 𝑞は、系列𝑛の時刻𝑡のラベル(インデックス)である。
【Rの勾配】: 𝑻ステップ未来の勾配情報が必要
𝛻𝐸 𝑛 𝑅 =
𝑡=0
𝑇−1
𝜕𝐸 𝑛,𝒕+𝟏
𝜕𝑢 𝒕+𝟏,𝑗
ℎ 𝑡,𝑘 𝑋𝑡
𝑗,𝑘
𝜕𝐸 𝑛,𝒕
𝜕𝑢 𝒕,𝑗
=
𝑖=1
I
𝑤𝑗,𝑖
2 𝜕𝐸 𝑛+1,𝑡
𝜕𝑢 𝑡,𝑗
+
𝑘=1
K
𝑟𝑗,𝑘
𝜕𝐸 𝑛,𝒕+𝟏
𝜕𝑢 𝒕+𝟏,𝑗
𝑓′
𝑢 𝑡,𝑗 𝑋𝑡
𝑻が大きい系列は、勾配消失が発生し得る
→LSTMでは、特殊な隠れノードを用いて解消
𝑲個I個
Copyright (c) Brains Consulting, Inc. Japan
自然言語処理への応用
20
• Seq to Seq (RNNのみによる機械翻訳)
– 英語を入力として、フランス語を出力するLSTM
– 英語を逆順に入力することで長文にも有効
• LSTMは、記録の制限があるため、長文には向かないと予想されていた
引用:「Sequence to Sequence Learning with Neural Networks」
http://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf
Copyright (c) Brains Consulting, Inc. Japan
5.畳み込みニューラルネットワーク(CNN)
21
畳み込み
ニューラルネットワーク
(CNN)
Copyright (c) Brains Consulting, Inc. Japan
目次
22
1. 畳み込みニューラルネットワーク(CNN)とは
2. CNNの処理の流れ
3. 画像データの基礎
4. 畳み込み層とは
5. プーリング層とは
6. 全結合層とは
7. 実例紹介
8. ディープラーニング向けフレームワークの紹介
9. まとめ
Copyright (c) Brains Consulting, Inc. Japan
畳み込みニューラルネットワーク(CNN)とは
23
 畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)は、
主に画像認識に応用される順伝搬型ネットワークである。入力層と出力層の間に
複数の畳み込み層とプーリング層を交互に並べた多層のニューラルネットワーク
である。
 畳み込み層:画像上の各位置ごとに特徴抽出を行う(フィルタ処理)
 プーリング層:局所的な平行移動に対して不変な出力を行う
 従来の画像認識では、さまざまな特徴抽出アルゴリズムが人手により設計・構
築されてきた。これらの特徴抽出は、職人技によるところが大きい。精度やス
ピード向上のボトルネックと効率化に向けた自動化の目的から、人手を介さず
機械にデータから特徴を抽出させる手法として注目されている。
Copyright (c) Brains Consulting, Inc. Japan
CNNの処理の流れ
24
 CNNでは、入力を2次元ベクトルのままで特徴抽出を行い、最終的に1次元ベクト
ル化して全結合層に渡す。つまり、全結合層に前処理工程が加わったものと考え
ることができる。
CNN
…
…
……
…
…
…
…
…
…
一
次
元
ベ
ク
ト
ル
に
変
換
…
…
…
全結合層畳み込み層+プーリング層
𝑾 𝟏
𝑾:フィルタの係数
𝒙 :インプット
𝜽 :バイアス
𝑾 𝟐
ぶ
出力テキスト
入力画像
Copyright (c) Brains Consulting, Inc. Japan
特徴量の自動抽出
25
 全結合層では、入力 (2次元の画像データ) を 1次元のベクトルとして扱う。そ
のため、入力画像の形状が同一であっても、その位置がずれているとまったく別
のデータになる。その結果、このような入力に対しては誤判別や過学習が発生す
ることがある。
[0, 0, 1, 0, 0, 0, 1, 1, 0, 0, …
[0, 0, 0, 1, 0, 0, 0, 1, 1, 0, …
25の要素を持つベクトル
Copyright (c) Brains Consulting, Inc. Japan
画像データの構造
26
画素
R G B R G B
上記例ではRGBの値はそれぞれ 8bitで表される。 つまり、一つの
画素(ピクセル)は 8 × 3 = 24bitとなる。
Copyright (c) Brains Consulting, Inc. Japan
画像データの構造
27
R G
B
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:畳み込みとは
28
 畳み込みは、画像の局所的な特徴抽出処理をする。つまり、画像とフィルタ間で
定義される積和計算と考えることができる。
 適当な大きさの領域に含まれる各値を重み付けして足し合わせる。つまり「畳み
込み = フィルタ」となる。畳み込みによって、画像の平滑化やエッジ検出 (一次
微分、二次微分) 等の処理がされる。
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
× =
79 80 81 79 79
82 81 79 75 81
85 83 77 72 99
79 77 77 79 112
73 71 73 89 142
フィルタ
入力画像 出力画像(特徴マップ)
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:畳み込みとは
29
 畳み込みは、画像の局所的な特徴抽出処理をする。つまり、画像とフィルタ間で
定義される積和計算と考えることができる。
 適当な大きさの領域に含まれる各値を重み付けして足し合わせる。つまり「畳み
込み = フィルタ」となる。畳み込みによって、画像の平滑化やエッジ検出 (一次
微分、二次微分) 等の処理がされる。
77 80 82
83 78 80
87 82 81
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
× 79
=
入力画像 フィルタ 出力画像
77 x 0.01 + 80 x 0.08 + 82 x 0.01 + 83 x 0.08 + 78 x 0.62 + 80 x 0.08
+ 87 x 0.01 + 82 x 0.08 + 81 x 0.01 = 79
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
30
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
77 x 0.01 + 80 x 0.08 + 82 x 0.01 + 83 x 0.08 + 78 x 0.62 + 80 x 0.08
+ 87 x 0.01 + 82 x 0.08 + 81 x 0.01 = 79
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
31
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79 80
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
80 x 0.01 + 82 x 0.08 + 78 x 0.01 + 78 x 0.08 + 80 x 0.62 + 83 x 0.08
+ 82 x 0.01 + 81 x 0.08 + 80 x 0.01 = 80
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
32
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79 80 81
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
82 x 0.01 + 78 x 0.08 + 70 x 0.01 + 80 x 0.08 + 83 x 0.62 + 82 x 0.08
+ 81 x 0.01 + 80 x 0.08 + 74 x 0.01 = 81
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
33
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79 80 81 79
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
78 x 0.01 + 70 x 0.08 + 82 x 0.01 + 83 x 0.08 + 82 x 0.62 + 77 x 0.08
+ 80 x 0.01 + 74 x 0.08 + 75 x 0.01 = 79
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
34
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79 80 81 79 79
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
70 x 0.01 + 82 x 0.08 + 82 x 0.01 + 82 x 0.08 + 77 x 0.62 + 94 x 0.08
+ 74 x 0.01 + 75 x 0.08 + 112 x 0.01 = 79
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタの走査
35
77 80 82 78 70 82 82
83 78 80 83 82 77 94
87 82 81 80 74 75 112
87 87 85 77 66 99 151
84 79 77 78 76 107 162
86 72 70 72 81 151 166
78 72 73 73 107 166 170
79 80 81 79 79
82
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
入力画像 出力画像
 一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。
83 x 0.01 + 78 x 0.08 + 80 x 0.01 + 87 x 0.08 + 82 x 0.62 + 81 x 0.08
+ 87 x 0.01 + 87 x 0.08 + 85 x 0.01 = 82
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタのサイズ
36
 入力画像が「256x256画素」の場合、「3x3 画素」のファイルは、おおよそ下記
のようなサイズとなる 。
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタ(畳み込み)の効果
37
×
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
-1/8 -1/8 -1/8
-1/8 2 -1/8
-1/8 -1/8 -1/8
×
=
=
出力画像
平滑化(ぼかし、ノイズ除去)をする
入力画像
フィルタ
鮮鋭化(シャープ)をする
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタ(畳み込み)の効果
38
×
1 0 -1
2 0 -2
1 0 -1
1 2 1
0 0 0
-1 -2 -1
×
=
=
出力画像
縦方向のエッジを検出する
入力画像
フィルタ
横方向のエッジを検出する
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタ(畳み込み)の効果
39
×
1 0 -1
2 0 -2
1 0 -1
1 2 1
0 0 0
-1 -2 -1
×
=
=
出力画像
入力画像
縦方向のエッジを検出する
横方向のエッジを検出する
フィルタ
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:フィルタ例
40
畳み込み層のフィルタ例
(出典:INRIAデータセット、フィルタサイズ:9x9)
1 0 -1
2 0 -2
1 0 -1
196 128 64
255 128 0
196 128 64
フィルタから画像への
変換例
画像化
正規化
Copyright (c) Brains Consulting, Inc. Japan
 画像の基本的な特徴(エッジや勾配、ぼかし具合など)を抽出するための、カー
ネルの適切な重み付けを学習することができる。
 ネットワークが十分な深さの畳み込み層を持っていれば、前の層における特徴の
組み合わせを学習される。前述のエッジ・勾配・ぼかし具合といった基本的な構
成要素が、後ろの層では目や鼻、髪などの具体的なパターンとなる。
畳み込み層:中間層の出力例
41
中間層(畳み込み層+プーリング層)での出力例
(引用:【連載第1回】ニューラルネットの歩んだ道、ディープラーニングの
登場で全てが変わった)
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:画像フィルタ処理の注意点
42
 画像からフィルタがはみ出すような位置に重ねることはできない。
77 80 82
83 78 80
87 82 81
0.01 0.08 0.01
0.08 0.62 0.08
0.01 0.08 0.01
×
77 80 82
83 78 80
87 82 81
入力画像
入力画像
フィルタ
フィルタ
入力画像からはみ出た部分
は画素値がないために計算
できない
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:畳み込み処理の注意点
43
 画像にフィルタ処理を繰り返すたびに、画像が小さくなってしまう。
81 80 74 75 112
85 77 66 99 151
77 78 76 107 162
70 72 81 151 166
73 73 107 166 170
77 81 102
75 89 117
78 101 131
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
77 81 102
75 89 117
78 101 131
94
入力画像
入力画像
出力画像
出力画像
フィルタ
フィルタ
1回目
2回目
×
×
=
=
3x3のフィルタ
で処理した場合、
周囲1画素ずつ
画像が小さくな
る
Copyright (c) Brains Consulting, Inc. Japan
畳み込み層:パディングとは
44
 パディングとは、画像の「ふち」を拡張して、出力画像のサイズが入力画像と同
じサイズになるようにするための処理である。
 下記例では、最も一般的であるゼロパディング(zero-padding)を示す。
0 0 0 0 0 0 0
0 81 80 74 75 112 0
0 85 77 66 99 151 0
0 77 78 76 107 162 0
0 70 72 81 151 166 0
0 73 73 107 166 170 0
0 0 0 0 0 0 0
35 51 51 64 48
53 77 81 102 78
51 75 89 117 92
49 78 101 131 102
32 52 72 93 72
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
× =
入力画像
出力画像
フィルタ
拡張部分
(オレンジ)
Copyright (c) Brains Consulting, Inc. Japan
プーリング層:プーリングとは
45
 プーリングとは、抽出特徴から認識に余分な情報を捨て、認識に必要な情報を
保ったままの表現に変換することである。
 サブサンプリングとも呼ばれる。
 プーリング層は通常、畳み込み層の直後に設置される。
 ユニット(画素)数を減らすため、結果として調整するパラメータを減らすこと
ができる。
 対象となる特徴量の画像内での位置が若干ずれている場合でも、プーリング層の
出力が不変となるようにする。
Copyright (c) Brains Consulting, Inc. Japan
プーリング層:プーリングとは
46
12 20 30 0
8 12 2 0
34 70 37 4
112 100 25 12
20 30
112 37
13 8
79 20
最大プーリング
(max pooling)
平均プーリング
(average pooling)
 処理自体は単純だが、多層の畳み込みネットの中で果たす役割や、プーリングの
種類と効果の違いなど、不明なことも残されている。
Copyright (c) Brains Consulting, Inc. Japan
プーリング層:ユニット数の削減
47
 プーリングサイズを2x2で実行した場合、縦、横のサイズが1/2となり、データ数
は1/4に圧縮される。
12 20 30 0
8 12 2 0
34 70 37 4
112 100 25 12
20 30
112 37
最大プーリング
Copyright (c) Brains Consulting, Inc. Japan
プーリング層:位置変動への不変性
48
 下記に示す「F」という文字の位置がずれている6x6の入力画像AとBに、プー
リングサイズ2x2の最大プーリングを実行した場合、出力画像は同じ結果とな
る。
 つまり、不変な特徴量が抽出されたと言える。
入力画像A 入力画像B出力画像
最大
プーリング
最大
プーリング
Copyright (c) Brains Consulting, Inc. Japan
全結合層:データの識別
49
 畳み込み層+プーリング層(特徴抽出部)にて抽出された特徴量を使って、その
画像がどのカテゴリに属するかを判断する、つまりパターン分類を行うのが後半
の全結合層(識別部)となる。
(引用:Y. LeCun, et.al. “Gradient-based Learning Applied to Document Recognition”, Proc. of The IEEE, 1998.)
畳み込み層+プーリング層
(特徴抽出部)
全結合層(識別部)
Copyright (c) Brains Consulting, Inc. Japan
活用事例:ABEJA「ABEJA PLATFORM」
50
 人工知能を活用した店舗解析プラットフォームである。実店舗にカメラ設置し、
取得したデータの解析部分に、ディープラーニングを応用した技術を利用してい
る。実際に店舗でも運用事例もあり、目玉賞品の売上比率が上昇するなどの成果
がでている。
(引用:ABEJA、「売れない理由」をAIで解析、繁盛店に、動画でわかるABEJA Platform for Retail)
Copyright (c) Brains Consulting, Inc. Japan
活用事例:Clarifai「Clarifai」
51
 画像や映像の中身を人工知能が解析するサービス。 AIが映っているオブジェクト
を認識し、テキストタグを付与する。 現在APIが利用でき、さまざまなサービス
への応用が期待されている。
(引用:Clarifai、AI分野で最注目のスタートアップ「Clarifai」創業者、30歳の野望)
Copyright (c) Brains Consulting, Inc. Japan
活用事例:Google DeepMind「AlphaGo」
52
 人類最強棋士を打ち破ったアルファ碁は、直感に優れたAI(深層学習)、経験に
学ぶAI(強化学習)、先読みするAI(探索)の3つのAI技術で支えられている。
 上記の中でCNNは、「次の一手」を決定するタスクで使われている。囲碁の
19x19路の盤面を入力とし、次の手を盤面のどこに打つかを決定している。
(引用:囲碁AI “AlphaGo” はなぜ強いのか?)
Copyright (c) Brains Consulting, Inc. Japan
まとめ
53
 CNNでは、畳み込みとプーリング処理を複数回行うことで、特徴量を自動抽出す
ることができる。つまり、人に依存していた処理を減らすことがきる。
 ディープラーニングの画像認識精度は、一部では、すでに人間を超えてしまって
いるとも言われている。しかしながら、医師の診断など、判断に万が一のことが
あっては危険なシステムについては、補助的な役割しか担うことができず、最終
判断は人間が行う必要がある。ただし、ここまでの成果に価値を見出すことがで
きれば、十分に実用化することができるはずである。
 ディープラーニングの仕組みを簡単に実装するためのライブラリ/フレームワーク
(Chainer、TensorFlow、Keras、Pytorchなど)が多数オープンソースとして公
開されており、自身の環境や用途に応じて利用することができるため、参入者に
とっての敷居は低い。
Copyright (c) Brains Consulting, Inc. Japan
6.まとめ
54
まとめ
Copyright (c) Brains Consulting, Inc. Japan
まとめ
55
• まとめ
– 従来のニューラルネットワークであるMLPは、多層化による勾配消失等の問
題があり、学習が進まなかったり収束しない等、精度に限界があった
– 積層オートエンコーダは、層の結合単位で学習することにより、MLPの欠点
を解消し、多層化によるメリットを獲得(オートエンコーダ単体では、非力)
– 畳み込みニューラルネットワークでは、画像処理の専門家が行ってきたフィ
ルタ処理を、機械に自動化させることで、特徴量抽出を自動学習・実現し、
人間の認識精度を超えるに至った。
– 一方で、医療等のミスが許されない分野での判断をさせることはできず、実
用上の現実解は、推奨、リコメンドにとどまっている。
– 再帰的ニューラルネットワークは、音声認識や機械翻訳等の時間軸を持つ入
力系列を処理するために研究が進められている。
Copyright (c) Brains Consulting, Inc. Japan
ディープラーニングのツール
56
No. 名称 言語 開発者 概説
1. Chainer Python PFN社
• Define by Run
• 計算グラフを書きやすい(デバッグしやすい)
• 参加者が世界的に少なめ(サードパーティの実装などほぼ無い)
2. CNTK
c++
python
Micrsoft社
• Define and Run
• コードは数式と似たような形で書くことができる
• 利用者が拡大中(当社調べ)
3. Keras Python
Google社の
François Chollet氏
• 圧倒的に直感的
• 利用者が多い
• tensorflow/Theano/CNTKの上位フレームワーク
• Define and Run
• 細かいことをしようとすると逆に面倒
4. Pytorch Python Facebook社
• Define by Run
• コードの書き方もチュートリアルレベルではChainerに酷似
• 利用者が拡大中
5. TensorFlow Python Google社
• Define and Run
• 記述に慣れが必要
• 多くの参加者(サードパーティのライブラリ、解説、利用例も多数)
参考サイト:
 【PyTorch、Chainer、Keras、TensorFlow】ディープラーニングのフレームワークの利点・欠点【2017年10月更新】
( http://s0sem0y.hatenablog.com/entry/2017/05/15/063753 )
 Microsoft の Deep Learning フレームワーク「CNTK」が Python 対応になって格段に使いやすくなってた話
( https://qiita.com/mamita/items/a99dead64a6447a76b67 )
 DeepLearningのフレームワーク比較( http://xkumiyu.hatenablog.com/entry/2017/09/30/010000 )
 Keras バックエンド速度比較 CNTK vs TensorFlow( https://qiita.com/T_Umezaki/items/e20f9eff11fc30c13795 )
Copyright (c) Brains Consulting, Inc. Japan
7.Q&A
57
Q&A
Deep Learningについて(改訂版)

Deep Learningについて(改訂版)

  • 1.
    Copyright (c) BrainsConsulting, Inc. Japan Deep Learningについて 2017年12月1日 ブレインズコンサルティング株式会社 JUAS ビジネスデータ研究会 AI分科会
  • 2.
    Copyright (c) BrainsConsulting, Inc. Japan 0.Agenda 1 1. アウトライン 2. 多層パーセプトロン(MLP) ~ 従来のニューラルネットワーク 3. オートエンコーダ(AE) ~ わかりやすいディープラーニング 4. 再帰的ニューラルネットワーク(RNN) ~ 音声認識で研究されているディープラーニング 5. 畳み込みニューラルネットワーク(CNN) ~ 画像認識でよく使われるディープラーニング 6. まとめ 7. Q&A
  • 3.
    Copyright (c) BrainsConsulting, Inc. Japan 1.アウトライン 2 • 本発表の概要 – ディープラーニングの主な手法について紹介 • 代表的な手法であるMLP, AE, CNN, RNNを紹介 • 実用化が進んでいるCNNは、具体性を重視して解説し、 • MLP, AE, RNNについては、ポイント絞って概説する – まとめとQ&A
  • 4.
    Copyright (c) BrainsConsulting, Inc. Japan 2.多層パーセプトロン(MLP) 3 多層パーセプトロン (MLP)
  • 5.
    Copyright (c) BrainsConsulting, Inc. Japan MLPの概要 4 • 多層パーセプトロン(MLP)とは – 神経細胞を模したパーセプトロンを多層化したニューラルネットワーク 入力層 中間層 (隠れ層) 出力層 𝑘=1 𝐾 𝑛 𝑓𝑛 𝑤𝑗,2 𝑛 𝑤𝑗,𝑘 𝑛 𝑤𝑗,3 𝑛 𝑤𝑗,1 𝑛 𝑤𝑗,𝐾 𝑛 𝑦1 𝑛−1 𝑦2 𝑛−1 𝑦 𝑘 𝑛−1 𝑦3 𝑛−1 𝑦 𝐾 𝑛−1 𝕪 𝑛−1 = (𝑦1 𝑛−1 , … , 𝑦 𝐾 𝑛−1 ) 𝕨𝑗 𝑛 = (𝑤𝑗,1 𝑛 , … , 𝑤𝑗,𝐾 𝑛 𝑛 ) 𝐾 𝑁個𝐾0個 𝐾1個 𝑦𝑙 𝑛 𝑦𝑗 𝑛 : = 𝑓𝑛 𝑘=1 𝐾 𝑛−1 𝑤𝑗,𝑘 𝑛 𝑦 𝑘 𝑛−1 + 𝑏𝑗 𝑛 𝑗:層番号 𝑙:ノード番号 𝑛 𝐾 𝑛個 : : : : :𝑗 : : 𝑖 ユニット 𝑛 − 1 𝐾 𝑛−1個
  • 6.
    Copyright (c) BrainsConsulting, Inc. Japan フォワードパゲーション 5 • フォワードパゲーション – データを入力してユニット(ニューロン)を活性化を模した計算 入力層 中間層 (隠れ層) 出力層 𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個 : : : : :𝑙 : : 𝑘 活性化 𝕪 𝑛: = 𝑓𝑛 𝑊 𝑛 𝕪 𝑛−1 + 𝕓 𝑛 𝕪 𝑛 = 𝑓𝑛 𝑊 𝑁 𝑓𝑛−1 ⋯ 𝑓1 𝑊1 𝕪0 + 𝕓1 ⋯ + 𝕓 𝑁 ここで、𝕪0 は、入力ベクトルで、データ テーブルの1行に相当する。 𝕪 𝟎 から順番に活性化していく。 𝑓𝑛は、活性関数と呼ばれ、 中間層で はsigmoid, tanh, ReLu等が利用され る。出力層に出力する活性化関数は、 クラス分類ではsoftmaxが利用され る。 𝑛 𝑛 − 1 𝕪0 𝕪 𝑁
  • 7.
    Copyright (c) BrainsConsulting, Inc. Japan ニューラルネットワークの学習 6 • 確率的勾配降下法(SGD) – ニューラルネットワークでは、勾配情報を使って学習(修正)する – コスト関数𝐸の最小化が目的である 𝐸:コスト関数 𝑤𝑗,𝑖 𝑛 :第n層の各重み 𝜕𝐸 𝜕𝑤 𝑗,𝑖 𝑛 :第n層の各重みに対 する傾き(勾配の1次元分) 【重みの学習】 𝑤𝑗,𝑖 𝑛 ⟵ 𝑤𝑗,𝑖 𝑛 − 𝛼 𝜕𝐸 𝜕𝑤𝑗,𝑖 𝑛 𝛼は、学習率と呼ばれ、0.0~1.0の間で 指定する。 自動微分可能なライブラリ(Theano, Tensorflow等)では、以下のような行列 で計算できる。 𝑊 𝑛 ⟵ 𝑊 𝑛 − 𝛼𝛻𝐸 𝑊 𝑛 【バイアスの学習】 重みの学習と同様に更新する。 𝑏𝑗 𝑛 ⟵ 𝑏𝑗 𝑛 − 𝛼 𝜕𝐸 𝜕𝑏𝑗 𝑛 𝕓 𝑛 ⟵ 𝕓 𝑛 − 𝛼𝛻𝐸 𝕓 𝑛 −𝛼 𝜕𝐸 𝜕𝑤 𝑗,𝑖 𝑛 :傾きの逆方向に補正す ることで、局所最小値(勾配が 0 )の方向に重みを修正する
  • 8.
    Copyright (c) BrainsConsulting, Inc. Japan バックプロパゲーション 7 • バックプロパゲーション (誤差逆伝播法) – コスト関数をより小さくするように、重みを後ろから修正していく学習法 入力層 中間層 (隠れ層) 出力層 𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個 : : : : :𝑙 : : 𝑘学習 (重みを修正) 【誤差𝛿の逆伝播】 𝜹𝒋 𝒏 ≔ 𝜕𝐸 𝜕𝑢𝑗 𝑛 = 𝑘=1 𝐾 𝑛 𝜹 𝒌 𝒏+𝟏 𝑤 𝑘,𝑗 𝑛+1 𝑓𝑛 ′ 𝑢𝑗 𝑛 ここで、𝑢𝑗 𝑛 は、活性化関数𝑓の入力変数 (ユニットjの入力活性量)で、次式で 与える。 𝑢𝑗 𝑛 ≔ 𝑖=1 𝐾 𝑛 𝑤𝑗,𝑖 𝑛 𝑦𝑖 𝑛−1 + 𝑏𝑗 𝑛 重み、バイアスに対する勾配は、次式 になる。 𝜕𝐸 𝜕𝑤 𝑗,𝑘 𝑛 = 𝜹𝒋 𝒏 𝑦 𝑘 𝑛−1 , 𝜕𝐸 𝜕𝑏 𝑗 𝑛 = 𝜹𝒋 𝒏 後ろの層の誤差 𝜹𝒋 𝒏+𝟏 を使って対象層の誤差 𝜹𝒋 𝒏 を計算(誤差逆伝播)し、𝜹𝒋 𝒏 を使って、 重み、バイアスを再帰的に修正する。 𝑛 𝑛 − 1 ※ バイアスの修正も、𝜹𝒋 𝒏 を使って同様に修正していく 𝜹𝒋 𝒏+𝟏 𝜹𝒋 𝒏
  • 9.
    Copyright (c) BrainsConsulting, Inc. Japan 勾配消失問題 8 • 勾配消失問題 (注:勾配が爆発する問題もある) – 逆に辿るほど、修正に使う誤差𝜹𝒋 𝒏 (つまり勾配𝛻𝐸 𝑊 𝑛 ,𝛻𝐸 𝕓 𝑛 )が消失していく 入力層 中間層 (隠れ層) 出力層 𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個 : : : : :𝑙 : : 𝑘学習 (誤差が減衰) 【誤差𝛿の消失】:概説 (例)𝑓𝑛 ′ :sigmoid 𝜹𝒋 𝒏 = 𝑘=1 𝐾 𝑛 𝜹 𝒌 𝒏+𝟏 𝑤 𝑘,𝑗 𝑛+1 𝑓𝑛 ′ 𝑢𝑗 𝑛 ≈ 1 4 𝐾 𝑛 𝑤 𝑎𝑣𝑔 𝑛+1 𝜹 𝒂𝒗𝒈 𝒏+𝟏 つまり、ユニット数𝐾 𝑛に対し、 1 4 𝐾 𝑛 𝑤 𝑎𝑣𝑔 𝑛+1 < 1 の時、𝜹 𝒎𝒂𝒙 𝒏 < 𝜹 𝒂𝒗𝒈 𝒏+𝟏 𝑛 𝑛 − 1 活性化関数としてsigmoidを使うとき、 𝑤 𝑎𝑣𝑔 𝑛+1 を、0~1で初期化することが多いた め、比較的成立しやすい条件である
  • 10.
    Copyright (c) BrainsConsulting, Inc. Japan そして、ディープラーニングへ 9 • プレトレーニング – 層間の結合毎に学習することで勾配消失を回避する手法 入力層 中間層 (隠れ層) 出力層 𝐾 𝑁個𝐾0個 𝐾1個 𝐾𝑗個 : : : : :𝑙 : : 𝑘 𝑛 𝑛 − 1 隣り合う層単位で、学習を行うことで 入力層に近い層の勾配消失を回避し、 入力層側の学習が進むようにする ディープラーニングでは、プレト レーニングを行い、学習不足を回 避することで、精度向上を図る手 法がある。(オートエンコーダ、 RBM)
  • 11.
    Copyright (c) BrainsConsulting, Inc. Japan 3.オートエンコーダ(AE) 10 オートエンコーダ (AE)
  • 12.
    Copyright (c) BrainsConsulting, Inc. Japan AEの概要 11 • オートエンコーダ(AE)とは – 出力が入力を再現するように学習させるニューラルネットワーク 入力層 中間層 (隠れ層) 出力層 𝐾個𝐾個 𝐾′ 個 (𝐾′ < 𝐾) 𝕩 𝕩 𝑊 (0,1,1,0,1) (0,1,1,0,1) 𝕪 = (0.9,0.7,0.3) 𝑊′𝕦 = (123,79, −10) 𝑓1 𝑓1 𝑓1 0 1 1 0 1 0 1 1 0 1 𝑊11 𝑊12 𝑊13 𝑊14 𝑊15 𝕩 ≒ 𝕩 【出力≒入力】:入力の再現を学習 𝕩 ≔ 𝑓2 𝑊′ 𝑓1 𝑊𝕩 + 𝕓 + 𝕓′ 教師データを入力ベクトル𝕩として学習を行う。 (𝕓, 𝕓′ は、中間層、出力層のバイアス・ベクトル) コスト関数を、二乗誤差とした場合は、次式で表される。 𝐸 ≔ 𝑛=1 𝑁 𝕩 𝑛 − 𝕩 𝑛 2 ここで、𝕩 𝑛 は、トレーニング用データの𝑛番目のレコー ドを指す。 この𝐸(誤差)を極小化する𝑊, 𝑊′ , 𝕓, 𝕓′ をSGD等のアルゴ リズムで学習する。 𝑓2 𝑓2 𝑓2 𝑓2 𝑓2
  • 13.
    Copyright (c) BrainsConsulting, Inc. Japan 次元圧縮 12 • エンコードとデコード – 中間層のユニット数を少なくすることで、中間層で次元圧縮 入力層 中間層 (隠れ層) 出力層 𝐾個𝐾個 𝐾′ 個 (𝐾′ < 𝐾) 𝕩 𝕩 𝑊 (0,1,1,0,1) (0,1,1,0,1) 𝕪 = (0.9,0.7,0.3) 𝑊′𝕦 = (123,79, −10)0 1 1 0 1 0 1 1 0 1 𝕩 ≒ 𝕩 【エンコード】:入力層 → 中間層 𝕪 ≔ 𝑓1 𝑊𝕩 + 𝕓 【デコード】 :中間層 → 出力層 𝕩 ≔ 𝑓2 𝑊′𝕪 + 𝕓𝑓1 𝑓1 𝑓1 𝑓2 𝑓2 𝑓2 𝑓2 𝑓2 左の例では、5次元(入力層のユニット数)の入力 データを、3次元(中間層のユニット数)に圧縮 (エンコード)し、中間層の3次元データを、5 次元(出力層のユニット数) =入力層の次元に復 元(デコード)する。 中間層のユニット数を入力層のユニット数よりも大きく すると、 𝕪 = 𝑾𝕩 + 𝕓 = 𝕩 (恒等変換)を学習し得るため、 次元圧縮できるとは限らない。そのため、次元圧縮する 場合、中間層のユニット数は、入力層よりも小さくする。
  • 14.
    Copyright (c) BrainsConsulting, Inc. Japan PCAとの関係 13 • オートエンコーダとPCA(主成分分析) – 活性化関数を使用しないオートエンコーダは、PCAと同等 入力層 中間層 (隠れ層) 出力層 𝐾個𝐾個 𝐾′ 個 (𝐾′ < 𝐾) 𝕩 𝕩 𝑊 (0,1,1,0,1) (0,1,1,0,1) 𝕪 = (0.9,0.7,0.3) 𝑊′𝕦 = (123,79, −10)0 1 1 0 1 0 1 1 0 1 𝕩 ≒ 𝕩 【PCA】:次元削減の1手法 PCAは、訓練データ 𝕩 𝑛 の共分散行列Σ: Σ ≔ 1 𝑁 𝑛=1 𝑁 𝕩 𝑛 − 𝕩 𝕩 𝑛 − 𝕩 ⊺ の固有ベクトルℙ 𝑘を軸(1座標)とした主成分に分解す る。(PCAは、固有値分解) この固有値分解は、最小化問題 min 𝐴,𝕞 𝑛=1 𝑁 𝕩 𝑛 − 𝕞 − 𝐴⊺ 𝐴 𝕩 𝑛 − 𝕞 2 の解と一致し、 𝐴, 𝕞 = (𝑃, 𝕩) である。ここで、P は、主 成分ℙ 𝑘を並べた行列である。 これは、コスト関数Eを二乗誤差としたオートエンコーダ の最小化問題と一致する。(𝑊 = 𝐴, 𝕓 = 𝐴𝕞, 𝑊′ = 𝐴⊺ , 𝕓′ = −𝕞, 𝑓1, 𝑓2:恒等写像と対応させる。)
  • 15.
    Copyright (c) BrainsConsulting, Inc. Japan • 積層オートエンコーダ(Stacked Auto-Encoder) – 入力層側からオートエンコーダを積み上げながら学習する手法 積層オートエンコーダ(SAE) 14 学 習 学 習 活 性 化 学 習 学 習 入 力 入 力 学習済の重み、 バイアスを使っ て活性化 学 習 学 習 活 性 化 入 力 活 性 化 学習済の重み、 バイアスを使っ て活性化 学習 各結合毎に学習した後、通 常のMLP同様にバックプロ パゲーション等で学習 入 力 活性化 ① ② ③ ④ ⑤ ①~④をプレトレーニング、 ⑤をファインチューニングと呼ぶ
  • 16.
    Copyright (c) BrainsConsulting, Inc. Japan 4.再帰的ニューラルネットワーク(RNN) 15 再帰的 ニューラルネットワーク (RNN)
  • 17.
    Copyright (c) BrainsConsulting, Inc. Japan • リカレントニューラルネットワーク – 層間の時間的影響をモデル化したニューラルネットワーク – データレコードの順番によって、結果が変わるモデルに適す • 音、音声、単語列、等 – 時間方向に層を展開すると、深層ニューラルネットワークとみなせる (構成例)(構成例) RNNの概要 16 RNN ② ③ 𝑡 = 1 ① ① ② ② ③ ③ 𝑡 = 2 𝑡 = 3 … 時間方向の展開図 ①
  • 18.
    Copyright (c) BrainsConsulting, Inc. Japan • RNNの種類 (代表種の紹介) (構成例) Fully RNNの種類 17 No. 名称 概要 1. Fully Recurrent Network 自身を含めたすべてのユニットで有向結合 2. Hopfield Network 自身を除くユニットで対称な有向結合 3. Elman Networks 中間層(過去)から中間層(未来)の時間方向に有効結合 4. Jordan Networks 出力層(過去)から中間層(未来)の時間方向に有効結合 5. Echo State Network 中間層がランダムな疎結合(1%程度の結合、等) 6. Long Short Term Memory Network 特殊な隠れノードを持つネットワーク (構成例) Hopfield 𝑊12 𝑊21 𝑊23 𝑊32 𝑊13 𝑊31 𝑾𝒊𝒋 = 𝑾𝒋𝒊 (𝑾𝒊𝒊 = 𝟎) (構成例) Jordan (構成例) ESN (構成例) LSTM ∫ ∫ ∫ ∫ 𝜫 𝜫 𝜫 𝚺 忘却 ゲート
  • 19.
    Copyright (c) BrainsConsulting, Inc. Japan • Elman Networks – 音声認識では、主にElman Networks タイプのRNNが広く利用される – 1つ前の時刻の隠れ層の出力を現在時刻の隠れ層への入力とする – 一般に、RNNと言えば、Elman Networks タイプを指すことも多い (構成例) 時間方向の展開図 音声認識におけるRNN 18 (構成例) Elman 𝑡 = 1 𝑡 = 2 𝑡 = 3 𝑡 = T 【定式化】 𝑇:入力系列の長さ(1文の音声特徴ベクトル列、等), 𝑡 = 1, ⋯ , 𝑇 に対して、 𝑋𝑡 = [𝕩1, ⋯ , 𝕩 𝑡]:入力系列の時刻𝑡までの部分列とすると、以下のように式で表せる。 ℎ 𝑡 𝑋𝑡 ≔ 𝑓 𝑢 𝑡 𝑋𝑡 𝑢 𝑡 𝑋𝑡 ≔ 𝕓 + 𝑊1 𝕩 𝑡 + 𝑅ℎ 𝑡−1 𝑋𝑡−1 𝕪 𝑡:1-of-N 方式(正解ラベルの次元/ユニットのみ1, その他は0を出力) 𝑾 𝟏 𝑾 𝟐 𝑾 𝟏 𝑾 𝟐 𝑾 𝟏 𝑾 𝟐 𝑾 𝟏 𝑾 𝟐 𝑾 𝟏 𝑾 𝟐 𝑹 𝑹 𝑹 𝑹𝒉 𝟏 𝒉 𝟐 𝒉 𝟑 𝒉 𝑻 𝕩 𝟏 𝕩 𝟐 𝕩 𝟑 𝕩 𝑻 𝕪 𝟏 𝕪 𝟐 𝕪 𝟑 𝕪 𝑻
  • 20.
    Copyright (c) BrainsConsulting, Inc. Japan • BPTT: Back Propagation Through Time – 時間方向にネットワークを展開し、誤差逆伝播法で学習する。 (構成例) RNNの学習 19 𝑾 𝟏 𝑾 𝟐 𝑹 Elman(3層の例) 𝒉 𝟏𝕩 𝟏 𝕪 𝟏 𝑾 𝟏 𝑾 𝟐 𝑹 𝒉 𝟐𝕩 𝟐 𝕪 𝟐 𝑾 𝟏 𝑾 𝟐 𝒉 𝑻𝕩 𝑻 𝕪 𝑻 ⋮ ⋮ 【コスト関数】:交差エントロピー 𝐸 ≔ 𝑛=1 𝑁 𝐸 𝑛 , 𝑤ℎ𝑒𝑟𝑒 𝐸 𝑛 ≔ 𝑡=1 𝑇 𝐸 𝑛,𝑡 𝐸 𝑛,𝑡 ≔ − log ℎ 𝑡,𝑞 𝑋 𝑛 ここで、𝑁:入力系列(文等)の数、𝑋 𝑛は、𝑛番目の入力系列で ある。 𝑞は、系列𝑛の時刻𝑡のラベル(インデックス)である。 【Rの勾配】: 𝑻ステップ未来の勾配情報が必要 𝛻𝐸 𝑛 𝑅 = 𝑡=0 𝑇−1 𝜕𝐸 𝑛,𝒕+𝟏 𝜕𝑢 𝒕+𝟏,𝑗 ℎ 𝑡,𝑘 𝑋𝑡 𝑗,𝑘 𝜕𝐸 𝑛,𝒕 𝜕𝑢 𝒕,𝑗 = 𝑖=1 I 𝑤𝑗,𝑖 2 𝜕𝐸 𝑛+1,𝑡 𝜕𝑢 𝑡,𝑗 + 𝑘=1 K 𝑟𝑗,𝑘 𝜕𝐸 𝑛,𝒕+𝟏 𝜕𝑢 𝒕+𝟏,𝑗 𝑓′ 𝑢 𝑡,𝑗 𝑋𝑡 𝑻が大きい系列は、勾配消失が発生し得る →LSTMでは、特殊な隠れノードを用いて解消 𝑲個I個
  • 21.
    Copyright (c) BrainsConsulting, Inc. Japan 自然言語処理への応用 20 • Seq to Seq (RNNのみによる機械翻訳) – 英語を入力として、フランス語を出力するLSTM – 英語を逆順に入力することで長文にも有効 • LSTMは、記録の制限があるため、長文には向かないと予想されていた 引用:「Sequence to Sequence Learning with Neural Networks」 http://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf
  • 22.
    Copyright (c) BrainsConsulting, Inc. Japan 5.畳み込みニューラルネットワーク(CNN) 21 畳み込み ニューラルネットワーク (CNN)
  • 23.
    Copyright (c) BrainsConsulting, Inc. Japan 目次 22 1. 畳み込みニューラルネットワーク(CNN)とは 2. CNNの処理の流れ 3. 画像データの基礎 4. 畳み込み層とは 5. プーリング層とは 6. 全結合層とは 7. 実例紹介 8. ディープラーニング向けフレームワークの紹介 9. まとめ
  • 24.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込みニューラルネットワーク(CNN)とは 23  畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)は、 主に画像認識に応用される順伝搬型ネットワークである。入力層と出力層の間に 複数の畳み込み層とプーリング層を交互に並べた多層のニューラルネットワーク である。  畳み込み層:画像上の各位置ごとに特徴抽出を行う(フィルタ処理)  プーリング層:局所的な平行移動に対して不変な出力を行う  従来の画像認識では、さまざまな特徴抽出アルゴリズムが人手により設計・構 築されてきた。これらの特徴抽出は、職人技によるところが大きい。精度やス ピード向上のボトルネックと効率化に向けた自動化の目的から、人手を介さず 機械にデータから特徴を抽出させる手法として注目されている。
  • 25.
    Copyright (c) BrainsConsulting, Inc. Japan CNNの処理の流れ 24  CNNでは、入力を2次元ベクトルのままで特徴抽出を行い、最終的に1次元ベクト ル化して全結合層に渡す。つまり、全結合層に前処理工程が加わったものと考え ることができる。 CNN … … …… … … … … … … 一 次 元 ベ ク ト ル に 変 換 … … … 全結合層畳み込み層+プーリング層 𝑾 𝟏 𝑾:フィルタの係数 𝒙 :インプット 𝜽 :バイアス 𝑾 𝟐 ぶ 出力テキスト 入力画像
  • 26.
    Copyright (c) BrainsConsulting, Inc. Japan 特徴量の自動抽出 25  全結合層では、入力 (2次元の画像データ) を 1次元のベクトルとして扱う。そ のため、入力画像の形状が同一であっても、その位置がずれているとまったく別 のデータになる。その結果、このような入力に対しては誤判別や過学習が発生す ることがある。 [0, 0, 1, 0, 0, 0, 1, 1, 0, 0, … [0, 0, 0, 1, 0, 0, 0, 1, 1, 0, … 25の要素を持つベクトル
  • 27.
    Copyright (c) BrainsConsulting, Inc. Japan 画像データの構造 26 画素 R G B R G B 上記例ではRGBの値はそれぞれ 8bitで表される。 つまり、一つの 画素(ピクセル)は 8 × 3 = 24bitとなる。
  • 28.
    Copyright (c) BrainsConsulting, Inc. Japan 画像データの構造 27 R G B
  • 29.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:畳み込みとは 28  畳み込みは、画像の局所的な特徴抽出処理をする。つまり、画像とフィルタ間で 定義される積和計算と考えることができる。  適当な大きさの領域に含まれる各値を重み付けして足し合わせる。つまり「畳み 込み = フィルタ」となる。畳み込みによって、画像の平滑化やエッジ検出 (一次 微分、二次微分) 等の処理がされる。 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 × = 79 80 81 79 79 82 81 79 75 81 85 83 77 72 99 79 77 77 79 112 73 71 73 89 142 フィルタ 入力画像 出力画像(特徴マップ)
  • 30.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:畳み込みとは 29  畳み込みは、画像の局所的な特徴抽出処理をする。つまり、画像とフィルタ間で 定義される積和計算と考えることができる。  適当な大きさの領域に含まれる各値を重み付けして足し合わせる。つまり「畳み 込み = フィルタ」となる。畳み込みによって、画像の平滑化やエッジ検出 (一次 微分、二次微分) 等の処理がされる。 77 80 82 83 78 80 87 82 81 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 × 79 = 入力画像 フィルタ 出力画像 77 x 0.01 + 80 x 0.08 + 82 x 0.01 + 83 x 0.08 + 78 x 0.62 + 80 x 0.08 + 87 x 0.01 + 82 x 0.08 + 81 x 0.01 = 79
  • 31.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 30 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 77 x 0.01 + 80 x 0.08 + 82 x 0.01 + 83 x 0.08 + 78 x 0.62 + 80 x 0.08 + 87 x 0.01 + 82 x 0.08 + 81 x 0.01 = 79
  • 32.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 31 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 80 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 80 x 0.01 + 82 x 0.08 + 78 x 0.01 + 78 x 0.08 + 80 x 0.62 + 83 x 0.08 + 82 x 0.01 + 81 x 0.08 + 80 x 0.01 = 80
  • 33.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 32 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 80 81 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 82 x 0.01 + 78 x 0.08 + 70 x 0.01 + 80 x 0.08 + 83 x 0.62 + 82 x 0.08 + 81 x 0.01 + 80 x 0.08 + 74 x 0.01 = 81
  • 34.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 33 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 80 81 79 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 78 x 0.01 + 70 x 0.08 + 82 x 0.01 + 83 x 0.08 + 82 x 0.62 + 77 x 0.08 + 80 x 0.01 + 74 x 0.08 + 75 x 0.01 = 79
  • 35.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 34 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 80 81 79 79 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 70 x 0.01 + 82 x 0.08 + 82 x 0.01 + 82 x 0.08 + 77 x 0.62 + 94 x 0.08 + 74 x 0.01 + 75 x 0.08 + 112 x 0.01 = 79
  • 36.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタの走査 35 77 80 82 78 70 82 82 83 78 80 83 82 77 94 87 82 81 80 74 75 112 87 87 85 77 66 99 151 84 79 77 78 76 107 162 86 72 70 72 81 151 166 78 72 73 73 107 166 170 79 80 81 79 79 82 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 入力画像 出力画像  一般的には、画像データの左上から右下へ画素を1画素ずつ順番に走査する。 83 x 0.01 + 78 x 0.08 + 80 x 0.01 + 87 x 0.08 + 82 x 0.62 + 81 x 0.08 + 87 x 0.01 + 87 x 0.08 + 85 x 0.01 = 82
  • 37.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタのサイズ 36  入力画像が「256x256画素」の場合、「3x3 画素」のファイルは、おおよそ下記 のようなサイズとなる 。
  • 38.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタ(畳み込み)の効果 37 × 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 -1/8 -1/8 -1/8 -1/8 2 -1/8 -1/8 -1/8 -1/8 × = = 出力画像 平滑化(ぼかし、ノイズ除去)をする 入力画像 フィルタ 鮮鋭化(シャープ)をする
  • 39.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタ(畳み込み)の効果 38 × 1 0 -1 2 0 -2 1 0 -1 1 2 1 0 0 0 -1 -2 -1 × = = 出力画像 縦方向のエッジを検出する 入力画像 フィルタ 横方向のエッジを検出する
  • 40.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタ(畳み込み)の効果 39 × 1 0 -1 2 0 -2 1 0 -1 1 2 1 0 0 0 -1 -2 -1 × = = 出力画像 入力画像 縦方向のエッジを検出する 横方向のエッジを検出する フィルタ
  • 41.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:フィルタ例 40 畳み込み層のフィルタ例 (出典:INRIAデータセット、フィルタサイズ:9x9) 1 0 -1 2 0 -2 1 0 -1 196 128 64 255 128 0 196 128 64 フィルタから画像への 変換例 画像化 正規化
  • 42.
    Copyright (c) BrainsConsulting, Inc. Japan  画像の基本的な特徴(エッジや勾配、ぼかし具合など)を抽出するための、カー ネルの適切な重み付けを学習することができる。  ネットワークが十分な深さの畳み込み層を持っていれば、前の層における特徴の 組み合わせを学習される。前述のエッジ・勾配・ぼかし具合といった基本的な構 成要素が、後ろの層では目や鼻、髪などの具体的なパターンとなる。 畳み込み層:中間層の出力例 41 中間層(畳み込み層+プーリング層)での出力例 (引用:【連載第1回】ニューラルネットの歩んだ道、ディープラーニングの 登場で全てが変わった)
  • 43.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:画像フィルタ処理の注意点 42  画像からフィルタがはみ出すような位置に重ねることはできない。 77 80 82 83 78 80 87 82 81 0.01 0.08 0.01 0.08 0.62 0.08 0.01 0.08 0.01 × 77 80 82 83 78 80 87 82 81 入力画像 入力画像 フィルタ フィルタ 入力画像からはみ出た部分 は画素値がないために計算 できない
  • 44.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:畳み込み処理の注意点 43  画像にフィルタ処理を繰り返すたびに、画像が小さくなってしまう。 81 80 74 75 112 85 77 66 99 151 77 78 76 107 162 70 72 81 151 166 73 73 107 166 170 77 81 102 75 89 117 78 101 131 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 77 81 102 75 89 117 78 101 131 94 入力画像 入力画像 出力画像 出力画像 フィルタ フィルタ 1回目 2回目 × × = = 3x3のフィルタ で処理した場合、 周囲1画素ずつ 画像が小さくな る
  • 45.
    Copyright (c) BrainsConsulting, Inc. Japan 畳み込み層:パディングとは 44  パディングとは、画像の「ふち」を拡張して、出力画像のサイズが入力画像と同 じサイズになるようにするための処理である。  下記例では、最も一般的であるゼロパディング(zero-padding)を示す。 0 0 0 0 0 0 0 0 81 80 74 75 112 0 0 85 77 66 99 151 0 0 77 78 76 107 162 0 0 70 72 81 151 166 0 0 73 73 107 166 170 0 0 0 0 0 0 0 0 35 51 51 64 48 53 77 81 102 78 51 75 89 117 92 49 78 101 131 102 32 52 72 93 72 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 × = 入力画像 出力画像 フィルタ 拡張部分 (オレンジ)
  • 46.
    Copyright (c) BrainsConsulting, Inc. Japan プーリング層:プーリングとは 45  プーリングとは、抽出特徴から認識に余分な情報を捨て、認識に必要な情報を 保ったままの表現に変換することである。  サブサンプリングとも呼ばれる。  プーリング層は通常、畳み込み層の直後に設置される。  ユニット(画素)数を減らすため、結果として調整するパラメータを減らすこと ができる。  対象となる特徴量の画像内での位置が若干ずれている場合でも、プーリング層の 出力が不変となるようにする。
  • 47.
    Copyright (c) BrainsConsulting, Inc. Japan プーリング層:プーリングとは 46 12 20 30 0 8 12 2 0 34 70 37 4 112 100 25 12 20 30 112 37 13 8 79 20 最大プーリング (max pooling) 平均プーリング (average pooling)  処理自体は単純だが、多層の畳み込みネットの中で果たす役割や、プーリングの 種類と効果の違いなど、不明なことも残されている。
  • 48.
    Copyright (c) BrainsConsulting, Inc. Japan プーリング層:ユニット数の削減 47  プーリングサイズを2x2で実行した場合、縦、横のサイズが1/2となり、データ数 は1/4に圧縮される。 12 20 30 0 8 12 2 0 34 70 37 4 112 100 25 12 20 30 112 37 最大プーリング
  • 49.
    Copyright (c) BrainsConsulting, Inc. Japan プーリング層:位置変動への不変性 48  下記に示す「F」という文字の位置がずれている6x6の入力画像AとBに、プー リングサイズ2x2の最大プーリングを実行した場合、出力画像は同じ結果とな る。  つまり、不変な特徴量が抽出されたと言える。 入力画像A 入力画像B出力画像 最大 プーリング 最大 プーリング
  • 50.
    Copyright (c) BrainsConsulting, Inc. Japan 全結合層:データの識別 49  畳み込み層+プーリング層(特徴抽出部)にて抽出された特徴量を使って、その 画像がどのカテゴリに属するかを判断する、つまりパターン分類を行うのが後半 の全結合層(識別部)となる。 (引用:Y. LeCun, et.al. “Gradient-based Learning Applied to Document Recognition”, Proc. of The IEEE, 1998.) 畳み込み層+プーリング層 (特徴抽出部) 全結合層(識別部)
  • 51.
    Copyright (c) BrainsConsulting, Inc. Japan 活用事例:ABEJA「ABEJA PLATFORM」 50  人工知能を活用した店舗解析プラットフォームである。実店舗にカメラ設置し、 取得したデータの解析部分に、ディープラーニングを応用した技術を利用してい る。実際に店舗でも運用事例もあり、目玉賞品の売上比率が上昇するなどの成果 がでている。 (引用:ABEJA、「売れない理由」をAIで解析、繁盛店に、動画でわかるABEJA Platform for Retail)
  • 52.
    Copyright (c) BrainsConsulting, Inc. Japan 活用事例:Clarifai「Clarifai」 51  画像や映像の中身を人工知能が解析するサービス。 AIが映っているオブジェクト を認識し、テキストタグを付与する。 現在APIが利用でき、さまざまなサービス への応用が期待されている。 (引用:Clarifai、AI分野で最注目のスタートアップ「Clarifai」創業者、30歳の野望)
  • 53.
    Copyright (c) BrainsConsulting, Inc. Japan 活用事例:Google DeepMind「AlphaGo」 52  人類最強棋士を打ち破ったアルファ碁は、直感に優れたAI(深層学習)、経験に 学ぶAI(強化学習)、先読みするAI(探索)の3つのAI技術で支えられている。  上記の中でCNNは、「次の一手」を決定するタスクで使われている。囲碁の 19x19路の盤面を入力とし、次の手を盤面のどこに打つかを決定している。 (引用:囲碁AI “AlphaGo” はなぜ強いのか?)
  • 54.
    Copyright (c) BrainsConsulting, Inc. Japan まとめ 53  CNNでは、畳み込みとプーリング処理を複数回行うことで、特徴量を自動抽出す ることができる。つまり、人に依存していた処理を減らすことがきる。  ディープラーニングの画像認識精度は、一部では、すでに人間を超えてしまって いるとも言われている。しかしながら、医師の診断など、判断に万が一のことが あっては危険なシステムについては、補助的な役割しか担うことができず、最終 判断は人間が行う必要がある。ただし、ここまでの成果に価値を見出すことがで きれば、十分に実用化することができるはずである。  ディープラーニングの仕組みを簡単に実装するためのライブラリ/フレームワーク (Chainer、TensorFlow、Keras、Pytorchなど)が多数オープンソースとして公 開されており、自身の環境や用途に応じて利用することができるため、参入者に とっての敷居は低い。
  • 55.
    Copyright (c) BrainsConsulting, Inc. Japan 6.まとめ 54 まとめ
  • 56.
    Copyright (c) BrainsConsulting, Inc. Japan まとめ 55 • まとめ – 従来のニューラルネットワークであるMLPは、多層化による勾配消失等の問 題があり、学習が進まなかったり収束しない等、精度に限界があった – 積層オートエンコーダは、層の結合単位で学習することにより、MLPの欠点 を解消し、多層化によるメリットを獲得(オートエンコーダ単体では、非力) – 畳み込みニューラルネットワークでは、画像処理の専門家が行ってきたフィ ルタ処理を、機械に自動化させることで、特徴量抽出を自動学習・実現し、 人間の認識精度を超えるに至った。 – 一方で、医療等のミスが許されない分野での判断をさせることはできず、実 用上の現実解は、推奨、リコメンドにとどまっている。 – 再帰的ニューラルネットワークは、音声認識や機械翻訳等の時間軸を持つ入 力系列を処理するために研究が進められている。
  • 57.
    Copyright (c) BrainsConsulting, Inc. Japan ディープラーニングのツール 56 No. 名称 言語 開発者 概説 1. Chainer Python PFN社 • Define by Run • 計算グラフを書きやすい(デバッグしやすい) • 参加者が世界的に少なめ(サードパーティの実装などほぼ無い) 2. CNTK c++ python Micrsoft社 • Define and Run • コードは数式と似たような形で書くことができる • 利用者が拡大中(当社調べ) 3. Keras Python Google社の François Chollet氏 • 圧倒的に直感的 • 利用者が多い • tensorflow/Theano/CNTKの上位フレームワーク • Define and Run • 細かいことをしようとすると逆に面倒 4. Pytorch Python Facebook社 • Define by Run • コードの書き方もチュートリアルレベルではChainerに酷似 • 利用者が拡大中 5. TensorFlow Python Google社 • Define and Run • 記述に慣れが必要 • 多くの参加者(サードパーティのライブラリ、解説、利用例も多数) 参考サイト:  【PyTorch、Chainer、Keras、TensorFlow】ディープラーニングのフレームワークの利点・欠点【2017年10月更新】 ( http://s0sem0y.hatenablog.com/entry/2017/05/15/063753 )  Microsoft の Deep Learning フレームワーク「CNTK」が Python 対応になって格段に使いやすくなってた話 ( https://qiita.com/mamita/items/a99dead64a6447a76b67 )  DeepLearningのフレームワーク比較( http://xkumiyu.hatenablog.com/entry/2017/09/30/010000 )  Keras バックエンド速度比較 CNTK vs TensorFlow( https://qiita.com/T_Umezaki/items/e20f9eff11fc30c13795 )
  • 58.
    Copyright (c) BrainsConsulting, Inc. Japan 7.Q&A 57 Q&A

Editor's Notes

  • #7  𝑊 1 は、 𝐾 1 × 𝐾 0 行列。入力層の 𝐾 0 次元のベクトルを、中間層の 𝐾 1 元のベクトルに線形に変換し、各要素を活性化関数に通した式。
  • #9 一般に、𝐸= 1 𝑛 𝑥∈𝐷 𝐸 𝑥 ; コスト関数Eは、各データレコードxのコスト 𝐸 𝑥 の平均であることが前提 また、コスト関数𝐸が、 𝑦 𝑗 𝑁 の関数であることも必要。 訓練用のデータレコード単位で、誤差修正を行い、訓練データがなくなるまで繰り返す。さらに、訓練データを複数回ループして学習する。(訓練回数:エポック)
  • #10 厳密な証明ではない。あくまで、誤差が減衰していく、イメージをつかむための説明にとどめる。
  • #15 PCAは、データの分散が大きいベクトルに沿った座標系を得るのに対し、 オートエンコーダは、低次元空間(K’次元)多様体に沿った座標系を得るといわれている:多様体仮説/AEは、多様体学習の1種に分類される。
  • #16 最後にMLPの学習(ファインチューニング)を行うことで、精度を上げるディープラーニングの手法。 オートエンコーダ単独では、精度はそれほど高くないが、積層にすることで、精度が向上するといわれている。
  • #20 中間層は、複数階層あっても良い。 入力系列:1つの文章単位の音声(の特徴ベクトル列)
  • #21 Rの勾配の式からわかることは、 𝜕 𝐸 𝑛,𝑡 𝜕 𝑢 𝑡,𝑗 の計算のため、Tステップ未来の勾配情報を計算しなければならない。 系列が長くなるとMLPの問題であった勾配消失、勾配爆発の問題が発生する。
  • #24 今後、CNNの文献を読む際の手助けとなるような発表とする
  • #25 教師あり学習 問題(入力)と答え(出力)をセットで入力データとして与える場合で、例えば、画像認識(image classification)では、入力画像それぞれに画像のラベル(例:食事、花、人、風景など)を与える。他にも出力データ(変数の関係性)を推定する回帰(regression)などがある。教師データが十分あれば、実用に一番適している。前述のNg氏によると、ディープラーニング関連製品の9割以上は教師あり学習によるものだそうだ。 教師なし学習 答えが与えられないため、入力データの傾向から近いデータ同士をクラスタリングしたり、入力データの次元を削減して、よりコンパクトに抽象化する表現を学習させたりできる。実用的には難しいが、教師データがないときには便利だ。 強化学習 ある環境で選択された行動のフィードバックをもとに、選択された行動の価値を高めるよう強化学習する。チェスや将棋などのゲームを学習させることに適している。米GoogleのDeepMindチームがスペースインベーダーなどのAtariゲームをQ-learningという強化学習アルゴリズムで深層学習させ、驚くべきパフォーマンスを出した。
  • #26 LCN:局所コントラスト正規化(local contrast normalization) 画像データ全体から受け取れる意味は、これを構成する小さなパーツそれぞれが表す意味の組み合わせである」という概念に基付いています。 そして「これらのパーツの中から元のデータをよく表すパーツ群・組み合わせを導き出す」=「特徴抽出を行う」ことが、まさにConvolutional Neural Netの基礎です。
  • #28 画素の配置はフォーマットによって異なる
  • #29 一般的には、チャネルごとに処理をする
  • #30 基本的にフィルタのサイズは奇数×奇数となる
  • #32 GPGPUに向いた処理となる
  • #38 実際には3x3ではなく、5x5や9x9などもう少し大きなサイズのフィルタが使われる
  • #40 エッジ情報や輝度情報を特徴とする
  • #46 ゼロパディングでは、畳み込みの結果、画像の周辺部が自動的に暗くなってしまう
  • #51 画像データ全体から受け取れる意味は、これを構成する小さなパーツそれぞれが表す意味の組み合わせである」という概念に基付いています。 そして「これらのパーツの中から元のデータをよく表すパーツ群・組み合わせを導き出す」=「特徴抽出を行う」ことが、まさにConvolutional Neural Netの基礎です。
  • #55 現状、CNNというよりはディープラーニング全般に言えることだが、できることは「認知」だけである。認知したあとに論理的に思考するとか、判断することはできない。しかし、認知することそのものに価値を見出すことができれば、十分に実用的なものとして機能するはずである。 医師の診断や重要な機械装置の操作など、判断に万が一の事があっては危険なシステムについては、コンピュータは補助的な役割しか担う事ができず、最終的な判断責任はあくまでも人間が負う必要がある。