第四周:卷积神经网络 part3
循环神经网络(RNN)
绪论
传统神经网络VS卷积神经网络
全连接网络处理图像问题时面临着参数太多的问题,会导致过拟合,而卷积神经网络采用局部关联参数共享的方法是使得参数量很少
循环神经网络的应用
语音问答、机器翻译、股票预测、作词机、模仿写论文、模仿写代码、图像理解和视觉问答
循环神经网络VS卷积神经网络
- 传统神经网络,卷积神经网络,输入和输出之间是相互独立的。
- RNN可以更好的处理具有时序关系的任务。
- RNN通过其循环结构引入“记忆”的概念。
- 输出不仅依赖于输入,还依赖于“记忆”
- 将同一个结构循环利用
RNN的基本结构
传统的结构对于某些问题只能处理当前输入,不能结合之前的输入信息进行处理,所以神经网络需要“记忆”。
- 隐层的数据被存入到一个“记忆”单元中。
- 存在“记忆”中的数据会被另外一个输入与原始输入一起输入到神经网络中。
/Blogs/image-20200822122821550.png)
深度RNN
双向RNN
小结
- 隐藏层状态h可以被看作是“记忆”,因为它包含了之前时间点上的相关信息
- 输出y不仅由当前的输入所决定,还会考虑到之前的“记忆”,有两者共同决定
- RNN在不同时刻共享同一组参数( U,W,V ),极大的减小了需要训练和预估的参数量
BPTT算法
循环神经网络的变种
传统RNN问题
当循环神经网络在时间维度上非常深的时候,会导致梯度消失或者梯度爆炸的问题
梯度爆炸导致的问题:模型训练不稳定,梯度变为Nan(无效数字),lnf(无穷大)。
梯度爆炸的改进
- 权重衰减
- 梯度截断:检查误差梯度的值是否超过阈值,吐过超过了那么就截断梯度,并将梯度设置为阈值
梯度消失导致的问题:长时依赖问题,随着时间间隔的不断增大,RNN会丧失学习到链接如此远的信息的能力
梯度消失问题的改进:
- 改进模型
- LSTM,GRU
Long Short-term Memory-LSTM(长短期记忆模型)
- 遗忘门:决定丢弃信息
- 输入门:确定需要更新的信息
- 输出门:输出信息
RNN和LSTM的区别
- RNN和LSTM对记忆的处理方式不同
- RNN 的“记忆”在每个时间点都会被新的输入覆盖,但 LSTM 中“记忆”是与新的输入相加
- LSTM:如果前边的输入对 Ct 产生了影响,那这个影响会一直存在,除非遗忘门的权重为0
- 小技巧:LSTM中learning rate可以被尽量的设置小
小结
- LSTM实现了三个门计算:遗忘门,输入门,输出门
- LSTM的一个初始化技巧就是将输入门的 bias 置为正数(例如1或5,这点可以查看各大框架代码),这样模型刚开始训练时 forget gate 的值接近于 1 ,不会发生梯度消失
- 但LSTM有三个门,运算复杂,如何解决?->GRU
Gated Recurrent Unit-GPU(门控循环单元)
拓展
解决RNN梯度消失的其他方法
什么是attention?
是受到人类注意力机制的启发。人们在进行观察图像的时候,其实并不是一次就把整幅图像的每个位置像素都看过,大多是根据需求将注意力集中到图像的特定部分。而且人类会根据之前观察的图像学习到未来要观察图像注意力应该集中的位置。
基于attention的RNN
受到注意力机制的启发,根据需求将注意力集中到图像的特定部分
每个时刻根据当前记忆学到一个attention权重矩阵a1(14x14)
在同一时刻该权重在每个channel上是共享的
然后将权重矩阵a1跟每一个feature map做运算,得到z1,再给出学习信号y1
经过h1可以得到新的权重矩阵a2和输出d1,通过d1确定输出文字,然后权重矩阵a2与feature map运算,得到向量z2然后循环下去,生成一句话来描述图片