Kerasにおける**畳み込みレイヤー(Convolutional Layers)**は、主に画像データの処理に用いられる重要な構成要素です。ここでは代表的なレイヤーであるConv2DとMaxPooling2Dについて詳しく解説します。
Conv2D(2次元畳み込みレイヤー)
概要
Conv2Dは、画像のような2次元データに対してフィルタ(カーネル)を適用して特徴マップ(feature map)を抽出するレイヤーです。エッジや模様などのローカルな特徴を検出するのに有効です。
主な引数
-
filters: 畳み込みに使うフィルタ(出力チャネル)の数。これが出力のチャンネル数となります。 -
kernel_size: フィルタのサイズ(例:(3, 3))。 -
strides: フィルタを動かすステップ幅(通常は(1, 1))。 -
padding:'valid'(パディングなし)または'same'(出力サイズを入力と同じにするようパディング)。 -
activation: 活性化関数(例:'relu')。
例
この例では、28×28のグレースケール画像に対して、3×3のフィルタを32個使って畳み込みを行い、ReLU活性化を適用しています。
MaxPooling2D(2次元最大プーリングレイヤー)
概要
MaxPooling2Dは、各特徴マップから情報を圧縮(ダウンサンプリング)することで、計算コストを削減し、過学習を防ぎます。指定したウィンドウ内の最大値を取り出します。
主な引数
-
pool_size: プーリングに使うウィンドウのサイズ(例:(2, 2))。 -
strides: ウィンドウを動かすステップ幅。省略するとpool_sizeと同じになります。 -
padding:'valid'(パディングなし)または'same'。
例
この例では、2×2の領域ごとに最大値を取り出すことで、出力のサイズを1/2に縮小します。
Conv2D + MaxPooling2Dの組み合わせ
一般的な畳み込みニューラルネットワーク(CNN)では、以下のように畳み込みとプーリングを交互に重ねていきます:
これにより、局所特徴の抽出と空間的ダウンサンプリングを繰り返しながら、データの抽象度を高めていきます。
活性化関数との関係
Conv2Dレイヤーの出力には、活性化関数(例えばReLU)を適用して非線形性を導入することが一般的です。これにより、単なる線形変換では表現できない複雑な特徴を学習できます。
まとめ
| レイヤー名 | 役割 |
|---|---|
Conv2D |
特徴抽出(エッジ・模様など) |
MaxPooling2D |
特徴の圧縮・計算負荷の削減・過学習防止 |
これらのレイヤーは、画像認識・物体検出・医療画像解析など、多くの分野で用いられるCNNの基本構成要素です。
生成日:2025/05/22