神经网络的前向传播和反向传播
相信一开始,大家可能都对神经网络的前向传播和反向传播很头疼,我之前也是一样,后来慢慢懂了,现在深感知识传递的重要性。因此现在我就把我的一点点对两者的理解表达一下,希望能帮助到大家!
闲话不多说,直接开整!
前向传播公式推导:
我们可以以下图这个神经网络为例:
信号是怎样从输入层传输到隐藏层的,我们通过网络图可以看到,a,b节点的箭头都指向了c节点,而且每个箭头都有对应的权重。那么c节点的输入简单来说就是各节点的输入再乘以相应权重最后再加偏置值,用数学公式表达c节点的输入:
同理,作为同一层的d节点,同样也是a,b节点指向它,所以d节点的输入公式与c节点的大同小异,其数学公式表达为:
那么经过隐藏层的Sigmoid激活函数非线性变换后,表示为:
同理,输出层的输入信号还是上一层的输出信号乘以相应的权重矩阵加上对应的偏置向量,因此输出层的输入用数学公式可以表达为:
至此,卷积神经网络信号前向传播过程结束。
卷积神经网络反向传播
卷积神经网络反向传播无非就是误差溯源和调整超参数的过程。神经网络在训练过程中,通过前向传播得到的输出结果有时候与真实值不同,因为目前没有哪个神经网络结构能够做到100%的准确率。既然存在误差,那就要将误差反向传播并逐层返回,通过链式法则调整训练参数以减小误差。这就涉及到卷积神经网络的反向传播过程。前向传递输入数据到输出产生误差,反向传播则误差信息更新权重参数矩阵。
同样,我们还是以上文的简单神经网络模型为例,研究反向传播过程:
由上图可知,e01为e节点的误差值,e02为f节点的误差值,要向隐藏层节点传递误差值。以c节点为例,从图中看出,e,f节点都指向了c节点,每个箭头上都有相应的权值,因此c节点的输入误差由e,f两项构成,相应比例应该用权值比表示,用数学公式可以表示为:
但是,我们发现中间矩阵表示太麻烦,因为我们要的是它们之间的比例关系,因此可以把中间矩阵的分母全部去掉:
我们可以从上式发现,反向传播时的权重矩阵其实就是前向传播时的权重矩阵的转置。至此,我们完成了输出层向隐藏层的传播过程,隐藏层向输入层传播过程同理,这里不再赘述。
链式法则
我们通过神经网络误差反向传播机制,将误差反馈到了各层,那么接下来就是利用误差值去更新训练参数,这就用到了链式法则。
同样以上文的神经网络模型为例:
我们首先更新隐藏层的权重参数w11,从后往前推导,首先我们可得:
神经网络参数更新是利用梯度下降法进行更新,以梯度的反方向前进,梯度下降一般公式:
由此公式可知,我们要求出误差对参数的偏导数。结合本文,误差对w11的偏导为:
至此,我们可以利用梯度下降公式更新隐藏层的权重参数,接着我们可以对输入层的权重参数w11进行更新:
同理,输入层的其余参数也是用同方法求得,这里不再赘述。最后我们可以对误差对w11的偏导代入梯度下降公式:
这样我们便完成了参数更新的全过程。