畳み込みニューラルネットワーク(CNN)は、画像認識や画像処理において高い性能を発揮する深層学習モデルの一種です。
従来の多層パーセプトロン(MLP)が画像を平坦化して全結合層に入力することによって空間的な関係性が失われがちであったのに対し、CNNは畳み込み層を用いて画像の局所的な特徴(エッジやテクスチャなど)を抽出し、プーリング層と組み合わせることでそれらを低から高レベルへと階層的に組み合わせてより複雑なパターンを認識します。この構造は、主に重み共有とプーリングによって、物体の位置や形状に多少の変化があっても正確に識別する「位置不変性」を持ち、多様な視覚タスクで高い精度を実現します。
畳み込み層
畳み込み層とは、CNNにおいて、入力データから有用な特徴を抽出するための基本構成要素です。この層では、小さなフィルター(カーネル)を使って入力の局所領域をスキャンし、そこから輪郭や模様といった特徴を検出します。こうして得られる特徴マップ(Feature Map)は、視覚的・空間的な情報を保ったまま次の層へと受け渡されます。畳み込み層を複数積み重ねることで、低次の特徴(例:エッジ)から高次の抽象的な概念(例:物体の形状)まで階層的に学習できる点が大きな利点です。また、パラメータの共有や局所性の活用により、効率よく学習が行えるのもCNNにおける畳み込み層の強みです。
畳み込み層の処理
フィルターを入力データ(画像の場合、画素値の行列)の上に重ね、対応する要素同士を掛け合わせ、その結果を合計する演算を行います。
- フィルター(カーネル)を使って入力画像上をスライド(走査)しながら計算
- 各スライド位置で、フィルターと入力の一部を掛け合わせて足し算(畳み込み演算)
- 出力は特徴マップ(Feature Map)と呼ばれ、入力の中の特徴が強く現れる部分を表します
パディング処理
パディング(Padding)とは、畳み込み層で画像の周囲に余白を追加する処理です。これは出力サイズを調整したり、端の情報を保つ目的で使用されます。
- サイズ調整:
畳み込み演算後の特徴マップのサイズを希望通りに保つ - 端の特徴保持:
画像の端にある重要な情報を失わないようにする - 深いネットワーク構築:
サイズが縮むのを防ぎ、多層構造を安定して構成できる
ストライド
ストライド(Stride)とは畳み込み演算で、フィルターを何ピクセルずつ移動させるかを指定するパラメータです。ストライドが大きくなると、特徴マップのサイズが縮小され、計算量も減ります。
- 計算量の削減:出力サイズが小さくなるため、後続層の負担が軽くなる
- 情報の圧縮:高解像度の情報をコンパクトにまとめる
- 局所性の制御:どのくらい細かく特徴を捉えるかの調整に使える
膨張畳み込み (Atrous Convolution)
膨張畳み込み Atrous Convolution(または Dilated Convolution)は、畳み込み演算の際にフィルターの適用間隔を広げる手法です。これにより、受容野(Receptive Field)を拡大しつつ、計算量を増やさずに広範囲の情報を取得できます。
「Atrous」はラテン語で「穴の空いた」という意味で、フィルターに“隙間”を設けることで広範囲の情報を効率的に取り込めます。
特徴 | 説明 |
受容野の拡大 | フィルターのサイズを変えずに、広い範囲の情報を取得可能 |
解像度の保持 | プーリングなどによるダウンサンプリングなしで特徴抽出が可能 |
計算効率の向上 | 層を深くせずに広範囲の文脈を捉えられるため、計算量を抑えられる |
セマンティックセグメンテーションに有効 | 画像の各ピクセルに対する分類など、密な予測タスクに適している |
深さ方向分離可能畳み込み (Depthwise Separable Convolution)
深さ方向分離可能畳み込みDepthwise Separable Convolutionとは、従来の畳み込み処理を2段階に分けて効率化する手法です。特にMobileNetやXceptionなどの軽量モデルで使われ、計算量とパラメータ数を大幅に削減できます。
ただし、通常の畳み込み処理の近似計算なので、精度は一致しません。
※ 2つのステップ構成
- Depthwise Convolution
(深さ方向畳み込み、または、空間方向畳み込み)
各入力チャネルに個別のフィルターを適用
空間的な特徴をチャネルごとに抽出
フィルター数は「入力チャネル数」と同じ - Pointwise Convolution
(点方向畳み込み、またはチャンネル方向畳み込み)
1×1の畳み込みでチャネル間の情報を統合
出力チャネル数を調整し、ネットワークの表現力を高める
プーリング層
プーリング層(Pooling Layer)とは、畳み込みニューラルネットワーク(CNN)において、特徴マップのサイズを縮小し、重要な情報だけを抽出する処理層です。主に計算効率の向上と過学習の抑制を目的としています。基本的な役割は、以下の3つになります。
- 空間的な情報の要約:
画像の局所領域から代表値を抽出 - 解像度の縮小(ダウンサンプリング):
後続層の計算負荷を軽減 - 位置ズレへの不変性:
物体の位置が多少変わっても認識できるようにする
基本的なプーリングの種類
Max Pooling | 領域内の最大値を抽出 | エッジや強い特徴を強調 |
Average Pooling | 領域内の平均値を抽出 | 全体的な情報をなだらかに保持 |
Global Pooling | 全体領域に対して平均や最大値を取得 | 最終層でよく使われる |
全結合層
全結合層(Fully Connected Layer)とは、ニューラルネットワークにおける基本的な構成要素で、すべての入力ノードがすべての出力ノードに接続される層です。主に分類や回帰の最終段階で使われ、抽出された特徴を統合して予測を行います。CNNにおいても、最終段階での決定層となります。その構造と処理の流れは、概ね次のようになっています。
- 各入力に対して重み(Weight)を掛け、バイアス(Bias)を加算
- その合計値を活性化関数に通して非線形変換
- 全てのノードが互いに接続されているため、情報の統合力が高い
※ CNNの最終段階で重み付きの全結合層を使わず、単純な平均処理で済ませる構成としてGlobal Average Pooling(GAP)を使う場合があります。
スキップ結合
畳み込みニューラルネットワーク(CNN)におけるスキップ結合(Skip Connections)は、近年の深層学習モデル、特に残差ネットワーク(ResNet)やU-Netのようなアーキテクチャにおいて非常に重要な要素となっています。その主な目的は、深層ネットワークにおける勾配消失問題の緩和、情報フローの改善、そしてより深いモデルの訓練を可能にすることです。
ResNetは「スキップ結合を初めて効果的に活用し、深層ネットワークの学習を可能にしたモデル」として知られています。
正規化層
正規化層(Normalization Layer)は、ニューラルネットワークの学習を安定させ、効率を向上させるために導入される重要な層です。特に深いニューラルネットワークでは、層を深くするほど学習が不安定になりやすいため、正規化層の役割は不可欠です。
代表的な正規化層
手法名 | 特徴と用途 |
Batch Normalization | ミニバッチ単位で平均・分散を整える。CNNで広く使用 |
Layer Normalization | 各サンプルの全特徴に対して正規化。RNNやTransformer向け |
Instance Normalization | 画像スタイル変換などで使用。各画像単位で正規化 |
Group Normalization | チャネルをグループ化して正規化。小バッチでも安定 |
コメント