卷积神经网络(CNN)和循环神经网络(RNN)是深度学习中两种非常重要的神经网络架构,分别用于处理不同类型的任务。
1. CNN(卷积神经网络)
(1)基础知识
- 核心思想:通过卷积操作提取输入数据的局部特征,并通过池化操作降低数据的维度,从而捕捉到数据的关键特征。
- 主要组件:
- 卷积层(Convolutional Layer):
- 卷积核(Kernel/Filter):一个小的权重矩阵,用于提取局部特征。
- 卷积操作:卷积核在输入数据上滑动,计算局部区域的加权和,生成特征图(Feature Map)。
- 池化层(Pooling Layer):
- 最大池化(Max Pooling):取局部区域的最大值。
- 平均池化(Average Pooling):取局部区域的平均值。
- 全连接层(Fully Connected Layer):将特征映射到输出类别。
- 卷积层(Convolutional Layer):
(2)特点
- 局部感受野:卷积核只关注局部区域,适合捕捉局部特征。
- 参数共享:卷积核在整个输入数据上共享参数,减少了参数量。
- 平移不变性:卷积操作对输入数据的位置变化不敏感。
(3)应用场景
- 图像处理:图像分类、目标检测、图像分割。
- 文本处理:文本分类(如 TextCNN)、情感分析。
2. RNN(循环神经网络)
(1)基础知识
- 核心思想:通过循环结构处理序列数据,能够捕捉序列中的时间依赖关系。
- 主要组件:
- 循环单元(Recurrent Unit):
- 隐藏状态(Hidden State):保存了之前时间步的信息。
- 输入:当前时间步的输入和上一个时间步的隐藏状态。
- 输出:当前时间步的输出和新的隐藏状态。
- RNN 的展开结构:RNN 可以按时间步展开,形成一个链式结构。
- 循环单元(Recurrent Unit):
(2)特点
- 序列建模:适合处理序列数据(如文本、时间序列)。
- 时间依赖:能够捕捉序列中的长距离依赖关系。
- 梯度问题:普通 RNN 容易出现梯度消失或梯度爆炸问题。
(3)改进版本
- LSTM(长短期记忆网络):
- 引入了 输入门、遗忘门、输出门,能够更好地捕捉长距离依赖。
- 解决了普通 RNN 的梯度消失问题。
- GRU(门控循环单元):
- LSTM 的简化版本,只有 更新门和重置门,计算效率更高。
(4)应用场景
- 文本处理:文本生成、机器翻译、文本分类(如 TextRNN)。
- 时间序列预测:股票价格预测、天气预测。
3. TextCNN(文本卷积神经网络)
(1)基础知识
- 核心思想:将 CNN 应用于文本分类任务,通过卷积操作捕捉文本中的局部特征(如 n-gram)。
- 模型结构:
- 输入层:将文本转换为词向量。
- 卷积层:使用不同大小的卷积核捕捉 n-gram 特征。
- 池化层:提取重要特征。
- 全连接层:输出分类结果。
(2)特点
- 高效:适合短文本分类。
- 捕捉局部特征:通过卷积操作捕捉 n-gram 特征。
(3)应用场景
- 短文本分类:新闻分类、情感分析。
(4)代码示例
import torch
import<