今回は画像処理への応用に関する内容となります。
畳み込みニューラルネットワーク(CNN)の基本的な構造
畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)は、主に画像認識やコンピュータビジョンに使用されるディープラーニングの一種。CNNは、入力画像から特徴を抽出し、これらの特徴を基に分類や回帰を行うモデル。
(1) 畳み込み層 (Convolutional Layer)
- 役割:入力データ(通常は画像)に対して畳み込み演算を行い、特徴マップ(feature map)を生成する。
- 畳み込み操作:フィルター(カーネル)と呼ばれる小さな行列が入力画像に対してスライディングしながら、各位置で加重和を計算して出力する。これにより、画像の局所的な特徴(エッジ、角、テクスチャなど)を抽出する。
- 特徴マップ:フィルターによって生成される新しい画像で、入力画像の特徴を反映している。
(2) 活性化関数 (Activation Function)
- 畳み込み層の出力に非線形性を加えるために使用される。一般的に、ReLU(Rectified Linear Unit)が使われる。ReLUは、負の値を0にし、正の値をそのまま通す関数。
【機械学習】No.2.1.2 活性化関数 – まるまるラリースト
(3) プーリング層 (Pooling Layer)
- 役割:特徴マップの空間的なサイズを縮小し、計算量を削減し、過学習を防ぐために使用される。最も一般的なプーリング手法は**最大プーリング(Max Pooling)**で、局所領域の最大値を選び出す方法。
- **平均プーリング(Average Pooling)**もあるが、最大プーリングの方が一般的に効果的である。
(4) 全結合層 (Fully Connected Layer)
- 最後の特徴をまとめ、出力層に伝える役割を果たす。畳み込み層やプーリング層で抽出された特徴を一つのベクトルとしてフラット化(flatten)し、全結合層で分類を行う。
- この層では、出力ノードがクラス数(例えば、10クラス分類の場合は10ノード)に対応する。
(5) 出力層 (Output Layer)
- 最終的な分類結果を出力する。通常、ソフトマックス関数を使用して、出力を確率分布に変換し、最大の確率を持つクラスを予測結果とする。
フィルター(カーネル)
(1) フィルターとは?
- フィルター(またはカーネル)は、小さな行列(例えば、3×3 や 5×5)で、入力画像に適用され、特徴マップ(Feature Map)を生成する役割を持つ。
- 画像のエッジ、テクスチャ、形状などの特徴を抽出するために使われる。
(2) フィルターの計算方法
フィルターは、画像の各領域に適用され、各ピクセル値との加重和(内積)を計算します。その結果を新しい特徴マップの1ピクセルとして出力します。
例えば、3×3 のフィルターを 5×5 の画像に適用する場合:

