More Related Content Similar to Convolutionl Neural Network 入門 Similar to Convolutionl Neural Network 入門 (20) More from maruyama097 (20) Convolutionl Neural Network 入門3. “ConvNets were largely forsaken
by the main stream computer-vision
and machine-learning communities
until the ImageNet competition in 2012”
-- Yann LeCun
5. はじめに
Convolutional Neural Network (CNN, ConvNet)
は、現在のDeep Learningの中核技術であり、また、画
像認識を中心に、もっとも成果をあげているAI技術の一
つである。
小論は、出来るだけ多くの技術者に、CNNとはどのような
ものであるのかを理解してもらうことを目的とした、CNNの
基本的な働きを解説した入門講座である。
前提知識としては、前々回のマルレクの「ニューラル・ネッ
トワーク入門講座」 https://goo.gl/Q0mKfy の一部を想定
している。小論とあわせてチェックしてもらえばと思う。(両
者のカバーする範囲については、次の図をみて欲しい。)
12. X
X1,X2,..X6は、0または1で
W1X1+W2X2+W3X3+
W4X4+W5X5+W6X6
+ b > 0
の時発火
重み:Wi
シナプスごとの賛成票の強さAをプラスの値に
反対票の強さBをマイナスの値にすると、
式が簡単になる。そうしたWiを「重み」という。
バイアス:b
ついでに、閾値 Cの符号を逆にすれば、
式はもっと簡単になる。それを「バイアス」という。
X1
X2
X3
X4
X5
X6
W2=3
W3=-1
W4=3
W5=2
W6=-2
W1=-2
先の次式を想起せよ
A – B – C > 0
符号を変えると
A + B’+ C’ > 0
の形になる。
復習
14. X1
X2
X3
X4
X5
X6
W1X1+W2X2+W3X3+W4X4+W5X5+W6X6+b > 0 ?
重み W=[W1,W2,W3,W4,W5,W6]
バイアス b
入力 X=[X1,X2,X3,X4,X5,X6]
の場合の発火の条件
X1
X2
X3
X4
X5
X6
そのことは、式で表現
した場合は、どう反映
されるだろうか?
今、入力のX3とX5の
位置を交換してみよう。
XT =
一個のニューロンの場合
15. X1
X2
X5
X4
X3
X6
W1X1+W2X2+W5X5+W4X4+W3X3+W6X6+b > 0 ?
入力 X=[X1,X2,X5,X4,X3,X6]
の場合の発火の条件
重み W=[W1,W2,W5,W4,W3,W6]
バイアス b
入力とニューロンの接続の情報は、固定
で、ニューロン上のシナプスが記憶している。
だから、入力のベクトルを入れ替えると、重み
のベクトルも入れ替わる。それは、ベクトル表
現の問題で、もともと、入力と重みの「並び順」
に意味があるわけではない。入力と重みが、
シナプスで、一対一に対応していることが重要。
一個のニューロンの場合
16. X1
X2
X3
X4
X5
X6
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
ニューロン4
W4・XT + b4 > 0
ニューロン5
W5・XT + b5 > 0
ニューロン6
W6・XT + b6 > 0
入力 X=[X1,X2,X3,X4,X5,X6]
値:W11X1+W12X2+W13X3+
W14X4+W15X5+W16X6+b1
値:W21X1+W22X2+W23X3+
W24X4+W25X5+W26X6+b2
値:W31X1+W32X2+W33X3+
W34X4+W35X5+W36X6+b3
値:W41X1+W42X2+W43X3+
W44X4+W45X5+W46X6+b4
値:W51X1+W52X2+W53X3+
W54X4+W55X5+W56X6+b5
値:W61X1+W62X2+W63X3+
W64X4+W65X5+W66X6+b6
層としてのニューロンの場合
17. X1
X2
X5
X4
X3
X6
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
ニューロン4
W4・XT + b4 > 0
ニューロン5
W5・XT + b5 > 0
ニューロン6
W6・XT + b6 > 0
入力 X=[X1,X2,X5,X4,X3,X6]
値:W11X1+W12X2+W13X3+
W14X4+W15X5+W16X6+b1
値:W21X1+W22X2+W23X3+
W24X4+W25X5+W26X6+b2
値:W31X1+W32X2+W33X3+
W34X4+W35X5+W36X6+b3
値:W41X1+W42X2+W43X3+
W44X4+W45X5+W46X6+b4
値:W51X1+W52X2+W53X3+
W54X4+W55X5+W56X6+b5
値:W61X1+W62X2+W63X3+
W64X4+W65X5+W66X6+b6
層としてのニューロンの場合
層としても、入力ベクトルの入れ替えは、重みの入れ替えを必要とし、影響を与えない。
46. よく使われる画像フォーマットの画素数
機械学習 総画素数
MNIST 28x28
[GreyScale]
784x1 手書き数字
10 クラス
CIFAR-10 32x32 1024x3 CIFAR-10/100
ImageNet
(ILSVRC-2010)
256x256 65,536x3 画像データ
1,000クラス
AlphaGO 19x19 361x1
PC/TV
VGA 640x480 307,200x3 DOS/V
XGA 1024x768 786,432x3 Windows3.0~XP
Full-WXGA 1366x768 1,049,088x3 低価格HDTVの主流
Full-HD 1920x1088 2,073,600x3 一般的なディスプレイ
4K 3840x2160 8,294,400x3 Xperia Z5 Premium
8K FUHD 7680x4320 33,177,600x3
56. Full Connectなネットワークの問題
パラメーターの数の爆発 ー> 完全二部グラフの見直し
データの局所的な情報の抽出 ー> 入力データに、明確
な構造と位置情報を与える。完全二部グラフの見直し
微細なシフトやゆがみの捨象 ー> 解像度を下げる
640x480 320x240 160x120 80x60
後述する Pooling層は、そうした役割を持つ。
58. ニューラル・ネットをチューンする
入力データを、Full Connect = 完全二部グラフのように、
「集合」ではなく、「幅」と「高さ」 (と「深さ(RGB)」) を持っ
た、ピクセルの順序を持った「配列」として表現する。そうし
た位置情報によって、「近い」ピクセル間の、「局所的な相
関関係」を表現できる。
次層のニューロンは、 Full Connect = 完全二部グラフ
のように、入力層のすべてのノードのデータを受けいれる
のではなく、隣接したノードからなる、限られた領域のノー
ドのデータのみを受け入れるようにする。(「局所的な受容
野」) それは、パラメーターの数を大きく減らす。
59. X1
X2
X3
X4
X5
X6
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
ニューロン4
W4・XT + b4 > 0
ニューロン5
W5・XT + b5 > 0
ニューロン6
W6・XT + b6 > 0
入力 X=[X1,X2,X3,X4,X5,X6]
値:W11X1+W12X2+W13X3+
W14X4+W15X5+W16X6+b1
値:W21X1+W22X2+W23X3+
W24X4+W25X5+W26X6+b2
値:W31X1+W32X2+W33X3+
W34X4+W35X5+W36X6+b3
値:W41X1+W42X2+W43X3+
W44X4+W45X5+W46X6+b4
値:W51X1+W52X2+W53X3+
W54X4+W55X5+W56X6+b5
値:W61X1+W62X2+W63X3+
W64X4+W65X5+W66X6+b6
入力 X=[X1,X2,X3,X4,X5,X6] Full Connect な場合
パラメーターの数は、6x6+6=42
60. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
ニューロン1は、入力層の
X1,X2,X3の三つからしか
データを受け取らない。
その他のニューロンも、同
様に、三つのデータしか受
け取らない。
これらのニューロンは、入力
データの小部分を変換する
局所的な受容野、局所的な
フィルターとして機能する。
局所的な受容野と
フィルター
61. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
ニューロン2は、入力層の
X2,X3,X4の三つからしか
データを受け取らない。
その他のニューロンも、同
様に、三つのデータしか受
け取らない。
これらのニューロンは、入力
データの小部分を変換する
局所的な受容野、局所的な
フィルターとして機能する。
局所的な受容野と
フィルター
62. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
ニューロン3は、入力層の
X3,X4,X5の三つからしか
データを受け取らない。
その他のニューロンも、同
様に、三つのデータしか受
け取らない。
これらのニューロンは、入力
データの小部分を変換する
局所的な受容野、局所的な
フィルターとして機能する。
局所的な受容野と
フィルター
63. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
ニューロン4は、入力層の
X4,X5,X6の三つからしか
データを受け取らない。
その他のニューロンも、同
様に、三つのデータしか受
け取らない。
これらのニューロンは、入力
データの小部分を変換する
局所的な受容野、局所的な
フィルターとして機能する。
局所的な受容野と
フィルター
64. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
ニューロン1は、入力層の
X1,X2,X3の三つからしか
データを受け取らない。
その他のニューロンも、同
様に、三つのデータしか受
け取らない。
これらのニューロンは、入力
データの小部分を変換する
局所的な受容野、局所的な
フィルターとして機能する。
局所的な受容野と
フィルター
65. X1
X2
X3
X4
X5
X6
ニューロン1
WA・X1-3
T + b > 0
ニューロン2
WA・X2-4
T + b > 0
ニューロン3
WA・X3-5
T + b > 0
ニューロン4
WA・X4-6
T + b > 0
入力 X=[X1,X2,X3,X4,X5,X6]
より重要なことは、ここでは、
すべてのニューロンが、同じ
パラメーター(重みWAとバイ
アス b)を共有していること
である。
これらのニューロンは、同じ
働きをする同じものであると
みなしていい。それは、同一
の局所的な特徴を検出して
いると考えることができる。
WAは、三つの入力を受け取
るので、次の形をしている。
WA=[WA1,WA2,WA3]
パラメーターの共有
パラメーターの数は、3+1=4
異なるニューロンが、同じ重みWA
同じバイアスbを共有している
66. X1
X2
X3
X4
X5
X6
ニューロン1
WB・X1-3
T + b’ > 0
ニューロン2
WB・X2-4
T + b’ > 0
ニューロン3
WB・X3-5
T + b’ > 0
ニューロン4
WB・X4-6
T + b’ > 0
入力 X=[X1,X2,X3,X4,X5,X6]
同じ入力Xに対して、異なる
パラメーター WB,b’ を持つ
一群のニューロンを考える
ことができる。ここでも、すべ
てのニューロンが、同じパラ
メーターを共有している。
これらのニューロンは、先の
ニューロン群とは異なる局所
的な特徴を検出していると考
えることができる。
WA,WBと同様に、WC,WD,
...と、特徴検出のニューロン
群を追加しても、パラメータの
数は、大きくは増えない。
パラメーターの共有と
異なるフィルターの追加
同じパラメーターを持つ、
同じ働きのニューロンの並び
パラメーターの数は、4のn倍
異なる特徴を抽出する
別の受容野=フィルター
68. Christpher Olahの”Conv Nets: A Modular Perspective”
http://goo.gl/EuPGgP から
その最も基本的なところでは、コンボリューションナル・ニューラル・ネット
ワークは、同じニューロンの沢山の同一のコピーを利用するニューラル・
ネットワークの一種だと考えることができる。 このアプローチは、学習され
るべき実際のパラメーターの数をかなり小さなものに抑えながら、パラメー
ターの値がニューロンがいかに振る舞うかを記述するのだが、ネットワー
クが多くのニューロンを持ち、計算的には大きなモデルを表現することを
可能にする。
同一のニューロンの複数のコピーを持つという、このトリックは、大まかに
言えば、数学やコンピューター・サイエンスでの関数の抽象に似たもので
ある。プログラミングをするとき、我々は関数を一度だけ書いて、それを多
くの場所で利用する。同じコードを違った場所で何百回も書かないことは、
プログラムを速くし、バグを少なくすることにもなる。同様に、コンボリュー
ションナル・ニューラル・ネットワークでは、ニューロンが一度学習すれば、
それを多くの場所で利用することができる。そうして、モデルの学習は容易
になり、エラーも減らせることになる。
74. Hinton, LeCun, Bengioの
“Deep Learning”からの抜粋
「ConvNetのコンボリューション層とプーリング層は、視覚神
経科学におけるシンプル細胞とコンプレックス細胞に、直接に
インスパイアーされたものだ。全体のアークテクチャーは、視
覚野の腹側経路のLGN–V1–V2–V4–IT という階層を思い
浮かばせるものだ。ConvNetモデルとサルが同じ絵を見せら
れた時、ConvNetの高位ユニットの活性化は、サルの下側
頭皮質の160のニューロンのランダムな集合の変異の半分
を説明するものだ。」
http://goo.gl/HRnXBy
76. 三次元のボリュームから
三次元のボリュームへの変換
基本的には、Full Connect ニューラル・ネットワークのよ
うに、無次元の集合から無次元の集合への変換としてで
はなく、三次元のボリュームから三次元のボリュームへの
変換として、ニューラル・ネットワークを再構築する。
もちろん、最初の入力層に置かれるのは、幅 x 高さ x 深
さ(RGB)の三次元の座標位置を持つ、生のカラー画像で
ある。
CNNは、入力をカラー画像と想定して、認識専用ニューラ
ルネットとしてチューンされたニューラル・ネットワークであ
る。
153. 「3D Volume 描像」 と
Convolution 再び
この小さな直方体は、このフィルターが一回の演算で作用
するデータの三次元構造も表している。重なり合って、一
つのものとして描かれているが、ここには、二つの小さな
直方体があるのだ。一方はデータで、もう一方は、フィル
ターである。
対応する要素同士が掛けられ、それが全部足し合わされ
る。それは、一つの数字になる。小さな直方体から伸びる
四角錐の頂点は、この一つの数字を表している。
大きな直方体の中を、小さな直方体がスライドしてスキャ
ンする。四角錐の頂点は、一つの平面を形成する。スキャ
ンが終われば、別のフィルターについて、同じ操作が繰り
返され、それで、別の平面が形成される。こうして、平面は
積み重ねられ、それが次のボリュームの厚みになる。
171. CNNの可視化
Visualizing and Understanding Convolutional Networks, Zeiler and Fergus 2013
Deep Inside Convolutional Networks, Simonyan et al., 2014
Striving for Simplicity: The all convolutional net, Springenberg et al., 2015
176. CNNの応用
以下の画像データは、Stanford大の Fei-
Fei Li & Andrej Karpathy & Justin
Johnsonの2016年冬の講義 “CS231n:
Convolutional Neural Networks for
Visual Recognition” から借用した。
http://cs231n.stanford.edu/syllabus.
html
193. 次回マルレク 予告
言語理解とDeep Learning
日時: 7月下旬
場所: 未定
登壇者
丸山不二夫
AI研究の「本丸」の一つは、人間の言語能力を、機械に移植
することです。次回のマルレクでは、Chomskyの新しい言語
理論 Minimalist Programや、Recurrent Neural
Network の紹介を通じて、この問題へのアプローチの現状
を探ります。
194. 参考資料 (日本語抄訳)
1. “Convolutional Networks for Images, Speech
and Time-Series” LeCun, Bengio
http://goo.gl/0qOsYK 1995年
2. “Deep Learning” Hinton, LeCun, Bengio
http://goo.gl/HRnXBy 2015年
3. “Convolutional Neural Networks for Visual
Recognition” Andrej Karpathy et al. 2016年
http://goo.gl/Dwhm5V
212. こうしたネットワークは、手書き文字認識の分野での他の方法
(Bottou et al., 1994 また、HAND WRITTEN DIGIT
RECOGNITIONを参照されたい)と好意的に比較され、商業
的なアプリケーションでも利用されている。
単一の時間次元で重みを共有する固定サイズのコンボリュー
ショナルなネットワークは、タイム・ディレー・ニューラル・ネット
ワーク(TDNN)として知られている。TDNNは、音素の認識
(サブサンプリングなし)(Lang and Hinton, 1988;
Waibel et al., 1989)、話された語の認識(サブサンプリン
グあり) (Bottou et al., 1990)、また、オンラインの手書き
文字の認識 (Guyon et al., 1991)に、利用されてきた。
232. Convolutional Neural Networks
(CNNs / ConvNets)
Convolutional Neural Networksは、前章で見た通常の
ニューラル・ネットワークと、とてもよく似ている。それは、学習
可能な重みとバイアスを持つニューロンから構成されている。
それぞれのニューロンは、入力を受け取り、内積を計算して、
ある場合には、それに非線形の関数が続く。ネットワーク全体
は、ここでも、一方の端の、生の画像のピクセルから、他方の
端のクラスのスコアまで、一つの微分可能なスコア関数を表
現している。さらにCNNにも、最後の層(Full Connectな)に
は、(SVM/Softmaxのような)損失関数もある。通常の
ニューラル・ネットワークのために開発してきた、手法やノウハ
ウは、全て、CNNにも適用できる。
235. 通常のニューラル・ネットワークは、
フル画像には、うまくスケールしない。
CIFAR-10では、画像は、 32x32x3 (32 幅, 32 高さ, 3
色チャンネル) しかない。だから、通常のニューラル・ネット
ワークの最初の隠れ層のひとつのフル・コネクテッドなニュー
ロンは、 32*32*3 = 3072 の重みを持つだろう。この量は、
なんとか管理できるようにも見える。しかし、明らかに、フル・
コネクテッド構造は、もっと大きな画像にはスケールしない。
例えば、もっとちゃんとした画像のサイズ、 200x200x3 なら、
ニューロンは、200*200*3 = 120,000 の重みを持つこと
になる。さらに、こうしたいくつかのニューロンを欲しいと思う
のは、ほぼ確実なので、パラメーターの数は、急速に積み上
がってゆく。明らかに、フル・コネクトは、無駄が多く、パラメー
ターの巨大な数は、すぐに、オーバーフィッティングに導く。
239. 上: 通常の三層のニューラル・ネットワーク。
下: 一つの層を図示したのだが、 ConvNetでは、ニューロン
を三次元(幅、高さ、深さ)に並べる。 ConvNetの全ての層は、
入力の三次元のかたまりを、出力の三次元のかたまりに変換
する。この例では、赤で示された入力層が画像を保持してい
る。だから、その幅・高さは、画像の次元である。そして、深さ
は( Red, Green, Blue のチャンネル)、3になる。
ConvNetは、複数の層からなる。全ての層は、単純なAPIを
持つ。それは、入力の三次元のかたまりを、微分可能な関数
で、出力の三次元のかたまりに変える。それは、パラメーター
を持つ場合もあれば、持たない場合もある。