序列模型
定义:自然语言处理、音频、视频以及其他序列数据的模型
类型:
语音识别
情感分析
机器翻译
特点:
序列数据前后之间有很强的关联性
序列数据的输入输出长度不固定
循环神经网络
定义:循环(递归)神经网络是神经网络的一种,RNN将状态在自身网络中循环传递,可以接受时间序列结构输入
类型:
一对一:固定的输入到输出,如图像分类
一对多:固定输入到序列输出,如图像的文字描述
多对一:序列输入到输出,如情感分析,分类正面负面情绪
多对多:序列输入到序列输出,如机器翻译,称为编解码网络
同步多对多:同步序列输入到同步输出,如文本生成,视频每一帧的分类,也称为序列生成
基础循环网络介绍
Xt:表示每一时刻的输入
Ot:表示每一时刻的输出
St:表示每一个隐层的输出
中间小圆圈代表隐藏层的一个单元(cell)
U V W参数共享所有的cell
每一个cell:有两个输入,前一个cell的状态和当前序列的输入
每一个cell:有两个输出,当前cell的状态和cell的预测输出
输出:受到前面时刻隐藏状态的影响
g1,g2:表示激活函数 g1:tanh/relu g2:sigmoid softmax
序列生成案例
s 我 昨天 上学 迟到 了 e
词的表示
one - hot编码表示
建立一个所有词的词库(30000个),包含(开始结束)
输出的表示 --softmax
每一个时刻输出的是下一个最有可能的词,可以用概率表示,总长度为词的总数长度
所有词的概率组成的向量
使用softmax来计算概率
矩阵运算表示
以上面为例
st = rule(Ust + Wst-1)
ot = softmax(Vst)
m :词的个数 xt:长度为m n:可以人为设定,指定cell的状态输出 大小
形状表示:
[n , m] * [m ,1] + [n , n] * [n , 1] = [n , 1]
矩阵U n*m 矩阵W n*n
[m , 1] * [n, 1] = [m * 1]
矩阵V [m , 1]
交叉熵损失
一整个序列作为一个训练实例,总误差就是各个时刻词的误差之和
时序反向传播算法(BPTT)
梯度沿着时间通道传播的BP算法
目标:计算误差关于参数U、V和W以及两个偏置bx,by的梯度
每个时间的梯度都计算出来,然后加起来的梯度为每次w更新的梯度
区分最后一个cell和前面cell的s的梯度值
最后一个:计算最后一个时刻交叉熵损失对于st的梯度
最后一个前面的cell的ds
求出当前层损失对于当前隐层状态输出梯度 + 上一层梯度
每一个cell梯度计算过程
先计算ds^t 然后计算tanh函数梯度
利用链式法则去求U W ba 和x_t,s_t-1的梯度
梯度消失与梯度爆炸
如果矩阵中有非常小的值,并且经过矩阵相乘N次之后,梯度值快速以指数形式收缩,较远的时刻梯度变为0
如果矩阵的值非常大,就会出现梯度爆炸