モジュール 3 ・ 目安 90 分
CNNの構成要素
はじめに — 画像認識の主役、CNNへ
前のモジュールでニューロンという部品を組み立てました。ここからは、その部品を画像認識に特化して並べた 畳み込みニューラルネットワーク(Convolutional Neural Network) (CNN)の構成要素を見ていきます。CNNは、外観検査・自動運転・医療画像診断など、機械が「見る」あらゆる場面で中心的に使われている構造です。
このモジュールでは、CNNを組み立てる3種類の部品を順に扱います。第1に活性化関数の一族——どの関数を選ぶかで学習の効きが変わります。第2にsoftmaxと交差エントロピー——多クラス分類で「答えと正解のズレ」を測る仕組みです。第3に畳み込み——画像から特徴を取り出す、CNNの心臓部です。それぞれ可視化で手を動かしながら、「なぜその部品が必要か」を体で理解していきましょう。
活性化関数ファミリー
モジュール2で、活性化関数がネットワークに非線形性を与える要の部品だと学びました。ここでは代表的な4つを一族として整理します。
シグモイド(Sigmoid) は出力を0〜1に収める古典的な関数です。確率として解釈できる利点がある一方、入力が大きく振れると曲線が寝てしまい、傾き(勾配)がほぼ0になります。 tanh(双曲線正接)(Tanh) はシグモイドを‑1〜1に広げた形で、出力の中心が0になるぶん学習が進みやすくなります。しかし両者とも、端では勾配が消える弱点を抱えます。
そこで登場するのが ReLU(正規化線形関数)(ReLU) です。式はきわめて単純で、
負の入力は0にし、正の入力はそのまま通すだけです。正の領域では傾きが常に1なので勾配が消えにくく、深いネットワークでも学習が安定します。計算も軽いため、現在の深層学習では標準的に使われます。ただしReLUは負側で完全に0になるため、一度その領域に入ったニューロンが二度と反応しなくなる「死んだニューロン」問題が起こり得ます。これを緩めたのが Leaky ReLU(Leaky ReLU) で、負側にもわずかな傾き(例: )を残して、完全には切らないようにした改良版です。
勾配消失を可視化で観察しよう
なぜReLUが好まれるのか、鍵は「勾配」にあります。学習はこの傾きを頼りにパラメータを動かすため(モジュール4で詳述)、傾きが0に近いと更新が止まってしまいます。これが 勾配消失(Vanishing Gradient) です。下のギャラリーで活性化関数を切り替え、入力 のスライダーを大きな正・負の値まで動かしてみてください。シグモイドやtanhでは、 を端に寄せると曲線が水平になり、勾配の表示がほぼ0まで落ちるはずです。 一方でReLUに切り替えると、正の領域では勾配がずっと1のまま保たれます。「端で勾配が消える関数」と「消えない関数」の違いを、勾配の値の変化として自分の目で比べてください。 この違いが、深いネットワークを学習できるかどうかを分けます。
活性化関数ギャラリー
one-hot・softmax・交差エントロピー
次は、多クラス分類の出力側の仕組みです。「この画像は犬・猫・鳥のどれか」を当てる問題を考えましょう。正解ラベルは、モジュール2で登場した one-hot(One-Hot Encoding) で表します。犬なら 、猫なら という具合です。
一方、ネットワークが出す生の出力は、大小バラバラの実数値で、これを ロジット(Logit) と呼びます。たとえば のような3つの値です。これを「合計が1になる確率」に変換するのが softmax(ソフトマックス)(Softmax) です。式は、
各ロジットを指数関数で正の値にし、全体の和で割って正規化します。指数を使うため、大きいロジットはより強調され、確率がそちらへ集中します。one-hotが「カクッと決めた正解」なら、softmaxは「なめらかに配分した予測」だと考えてください。
予測(softmax確率)と正解(one-hot)のズレを測る損失が 交差エントロピー(Cross-Entropy) です。正解クラスの予測確率を とすると、損失は
と書けます。正解クラスに高い確率を割り当てられていれば は1に近く、 は0に近づきます。逆に正解を低く見積もると損失は急激に大きくなり、強いペナルティがかかります。交差エントロピーは、確率分布どうしの隔たりを測る KLダイバージェンス(KL Divergence) と深い関係がありますが、ここでは「予測と正解の確率のズレを測る目盛りで、正解を自信を持って外すほど大きく罰する」という直感で十分です。
可視化で試そう — softmaxと交差エントロピー
下の可視化で、3本のロジットをスライダーで動かしてみましょう。まず3つを同じ値にそろえると、softmax確率が3等分(各約0.33)になることを確かめてください。次に1本だけを大きく上げると、その確率が1へ、他は0へ寄っていくはずです。 このとき、正解クラスを高く設定すればCE損失が小さく、正解を低く抑えると損失が跳ね上がることに注目してください。「予測が正解に自信を持つほど損失が下がり、自信を持って外すほど損失が急増する」という交差エントロピーの性格を、棒グラフと損失値の連動として体感しましょう。
softmax と交差エントロピー
畳み込み — 重みを使い回す線形演算
CNNの心臓部が 畳み込み(Convolution) です。発想はこうです。画像認識で「エッジ(輪郭)」を探したいとき、その特徴は画像のどこに現れるか分かりません。ならば、小さな重みの窓を画像全体にスライドさせながら、同じ計算を各位置で繰り返せばよい——これが畳み込みです。この小さな重みの窓を カーネル(Kernel) (フィルタ)と呼びます。
ここで決定的に重要なのが「重みの使い回し」です。もし画像の全画素を全結合でつなぐと、パラメータ数は爆発的に増えます。たとえば の画像を1024個のニューロンに全結合するだけで100万本もの重みが要ります。ところが の畳み込みカーネルなら、画像のどこでも同じ9個の重みを使い回すので、パラメータはたった9個です。少ないパラメータで済むうえ、「位置が変わっても同じ特徴を検出できる」という性質(位置不変性)まで手に入ります。機械工学でいえば、1本の標準ゲージを部品のあちこちに当てて同じ検査を繰り返す作業に似ています。
カーネルを画像に適用するとき、周囲の扱いと動かし方に2つのパラメータがあります。 パディング(Padding) は画像の縁に0の枠を足す操作で、これをすると出力サイズを入力と同じに保てます。 ストライド(Stride) はカーネルをずらす歩幅で、2にすると1つ飛ばしで適用され、出力が縦横おおよそ半分に縮みます。さらに、一定の区画ごとに最大値や平均値を取って解像度を落とす プーリング(Pooling) という操作もあり、これも特徴を保ちながら情報量を圧縮します。
可視化で試そう — 畳み込みフィルタ実験室
畳み込みが「何をしているか」は、実際にカーネルの値をいじると一目瞭然です。下の実験室では、 のカーネルの9個の値を直接編集でき、変更が即座にサンプル画像へ反映されます。まずエッジ検出のプリセットを選び、輪郭だけが白く浮き上がる様子を見てください。次にぼかしのプリセットに変え、画像がなめらかにボケることを確かめましょう。 そのうえで、カーネルの1マスを大きな正の値に、周囲を負の値にする——といった編集を自分で試し、どんな値の配置がどんな特徴(縦線・横線・強調・平滑化)を取り出すのかを探ってください。 同じ「重み付き和」でも、値の並べ方しだいで役割ががらりと変わることが実感できるはずです。
畳み込みフィルタ実験室
CNN内のテンソル形状の流れ
最後に、画像がCNNの中をどう流れて分類結果に変わるのか、形( テンソル(Tensor) の形状)の変化として追いかけましょう。テンソルとは、行列を3次元以上に拡張した多次元配列のことです。カラー画像は「チャンネル×高さ×幅」の3次元テンソルで表されます。
例として、CIFARの (RGB3チャンネル・縦横32画素)の画像を考えます。畳み込み層を通すと、チャンネル数は使ったカーネルの数だけ増え(例: 3→32)、プーリングやストライドで縦横が縮んでいきます(32→16→8…)。「チャンネルは増え、縦横は縮む」——これが畳み込みネットワークの典型的な流れです。序盤の層では縁や色といった単純な特徴を、後段の層ではそれらを組み合わせた複雑な部品(目・車輪など)を捉える、という階層構造が自然に立ち上がります。最後に、これらの特徴を1本のベクトルに平らにならし、全結合層とsoftmaxを通して、例えば100クラス分の確率——長さ100のベクトルへと変換します。 の生画像が、特徴抽出を経て、意味のある100次元の判断へと姿を変えるのです。
まとめ
このモジュールでは、CNNを組み立てる3種類の部品を扱いました。活性化関数の一族では、シグモイドやtanhが端で勾配消失を起こすのに対し、ReLUが正の領域で勾配を保ち深い学習を可能にすることを可視化で確かめました。出力側では、ロジットをsoftmaxで確率に変え、one-hotの正解との交差エントロピー でズレを測る仕組みを見ました。そして畳み込みでは、 の小さなカーネルを画像全体で使い回すことで、少ないパラメータで位置によらない特徴を取り出せることを体感しました。padding・stride・poolingが出力サイズを制御し、 の画像がチャンネルを増やし縦横を縮めながら、最後に分類ベクトルへと姿を変える——この形の流れがCNNの骨格です。
ここまでのモジュール1〜3で、モデル・部品・構成要素という「静的な設計図」がそろいました。次のモジュール4からは、いよいよ「どうやってパラメータを自動で調整するのか」——学習の動的な仕組み、勾配降下と最適化に踏み込みます。まずは下のクイズで、CNNの構成要素の理解を確かめましょう。
確認クイズ
深いネットワークで ReLU がシグモイドより好まれる主な理由はどれですか。
softmax の役割として正しいものはどれですか。
交差エントロピー損失 L = -log p_true の性質として正しいものはどれですか。
3×3 の畳み込みカーネルが全結合に比べてパラメータを大幅に減らせるのはなぜですか。
CNN内でテンソルの形状がたどる典型的な変化はどれですか(例: 3×32×32 の画像)。