顾文强
顾文强
Published on 2025-03-01 / 5 Visits
0
0

全连接神经网络,CNN,RNN 关系

1. 全连接神经网络(Fully Connected Network)

通俗比喻:像一个事无巨细的“投票委员会”。

  • 工作原理
    假设你要判断一张图片是不是猫,全连接网络会让图片的每个像素(比如1000个像素)都参与“投票”。每个像素会和其他所有像素“交头接耳”(通过权重连接),最后大家集体决定结果。

  • 结构特点

    • 每层神经元全部互相连接,像一张密不透风的网。

    • 输入层(原始数据)→ 隐藏层(中间决策)→ 输出层(最终结果)。

  • PyTorch 示例

    model = torch.nn.Sequential(
        torch.nn.Linear(1000, 512),  # 输入1000像素,输出512个中间特征
        torch.nn.ReLU(),              # 激活函数(类似“少数服从多数”)
        torch.nn.Linear(512, 1)       # 输出是否为猫(0或1)
    )
  • 应用场景
    适合简单任务(比如房价预测、二分类),但面对图像、语音等复杂数据时效率低下(参数太多)。

缺点

  • 参数爆炸:1000像素输入+512神经元的隐藏层 → 1000×512=51.2万个参数!

  • 无视空间关系:把图片“拍扁”成像素,分不清耳朵和尾巴的位置关系。


2. 卷积神经网络(CNN)

通俗比喻:像拿放大镜找特征的“侦探”。

  • 工作原理
    还是判断图片是不是猫,CNN会拿一个小放大镜(卷积核)在图片上滑动,专注局部特征(比如边缘、眼睛形状)。多个放大镜分工合作,有的找胡须,有的找耳朵,最后汇总线索。

  • 结构特点

    • 卷积层:放大镜扫描局部区域,输出特征图(类似“线索记录本”)。

    • 池化层:压缩特征图,保留关键信息(比如“最大池化”只留最明显特征)。

    • 全连接层:最后综合所有线索做判断。

  • PyTorch 示例

    model = torch.nn.Sequential(
        torch.nn.Conv2d(3, 16, kernel_size=3),  # 输入3通道(RGB),用16个放大镜扫描
        torch.nn.ReLU(),
        torch.nn.MaxPool2d(2),                  # 压缩特征图尺寸
        torch.nn.Flatten(),                     # 拍扁数据进全连接层
        torch.nn.Linear(16*14*14, 1)             # 输出是否为猫
    )
  • 核心优势

    • 参数共享:同一个放大镜扫描全图,参数量远小于全连接。

    • 保留空间信息:知道猫耳朵在左上角,尾巴在右下角。

  • 应用场景
    图像识别(人脸、物体检测)、视频分析、甚至围棋AI(AlphaGo用CNN看棋盘)。


3. 循环神经网络(RNN)

通俗比喻:像有记忆的“传话游戏玩家”。

  • 工作原理
    如果要理解一句话:“我昨天吃了苹果,它很甜”。RNN会逐词处理,同时记住前面内容:“吃了苹果”→“它”指代苹果→判断“甜”合理。每个步骤的输出和记忆(隐藏状态)传递给下一步。

  • 结构特点

    • 循环结构:每个时间步处理一个输入(如一个词),并更新记忆。

    • 隐藏状态:相当于大脑的短期记忆,传递上下文信息。

  • PyTorch 示例

    class SimpleRNN(torch.nn.Module):
        def __init__(self):
            super().__init__()
            self.rnn = torch.nn.RNN(input_size=100, hidden_size=64)  # 输入维度100,隐藏状态64
            self.fc = torch.nn.Linear(64, 10)  # 输出10个类别(如情感分类)
        
        def forward(self, x):
            out, hidden = self.rnn(x)  # out保存每一步输出,hidden是最终记忆
            return self.fc(out[-1])    # 用最后一步输出做分类
  • 核心优势

    • 处理变长序列:句子可长可短。

    • 时间依赖性:理解“因为...所以”的逻辑关系。

  • 应用场景
    文本生成、机器翻译、股票预测、语音识别。

缺点

  • 长期记忆差:句子太长时,可能忘记开头内容(改进方案:LSTM、GRU)。

  • 计算慢:必须逐个处理序列,无法并行。


对比总结

网络类型

擅长任务

工作方式

好比

全连接网络

简单分类/回归

全局暴力计算

全员投票委员会

CNN

图像、空间数据

局部特征扫描

侦探用放大镜找线索

RNN

文本、时间序列

按顺序处理+记忆传递

传话游戏玩家带小本本记录


最终建议

  • 全连接:数据简单且无空间/时序关系(如Excel表格预测)。

  • CNN:处理图像、视频或任何带空间规律的数据。

  • RNN/LSTM:处理语言、语音、时间序列(如股票、传感器数据)。


Comment