畳み込みニューラルネットワーク
畳み込みニューラルネットワーク(CNN, Convolutional Neural Network)とは、主に 画像認識 の分野で用いられるディープラーニングアルゴリズムである。
人間の脳の視覚処理を模した構造を持ち、入力画像から自動的に特徴量を抽出し、それらを区別する能力を学習する点が特徴だ。
通常のニューラルネットワーク(3層構造程度)を大幅に深くした ディープニューラルネットワーク の一種であり、特に「一般物体認識」タスクで優れた性能を発揮することから注目されている。
CNNは主に以下の層で構成される。
• 入力層
• 畳み込み層(Convolution Layer)
• プーリング層(Pooling Layer)
• 全結合層(Fully-connected Layer)

生物学的な対応として、
• 入力層=網膜
• 畳み込み層=単純型細胞
• プーリング層=複雑型細胞
と近い役割を持つとされる。
局所受容野(Local Receptive Field)
人間が物体を見るとき、網膜が像全体を一度に処理するわけではなく、小さな領域ごとに分けて認識している。この小さな領域を局所受容野と呼ぶ。
CNNでも同様に、入力画像の一部分(局所)に注目して特徴を抽出する。これは畳み込み層の基本的な思想になっている。
畳み込み層:局所特徴の抽出
畳み込み層の役割は 画像内の局所的な特徴量を抽出することである。
重ね合わせた部分を計算すると以下のようになる。
これを1つずつずらしていき、u2,u3…のようにして計算をしていく。結果uの固まりができる。画像とフィルタが似ていればuは大きくなる→特徴量の抽出。
画像は隣り合うピクセル同士の関係性が強く、エッジ・色の変化・模様などの特徴は局所に存在している。畳み込み層は カーネル(フィルタ) と呼ばれる小さな重み行列を画像の上でスライドさせ、加重和を計算することで特徴を抽出する。
カーネルとストライド
• カーネル(フィルタ):特徴を抽出するための重み行列
• ストライド:カーネルを移動させる幅
• 出力:特徴マップ(Feature Map)
カーネルの重みはバックプロパゲーションで学習され、同じカーネルが画像全体に対して共有される(重み共有)。これにより学習すべきパラメータが大幅に減り、学習効率が向上する。
畳み込み層ではカーネル(フィルタ)を画像の上でスライドさせ、局所的な特徴(エッジ・色の変化・模様など)を抽出する。
ストライドによってカーネルの移動幅が決まり、出力は特徴マップ(feature map)と呼ばれる。
● 重み共有(Weight Sharing)
畳み込み層のフィルタは、画像のすべての位置に対して同じ重みが適用される。
これは重み共有と呼ばれ、以下の利点がある。
• パラメータ数を大幅に削減
• 計算量を削減
• 「犬の耳」などの特徴がどの位置にあっても同じフィルタで認識できる
「特徴は画像内のどこにあっても同じ意味を持つ」という性質を利用した仕組みである。
プーリング層:移動不変性の獲得
プーリング層の役割は 位置に依存しない特徴表現(移動不変性)を得ることである。
畳み込み層で抽出された特徴は、物体が画像のどこにあるかで変化してしまう。これを軽減するため、プーリング層では特徴量マップの一部の領域(ウィンドウ)から代表値を取り出す。
代表的な手法は以下である。
• マックスプーリング:ウィンドウ内の最大値を取得
• 平均プーリング:ウィンドウ内の平均値を取得
これにより情報を圧縮し、位置の違いに頑健な特徴を獲得できる。
最大プーリング
画像の中から最大値を抽出するプーリングの手法。
例えばx1,x2,x4,x5のうち一番大きい値をu1とする。少しずつずらして同じことを実施し、結果以下のようなuの固まりができる。
最大値を取っているため、位置がある程度変化しても値が変化しないのが特徴(頑健性)。
パディング:特徴マップの縮小を防ぐ
畳み込みやプーリングを行うと、通常は出力のサイズが小さくなる。
そこで パディング を用いて、画像の周囲に0値のピクセルを追加し、縦横の大きさを維持することができる。
これにより、層を重ねても解像度が極端に小さくなるのを防ぎ、深いネットワーク構造を構築できる。
全結合層:最終的な分類を行う
畳み込みとプーリングで抽出された特徴をもとに、最後に 全結合層 が最終的なクラス分類や予測を行う。
ここでは抽出された特徴の組み合わせを学習し、「この画像は犬か?猫か?」といった判断を下す。CNN全体の“判断フェーズ”を担う部分である。
ソフトマックス関数
出力層で使われる関数。出力層のイメージは以下。(u1が全結合層から来る値)
ソフトマックス関数の式は以下。0~1の値をとり、総和が1になる。(=確率)
交差エントロピー
出力層で得た値を最後教師データと比較する。その時に使用する誤差関数の1つが交差エントロピーである。
誤差関数(交差エントロピー)を最小にするように重みを調整していく
例)
教師データは以下であったとする。
それに対し出力層で得た値は以下である。
この時の交差エントロピーを求める。
CNNの直感的理解:拡大鏡のように画像を順番に見る
CNNの特徴抽出は、
「画像を拡大鏡で小さな領域ごとにじっくり見る」
という作業に例えると理解しやすい。
• 畳み込み層:拡大鏡で小さく切り取られた部分を観察し、模様やエッジを見つける
• プーリング層:切り取った部分のうち重要な部分だけ残す
• 全結合層:さまざまな特徴を組み合わせ、最終的なラベルを判断する
このようにして、画像全体の意味を理解していくのがCNNである。
CNNの応用(CIFAR-10 / MNIST など)
CNNは画像認識の基礎タスクでも圧倒的な性能を発揮する。
● MNIST(手書き数字認識)
• 28×28の白黒画像
• 0〜9の分類タスク
• CNNは初期の研究でほぼ98%以上の精度を達成し、画像認識技術の基盤となった
● CIFAR-10(小型カラー画像)
• 32×32のカラー画像
• 飛行機、犬、猫など10クラス
• 畳み込み層で色や模様を識別し、深い層でより複雑な特徴を捉えられる
CNNの活用例
CNNは画像分類以外にも多岐にわたる分野で活用される。
• 医療画像診断(腫瘍の検出)
• 自動運転(カメラ映像の解析)
• 顔認識(スマホのロック解除)
• 衛星画像の解析(農業・気象)
• 不良品検知(製造業)
• スタイル変換(画像の芸術風変換)
• 物体検出モデル(YOLO・SSD)
畳み込み処理による特徴抽出能力が高く、多くの画像関連AI技術の基盤となっている。
参考URL









