CNN (畳み込みニューラルネット)
- 局所的な情報の集約方法は時刻によらないことを仮定
- 畳み込み: 時間非依存の変換を仮定
- プーリング: 局所的な不変性を仮定
- RNNと比べて,入力系列の順番に対して寛容
- 隠れ状態間に依存関係が少なく,並列化しやすい
- 画像処理で成功を収めている
-
画像処理では2次元CNNが一般的だが,言語処理では1次元
-
典型的な畳み込みネット
- 畳み込み層(convolution layer)とプーリング層(pooling layer)がペアでこの順に並び,これが複数回繰り返され,最後に全結合層を1層以上配置する
- 複数の畳み込み層ののち,プーリング層と続く場合もある
- 局所コントラスト正規化(LCN; local contrast normalization)層をプーリング層の後に挿入することもある
畳み込み
- 畳み込み
- 画像とフィルタ間で定義される積和計算
- 縦横方向に$s$画素ずつフィルタをずらしながら計算
- フィルタの濃淡パターンと類似した濃淡パターンが,入力画像のどこにあるかを検出する
- 畳み込み後の画像サイズは,入力サイズよりも小さくなる
- 画像とフィルタ間で定義される積和計算
- パディング
- 畳み込み後サイズが入力サイズと同じにするために,畳み込み前に適切な「ふち」を与える方法
- ゼロ値で埋めるのをゼロパディングという
- 必ずしもゼロで埋めるのが良いとは限らず,周辺値から決める方法などもある
- ストライド
- フィルタをずらす間隔
- 大きくしすぎると特徴をとりこぼしかねない
畳み込み層
- 実用的には,多チャンネルの画像に対して複数個のフィルタを並行して畳み込む
- 中間層での出力を「画像」とよばず「マップ」とよぶこともある
プーリング層
- 通常畳み込み層の直後に設置
- 畳み込み層で抽出された特徴の位置感度を若干低下させる
- $H \times H$正方領域内の画素集合から1つの画素値を求める
- これを適当なストライドをとって入力に適用する
- 種類
- max pooling
- $H^2$の中から最大値を選ぶ
- 画像認識では定番
- average pooling
- $H^2$の画素の平均値を使う
- Lp pooling
- $P=1$ならaverage pooing
- $\infty$ならmax pooling
- max pooling
- 活性化関数は普通適用しない
- プーリング層に学習によって変化するパラメータは無いため
- ある単語の出現位置が窓幅内のどこでもmax poolingをかけると出力は同じ
- 可変長入力に対して固定長表現を得るためにも使われる
正規化層
- 画像の濃淡を正規化
- 局所コントラスト正規化(LCN)
- 減算正規化
- 除算正規化