YeeKal
nlp

06 neural network language model

YeeKal
"#nlp"

反向传播

nn_bp.jpg

如果$X=[x^1,x^3,x^3]$,则$O=XW^1W^2$,并且$W$的形状与左右神经元个数一致,即行数等于神经元输入个数,列数等于神经元输出个数。如果$X=$,则$O=W^2W^1X$. 这里我们以第一种形式分析反向传播的矩阵形式。

首先,根据上图中单个元素的推导公式归纳其矩阵形式: 1. 计算输出层误差: 2. 第一次反向传播隐藏层误差,如果有多个隐藏层,也是一样: 3. 对于每格隐藏层的权重参数,取其左边的神经元值作为输入$N_X$,取其右边的误差$\Delta H$,做矩阵乘法:

然后根据矩阵求导(ref1,ref2): 有: 但是如果中间隐藏层过多,假设有三层: 也许发现了一个规律:

中间层非线性元

上述梯度公式是在中间神经元线性计算的情况下求得的,即:

实际中发现,简单线性可能造成误差过大,故中间层每层都增加激活函数(比如sigmoid函数),此时正向传播:

反向传播: