Coursera > Deep Learning Specialization > Course 4 : Convolutional Neural Networks の受講記録。
概要
Course 4 は4週分の講座から構成される。
- Week 1 Foundations of Convolutional Neural Networks
- Week 2 Deep convolutional models: case studies
- Week 3 Object detection
- Week 4 Special applications: Face recognition & Neural style transfer
Week1 はCNNの基本を学ぶ。
Convolutional Neural Networks
Computer Vision
これまで学んできたようなNNのinputとしてそれなりのサイズの画像を与えると、パラメータの数が膨大になる。1000×300万次元の行列・・・等。畳み込み演算をつかうことでこの問題を解消できる。
Edge Detection Example
畳み込み演算をつかって簡単な垂直エッジ検出を行う例。
More Edge Detection
positive edge と negative edge
Sobel filter
Scharr filter
フィルタの値をlearning parameterとして学習させる方法もある
Padding
Paddingを使わない場合、以下の課題がある。
- 畳み込み演算を繰り返すたびにinputの画像サイズがどんどん小さくなる
- 画像の端近くの情報は軽視されがち
Valid Convolutions : Paddingを使わない
Same Convolutions : inputとoutputが同じサイズになるようPaddingする
Strided Convolutions
Stride = 畳み込み演算を適用する間隔。
Strideが大きいと、inputに比べてoutputがより小さなサイズになる
outputの1辺のサイズ = floor( (n + 2p - f) / s + 1 )
n:inputの1辺のサイズ、f:filter、p:padding、s:stride
CNNの世界で言う「畳み込み演算」は、数学や信号処理の世界では厳密には「相互相関」と言われる。
(参考)畳み込み警察です! たまには反転のことも思い出してやってください
Convolutions Over Volume
channel数を加味した畳み込み演算の例。
inputとfilterのchannel数は合わせる必要がある
One Layer of a Convolutional Network
畳み込みニュラルネットワークの1階層分の動作
表記法の紹介
ConvNetではパラメータの数は入力画像のサイズに依存せず、フィルタのサイズに依存し、入力画像サイズに比べてずっと少ない数で済む。
Simple Convolutional Network Example
複数階層のConvNetの例。一般的なConvNetでは層が深くなるほどinputの高さと幅が小さく、チャネル数は多くなる。以下の種類のレイヤーがある。
- Convolution(CONV)
- Pooling(POOL)
- Fully Connected(FC)
Pooling Layers
Pooling Layer:表現のサイズを縮小し、計算を高速化し、ロバスト性が増す
Max PoolingとAverage Poolingがあるが、通常はMax Poolingを使う
通常はPaddingしない
ハイパーパラメータは必要だが、学習の必要なパラメータは無い。
(参考)
CNN Example
全結合層も加えたCNNの例。
LeNet-5と呼ばれるClassicなニューラルネットワークに似ているサンプルで説明。
Pooling層には学習の必要なパラメータは無い
FC層はパラメータ数が多い
Conv層はパラメータ数が少ない
Why Convolutions?
Parameter shareing
垂直エッジ検出器などの特徴検出器(filter)は、画像のいろいろな部分に対して有用と考えられる→filter(パラメータ)を使い回すことができ、学習の必要なパラメータ数を削減できる
Heroes of Deep Learning (Optional)
Yann LeCun Interview
後で見る。。