記事とコードは [Github リポジトリ: https://github.com/timerring/dive-into-AI ] またはパブリック アカウント [AIShareLab]にアーカイブされています。Reply Neural Network Basicsも入手できます。
記事ディレクトリ
CNN
畳み込みニューラル ネットワークの歴史
畳み込みニューラル ネットワーク (CNN)
CNN は、画像分野のタスクのために提案されたニューラル ネットワークです。数世代の開発を経て、2012 年以降、画像分類、画像セグメンテーション、ターゲット検出など、ほとんどの画像タスクは CNN によって支配されています。 、など。
CNN の構造は視覚系からインスピレーションを受けています: 1962 年、生物学者のトルステン ヴィーゼとデビッド H. ヒューベル (1981 年ノーベル医学賞受賞) は猫の視覚系を研究し、視覚系に階層構造があることを初めて発見しました。猫のシステムを研究し、細胞には単純細胞と複合細胞という 2 つの重要な種類があり、異なる種類の細胞が異なる抽象化レベルで視覚認識機能を担っていることを発見しました。
猫の視覚システムの実験
- 猫の脳を3mm開けて電極を挿入
- 猫にさまざまな形、位置、明るさ、動きのライトバーを見せてみましょう
- 脳内の視覚ニューロンの活性化を観察する
ニューロンには、受容野とも呼ばれる局所的な受容野(受容野)があります。
細胞の感覚領域には違いがあり、例えばC細胞とD細胞は逆になります(図中の×は反応、三角は無反応)
セルは角度を選択します。示されているように、セルは垂直のライト バーに最も強く反応します。
細胞は移動方向を選択します (図に示すように、a の方が感度が高くなります)。
CNN のインスピレーション:
- 視覚システムは、低レベルの抽象化から高レベルの抽象化へ→ \to と階層的に処理されます。→アナログスタッキングは畳み込みとプーリングを使用します
- ニューロンには実際には局所的な感覚野があり、具体的には局所的に敏感です→ \to→アナログニューロンのローカル接続
畳み込みニューラル ネットワークの最初のプロトタイプ - Neocognitron
1980年、日本の学者福島邦彦は猫の視覚系実験の結論を導き出し、S細胞とC細胞に似た2つの構造を積み重ねた階層構造を持つニューラルネットワーク、つまり新しい認知機械を提案した。S 細胞と C 細胞は、現代の CNN の畳み込みとプーリングにたとえることができます。
短所: 重みを更新するバックプロパゲーション アルゴリズムがなく、モデルのパフォーマンスが制限されます。
福島邦彦ホームページ:http://personalpage.flsi.or.jp/Fukushima/index-e.html
初の大規模商用畳み込みニューラル ネットワーク - Lenet-5
1989 年にレクンらは Lenet の研究を開始し、1998 年にレクンらは Lenet-5 を提案し、米国の郵便システムにおける大規模な手書き郵便番号認識への適用に成功しました。
短所: 大量のデータや高性能のコンピューティング リソースがありません。
最初の驚くべき畳み込みニューラル ネットワーク - AlexNet
2012 年、AlexNet は、ILSVRC 分類タスク チャンピオンシップで 2 位より 10.9 パーセント高いスコアで優勝し、畳み込みニューラル ネットワーク通知画像の分野への序章を開きました。
- 算料:ImageNet
- 演算能力:GPU(GTX580×2)
- アルゴリズム: AlexNet
畳み込み演算
畳み込み層
画像認識機能:
- 特徴は局所的です。たとえば、トラの重要な特徴である「王様のキャラクター」は頭の領域にのみ表示されます。畳み込みカーネルは一度に K*K 領域のみを接続し、K*K は畳み込みのサイズです。カーネル;
- 特徴はどこにでも表示できます- コンボリューション カーネル パラメーターの再利用 (パラメーター共有)、画像上でのスライド (画像ソースの例: https://github.com/vdumoulin/conv_arithmetic)
0×0+1×1+3×2+4×3 =19
- 画像ターゲットを変更せずに画像をダウンサンプリングします
コンボリューションカーネル
コンボリューション カーネル: 学習可能なパラメーターを持つ演算子を使用して、入力画像から特徴を抽出します。出力は通常、特徴マップ(特徴マップ) と呼ばれます。
具体的な処理は、実際の状況に応じて次のようにシミュレーションできます 例えば、最初のエッジ検出コンボリューションカーネル、画素差が少ない画像の場合、コンボリューションカーネルのコンボリューション処理後、中央の8シェアの確率が高いマイナス側 1 株が 8 個、最後に 0 個が黒で表示されます。エッジが非常に目立つ部分がある場合は、縮小後も値が大きく、白く表示されるのでエッジの輪郭を形成できます。
2012 年に、AlexNet ネットワークの最初の畳み込み層が視覚化され、畳み込みカーネルはエッジ、周波数、色の特徴的なパターンを示しました。
Padding : 入力画像の周囲に行/列を追加します。
効果:
- 畳み込み後の画像の解像度を変更せず、特徴マップのサイズ変化の計算を容易にします。
- 「失われた」境界情報を補う
ストライド: コンボリューション カーネルがスライドする行と列の数はストライドと呼ばれ、出力特徴マップのサイズを制御し、1/s の係数で縮小されます。
畳み込みは切り捨てられ、境界が情報を満たさない場合は切り捨てられます。(エッジ情報があってもストライドを満たさない場合は破棄されます)
出力特徴マップ サイズの計算:
F o = [ F in − k + 2 ps ] + 1 \mathrm{F}_{\mathrm{o}}=\left[\frac{\mathrm{F}_{\text {で }}-\mathrm{k}+2 \mathrm{p}}{\mathrm{s}}\right]+1Fああ=[sFで −k+2人】+1
[ 4 − 3 + 2 ∗ 0 ] 1 + 1 = 2 \frac{[4-3+2 * 0]}{1}+1=21[ 4−3+2∗0 ]+1=2
[ 6 − 3 + 2 ∗ 1 ] 2 + 1 = 3 \frac{[6-3+2 * 1]}{2}+1=32[ 6−3+2∗1 ]+1=3
[ 5 − 3 + 2 ∗ 1 ] 1 + 1 = 5 \frac{[5-3+2 * 1]}{1}+1=51[ 5−3+2∗1 ]+1=5
マルチチャンネルコンボリューション: RGB 画像は 3*h*w の 3 次元データで、最初の次元は 3、つまりチャンネル、チャンネル数を意味します。
コンボリューション カーネルは 3 次元テンソルであり、最初の次元は入力チャネルに関連します。
注: コンボリューション カーネルのサイズは通常、高さと幅を指します。
上記のように、コンボリューション カーネルのサイズは 2x3x3x3 です。これは本質的には 2 次元の畳み込みです。
プーリング操作
画像認識機能
- 画像ターゲットを変更せずに画像をダウンサンプリングする - 計算量を削減し、機能の冗長性を削減します。
プーリング: 1 つのピクセルが領域のピクセル値を表し、画像の解像度が低下します。
エリアピクセルがピクセルに置き換えられる方法:
- 方法 1: 最大プーリング、最大値を取得します
- 方法 2: 平均プーリング、平均を取る
現在のモデルの多くはプーリング操作をあまり使用しませんが、プーリングの代わりにステップ サイズ 2 の畳み込みを使用します。これにより、画像の解像度も低下する可能性があります。(プーリングは、特別な種類の畳み込みとして理解することもできます。たとえば、最大プーリングは、最大重みが 1、その他の重みが 0 の畳み込みカーネルとして理解できます。平均プーリングは、平均重みが累積されたボリュームとして理解できます。 )。
したがって、出力サイズの計算は畳み込み演算と似ています: (注: プーリング層には学習可能なパラメーターがありません)
F o = ⌊ F in − k + 2 ps ⌋ + 1 \mathrm{F}_{\mathrm{o} }=\ left\lfloor\frac{\mathrm{F}_{\text {in }}-\mathrm{k}+2 \mathrm{p}}{\mathrm{s}}\right\rfloor+1Fああ=⌊sFで −k+2人⌋+1
プーリング効果:
-
畳み込み層の位置に対する過敏性を軽減します。
1 行目は元の行列、2 行目は畳み込み後の行列、3 行目はプール後の行列です。左右の比較では、外乱を加えた後に畳み込み結果が影響を受けていますが、プーリング結果は影響を受けていないことがわかります。参照: https://zhuanlan.zhihu.com/p/103350961
-
冗長性を減らす
-
画像の解像度を下げることでパラメータの量を減らします
Lenet-5 と CNN 構造進化の歴史
1998 - Lecun 勾配ベースの学習を文書認識に適用
特徴抽出器: C1、S2、C3、S4
- C1層:コンボリューションカーネル K1=(6, 1, 5, 5)、p=1、s=1、output=(6, 28, 28)
- S2層:最大プーリング層、プーリングウィンドウ=(2,2)、s=2、出力=(6,14,14)
- C3 層: コンボリューション カーネル K3=(16, 6, 5, 5)、p=1、s=1、出力=(16, 10, 10)
- S4層:最大プーリング層、プーリングウィンドウ=(2,2)、s=2、出力=(16,5,5)
分類子: 3 FC レイヤー
- FC層:3FC層出力分類
CNN の進化の歴史
- 1980年 新認知学 福島邦彦
- 1998 Lenet-5 レクン
- 2012 アレックスネット アレックス
- 2014 グーグルレネット Google
- 2014 VGG ネット VGG
- 2015 ResNet 開明何
- 2017 DenseNet 高黄
- 2017 SE-Net 胡傑
参考
すべての畳み込みサンプル画像のソース: https://github.com/vdumoulin/conv_arithmetic