七月算法12月机器学习在线班---第二十次课笔记---深度学习--RNN
七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com
-
循环神经网络
复习之前的知识点:
全连接前向网络: 学习出来的是函数
卷积网络:卷积操作,部分链接,共享操作,逐层提取原始图像的特征(语音,NLP)
学习出来的特征
局部相关性
浅层宽网络很难做成神经网络
?
1.1状态和模型
1, ID数据
·分类问题
·回归问题
·特征表达
2, 大部分数据都不满足ID
·大部分数据都不满足旧
·序列分析(Tagging, Annotation)
·序列生成,如语言翻译,自动文本生成
·内容提取(Content Extraction),如图像描)
需要将之前的状态加入当前层
1.2 序列样本
1,输入和输出的映射关系(序列的应用)
a, 一对一:普通的神经网络,不带循环
b. 一对多,看图说话
c. 多对一:情感判断
d: 多对多:语言翻译
e: 序列到序列 L/R/U/D
·RNN不仅仅能够处理序列输出,也能得到序列输出,这里序列
指的是向量的序列。
. RNN学习出来的是程序,不是函数
?
1.3 序列预测
·输入的是时间变化向量序列:
. 在t时刻通过模型来估计:
?
·问题:
·对内部状态难以建模和观察
·对长时间范围的场景(Context)难以建模和观察
·解决方案: 引入内部隐含状态变量
内部的状态,对应的是位置
?
1.4 序列预测模型
·输入离散列序列
·在时间t的更新计算
上面两幅图等价, 上一次t-1时刻的的H和当前的当前的时刻,一同作用输出。
·预测计算
- 整个计算过程中,W保持不变
- H在0时刻初始化
?
1.4 RNN训练(1)
1, 前向计算,相同的W矩阵需要乘以多次
2, 多步之前的输入X,会影响当前的输出
3, 在后向计算的时候,同样相同的矩阵也会乘以多次
1.4.1 B PTT算法一BackProp Through Time
1,RNN前向计算
2,计算W的偏导,需要把所有Time Step加起来, 每一步的损失函数一样
3, 应用链式规则
?
1.4.2 BPTT算法:计算实现
链式规则求目标,使用向量的微分
计算目标是求和,
序列要是16的话,W转置要乘以16次,产生一个爆炸现象,按时间展开,容易发生,出现了连乘,,普通的网络,W有大有小,梯度消失,不会很严重,每一层的W都不一样
?
BPTT算法 梯度vanishing/ exploding现象分析
?
?
1.4.3 BPTT算法的解决的方案
1, clipping
2, W初始化为1,将激活函数使用Relu替换成Tanh
?
2 LSTM (Long Short Term Memory) Cell 长时间记忆能力
通过结构的方法解决,梯度离散和梯度爆炸的现象,避免了一个W从头到尾连乘,具备了一定的常识记忆的能力
应用最为广泛、成功的RNN
?
2.1 cell state (单元状态)
?
1, 可以长期保存某个状态, cell state值通过forget gat(图中的乘)控制实现保留多少"老"的状态,
2, Layer把输入维度X变成输出维度h
?
2.2 Forget /input unit
至于是[0,1],b是偏移量
2.3 Update cell
2.4 output
下图为总结,四个矩阵Wf ,Wi,Wc,Wo
?