AI資格ドリル
資格を選ぶ↓

ディープラーニングの手法

G検定のCNN:畳み込みとプーリングの計算

G検定のシラバスには、畳み込みニューラルネットワーク(CNN)の全結合層・畳み込み層・プーリング層・フィルタ・ストライド・パディングがあります。このページは、4×4の小さな入力にフィルタを当てる計算と、出力サイズの式で、各用語が何を指すかを確かめます。畳み込み層は特徴を取り出し、プーリング層は大きさを縮め、全結合層は最後に得点を出します。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. 畳み込み層は、小さなフィルタを入力に滑らせ、重ね合わせて掛け算した合計を出力にする
  2. 出力の幅は (入力−フィルタ+2×パディング)÷ストライド+1 で決まり、割り切れない設定は成り立たない
  3. 同じフィルタを入力全体で使い回す(パラメータ共有)ので、全結合層より重みの数が大幅に少ない
  4. プーリング層は幅と高さを縮める層で、重みを持たず、奥行きは変えない
  5. 2×2・ストライド2の最大値プーリングは、値の75%を捨てて幅と高さを半分にする

3種類の層の役割

Stanford CS231nは、CNNを作る主な層を畳み込み層・プーリング層・全結合層の3種類とし、単純な例として「入力→畳み込み→ReLU→プーリング→全結合」の並びを挙げています。32×32×3の画像に12個のフィルタを使うと、畳み込み層の出力は32×32×12、ReLU(負の値を0にする活性化関数)は大きさを変えず、プーリング層は16×16×12に縮め、全結合層が10クラスの得点を出します。

層役割大きさの変化パラメータ
畳み込み層フィルタを入力に滑らせて、局所の特徴を取り出すフィルタの数だけ奥行きが増える。幅と高さはパディングとストライドで決まるフィルタの重みとバイアスを持つ
プーリング層幅と高さを縮めて、パラメータと計算量を減らす幅と高さが縮む。奥行きは変わらない持たない(固定の関数)
全結合層前の層のすべての値から、クラスごとの得点を出す最後は[1×1×クラス数]になるつなぐ数だけ重みを持つ

用語は畳み込み層、プーリング層、全結合層の用語集にあります。

畳み込みを小さな数値で計算する

4×4の入力に、3×3のフィルタを当てます。ストライドは1、パディングは0です。フィルタを入力の左上に重ね、重なった9個の数同士を掛けて合計します。次に1マスずつ右、下へずらして、同じ計算を繰り返します。数値は説明用に作った架空の例です。

1201
3131
2104
1013
入力(4×4)
10-1
10-1
10-1
フィルタ(3×3)

このフィルタは、各行で左の数から右の数を引く形です。左上の位置では、1行目が 1×1+2×0+0×(−1)=1、2行目が 3−3=0、3行目が 2−0=2 で、合計は3です。4つの位置の計算は次のとおりです。

出力の位置行ごとの計算合計ReLUの後
左上(1−0)+(3−3)+(2−0)33
右上(2−1)+(1−1)+(1−4)−20
左下(3−3)+(2−0)+(1−1)22
右下(1−1)+(1−4)+(0−3)−60

4×4の入力と3×3のフィルタから、2×2の出力ができます。この出力にReLUを通すと負の値が0になり、3、0、2、0になります。実際のCNNでは、フィルタの数値は人が決めず、学習で決まります。

出力サイズの式

Stanford CS231nは、入力の幅をW、フィルタの大きさをF、ストライドをS、ゼロパディングをPとして、畳み込み層の出力の幅を (W−F+2P)÷S+1 と示しています。高さも同じ式です。出力の奥行きは、フィルタの数Kと等しくなります。上の4×4の例は、(4−3+0)÷1+1=2です。

設定計算出力の幅
入力7、フィルタ3、ストライド1、パディング0(7−3+0)÷1+15
入力7、フィルタ3、ストライド2、パディング0(7−3+0)÷2+13
入力7、フィルタ3、ストライド3、パディング0(7−3+0)÷3+1割り切れず成り立たない
入力5、フィルタ3、ストライド1、パディング1(5−3+2)÷1+15(入力と同じ)
入力227、フィルタ11、ストライド4、パディング0(227−11+0)÷4+155

