【シーエヌエヌ】
CNN とは?
最終更新:
💡 画像の特徴を学ぶ「AIの目」
畳み込み層を使って、局所的なパターンを学習するニューラルネットワーク。画像認識でよく使われ、1次元の信号などにも応用される。
📌 このページのポイント
- 正式名称はConvolutional Neural Network(畳み込みニューラルネットワーク)
- 同じフィルタを位置をずらして適用し、局所的な特徴を抽出する
- プーリングは特徴マップを縮小する構成の一例で、全CNNに必須ではない
- 画像分類などで使われるが、画像だけに限定されない
畳み込みって何をしてるの?
例えば3×3のフィルタを画像上でずらし、重なった値を掛け算して足し合わせるよ。実際には複数の入力チャネルやバイアスも扱う。同じフィルタを各位置に使い、フィルタの値は学習で調整する。人が全ての線や角の検出規則を手作業で決めるわけではないんだ
層が深くなると何が変わるの?
前の層が抽出した特徴を、次の層が組み合わせて使えるよ。単純な特徴から複雑な形の表現へ、と考えると理解しやすい。ただし「何層目は必ず目を認識する」という固定の役割ではなく、学習データや構成で変わるんだ。プーリングを使うかどうかも構成によるよ
CNN以外に画像認識の方法ってあるの?
Vision Transformer(ViT)もあるよ。画像を小さなパッチへ分け、その列をTransformerで処理する方法なんだ。どちらが速いか、どれくらい正確かは、モデルやデータ、実行環境で比較しよう。CNNという名前だけで常に計算効率が良いとは決まらないよ
CNNはいつごろから研究されているの?
先駆的な研究には、福島邦彦氏の1980年のネオコグニトロン論文があるよ。層を重ねて視覚パターンを認識する構成を提案したものだね。LeCunらの1998年の論文では、勾配に基づく学習とCNNを手書き文字・文書認識に用いている。手書き文字認識は、早い時期からの代表的な応用なんだ
まとめ:ざっくりこれだけ覚えればOK!
「CNN」って出てきたら「フィルタで画像の特徴を段階的に抽出して認識する、画像認識の定番ニューラルネットワークだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Convolutional Neural Network」 = 畳み込みニューラルネットワーク
💬 convolutionは数学の「畳み込み」を指すよ。CNNではフィルタをずらして掛け合わせる処理を畳み込みと呼び、PyTorchのConv2dなどは厳密には相互相関として定義しているんだ