RNN网络模型:
Xt 表示每一个时刻的输入
Ot 表示每一个时刻的输出
St 表示每一个隐层的输出
中间的圆圈表示隐藏层的一个Unit单元
W, U, V 为网络的参数,所有单元的参数共享
公式表达:
S0 = 0
St = g1(U*Xt+W*St-1+ba)
Ot=g2(V*St+by)
g1,g2表示激活函数,g1:tanh/relu, g2:sigmiod
每个Unit有俩个输入:前一个Unit的状态和当前序列的输入
每个Unit有俩个输出:当前Unit的状态和预测输出
输出受到前面的隐层状态输出的影响
S开始标志 e结束标志
词的表示方法:
建立一个包含所有序列词的词典包含(开始和结束俩个特殊词,以及没有出现过的词),每个词在词典里面有唯一的编号
任何一个词都可以有一个N维的one-hot向量来表示,N是词典包含词的个数
输出的表示:Softmax 每一个时刻的输出是所有词的概率组成的向量
矩阵的运算表示:
形状表示:[n, m] * [m,1] + [n,n] * [n,1] = [n,1]
1.矩阵U的维度是n*m, 矩阵W的维度是n*n
M:词的个数 n:输出S的维度
矩阵V的维度[m,n]
其中n是可以人为设置的,通常用来指定Unit的状态输出大小
交叉熵损失:一整个序列作为一个训练实例,总误差就是各个时刻词的误差之和
反向传播优化参数:计算误差关于参数U、V、W、以及俩个偏置bx,by的梯度,由于三组参数是共享的,所以需要将一个实例在每时刻的梯度相加。
原文:https://www.cnblogs.com/yuganwj/p/13697871.html