ストライド3の行は (7−3)÷3+1 が整数にならず、フィルタが入力にきれいに収まりません。CS231nも、割り切れない設定は成り立たないとしています。ストライドが1でフィルタが3×3なら、パディングを1にすると出力の幅と高さが入力と同じになります。最後の行は、CS231nが紹介するAlexNetの最初の畳み込み層の設定で、フィルタ96個なら出力は55×55×96です。

用語はストライドとパディングの用語集にあります。

パラメータ数を全結合層と比べる

32×32×3の入力に、3×3のフィルタ12個、ストライド1、パディング1の畳み込みを当てると、出力は32×32×12です。1つのフィルタの重みは 3×3×3=27個で、12個で324個、バイアスは12個なので、合計は336個です。

同じ入力のすべての値を、出力の32×32×12=12,288個のすべてにつなぐ全結合なら、重みは 3,072×12,288=37,748,736個になります。同じフィルタを入力の全体で使い回すので、重みは約3,775万個から324個に減ります。CS231nは、この仕組みをパラメータ共有と呼んでいます。AlexNetの最初の層でも、共有なしなら105,705,600個になるところが、共有ありでは重み34,848個とバイアス96個の34,944個です。数値は説明用の導出と、CS231nの記載です。

最大値プーリング

CS231nは、プーリング層の役割を、幅と高さを徐々に縮めてパラメータと計算量を減らし、過学習も抑えることと説明しています。最も一般的なのは、2×2・ストライド2の最大値プーリングです。入力を2×2ずつに区切り、それぞれの最大値だけを残します。

1321
4650
3214
0172
特徴マップ(4×4)
65
37
プーリング後(2×2)

左上の区切り(1、3、4、6)は最大の6、右上(2、1、5、0)は5、左下(3、2、0、1)は3、右下(1、4、7、2)は7です。16個のうち4個だけが残り、残りの75%は捨てられます。出力の幅は (W−F)÷S+1 で、(4−2)÷2+1=2です。プーリング層は固定の関数なので重みを持たず、奥行きも変わりません。また、プーリングではゼロパディングを通常使いません。

問題文から読み取る

このページの計算例から導いた読み方です。出題を予想するものではありません。

  • 「局所の特徴を取り出す」「フィルタを滑らせる」とあれば、畳み込み層
  • 「幅と高さを縮める」「重みを持たない」とあれば、プーリング層
  • 「前の層のすべての値につながる」とあれば、全結合層
  • 「パディングを増やすと出力が小さくなる」という選択肢は誤り(出力は大きくなる)
  • 「ストライドを大きくすると出力が大きくなる」という選択肢は誤り(出力は小さくなる)
  • 「プーリングで奥行き(チャネル数)が減る」という選択肢は誤り(奥行きは変わらない)

物体検出など、CNNを土台にした応用は物体検出とセグメンテーションのページで整理しています。

よくある質問

畳み込み層とプーリング層の違いは何ですか?

畳み込み層はフィルタの重みを学習して特徴を取り出す層で、プーリング層は幅と高さを縮めるだけの層です。Stanford CS231nは、プーリング層は固定の関数を計算するのでパラメータを持たないと説明しています。

パディングは何のために使うのですか?

出力の幅と高さを調整するためです。ストライドが1のとき、パディングを(フィルタの大きさ−1)÷2にすると、入力と出力の幅と高さが等しくなります。3×3のフィルタならパディングは1です。

全結合層だけでは画像を扱えないのですか?

扱えますが、重みの数が膨らみます。このページの計算例では、32×32×3の入力を[32×32×12]の出力にすべてつなぐと重みは約3,775万個、3×3の12フィルタの畳み込みなら324個です。同じフィルタを使い回す(パラメータ共有)ことが、この差を生みます。

G検定のシラバスにCNNはありますか?

このサイトのG検定の出題範囲の整理では、「畳み込みニューラルネットワーク」の項目に、全結合層・畳み込み層・プーリング層・フィルタ・カーネル・ストライド・パディングが入っています。最新のシラバスは、受験前にJDLAの公式ページで確認してください。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)