G検定(ジェネラリスト検定)
たたみこみそう
畳み込み層
Convolutional Layer
畳み込み層とは、ニューラルネットワークの層のうち、入力と重みの一般的な行列積の代わりに畳み込みという演算を使う層です。小さな重みの並びであるカーネルを入力の上で位置をずらしながら当てはめ、各位置での積の和を並べた特徴マップを出力します。
詳しい説明
畳み込み層とは何か
畳み込み層とは、ニューラルネットワークを構成する層のうち、一般的な行列積の代わりに畳み込み(convolution)という演算を使う層です。Goodfellow、Bengio、Courvilleによる教科書「Deep Learning」(2016年)の第9章は、畳み込みニューラルネットワークについて、格子状の構造を持つと分かっているデータを処理するための特別なニューラルネットワークだと説明しています。そのうえで、少なくとも1つの層で行列積の代わりに畳み込みを使うニューラルネットワークだと定義しています。
格子状の構造を持つデータとは、値が決まった間隔で並んでいるデータです。一定の時間ごとに記録した値の列は1次元の格子、縦横に画素が並ぶ画像は2次元の格子と見なせます。
畳み込み層への入力は、この格子状に並んだ数値です。畳み込み層は、カーネル(kernel)と呼ばれる小さな重みの並びを入力の上で位置をずらしながら当てはめ、位置ごとに積の和を計算します。同書は、こうして得られた出力のことを特徴マップ(feature map)と呼んでいます。
畳み込みの計算式と仕組み
入力が1次元の場合、離散的な畳み込みは次の式で表されます。
ここで は入力、 はカーネル、 は出力である特徴マップです。 は畳み込みを表す記号で、掛け算の記号ではありません。 は出力を求める位置、 は入力の位置を表し、和は のとりうる値すべてについて取ります。
この式は、出力の位置 ごとに、入力の値 とカーネルの値 を掛け、その積をすべて足し合わせることを意味します。実際のカーネルはごく少数の位置にしか値を持たないので、1つの出力 に関わる入力は の近くの少数の値だけです。
画像のような2次元の入力でも考え方は同じで、カーネルも縦横に並んだ重みになり、縦と横の2方向に位置をずらしながら積の和を求めます。畳み込み層が学習によって調整するのは、このカーネルの値です。
数値を使った計算例
1次元の入力で式の動きを確かめます。以下の数値は説明のために作った架空の例です。
入力を 、、、 とし、カーネルを 、 とします。 はこの2つの位置以外では0です。すると式の和のうち0にならない項は2つだけになり、 となります。
入力の4つの値がすべてそろう位置 で計算すると、次のようになります。
特徴マップは0、3、0の並びになり、入力の値が2から5へ変わった位置でだけ大きな値が出ています。このカーネルは「隣の値との差」を測る働きをしており、値が一定の場所では0が返り、値が変わる場所では変化の大きさが返ります。どのような特徴に反応するかはカーネルの値で決まり、畳み込み層はその値を学習で求めます。
出力サイズとパラメータ数の求め方
畳み込み層を設計するときは、出力の特徴マップの大きさと、学習する重みの数を事前に計算します。ここで使う2つの式は、先の教科書の該当箇所に書かれたものではなく、一般に知られている計算方法です。
まず用語を確認します。ストライドは、カーネルを1回に何マスずつずらすかを表す値です。パディングは、入力の外周に値(多くの場合0)を何マス分付け足すかを表す値です。
出力の1辺の大きさは、入力の1辺を 、カーネルの1辺を 、パディングを 、ストライドを として、次の式で求めます。
入力が5×5、カーネルが3×3、ストライドが1、パディングが0のとき、 なので、出力は3×3になります。同じ条件でパディングを1にすると となり、出力は入力と同じ5×5に保たれます。パディングを0に戻してストライドを2にすると となり、出力は2×2に小さくなります。先の1次元の計算例も、入力4個・カーネル2個・ストライド1・パディング0なので となり、出力が3個だったことと合っています。
次にパラメータ数です。カラー画像は赤・緑・青の3つの値を画素ごとに持つように、入力は複数の面を重ねた形をしていることがあり、この面の数をチャンネル数と呼びます。1枚のカーネルは入力の全チャンネルにまたがる重みを持ち、1枚のカーネルから1枚の特徴マップができます。そのため、出力のチャンネル数は使うカーネルの枚数に等しくなります。パラメータ数は次のように求めます。
と はカーネルの縦と横の大きさ、 は入力のチャンネル数、 は出力のチャンネル数です。最後の は、カーネル1枚につき1つずつ持つバイアスの数です。3チャンネルの入力に3×3のカーネルを16枚使う場合、 個になります。この数は入力画像の縦横の大きさに左右されません。
全結合層との違いと3つのアイデア
全結合層は、行列積によってすべての入力とすべての出力の組み合わせに別々の重みを割り当てます。先の教科書は、畳み込みが機械学習の仕組みを改善する助けとなる3つのアイデアとして、疎な結合(sparse interactions)、パラメータ共有(parameter sharing)、同変な表現(equivariant representations)を挙げています。
疎な結合とは、1つの出力が入力の一部とだけ結び付くことです。入力5×5から出力3×3を作る例では、3×3のカーネルを使う畳み込み層の出力1つは入力25個のうち9個だけから計算されます。全結合層では、出力1つが入力25個すべてから計算されます。
パラメータ共有とは、同じ重みを入力の複数の位置で使い回すことです。同書は、全結合のモデルでは各パラメータが出力の計算に1度しか使われないと対比しています。同じ入力5×5と出力3×3で比べると、全結合層は 個の重みを持ちますが、畳み込み層は3×3のカーネル1枚分の9個の重みを9つの出力位置すべてで共有します。
同変な表現とは、入力が位置をずらされると、出力も同じだけずれることです。先の1次元の例で入力の先頭に2を1つ足して2、2、2、5、5としても、同じカーネルで計算した特徴マップは0、0、3、0となり、値3の現れる位置が1つ後ろへずれるだけで、値の並び方は変わりません。どの位置にある特徴も同じカーネルで見つけられるのは、この性質によります。
誤解しやすい点
同変は、出力が変わらないという意味ではありません。入力をずらしても特徴マップが同じままになる性質(不変)とは区別されます。畳み込みで言えるのは、特徴マップが入力と同じだけずれるということです。ここでの不変は、出力がまったく変わらないという厳密な意味で同変と対比するためのものです。プーリングが持つ不変性(最大値プーリング等の項目を参照)は、入力を少しずらしても出力の大部分が変わらないという近似的な性質で、この厳密な意味とは強さが異なります。
出力サイズの式で割り算が割り切れない組み合わせでは、カーネルが入力の端でちょうど収まらないことを意味します。その扱いは使うソフトウェアによって違うため、割り切れる組み合わせを選ぶか、使うソフトウェアの仕様を確かめます。
パラメータ数が入力の縦横の大きさに左右されないのは、パラメータ共有のためです。一方で、計算の回数は出力の位置の数に比例して増えるので、パラメータ数が少ないことと計算量が少ないことは同じではありません。
試験で問われること
G検定
- 畳み込み層は、一般的な行列積の代わりに畳み込みを使う層です。カーネルを入力の上でずらしながら積の和を求め、その出力を特徴マップと呼びます。
- 出力の1辺の大きさは、一般に (入力 - カーネル + 2×パディング) ÷ ストライド + 1 で求めます。入力5×5・カーネル3×3・ストライド1・パディング0なら出力は3×3です。
- ストライドを大きくすると特徴マップは小さくなり、パディングを付けると出力の縮小を抑えられます。パディング1なら入力5×5の大きさが保たれます。
- パラメータ数は、一般に カーネルの縦×横×入力チャンネル数×出力チャンネル数 にバイアスの数(出力チャンネル数)を足して求め、入力画像の縦横の大きさには左右されません。
- 畳み込みが活用する3つのアイデアは、疎な結合・パラメータ共有・同変な表現です。同変とは、入力がずれると特徴マップも同じだけずれる性質で、出力が変わらない不変とは区別します。
最終更新日: 2026/09/23