对深度学习之RNN(循环神经网络)的理解。
RNN网络存在三个矩阵在不同时刻权重共享,即从头到尾只需要计算这三个矩阵。
U:输入层到隐层的矩阵
V:隐层到输出层
W:隐层到自身的矩阵
二、反向传播
RNN损失为各个时间点的损失之和,故各个梯度的变化为各个时间点梯度变化之和
RNN语言模型为例子,损失函数使用交叉熵,其中yt为t时刻正确的词语,y^t为t时刻预测的词语。
分别对三个矩阵进行求导
,用到了softmax的求导公式。可见关于V的梯度用不到上一层的状态值,所以不需要累计。
由于 依赖s2,而s2依赖W和s1,以此类推。所以
可见由于W在所有隐层中共享,许多变量都依赖W,导致求导链变长,这就是BPTT的特点,将每层的影响都累计起来。下图为各链接之间的导数,在所有层中不会改变,也体现了传播的路径。
跟一般的反向传播一样,这里也定义一个Delta 向量:
其中:,所以:
同理
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习之RNN(循环神经网络) - Python技术站