【機械学習/ディープラーニング理論】CNNの進化と主要モデル：AlexNetからResNetまでの遷移を簡単にまとめてみます。

# 概要
**CNN (畳み込みニューラルネットワーク)** の基礎から、代表的なモデル（AlexNet、VGGNet、GoogLeNet、ResNet）を簡単にみていきたいと思います。どのように進化し、現代の高精度な画像認識モデルに至るのかの遷移の概要を見ていければと思います。

## CNN（畳み込みニューラルネットワーク）とは

**CNN(Convolutional Neural Network : 畳み込みニューラルネットワーク)** は、画像認識や物体検出などのタスクに特化したディープラーニングのアーキテクチャです。CNNは、画像データの空間的な構造をうまく捉えることができるように設計されており、画像処理の分野で非常に高い性能を発揮します。

CNNは、主に次の3つの層で構成されています。

- **畳み込み層（Convolutional Layer）**:
画像内の特徴を抽出する役割を果たします。フィルター（カーネル）を使って、局所的な特徴を捉えるため、隣接するピクセル同士の関連性を考慮した情報を抽出できます。

■　畳み込み処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/fe621a6d-f6c4-a0fc-d1b3-61149235002f.png)



- **プーリング層（Pooling Layer）**
畳み込み層で抽出された特徴マップをダウンサンプリングし、重要な特徴を残しながらデータのサイズを圧縮します。このように特徴マップのサイズを小さく圧縮する処理をプーリング処理といい、この処理をする層を**プーリング層**という。これにより、計算コストを減らし、モデルの過学習を防ぐ役割もあります。

■　プーリング処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/617e5237-76d9-14f2-8033-5a4ec8c39e38.png)


- **全結合層（Fully Connected Layer)**
プーリング層で小さくされた特徴マップを平坦化し、最終的なクラス分類や予測に用います。

・全結合処理
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/381629/601752d8-8479-6d55-b6bd-4f0658428984.png" width="300">


CNNは、このような層を積み重ねることで、画像の階層的な特徴を学習していくすくみです。最初の層ではエッジや線などの低次の特徴を学習し、後半の層では物体全体やより抽象的な特徴を学習します。

## 各モデルの説明
CNNはディープラーニングの代表的なアーキテクチャーになりますが、具体的なモデルについていくつか見ていきましょう。

## 1. VGGNet 
「VGGNet」は、非常にシンプルな構造を持つCNNアーキテクチャです。VGGNetでは、3×3の小さな畳み込みフィルタを積み重ねることで、深い層を形成しています。モデルが深くなるにつれて、特徴マップのサイズは小さくなりますが、特徴マップの数は増えるため、より抽象的で複雑なパターンを学習します。

- 層の深さが増すごとに、より高次の特徴を捉えられるようになる。
- 特徴マップの縦横の幅は小さくなるが、数が増える。

VGGNetは、そのシンプルさから扱いやすく、多くのタスクで使用されてきましたが、層が深いため計算コストが高いという欠点もあります。

## 2. AlexNet
　AlexNetは、2012年の「ImageNet Large Scale Visual Recognition Challenge (ILSVRC)」で優勝し、ディープラーニングによる画像認識の性能を一気に飛躍させたモデルです。AlexNetは、従来のCNNの構造に加えて、大規模なデータセットに対応するために **「5つの畳み込み層と3つの全結合層」** で構成されています。

1. ドロップアウトや **ReLU（Residual Network）** を導入し、モデルの過学習を防ぎつつ、学習速度を向上。
1. GPUを使った並列計算によって、従来よりも大規模なデータセットに対して短時間で学習できるようになった。

AlexNetは、プーリング層と全結合層の組み合わせにより、分類タスクで非常に高い性能を発揮しました。

## 3. GoogLeNet (Inception)

**GoogLeNet(Inception)** は、VGGNetのように単純に層を深くするアプローチではなく、モデルの構造自体を最適化することで性能を向上させたCNNです。特に「Inceptionモジュール」が特徴的で、これにより複数の畳み込みフィルタ（1×1、3×3、5×5など）を同時に適用し、異なるスケールの特徴を同時に捉えることができます。

1. Inceptionモジュールを積み重ねて構成されており、層の数が多くなることなく、複雑な特徴を捉えることが可能。
1. 計算リソースを最適化しつつ、高いパフォーマンスを実現。

GoogLeNetは非常に深いネットワークでありながら、計算コストが軽く、効率の良いモデルとして知られています。

## 4. ResNet

**ResNet（Residual Network)** は、従来のCNNモデルが抱えていた問題（層を深くすると学習がうまく進まない「勾配消失問題」など）を解決するために開発されました。ResNetは、**残差ブロック（Residual Block）** を導入することで、非常に深いネットワークでも効率的に学習できるようにしています。勾配消失問題を解消できるスキップ結合を導入している点も特徴です。

- 残差接続（skip connection）により、入力がそのまま後の層に伝わるため、勾配消失の問題を回避。
- 非常に深いネットワーク（数百層）を構築しても、学習が安定しやすい。

ResNetの導入により、層を積み重ねることで精度を向上させるというアプローチが大幅に進化し、多くの画像認識タスクで高い精度を達成しました。

# 遷移と進化の流れ

AlexNetの登場により、ディープラーニングを使った画像認識の可能性が一気に広がり、GPUを用いた並列計算の重要性が認識されました。VGGNetは、シンプルで効果的な深いネットワークの構築方法を提示し、層を増やすことで性能を向上させる手法が普及しました。**GoogLeNet（Inception）** は、深さに頼らず、構造を工夫することで計算効率とパフォーマンスを両立させた新しいアプローチを示しました。ResNetの登場により、非常に深いネットワークの学習が可能となり、さらなる高精度なモデルが誕生しました。

# まとめ
　画像認識や音声認識で使用されるCNNについて見てきました。CNNの発展は、層を深くするだけでなく、計算効率や学習の安定性を考慮しながら進化してきました。その中で、代表的なモデルである「VGGNet」「AlexNet」「GoogLeNet」「ResNet」を簡単にみてきました。ディープラーニングの層を厚くして、シンプルな構成なモデルであったり、プーリング層などの数を工夫したり、計算リソースを最適化するように取り組んだモデルなど、モデルごとの特徴などいろいろありますね。


## 参考文献
 深層学習教科書 ディープラーニング G検定（ジェネラリスト）公式テキスト 第3版 (p.506). 株式会社 翔泳社. Kindle 版. 
山下 隆義; 猪狩 宇司; 今井 翔太; 巣籠 悠輔; 瀬谷 啓介; 徳田 有美子; 中澤 敏明; 藤本 敬介; 古川 直裕; 松尾 豊; 松嶋 達也.