目录
1. 呈上启下的前言
在前几篇笔记中,我们讲了CNN卷积神经网络,我们可以把CNN总结为:
MLP + 图像卷积运算 = CNN
接下来我们要介绍另一种神经网络,RNN循环神经网络,提前总结为:
MLP + 神经元之间的递归运算 = RNN
为什么会有序列模型的出现?
在传统的机器学习模型中,数据的顺序不会影响结果。但在一些实际生活中,数据本身的顺序就传达了不同的信息,比如 ‘吃饭没’ 和 ‘没吃饭’ ,这就引出了序列模型(Sequence model)的应用。
2. 序列模型
序列模型的定义为,输入或输出中包含有序数据的模型,即序列中包含信息的模型。其与传统机器学习最大的区别在于:
1. 输入或输出元素有顺序关系,顺序会影响结果。
2. 输入输出长短不固定
序列模型的应用场景:
- 声音转文字
- 人名识别
- 自然语言情感分析
- DNA序列分析
- 机器翻译
- 行为预测
- 股票预测
- 等。。。
3. RNN循环网络
通过序列模型的思想去解决问题,有一个非常厉害的模型,就是RNN循环神经网络。RNN神经网络的机构也非常好理解,就是在MLP模型的基础上加上了神经元的递归,说白了就是前部序列的重要信息会再次作为一个神经元输入后面序列。
3.1 RNN识别人名
对应代码:《代码实战 – 循环神经网络(RNN)》
自然语言处理是RNN的重要应用场景,所以我们来看一下他是如何处理字符串。
Step 1 :转化字典
Step 2 :one-hot 向量处理
Step3: 带入模型
现在,有x有y了,就可以进行正向传播算法了,目标为最小化总损失,这就是整个RNN模型识别人名的运用了,在有了输入与输出后算法与前面讲到的MLP和CNN逻辑是一样的。
3.2 基本的RNN结构
1. 一对一
特点:多输入多输出,且输入输出样本数相同,即一个输入样本对应一个输出结果
应用:特定信息查找,如上面识别人名的案例。
2. 多对一
特点:多输入单输出
应用:情感识别
举例:I am very happy.
输出:positive
3. 一对多
特点:单输入,多输出
应用:序列数据生成器(图片字幕,音乐生成,文章生成)
举例:帮我写一篇500字的作文
输出:(此处省略500字)
4. 多对多
特点:多输入,多输出,但输入输出样本数可能不相同
应用:机器翻译
举例:Do you want to have dinner with me?
输出:你想和我一起吃晚饭吗?
3.3 RNN存在的问题
两大问题:
1. 前部信息在传递到后面之后,信息权重下降,可能导致重要信息丢失
2. 对RNN进行反向传播算法求解时,梯度会消失,就没办法找到一个很好的解
4. 长短期记忆网络(LSTM)
4.1引入记忆细胞
为了解决上面我们提到的问题,我们引入长短期记忆网络(long short term memory)。先对比下单元区别:
a实现了序列信息传递,记忆细胞c保证重要信息不易丢失,从而提高预测准确性。
4.2 LSTM 单元核心结构
4.2 LSTM结构
- 现在即使有很多层,也可以保证前部重要信息在后面预测中保留
- 减少了普通RNN的求解过程中的梯度消失问题
5. 双向循环神经网络(BRNN)
核心思想:后续序列信息也会用于前部信息的预测
6. 深层循环神经网络(DRNN)
核心思想:把单层RNN叠起来或结合MLP结构一起使用,用于更难提取的复杂信息