CNN / RNN / Transformer の違い

以下では CNN / RNN / Transformer の違いを、
「何が得意で、どう動くのか」を中心に分かりやすくまとめます。

📌 3つのモデルの根本的な違い
モデル 仕組みの特徴 得意分野 苦手分野
CNN (Convolutional Neural Network) 画像の局所パターンを畳み込みで抽出 画像認識・特徴抽出 長距離関係(文脈の長期依存)
RNN (Recurrent Neural Network) 時系列を「1ステップずつ」処理 音声・時系列・短い文の生成 並列化が苦手、長距離依存が苦手(勾配消失)
Transformer Attentionで全要素を同時に見て関係を学ぶ 文章理解・生成・翻訳、画像生成 計算量がデカい(特に長い入力)
🔍 1. CNN:画像を理解するのが得意
▪ 特徴
畳み込み(Convolution) によって「周辺の局所的なパターン」を抽出する。
階層が深くなるほど「輪郭 → パーツ → 物体 → 構造」と抽象度が上がる。

▪ 得意なもの
画像分類
物体検出
セグメンテーション
画像の特徴抽出(Encoder)

▪ 弱点
長距離の関係が苦手
→ 画像の遠い部分の関係性を理解するのが難しい。

🔍 2. RNN:時系列を「順番に読む」
▪ 特徴
データを「前 → 次へ」連続的に処理する。
内部に“状態(メモリ)”を持ち、それを次のステップに渡しながら学習。
LSTM / GRU など改良版もある。

▪ 得意なもの
音声やセンサーなど“時間で並んだデータ”
短い文章の生成
時系列予測
▪ 弱点
並列化できない → 遅い
長距離依存の学習が苦手(勾配消失問題)
大規模言語モデルにはスケールしにくい

🔍 3. Transformer:Attentionで全体を見る
▪ 特徴
「入力の全部の位置が、全部の位置を注視できる」
→ Self-Attention(自己注意) で長距離依存を捉えるのが得意。
並列計算できるので 大規模化しやすい。
▪ 得意なもの
大規模言語モデル(GPT, BERT)
文章生成・翻訳
画像生成(拡散モデルの中や Vision Transformer)
音声生成

マルチモーダル(テキスト+画像など)
▪ 弱点
入力長に対して計算量が O(n²) と重くなりやすい
(最近は対策モデルも多い:Longformer、FlashAttention など)

🧠 たとえで説明すると…
■ CNN
近くのピクセルを見て「これは目だ」「これは毛だ」と特徴を抜き取るカメラのフィルター。

■ RNN
文章を一文字ずつ読み進める人。
前の単語を覚えているけど、長い文になると忘れがち。

■ Transformer

文章のすべての単語を並べて、一瞬で「どことどこが関係しているか」を分析できる人。

✔ まとめ
CNN → 画像の「局所パターン」を得意
RNN → 時系列を「順番に」処理
Transformer → Attentionで「全体の依存関係」を捉える
必要なら「数学的な違い」や「Attention の図解」、「各モデルのコード例(PyTorch)」も作れます!