ディープラーニングの手法
G検定のCNN:畳み込みとプーリングの計算
G検定のシラバスには、畳み込みニューラルネットワーク(CNN)の全結合層・畳み込み層・プーリング層・フィルタ・ストライド・パディングがあります。このページは、4×4の小さな入力にフィルタを当てる計算と、出力サイズの式で、各用語が何を指すかを確かめます。畳み込み層は特徴を取り出し、プーリング層は大きさを縮め、全結合層は最後に得点を出します。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 畳み込み層は、小さなフィルタを入力に滑らせ、重ね合わせて掛け算した合計を出力にする
- 出力の幅は (入力−フィルタ+2×パディング)÷ストライド+1 で決まり、割り切れない設定は成り立たない
- 同じフィルタを入力全体で使い回す(パラメータ共有)ので、全結合層より重みの数が大幅に少ない
- プーリング層は幅と高さを縮める層で、重みを持たず、奥行きは変えない
- 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マスずつ右、下へずらして、同じ計算を繰り返します。数値は説明用に作った架空の例です。
| 1 | 2 | 0 | 1 |
| 3 | 1 | 3 | 1 |
| 2 | 1 | 0 | 4 |
| 1 | 0 | 1 | 3 |
| 1 | 0 | -1 |
| 1 | 0 | -1 |
| 1 | 0 | -1 |
このフィルタは、各行で左の数から右の数を引く形です。左上の位置では、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) | 3 | 3 |
| 右上 | (2−1)+(1−1)+(1−4) | −2 | 0 |
| 左下 | (3−3)+(2−0)+(1−1) | 2 | 2 |
| 右下 | (1−1)+(1−4)+(0−3) | −6 | 0 |
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+1 | 5 |
| 入力7、フィルタ3、ストライド2、パディング0 | (7−3+0)÷2+1 | 3 |
| 入力7、フィルタ3、ストライド3、パディング0 | (7−3+0)÷3+1 | 割り切れず成り立たない |
| 入力5、フィルタ3、ストライド1、パディング1 | (5−3+2)÷1+1 | 5(入力と同じ) |
| 入力227、フィルタ11、ストライド4、パディング0 | (227−11+0)÷4+1 | 55 |
ストライド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ずつに区切り、それぞれの最大値だけを残します。
| 1 | 3 | 2 | 1 |
| 4 | 6 | 5 | 0 |
| 3 | 2 | 1 | 4 |
| 0 | 1 | 7 | 2 |
| 6 | 5 |
| 3 | 7 |
左上の区切り(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を土台にした応用は物体検出とセグメンテーションのページで整理しています。
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
畳み込み層とプーリング層の違いは何ですか?
畳み込み層はフィルタの重みを学習して特徴を取り出す層で、プーリング層は幅と高さを縮めるだけの層です。Stanford CS231nは、プーリング層は固定の関数を計算するのでパラメータを持たないと説明しています。
パディングは何のために使うのですか?
出力の幅と高さを調整するためです。ストライドが1のとき、パディングを(フィルタの大きさ−1)÷2にすると、入力と出力の幅と高さが等しくなります。3×3のフィルタならパディングは1です。
全結合層だけでは画像を扱えないのですか?
扱えますが、重みの数が膨らみます。このページの計算例では、32×32×3の入力を[32×32×12]の出力にすべてつなぐと重みは約3,775万個、3×3の12フィルタの畳み込みなら324個です。同じフィルタを使い回す(パラメータ共有)ことが、この差を生みます。
G検定のシラバスにCNNはありますか?
このサイトのG検定の出題範囲の整理では、「畳み込みニューラルネットワーク」の項目に、全結合層・畳み込み層・プーリング層・フィルタ・カーネル・ストライド・パディングが入っています。最新のシラバスは、受験前にJDLAの公式ページで確認してください。
