モデル解説
CNN(畳み込みニューラルネットワーク)とは
CNN(Convolutional Neural Network / 畳み込みニューラルネットワーク)は、画像を2次元のまま扱い、
小さなフィルタ(カーネル)を画像上でスライドさせて局所的なパターン(エッジ・質感・形の部品)を抽出するニューラルネットワークです。
手書き数字認識デモでは、描いた数字の画像を畳み込み層で特徴マップに変換しながら、0〜9 のどれかを推論しています。
畳み込みの仕組みConvolution & Pooling
畳み込み層は「3×3 などの小さなフィルタ」を画像上で1画素ずつずらしながら、各位置でフィルタと画像の内積を計算します。
その結果は特徴マップ(どこに・どんなパターンがあるかの地図)になります。
同じフィルタを画像全体で使い回す(重み共有)ため、「どの位置に書かれても同じ特徴を検出」でき、パラメータ数も抑えられます。
CNN の情報の流れ:畳み込み層が「どこにどんなパターンがあるか」の特徴マップを作り、最後に全結合層が分類します。
浅い層はエッジや線の方向といった単純な特徴を、深い層は「角」「輪郭」「数字の部品」のような抽象的な特徴を学習します。
デモの「ネットワーク動作」パネルに表示される各層の反応が、この特徴マップです。
プーリングの役割Max Pooling
畳み込みの後には Max Pooling(2×2 領域の最大値だけ残して縦横半分に縮小)を挟みます。
数字を少しずれて書いても、強い反応の位置だけが残るため位置ずれへの耐性が生まれ、同時に計算量も削減されます。
このデモの CNN モデルArchitecture
- 01Conv2D 32(3×3)×2入力 28×28 の画像から基本特徴(エッジ・勾配)を抽出 + ReLU・BatchNorm
- 02MaxPooling + Dropout特徴マップを縮小し、位置ずれ耐性と過学習抑制
- 03Conv2D 64(3×3)×2中レベル特徴(曲線・角・ストロークの組み合わせ)
- 04MaxPooling + Dropoutさらに集約
- 05Conv2D 128(3×3)高レベル特徴(数字の形そのものに近い表現)
- 06MaxPooling + Flatten2次元の特徴マップを1列のベクトルに展開
- 07Dense 512 → 256全結合層で特徴を統合(ここは MLP と同じ仕組み)+ ReLU・Dropout
- 08Dense 10 + Softmax0〜9 各数字の確率を出力
MLP との違いvs MLP
| CNN(このページ) | MLP(多層パーセプトロン) |
| 入力の扱い |
画像を 2次元のまま処理 — 上下左右の近さ(位置関係)が活きる |
画像を 784 個の1列に潰して入力 — 位置関係は考慮されない |
| 結合方式 |
局所結合 — 3×3 の狭い範囲だけを見る |
全結合 — 全入力を一度に見る |
| 重み共有 |
あり — 同じフィルタを全位置で使い回す(効率的・位置不変) |
なし — 結合ごとに独立した重み |
詳しい対比は MLP(多層パーセプトロン)とは の対比表もあわせてご覧ください。
産業用途では: 本デモのような小さな CNN から、MobileNetV2・EfficientNet のような軽量高効率設計へと発展します。
ER-FlowScan Suite の実務モジュール(欠陥検出・対象識別など)でもこの系統のアーキテクチャが使われています
— 詳しくは
機械学習解説 04章「アーキテクチャの進化」 を参照してください。