パディング(Padding)
(1) パディングとは?
- パディングは、入力画像の周囲にゼロを追加する操作。
- フィルターを適用したときに、出力サイズが縮小するのを防ぐために使われる。
(2) パディングの種類
(i) バリッド(Valid)パディング(パディングなし)
- ゼロを追加せず、フィルターが適用できる範囲だけ計算します。
- そのため、出力サイズが小さくなります。
例:- 入力画像:5×5
- フィルター:3×3
- 出力サイズ:(5−3+1)×(5−3+1)=3×3
(ii) ゼロパディング(Same Padding)
- 出力サイズを 入力と同じ にするために、適切な数のゼロを画像の周囲に追加する。
- 例えば、フィルターサイズが 3×3の場合、周囲に1ピクセルずつゼロを追加すると、出力サイズを元のサイズと同じにできる。
- 例:
- 入力画像:5×5
- パディング:1ピクセルずつ追加(7×7になる)
- フィルター:3×3
- 出力サイズ:(7−3+1)×(7−3+1)=5×5
(iii) リフレクションパディング(Reflection Padding)
画像の周囲を鏡のように反射 してパディングを行う方法です。ゼロパディングと異なり、エッジの情報
を保持しやすくなります。
ストライド(Stride)
(1) ストライドとは?
- ストライドは、フィルターをスライドさせる間隔を指す。
- 通常、ストライドの値は1か2に設定されることが多い。
(2) ストライドによる影響
- ストライドが 1 の場合:
- フィルターを1ピクセルずつスライドしながら適用する。
- 出力画像は入力画像より少し小さくなる。
- ストライドが 2 の場合:
- フィルターを2ピクセルずつスライドさせる。
- 出力画像のサイズが半分になる。
- 計算量が減るため、高速な処理が可能になるが、詳細な情報が失われる可能性がある。
例:
入力画像:5×5
フィルター:3×3
ストライド 1:出力サイズは 3×3
ストライド 2:出力サイズは 2×2
CNNの特徴
局所受容野(Local Receptive Field):
- 畳み込み層のフィルターは、入力データの一部分を見て処理する。この小さな領域(受容野)で特徴を抽出し、全体を通して特徴を学習する。
パラメータ共有 (Parameter Sharing):
- 畳み込み層では、同じフィルターが画像全体に適用される。これにより、パラメータ数が大幅に削減され、計算量やメモリの使用量が減る。
階層的特徴抽出:
- CNNは、最初の層で簡単な特徴(エッジや角など)を抽出し、後の層でより抽象的で複雑な特徴を学習する。これにより、画像の高次元なパターンを捉えることができる。
CNNアーキテクチャの例
LeNet(1998年):
- 最も初期のCNNの一例で、手書き文字認識のために設計された。畳み込み層とプーリング層を交互に配置し、最後に全結合層を使っている。
AlexNet(2012年):
- 大規模な画像データセット(ImageNet)で優れた性能を発揮したCNNアーキテクチャ。深いネットワーク(8層)で、ReLU活性化関数、ドロップアウト(Dropout)による過学習の抑制、データ拡張を活用している。
VGGNet(2014年):
- より深いアーキテクチャ(16~19層)で、単純な構造(3×3の小さな畳み込みフィルターを重ねる)を使い、層が深いほど抽象的な特徴を捉えることができるとしている。
ResNet(2015年):
- 残差接続(Residual Connections)を使うことで、非常に深いネットワーク(最大で152層)でも学習が可能になり、勾配消失問題を解決した。
CNNの利点
画像の自動特徴抽出:
手動で特徴を設計する必要なく、CNNは画像の特徴を自動的に学習して抽出する。
パラメータの削減:
フィルターを共有することによって、ネットワークのパラメータ数が大幅に減少し、計算が効率的になる。
階層的な学習:
CNNは複数の層を重ねることで、単純な特徴から複雑な特徴へと階層的に学習を行う。
CNNの用途
画像分類:
- 画像内の物体やシーンを分類する問題(例:猫か犬かの判定)。
物体検出:
- 画像内で特定の物体を検出するタスク(例:顔検出、車両検出)。
セグメンテーション:
- 画像をピクセル単位で分類する問題(例:画像の背景と前景を分ける)。
スタイル転送:
画像のスタイルを別の画像に転送するタスク(例:芸術作品のスタイルを写真に適用)。
まとめ
畳み込みニューラルネットワーク(CNN)は、画像データを効率的に処理するために設計された強力なモデルで、特徴抽出と分類を自動で行う能力を持っている。画像認識やコンピュータビジョンの分野で非常に優れた性能を発揮しており、深層学習を活用したアプリケーションに広く使われている。
演習
問1
(1) CNNが従来の全結合ニューラルネットワーク(Fully Connected Network)と異なる主な理由は何か?
- 計算速度が遅い
- 画像の局所的な特徴を捉えるためにフィルターを使用する
- ニューラルネットワークの層が少ない
- 出力層が異なる
(2) CNNの主な構成要素に含まれないものはどれか?
- 畳み込み層(Convolutional Layer)
- プーリング層(Pooling Layer)
- 活性化関数(Activation Function)
- 勾配降下法(Gradient Descent)
問2
(1) CNNの畳み込み演算において、フィルター(カーネル)の役割は何か?
- 画像のサイズを大きくする
- 画像の一部の特徴を抽出する
- 画像の色を変更する
- 計算量を減らす
(2) 5×5 の入力画像に 3×3のフィルターを適用し、ストライド1、パディングなし の場合、出力サイズはいくつか?
問3
(1) プーリング層の主な目的として正しくないものはどれか?
- 計算コストを削減する
- 特徴マップのサイズを小さくする
- モデルの過学習を抑える
- 新しい特徴を学習する
(2) **最大プーリング(Max Pooling)と平均プーリング(Average Pooling)**の違いを説明せよ。
問4
(1) CNNでよく使われる**ReLU(Rectified Linear Unit)**関数の出力はどれか?
- 任意の実数値
- 0 または 1
- 負の値は 0、正の値はそのまま
- 入力値の2乗
(2) シグモイド関数よりReLU関数がCNNでよく使われる理由は?
問5
(1) 入力画像:8×8、フィルター:3×3、ストライド:2、パディング:1 の場合、出力サイズを求めよ。
(2) 入力画像が 32×32、5×5のフィルターを適用、ストライド 1、パディング 2 の場合、出力サイズはいくつか?
問6
(1) 畳み込み層を深くすると、モデルの性能はどのように変化するか?
- 過学習のリスクが増える
- 層が増えても学習には影響しない
- 常に精度が向上する
- モデルの計算速度が上がる
(2) 転移学習(Transfer Learning)の利点を簡潔に説明せよ。
↓
↓
↓
(解答)
問1
(1)解答:2(画像の局所的な特徴を捉えるためにフィルターを使用する)
解説:
CNNは畳み込みフィルターを用いて画像の局所的な特徴を抽出し、深い層でより高度な特徴を学習する。
(2)解答:4(勾配降下法(Gradient Descent)
解説:
勾配降下法はパラメータ更新の手法であり、CNNの構成要素ではない。
問2
(1)解答:2(画像の一部の特徴を抽出する)
解説:
畳み込みフィルターはエッジやテクスチャなどの特徴を抽出する役割を持つ。
(2)解答:3×3
解説:

問3
(1)解答:4(新しい特徴を学習する)
解説:
プーリング層は特徴の縮小・抽象化が目的であり、新しい特徴を学習するわけではない。
(2)
最大プーリング(Max Pooling): 各領域の最大値を取得し、特徴を強調する。
平均プーリング(Average Pooling): 各領域の平均値を計算し、特徴全体を滑らかにする。
問4
(1)解答:3(負の値は 0、正の値はそのまま)
解説:

(2)
勾配消失問題(Vanishing Gradient Problem)を軽減できる。
計算がシンプルで高速。
負の値を0にすることでスパース性を持たせられる。
問5
(1)解答:4×4
解説:

小数の場合は一般的に切り捨てまたは調整が行われる。
(2)解答:32×32
解説:

問6
(1)解答:1 (過学習のリスクが増える)
解説:
層が深くなると、モデルの表現力は増すが、データが不足していると過学習しやすくなる。
(2)事前学習済みモデルを利用することで、少量のデータでも高精度なモデルを構築できる。
計算コスト削減
小規模データセットでも良好な結果
事前学習済みの特徴抽出能力を活用
参考資料
・データサイエンス数学ストラテジスト[上級]公式テキスト | 公益財団法人 日本数学検定協会 |本 | 通販 | Amazon