はじめに
「AIが画像から猫を認識する」といった技術の裏側では、CNN(Convolutional Neural Network: 畳み込みニューラルネットワーク) という技術が活躍しています。ディープラーニング、特に画像認識の分野を学ぶ上でCNNは避けては通れない重要なテーマです。
しかし、「畳み込み」や「プーリング」といった専門用語が出てきて、難しそうだと感じてしまう方も多いのではないでしょうか? この記事では、そんなCNNの仕組みをざっくりと直感的に理解することを目標に解説していきます。
CNNとは? なぜ画像認識が得意なの?
CNNとは、一言でいえば「画像認識に特化したディープラーニングのモデル(手法)」です。人間の脳が物を見るときに、目から入った情報を処理する「視覚野」という部分の仕組みにヒントを得て作られました。
なぜ普通のニューラルネットワークではダメなのか?
従来のニューラルネットワーク(全結合型)に画像を入力すると、いくつかの問題点がありました。
- 位置情報が失われる: 画像を一次元のデータ(ただの数字の列)に変換して入力するため、「ピクセル同士の位置関係」という大切な情報が失われてしまいます。
-
パラメータが爆発的に増える: 画像のピクセル一つ一つをニューロンに繋ぐと、学習すべきパラメータ(重み)の数が膨大になり、計算が非常に困難になります。
- 例えば、たった100×100ピクセルの白黒画像でも、入力層のニューロンは10,000個。次の層のニューロンが1,000個だとしたら、その間のパラメータは 10,000 × 1,000 = 1,000万個にもなってしまいます。
CNNは、これらの問題を解決するために生まれました。
CNNの仕組み:2つの強力なアイデア
CNNがやっていることを簡単にいうと、画像から「特徴」を見つけて覚え、それを元に物体を認識しています。この「特徴を見つけ出す」プロセスで、以下の2つの強力なアイデアが使われています。
- 畳み込み層 (Convolutional Layer)
- プーリング層 (Pooling Layer)
この2つを順番に見ていきましょう。
1. 畳み込み層:脳の「専門ニューロン」を真似る
畳み込み層の役割は、画像から「特徴(輪郭、色、模様など)」を抽出することです。そのために「カーネル(フィルターのようなもの)」と呼ばれる小さなマトリックスを使います。
たとえるなら… 🧠
実はCNNがヒントにした人間の脳の仕組みそのものが最も良い例えになると思っています。
私たちの脳にある視覚を司る部分(視覚野)には、非常に特殊な神経細胞(ニューロン)が存在します。例えばあるニューロンは「縦線にだけ」、別のニューロンは「斜め45度の線にだけ」というように、それぞれが決まった特定のパターンにのみ強く反応(発火)するようにできています。
CNNのカーネルは、この「専門ニューロン」の働きをそっくり真似たものです。
カーネル(専門ニューロン)が画像全体をスキャンしていき、自分の担当するパターン(例えば「縦線」)にそっくりな部分を見つけると、強く「反応(発火)」します。この操作を「畳み込み演算」と呼びます。
役割の違うたくさんのフィルター(「縦線ニューロン」「横線ニューロン」「赤色ニューロン」など)を用意することで画像中の様々な基礎的な特徴がどこにあるかを記した特徴マップ(発火マップ)が完成します。
上のように入力データとして与えられた画像にカーネルを照らし合わせ、ずらしていきながら特徴を数値化して集めていくイメージです。
つまりCNNは、学習を通じて画像の中から「猫の輪郭」や「人の目」といった複雑なものを認識するのに役立つ「仮想的な専門ニューロン群」を自ら作り出しているのです。
2. プーリング層:特徴を凝縮する
畳み込み層で抽出した特徴マップには、まだ情報が多く含まれています。プーリング層の役割は、この特徴マップを要約(凝縮)してより扱いやすくすることです。
プーリングは、たくさんの情報の中から「特に大事なところだけを抜き出す」作業です。
例えば、特徴マップを4つのエリアに分け、それぞれのエリアで最も重要な情報(最大値)だけを残す、といった具合です。これにより、以下のメリットが生まれます。
- 計算コストの削減: データサイズが小さくなるので、計算が速くなります。
- ズレに対する頑健性: 画像の中で特徴の位置などが多少ズレても、同じ結果が出やすくなります。(例えば、猫の顔が少し右にずれて写っていても、同じように「猫」だと認識しやすくなります)
よく使われる「最大プーリング(Max Pooling)」という手法では、特徴マップを小さな領域に分割し、その領域内の最大値だけを取り出して新しい小さな特徴マップを作ります。
CNNの全体像:畳み込みとプーリングの繰り返し
CNNの全体的な構造は、これまで見てきた「畳み込み層」と「プーリング層」のセットを何層にも重ねていくことで成り立っています。
- 入力画像が与えられる。
-
[畳み込み層 → プーリング層]
のセットを繰り返す。- 浅い層(入力に近い層)では、輪郭や色といった単純な特徴を抽出します。
- 層が深くなるにつれて、それらの単純な特徴が組み合わさり、目や鼻、耳といった、より複雑なパーツの特徴が抽出されます。
- 最終的に得られた特徴マップを一次元のデータに変換します(Flatten)。
- これを全結合層(普通のニューラルネットワーク)に入力し、「この画像は猫である確率90%、犬である確率5%…」といった最終的な分類結果を確率として出力します。
まとめ
今回は、CNN(畳み込みニューラルネットワーク)の仕組みについて、ざっくりと解説しました。
- CNNは画像認識が得意なディープラーニングモデル。
- 畳み込み層が、脳の「専門ニューロン」を真似て画像から特徴を抽出する。
- プーリング層が抽出した特徴を凝縮し、扱いやすくする。
- この
[畳み込み→プーリング]
のセットを繰り返すことで、単純な特徴から複雑な特徴へと、段階的に学習していく。
CNNには、今回紹介しきれなかった細かいテクニックがたくさんありますが、まずはこの「畳み込み」と「プーリング」という2つの中心的なアイデアを掴んでおけば、今後の学習がぐっとスムーズになるはずです。
Views: 0