神经网络详解,正向传播和反向传播

主要讨论Logistic回归,它涉及许多基本概念,是学习神经网络的基础。

需要注意的是,上面的图是“两层”,而不是三层或者四层,输入和输出不算层!这里,我们先规定一下记号(Notation):z是x和w、b线性运算的结果,z=wx+b;a是z的激活值;下标的1,2,3,4代表该层的第i个神经元(unit);上标的[1],[2]等代表当前是第几层。y^代表模型的输出,y才是真实值,也就是标签另外,有一点经常搞混:-上图中的x1,x2,x3,x4不是代表4个样本!

神经网络的“两个传播”:前向传播(ForwardPropagation)前向传播就是从input,经过一层层的layer,不断计算每一层的z和a,最后得到输出y^的过程,计算出了y^,就可以根据它和真实值y的差别来计算损失(loss)。反向传播(BackwardPropagation)反向传播就是根据损失函数L(y^,y)来反方向地计算每一层的z、a、w、b的偏导数(梯度),从而更新参数。

在每次前进和后向传播之后,参数被更新一次,然后使用新参数再次循环上述过程。这是神经网络训练的全过程。如果使用for循环计算样本和样本,则显然太慢。读过我前几个音符的朋友应该知道我们正在使用矢量化将m个样本压缩成矢量X来计算,相同的z,a被矢量化以获得Z,A,这样m的样本可以同时表示,计算。

注意,在深层神经网络中,我们在中间层使用了“ReLU”激活函数,而不是sigmoid函数了,只有在最后的输出层才使用了sigmoid函数,这是因为ReLU函数在求梯度的时候更快,还可以一定程度上防止梯度消失现象,因此在深层的网络中常常采用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908A0QYX600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券