Machine Learning |吴恩达 (2-2)---神经网络,反向传播推导(超简单版)

这篇博客详细介绍了神经网络的反向传播算法,通过中间变量δ(l)表示的'误差'来简化梯度计算。文章阐述了δ(l)与δ(l+1)之间的关系,确定输出层'误差'的值,并描述了整个反向传播过程,以及在训练循环中的应用。
摘要由CSDN通过智能技术生成

神经网络,反向传播推导(超简单版)


标注与说明

  • θ(l)i,j θ i , j ( l ) 表明从 (l) ( l ) 层的第i个元素到 (l+) ( l + ) 层的第j个元素的 θ θ 。这样的次序是指明了 θ(l) θ ( l ) 矩阵的排列次序。 θ(l)i,j θ i , j ( l ) 表明参数矩阵 θ(l) θ ( l ) 里的每一行为一个 a(l)j a j ( l ) 所对应的参数。
  • l 表示网络的层数=1,2,3….L(L=网络总层数-1)
  • a(l)j=g(z(l)j)=sigmoid(z(l)j) a j ( l ) = g ′ ( z j ( l ) ) = s i g m o i d ′ ( z j ( l ) )
  • J(Θ)==C(Θ)=1mmi=1kk=1[y(i)klog((hΘ(x(i)))k)+(1y(i)k)log(1(hΘ(x(i)))k)]+λ2mL1l=1sli=1s(l+1)j=1(Θ(l)j,i)2 J ( Θ ) == C ( Θ ) = − 1 m ∑ i = 1 m ∑ k = 1 k [ y k ( i ) l o g ( ( h Θ ( x ( i ) ) ) k ) + ( 1 − y k ( i ) ) l o g ( 1 − ( h Θ ( x ( i ) ) ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s ( l + 1 ) ( Θ j , i ( l ) ) 2
  • sl s l 表面 a(l) a ( l ) 的神经元个数是 s s 个。

明确我们的题目

在完成一次前向传播后,已知 J ( Θ ) 也就是已知 (y^,y) ( y ^ , y ) ,为了实现梯度下降: θ(l):=θ(l)Cθ(l) θ ( l ) := θ ( l ) − ∂ C ∂ θ ( l ) 我们需要求 Cθ(l) ∂ C ∂ θ ( l )

解题思路

这里写图片描述
δ δ 在很多书中翻译为‘误差’,但这与模型预测值与样本y之间的误差不是一个概念。实际上 δ δ 是一个微分值。我们定义 δ(l)=Cz(l) δ ( l ) = ∂ C ∂ z ( l ) 。有了这个中间值设定,可以简化我们的计算,不用对每一层 θ θ 的偏导计算都从网络的输出层开始重新计算一遍。至于为什么将这个中间值设定在 Cz(l) ∂ C ∂ z ( l ) ,据我的理解是两个原因:1、这是离我们要求导的 θ(l) θ ( l ) 最靠近的一个元素。2、你也可以把这个中间值设定在 Ca(l) ∂ C ∂ a ( l ) ,但这样在推导后的公式表达上比较繁琐,不易直观理解。事实上没有这个中间值你也能完整表达整个网络的梯度求导,只不过那个公式肯定充满了 会让你看着头晕。
如果你知道了 δ(l)=Cz(l) δ ( l ) = ∂ C ∂ z ( l ) 的数值,那么据此求解 Cθ(l)=Cz(l)z(l)θ(l)=δ(l)z(l)θ(l) ∂ C ∂ θ ( l ) = ∂ C ∂ z ( l ) ⋅ ∂ z ( l ) ∂ θ ( l ) = δ ( l ) ⋅ ∂ z ( l ) ∂ θ ( l ) 就变得简单多了。
再进一步,如果我们找到 δ(l) δ ( l ) δ(l+1) δ ( l + 1 ) 之间的关系,在反向传播中,我们刚好可以从输出层往输入层方向一层层的计算下去。

寻找本层’误差’与下一层’误差’之间的关系

寻找 δ(l) δ ( l ) δ(l+1) δ ( l + 1 ) 之间的关系
这里写图片描述
要寻找 δ(l) δ ( l ) δ(l+1) δ ( l + 1 ) 之间的关系之前,就得明确一点 δ(l+1) δ ( l + 1 ) 是如何把‘误差’传给 a

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值