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)。
计算慢:必须逐个处理序列,无法并行。
对比总结
最终建议:
选全连接:数据简单且无空间/时序关系(如Excel表格预测)。
选CNN:处理图像、视频或任何带空间规律的数据。
选RNN/LSTM:处理语言、语音、时间序列(如股票、传感器数据)。