目次
はじめに
こんにちは。てくますプロジェクトのYukkinです! 本記事は、てくますプロジェクトが実施している輪読会『深層学習による画像認識の基礎』の第3回活動記録です。
てくますプロジェクトは、「考える楽しさを探そう!」が合言葉の、数学と情報科学の学習コミュニティです。
輪読会に参加したい方は、Connpass よりお申し込みください。
現在は「深層学習による画像認識の基礎」という本を読み進めています。
リンク
第3回の今回は、<3章 深層学習の基礎>のp.64〜82まで読み進めました!
本記事では、今回の勉強会で学んだことをざっくりと紹介していきます。
学習内容
畳込みニューラルネットワーク(前回の続き)
前回に引き続き、畳込みニューラルネットワークについて学習しました。
畳込み層(前回の続き)
- 正規化
- 畳込み処理→正規化→活性化関数の順序で実行する
- バッチ正規化以外にも様々な正規化がある
- バッチ正規化
- H, W, Bに関する総和で統計量を計算し、正規化を行う
- チャネルごとに結果が得られる
- ミニバッチサイズが小さいと、統計量の計算が不安定になりやすい
- 層正規化
- H, W, C のループで統計量を計算し、正規化を行う
- サンプルごとに結果が得られる
- ミニバッチサイズが小さいことの問題は生じない
- インスタンス正規化
- H, W のループで統計量を計算し、正規化を行う
- サンプルごと、かつ、チャネルごとに結果が得られる
- グループ正規化
- H, W, グループ のループで統計量を計算し、正規化を行う
- 層正規化とインスタンス正規化のバランスを取った正規化
- どの正規化が良いかはケースバイケース
- スキップ接続による残差学習
- 勾配消失問題の解消のため、CNNにおいても不可欠な技術である
- 演算処理を行う側
- conv(畳込み)→BN(バッチ正規化)→活性化関数→conv→BN
- スキップ側
- 上記演算をまるまるスキップ
- 演算処理を行う側とスキップ側で和を計算して出力する
- この一連の演算を残差ブロックと呼ぶ
プーリング層
- 画像の解像度を落とす(ダウンサンプリングする)役割
- 微小な位置変化に対する普遍性を活躍するためにCNNで用いられてきた
- 最大プーリング
- 領域 \(H_p×W_p\) 内の画素値の最大値を返す
- 平均プーリング
- 領域 \(H_p×W_p\) 内の画素値の平均値を返す
- 大域平均プーリング(GAP)
- 全体 \(H×W\) 内の画素値の平均値を返す
- 近年使用されるCNNの多くは、プーリング層を用いず、ストライドが2以上の畳込み層で代替している
出力層
- 出力層は目的のタスクに応じて設計する必要がある
- 画像分類の場合
- 伝統的なCNNでは、データを単純に1本のベクトルに変形してから全結合層に入力し、ソフトマックス関数で各クラスに対する確率スコアを計算する
- 上記の方法では、パラメータ数が非常に多くなり、メモリコストが高くなるなどの問題から、現在では全結合層の前にGAPを挿入することが一般的である
様々な畳込み層
- 拡大畳込み
- 畳込みカーネルのマスとマスの間に間隔を設けた畳込み処理
- 拡大率 r が 1 の場合が、通常の畳込みである
- 点単位の畳込み
- カーネルサイズが1×1の畳込み
- チャネル方向の画素値の集約を行っている
- チャネル数の調整のために用いる
- チャネル別畳込み
- 空間方向に対してのみ畳込み演算を行い、チャネル方向に関して情報の集約を行わない
- 可分畳込み
- 通常の畳込み演算をチャネル別畳込みと点単位の畳込みのペアによって代替した畳込み処理
- 空間方向とチャネル方向の処理を個別に行うことで、計算量と重みパラメータ数を削減できる
- 画像拡大のための畳込み
- 転置畳込み
- エンコーダ・デコーダ型のネットワークのデコーダ部分で用いられることがある
- 通常の畳込み処理の逆向きの計算と考えられる
- 4×4画素の入力に対し、エンコーダ部分でパディング0、ストライド1、3×3サイズのカーネルを適用すると出力は2×2となる。デコーダ部分でこれを4×4に戻すため、転置畳込みではパディング2、ストライド1、3×3サイズのカーネルを適用する
- 市松模様のノイズを出力してしまう可能性があるらしい
- 転置畳込み以外の画像拡大の方法として、アップサンプリングや画素補間を行った後に、通常の畳込み処理を実施する方法などがある
- 転置畳込み
- 変形可能な畳込み
- これについては次回の輪読会で取り扱う
最後に
画像認識の3回目のゼミでした。
CNNの章に突入。既知の内容が多く、まだ平和な感じです。
では、またね!
コメントを書く