【Machine Learning, Coursera】机器学习Week5 Neural Networks: Learning

本文深入探讨了神经网络的代价函数及其偏导计算,包括逻辑回归代价函数的扩展、反向传播算法的应用、偏导计算的三个步骤以及正则项的处理。通过详细的数学表达和实例,解释了如何计算神经网络代价函数和其参数的偏导,旨在帮助读者理解神经网络优化的核心原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Neural Networks: Learning

基础知识回顾:https://blog.youkuaiyun.com/weixin_42395916/article/details/81099945
实际应用回顾:https://blog.youkuaiyun.com/weixin_42395916/article/details/81160314


根据前几周的内容我们知道,应用梯度下降法或者其他高级优化算法求解参数需要写出代码计算
1) J(Θ) J ( Θ )
2) ΘlijJ(Θ) ∂ ∂ Θ i j l J ( Θ )

本节介绍神经网络的代价函数及其偏导项的计算。

相关机器学习概念:
反向传播算法(backpropagation algorithm)


一、代价函数 Cost Function

这里写图片描述
本质上,神经网络是一种通过logistic模型,从旧特征中学习到新特征,经过一定层数的学习后最终输出分类结果的算法。因此,我们可以根据logistic回归的代价函数得到神经网络的代价函数。

逻辑回归的代价函数(含正则项):

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2

神经网络代价函数的表达与之类似,但由于神经网络分类结果是以单位列向量的形式输出的,计算代价函数时不仅需要对所有训练样本的cost求和,还要对每一类的cost求和。此外,正则项需要对每一层的除偏置项外的参数求和。

神经网络的代价函数(含正则项):

J(Θ)=1mi=1mk=1K[y(i)klog(hΘ(x(i)))k+(1y(i)k)log(1hΘ(x(i)))k]+λ2ml=1L1i=1slj=1sl+1(Θlji)2 J ( Θ ) = − 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

其中, (hΘ(x))i ( h Θ ( x ) ) i 表示输出层的第i个输出结果, hΘ(x)K h Θ ( x ) ∈ K .

易错点:正则项中并不包含偏置项 (i,j=0) ( i , j = 0 )

二、计算 ΘlijJ(Θ) ∂ ∂ Θ i j l J ( Θ )

神经网络代价函数的偏导计算比较复杂,需要用到反向传播算法(backpropagation algorithm)。偏导的计算分为三步:
1) 前向传播算法计算各层激励值
2) 反向传播算法计算各层激励值的误差
3) 求偏导

(一)前向传播算法

*前向传播算法具体参见:https://blog.youkuaiyun.com/weixin_42395916/article/details/81099945

以一个训练样本为例,令输入层的激励值 a(1)=x a ( 1 ) = x ,运用前向传播算法得到每层的激励值 a(l) a ( l ) .
这里写图片描述

(二)反向传播算法 Backpropagation Algorithm

线性回归和逻辑函数代价函数(不含正则项)求偏导结果形式均为

θjJ(θ)=1mi=1m(hθ(x(i))y(i))x(i)j ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i )

括号内为计算值和实际值的误差。在神经网络算法中,将误差项记作 δ(l)j δ j ( l ) ,它捕捉了l层第j个神经节点激励值的误差。我们用反向传播算法计算它。反向传播算法先计算输出层的 δ δ ,然后计算上一层的 δ δ ,重复该过程直至第二层。

首先计算输出层的误差,显然,就是激励值减去实际值。用向量形式可写作

δ(4)=a(4)y δ ( 4 ) = a ( 4 ) − y

接下来计算隐藏层的误差,计算方法见下图。根据sigmoid函数的性质, g(z(l))=a(l).(1a(l)) g ′ ( z ( l ) ) = a ( l ) . ∗ ( 1 − a ( l ) ) ,所以有

δ(3)=(Θ(3))Tδ(4).a(3).(1a(3)) δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ∗ a ( 3 ) . ∗ ( 1 − a ( 3 ) )

这里写图片描述


易错点:不用计算输入层的误差,因为这是我们在训练集中观察到的值,所以不存在误差。

(三) ΘlijJ(Θ)=D(l)ij ∂ ∂ Θ i j l J ( Θ ) = D i j ( l )

将上述内容整合起来,下图是根据激励值和误差得到 J(Θ) J ( Θ ) Θ(l)ij Θ i j ( l ) 求偏导的值 D(l)ij D i j ( l ) 的详细流程(m个训练样本).
完整的包含正则项的偏导数形式应为

D(l)ij=1mmi=1(error of activation δ(l+1)i)(feature value a(l)j)+λm(parameter value Θlij)1mmi=1(error of activation δ(l+1)i)(feature value a(l)j)if j0if j=0 D i j ( l ) = { 1 m ∑ i = 1 m ( e r r o r   o f   a c t i v a t i o n   δ i ( l + 1 ) ) ∗ ( f e a t u r e   v a l u e   a j ( l ) ) + λ m ∗ ( p a r a m e t e r   v a l u e   Θ i j l ) i f   j ≠ 0 1 m ∑ i = 1 m ( e r r o r   o f   a c t i v a t i o n   δ i ( l + 1 ) ) ∗ ( f e a t u r e   v a l u e   a j ( l ) ) i f   j = 0

Step1: 初始化
给定m个训练样本,令 Δ(l)ij=0 Δ i j ( l ) = 0 , 因此 Δ(l) Δ ( l ) 是一个零矩阵。它用于之后偏导数的计算。

Step2: 计算 mi=1(error of activation)(feature value) ∑ i = 1 m ( e r r o r   o f   a c t i v a t i o n ) ∗ ( f e a t u r e   v a l u e )
对训练样本t=1:m执行以下循环(下图中为i=1:m,但这个i和下面的角标i无关,有歧义,故改成t):
1. 令 a(1):=x(t) a ( 1 ) := x ( t )
2. 执行前向传播算法得到每层的激励值 a(l) a ( l )
3. 根据 y(t) y ( t ) ,计算 δ(L)=a(L)y(t) δ ( L ) = a ( L ) − y ( t )
4. 根据 δ(l)=(Θ(l))Tδ(l+1).a(l).(1a(l)) δ ( l ) = ( Θ ( l ) ) T δ ( l + 1 ) . ∗ a ( l ) . ∗ ( 1 − a ( l ) ) ,计算 δ(L1),δ(L2),...δ(2) δ ( L − 1 ) , δ ( L − 2 ) , . . . δ ( 2 )
5. 累积偏导数项, Δ(l)ij:=Δ(l)ij+a(l)jδ(l+1)i Δ i j ( l ) := Δ i j ( l ) + a j ( l ) δ i ( l + 1 ) . 向量化表示为 Δ(l):=Δ(l)+δ(l+1)(a(l))T Δ ( l ) := Δ ( l ) + δ ( l + 1 ) ( a ( l ) ) T ,它是偏导数矩阵

Step3: 计算 D(l)ij D i j ( l )
写出完整的偏导数表达式 D(l)ij D i j ( l )

这里写图片描述
注:图中有错, D(l)ij:=1m(Δ(l)ij+λΘ(l)ij) D i j ( l ) := 1 m ( Δ i j ( l ) + λ Θ i j ( l ) ) if j ≠0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值