畳み込みニューラルネットワーク

畳み込みニューラルネットワーク（たたみこみニューラルネットワーク、、略称: CNNまたはConvNet）は層間を共通重みの局所結合で繋いだニューラルネットワークの総称・クラスである。機械学習、特に画像や動画認識に広く使われる。
CNNは、その重み（行列の）共有構造と並進不変特性に基づいて、シフト不変（shift invariant）あるいは位置不変（space invariant）人工ニューラルネットワーク（SIANN）とも呼ばれている。
一般的な畳み込み処理は以下のように定式化される。formula_1はj番目の出力チャネルを、formula_2は相互相関関数を意味する。
formula_3
すなわち各出力チャネル ごとに入力チャネル formula_4 枚分の畳み込みカーネル formula_5 が用意され、カーネルを用いた各入力チャネルの畳み込みの総和へバイアスformula_1項 formula_7 が付与され各チャネル出力となっている。式からわかるように、入力チャネル間は畳み込み処理ではなく和で計算され、また入力チャネル formula_8 と畳みこまれるカーネルは出力チャネルごとに異なる。
カーネルはしばしばフィルタと呼ばれる。これは位置関係をもつ重みづけ和のスライド演算（畳み込み）がフィルタ適用と等価なことに由来する。
畳み込み処理自体は単純な線形変換である。出力のある1点を見ると局所以外の重みが全て0の全結合と等価であることからこれはわかる。多くのCNNでは畳み込み処理に引き続いてシグモイド関数やReLUなどの活性化関数による非線形変換をおこなう。
単純なCNNは順伝播型 (FFN)、すなわち浅い層から深い層へのみ結合をもつ。ただしCNNは2層間の結合様式を規定するクラスでありFFNと限らない。非FFN型CNNの一例として大局的に回帰結合をもち層間では畳み込みをおこなうRecurrent CNNが提唱されている。
CNNは画像・動画認識やレコメンダシステム、自然言語処理に応用されている。
convolution変種.
CNNの核となるアイデアは畳み込み処理（convolution）であり、それには様々な変種がある。以下はその一例である。
pointwise convolution.
formula_5 がスカラーの畳み込みは pointwise convolution と呼称される。例えば2DConvにおける1x1カーネルがある。出力チャネル formula_1 に着目するとこの畳み込みは入力チャネルの加重平均とみなせる。あるいは各点（pointwise）での入力チャネルを跨いだ全結合とみなせる。処理全体では出力チャネルごとに異なる加重を用いて入力チャネル平均を取ることと同義である。利用目的には位置情報を保った（pointwiseな）変換、出力次元数 formula_11 調整などが挙げられる。実装上は最小カーネルによる畳み込みで表現される（例: 2DConvにおける formula_12 weightテンソル）。全結合層（Linear）を用いても容易に表現できる。
grouped convolution.
畳み込みの変種として grouped convolution がある。通常の畳み込みでは全入力チャネルの畳み込み和を計算するが、grouped convolutionでは入出力チャネルをいくつかのグループに分割しグループ内で通常の畳み込みと和をおこなう。これによりカーネル枚数・計算量の削減、複数GPUを用いた学習、別技術と組み合わせた性能の向上などが可能になる（c.f. AlexNet, ResNeXt)。グループ数をチャネル数と一致させる、すなわちチャネル間の和をなくしたものは特にdepthwise convolutionと呼称される。
ネットワーク変種.
CNNは畳み込み処理を用いたニューラルネットワークの総称である。convolutionの種類、Conv kernelのサイズと層の関係、特殊なモジュールの有無などにより様々なサブタイプ（変種）が存在する。
depthwise separable convolution.
depthwise separable convolutionは空間方向の畳み込みとチャネル方向の全結合を分離した畳み込みモジュールである。すなわち通常の畳み込みを depthwiseConv + pointwiseConv で置き換えるモジュールである。計算量・パラメータ量を1/10スケールで削減できる利点がある。
Recurrent CNN.
Recurrent CNN（RCNN）は回帰結合を持つ畳み込みニューラルネットワークである。すなわちフィードフォワード型 (FFN) ではなく回帰型 (RNN) のネットワーク構造を持ち、層間の結合に全結合 (MLP) ではなく畳み込みを採用したニューラルネットワークである。ゆえにCNNでありRNNでもある。
パラメータ.
受容野.
受容野（）は出力中の一点と結合している入力の広さ・幅である。すなわち出力中の一点へと情報を伝達しうる入力域である。視覚等の感覚神経における「受容野」から転用して名付けられた。
例えば1次元の入出力をもつ1層のCNNがあったとする。CNNのカーネルサイズが formula_13 だった場合、出力 formula_14 は入力 formula_15, formula_16, formula_17 の重みづけ和で計算されるため受容野は formula_13 になる。このCNNを2層重ねた場合、formula_19 は中間層 formula_20, formula_21, formula_22 の和でありさらに formula_20 は formula_15, formula_16, formula_17、formula_22 は formula_17, formula_29, formula_30 の和となるため、CNNの受容野は formula_31 になる。
Convパラメータ・変種およびネットワーク変種によって受容野サイズへ異なる影響を与える。以下はその一例である。
受容野のサイズは再帰的に求めることができる。
formula_32 層の畳み込みからのなるCNNを考える。ここでは第 formula_33 層 formula_34 を畳み込み formula_35 で変換して次の層 formula_36 を得る（例: 入力層 formula_37 に formula_38 を作用させて中間層 formula_39 を得る）。ここで formula_40 はカーネルサイズ formula_41 、ストライド formula_42 をもつとする。出力層 formula_43 から見た formula_34 における受容野を formula_45 としたとき、次の式が成立する（図参照）。
formula_46
よって formula_47 を初期条件としてこの式を入力層受容野 formula_48 まで再帰することで受容野を計算できる。 
歴史.
CNNは動物の視覚野から発想を得て福島邦彦によって提唱されたネオコグニトロンに起源を持つ。
当時の画像処理は画像（ピクセルデータ）を注意深く設計されたデータ前処理により特徴量へ変換し、それを用いて学習がおこなわれていた。CNNはピクセルを直接入力に用いることができ、特徴量設計において専門家の知識に依存しない特徴をもつとされた。現在ではCNN以外のニューラルネットワーク（例: Vision Transformer; "ViT"、MLPベースの "gMLP"）でもピクセル入力の画像処理が実現されている。ゆえに畳み込みそのものが特徴設計を不要にするキー技術であるとは言えないことがわかっている。