以下の内容はhttps://cysec148.hatenablog.com/entry/2025/04/01/154135より取得しました。


第5回:CNN・RNN・Transformerの違いと用途

Hello there, ('ω')ノ

🎯 はじめに:AIモデルの進化と用途の広がり

深層学習(ディープラーニング)の分野では、CNN・RNN・Transformer という3つの主要なアーキテクチャが活用されています。
これらのモデルは、それぞれ 「画像」「時系列データ」「自然言語」 など、異なるタスクに特化しています。

CNN(畳み込みニューラルネットワーク) → 画像・動画の解析
RNN(リカレントニューラルネットワーク) → 時系列データ・音声・文章の解析
Transformer(トランスフォーマー) → 自然言語処理(NLP)や大規模言語モデル(LLM)


📚 1. CNN(Convolutional Neural Network)とは?

🖼️ CNNの概要

CNN(畳み込みニューラルネットワーク) は、画像や動画などの2次元データ に特化したモデルです。
畳み込みフィルター(カーネル)を使用して、入力画像から局所的な特徴を抽出し、分類や検出に活用します。


🕸️ CNNの基本構造

[入力層] → [畳み込み層] → [プーリング層] → [全結合層] → [出力層]

1. 畳み込み層(Convolution Layer)

  • 画像から特徴量(エッジ、線、色など)を抽出
  • カーネル(フィルター)が画像上をスライドし、特徴マップを作成
  • 出力は 特徴マップ(Feature Map)

2. プーリング層(Pooling Layer)

  • 畳み込み層で抽出された特徴を縮小・圧縮
  • 代表的な手法は Max Pooling(最大値プーリング)
  • 計算コスト削減と過学習防止に寄与

3. 全結合層(Fully Connected Layer)

  • 特徴量を最終的なクラス分類に活用
  • ニューラルネットワークで標準的な全結合層を使用

🎯 CNNの主な用途

画像分類(Image Classification)
- MNIST(手書き数字認識)、CIFAR-10(物体分類)
- 例:猫と犬の画像分類

物体検出(Object Detection)
- YOLO、Faster R-CNN などの検出モデル
- 例:自動運転車の障害物検出

画像生成・変換(Image Generation)
- StyleGAN、CycleGANなど
- 例:白黒画像のカラー化


📝 CNNのサンプルコード

import torch
import torch.nn as nn
import torch.optim as optim

# CNNモデルの定義
class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, 3, padding=1)  # 畳み込み層
        self.pool = nn.MaxPool2d(2, 2)  # プーリング層
        self.fc1 = nn.Linear(16 * 8 * 8, 10)  # 全結合層

    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))
        x = x.view(-1, 16 * 8 * 8)
        x = self.fc1(x)
        return x

# モデルのインスタンス化
model = CNN()
print(model)

🔁 2. RNN(Recurrent Neural Network)とは?

RNNの概要

RNN(リカレントニューラルネットワーク) は、時系列データやシーケンスデータ を扱うモデルです。
過去の情報を保持しながら、現在の入力に影響を与える 仕組みで、時間依存性のあるデータ に適しています。


🔄 RNNの基本構造

[入力] → [隠れ層(再帰層)] → [出力] → [次の時刻へ]

1. 入力層(Input Layer)

  • 時系列データやテキストのベクトル化された入力

2. 隠れ層(Hidden Layer)

  • 隠れ状態(Hidden State) を持ち、前の時刻の情報を保持
  • 隠れ状態は次の時刻の計算にも影響を与える

3. 出力層(Output Layer)

  • シーケンス全体の結果を出力

🎯 RNNの主な用途

時系列データの解析
- 株価予測、気象データ、IoTデータ解析

自然言語処理(NLP)
- 文章生成、機械翻訳、感情分析

音声認識・翻訳
- 音声データの解析と文章変換


📝 RNNのサンプルコード

import torch
import torch.nn as nn

# RNNモデルの定義
class RNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(RNN, self).__init__()
        self.hidden_size = hidden_size
        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        out, hidden = self.rnn(x)
        out = self.fc(out[:, -1, :])  # 最終時刻の出力
        return out

# モデルのインスタンス化
model = RNN(input_size=10, hidden_size=20, output_size=1)
print(model)

⚠️ RNNの課題:勾配消失問題

  • 長期依存関係(Long-term dependencies) を保持するのが難しい
  • 勾配消失(Vanishing Gradient) により学習が進まない場合がある

🧠 3. Transformerとは?

⚡️ Transformerの概要

Transformer(トランスフォーマー) は、自然言語処理(NLP) に革命をもたらしたモデルで、Attention機構 によりシーケンスデータを並列処理します。
従来のRNNの課題(勾配消失・長期依存の学習困難)を克服しました。


🔎 Transformerの基本構造

[エンコーダ] → [マルチヘッドアテンション] → [デコーダ] → [出力]

1. エンコーダ(Encoder)

  • 入力データを処理して内部表現に変換
  • 自己注意機構(Self-Attention) で重要な単語に注目

2. デコーダ(Decoder)

  • エンコーダの出力を使って、ターゲットシーケンス を生成

3. マルチヘッドアテンション(Multi-head Attention)

  • 複数の注意機構 で情報の流れを強化

🎯 Transformerの主な用途

自然言語処理(NLP)
- 機械翻訳(Google翻訳)、文章要約、質問応答

大規模言語モデル(LLM)
- GPT-3、BERT、Llamaなどのモデルで応用

マルチモーダルモデル
- テキスト・画像・音声を統合して処理


📝 Transformerのサンプルコード(Hugging Face)

from transformers import BertTokenizer, BertModel

# BERTトークナイザーとモデルの読み込み
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# テキストのエンコード
text = "Hello, how are you?"
inputs = tokenizer(text, return_tensors="pt")

# モデルでの推論
outputs = model(**inputs)
print(outputs.last_hidden_state.shape)

📊 4. CNN・RNN・Transformerの比較まとめ

項目 CNN RNN Transformer
用途 画像、動画、医療画像 時系列、音声、文章解析 自然言語処理、LLM
計算コスト 比較的低い 高い(逐次処理) 高い(並列計算可能)
長期依存関係 不要 学習が困難(勾配消失) 効率的なAttentionで解決
並列処理 不可能 不可能 可能
代表モデル AlexNet、ResNet、YOLO LSTM、GRU BERT、GPT-3、T5

🎁 まとめ:CNN・RNN・Transformerの違いと用途

CNNは画像・動画処理に特化し、畳み込み層で特徴抽出が可能
RNNは時系列データの解析に強く、過去の情報を保持して学習
TransformerはNLPに革命をもたらし、大規模言語モデル(LLM)の基盤となっている
最新のAIシステムでは、これらのモデルを組み合わせてハイブリッド化も進行中!

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/04/01/154135より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14