ML笔记——反向传播算法

这里写链接内容目录


想法

如果将整个神经网络看作是一个复杂的函数 Fθ(x) F θ ( x ) ,那么与线性回归和逻辑回归相似,选取一些恰当的 θ θ 值就可以得到假设函数。

反向传播算法就是用来确定哪些恰当的 θ θ

数学表达

一些数学符号以及正向传播过程已经在神经网络中涉及,此处不做解释

神经网络中结合正则化后的代价函数(需判断是否是线性回归还是逻辑回归,此处给出的逻辑回归):

J(θ)=1mmi=1kk=1[yikln(hθ(xi)k)+(1yik)ln(1hθ(xi)k)]+λ2mL1l=1sli=1sl+1j=1(θlji)2 J ( θ ) = − 1 m ∑ i = 1 m ∑ k = 1 k [ y k i ln ⁡ ( h θ ( x i ) k ) + ( 1 − y k i ) ln ⁡ ( 1 − h θ ( x i ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( θ j i l ) 2

其中的

m m 表示训练集中的数据数量

k 表示 y y 分类后的数量

L 表示网络层数,之所以上界是 L1 L − 1 ,是因为传播过程次数比神经网络的层数少一

sl s l 表示第 l l 层上的神经节点总数

之后,就是选择 θ 使得 minθJ(θ) min θ J ( θ ) ,考虑到导数越接近 0 0 时,J(θ) 越接近最值;同时,借鉴梯度下降算法,则有

θlij=θlijθlijJ(θ) θ i j l = θ i j l − ∂ ∂ θ i j l J ( θ )

其中的学习速率设为 1 1

其中的

θijlJ(θ)={1mi=1mk=1kθijl[ykiln(hθ(xi)k)+(1yki)ln(1hθ(xi)k)]+λmθijlj01mi=1mk=1kθijl[ykiln(hθ(xi)k)+(1yki)ln(1hθ(xi)k)]j=0

上式中的偏导数又分两种情况

  1. 计算最后一层的偏导数

    (1) hθ(xi)k=aLk,(2) aLk=g(zLk)=11+ezLk,(3) zLk=θL1k0aL10+θL1k1aL11++θL1ksl1aL1sl1 ( 1 )   h θ ( x i ) k = a k L , ( 2 )   a k L = g ( z k L ) = 1 1 + e − z k L , ( 3 )   z k L = θ k 0 L − 1 a 0 L − 1 + θ k 1 L − 1 a 1 L − 1 + … + θ k s l − 1 L − 1 a s l − 1 L − 1

    令第 k k 个神经单元的代价函数为

    fθ(x)=ykiln(hθ(xi)k)+(1yki)ln(1hθ(xi)k)

    θL1kj[yikln(hθ(xi)k)+(1yik)ln(1hθ(xi)k)]=θL1kjfθ(x) ∂ ∂ θ k j L − 1 [ y k i ln ⁡ ( h θ ( x i ) k ) + ( 1 − y k i ) ln ⁡ ( 1 − h θ ( x i ) k ) ] = ∂ ∂ θ k j L − 1 f θ ( x )

    由链式法则及 (1), (2), (3) ( 1 ) ,   ( 2 ) ,   ( 3 )

    θL1kjfθ(x)=faLkaLkzLkzLkθL1kj ∂ ∂ θ k j L − 1 f θ ( x ) = ∂ f ∂ a k L ⋅ ∂ a k L ∂ z k L ⋅ ∂ z k L ∂ θ k j L − 1

    其中的

    zLkθL1kj=aL1j, ∂ z k L ∂ θ k j L − 1 = a j L − 1 ,
    aLkzLk=ezLk(1+ezLk)2=11+ezLkezLk1+ezLk=g(zLk)(1g(zLk))=aLk(1aLk), ∂ a k L ∂ z k L = e − z k L ( 1 + e − z k L ) 2 = 1 1 + e − z k L ⋅ e − z k L 1 + e − z k L = g ( z k L ) ( 1 − g ( z k L ) ) = a k L ( 1 − a k L ) ,
    faLk=aLk[yikln(aLk)+(1yik)ln(1aLk)]=yikaLk1yik1aLk=yikaLkaLk(1aLk) ∂ f ∂ a k L = ∂ ∂ a k L [ y k i ln ⁡ ( a k L ) + ( 1 − y k i ) ln ⁡ ( 1 − a k L ) ] = y k i a k L − 1 − y k i 1 − a k L = y k i − a k L a k L ( 1 − a k L )

    θL1kjfθ(x)=yikaLkaLk(1aLk)aLk(1aLk)aL1j=(yikaLk)aL1j ∂ ∂ θ k j L − 1 f θ ( x ) = y k i − a k L a k L ( 1 − a k L ) ⋅ a k L ( 1 − a k L ) ⋅ a j L − 1 = ( y k i − a k L ) a j L − 1

  2. 计算隐藏层的偏导数
    对于隐藏层 l l 的中某个神经单元 k 的偏差会影响下一层的所有神经单元
    此外,隐藏层的假设函数不一定都是逻辑回归,此处假设使用逻辑回归
    则令第 l l 层中第 k 个神经单元的代价函数为

    fθ(zl+11,,zl+1sl+1)=sl+1=1[yl+1ln(g(zl+1))+(1yl+1)ln(1g(zl+1))] f θ ( z 1 l + 1 , … , z s l + 1 l + 1 ) = ∑ ℓ = 1 s l + 1 [ y ℓ l + 1 ln ⁡ ( g ( z ℓ l + 1 ) ) + ( 1 − y ℓ l + 1 ) ln ⁡ ( 1 − g ( z ℓ l + 1 ) ) ]

    注意:其中的 yl+1 y ℓ l + 1 表示第 l+1 l + 1 层上第 个单元的相对正确的输出,而 yik y k i 表示第 i i 组训练数据在最后一层中的相对正确的输出
    选取第 l 层的神经单元并对第 l1 l − 1 层的 θ θ 求偏导数,又由第一种情况可知,

    θl1kjfθ(zl+11,,zl+1sl+1)=falkalkzlkzlkθl1kj, ∂ ∂ θ k j l − 1 f θ ( z 1 l + 1 , … , z s l + 1 l + 1 ) = ∂ f ∂ a k l ⋅ ∂ a k l ∂ z k l ⋅ ∂ z k l ∂ θ k j l − 1 ,
    zlkθl1kj=al1j, ∂ z k l ∂ θ k j l − 1 = a j l − 1 ,
    alkzlk=alk(1alk), ∂ a k l ∂ z k l = a k l ( 1 − a k l ) ,

    由全微分性质不变性(全微分与网络的关系,知乎上有晓雷做的介绍)得
    falk=sl+1=1fzl+1zl+1alk=sl+1=1fal+1al+1zl+1zl+1alk=sl+1=1(yl+1al+1)θlk ∂ f ∂ a k l = ∑ ℓ = 1 s l + 1 ∂ f ∂ z ℓ l + 1 ⋅ ∂ z ℓ l + 1 ∂ a k l = ∑ ℓ = 1 s l + 1 ∂ f ∂ a ℓ l + 1 ⋅ ∂ a ℓ l + 1 ∂ z ℓ l + 1 ⋅ ∂ z ℓ l + 1 ∂ a k l = ∑ ℓ = 1 s l + 1 ( y ℓ l + 1 − a ℓ l + 1 ) θ ℓ k l

    θl1kjfθ(zl+11,,zl+1sl+1)=sl+1=1(yl+1ial+1)θlkalk(1alk)al1j ∂ ∂ θ k j l − 1 f θ ( z 1 l + 1 , … , z s l + 1 l + 1 ) = ∑ ℓ = 1 s l + 1 ( y i l + 1 − a ℓ l + 1 ) θ ℓ k l ⋅ a k l ( 1 − a k l ) ⋅ a j l − 1

1, 2 1 ,   2 两种情况下,不考虑正则化时可得代价函数的导数

θl1kjJ(θ)={1mmi=1slk=1(alkyik)al1j1mmi=1slk=1sl+1=1(al+1yl+1)θlkalk(1alk)al1jl=Ll<L ∂ ∂ θ k j l − 1 J ( θ ) = { 1 m ∑ i = 1 m ∑ k = 1 s l ( a k l − y k i ) a j l − 1 l = L 1 m ∑ i = 1 m ∑ k = 1 s l ∑ ℓ = 1 s l + 1 ( a ℓ l + 1 − y ℓ l + 1 ) θ ℓ k l ⋅ a k l ( 1 − a k l ) ⋅ a j l − 1 l < L

考虑将 (alkyik) ( a k l − y k i ) sl+1=1(al+1yl+1)θlkalk(1alk) ∑ ℓ = 1 s l + 1 ( a ℓ l + 1 − y ℓ l + 1 ) θ ℓ k l ⋅ a k l ( 1 − a k l ) 这种偏差用 δlk δ k l 表示

结合 1, 2 1 ,   2 求偏导数过程

δlk=falkalkzlk, δ k l = ∂ f ∂ a k l ⋅ ∂ a k l ∂ z k l ,

也就是表示第 l l 层中的第 k 个神经单元与目标的偏差

那么根据上面对 δlk δ k l 的定义,对代价函数进行简化

注意到对隐藏层求偏导数的过程中有

falk=sl+1=1fzl+1zl+1alk=sl+1=1fal+1al+1zl+1zl+1alk ∂ f ∂ a k l = ∑ ℓ = 1 s l + 1 ∂ f ∂ z ℓ l + 1 ⋅ ∂ z ℓ l + 1 ∂ a k l = ∑ ℓ = 1 s l + 1 ∂ f ∂ a ℓ l + 1 ⋅ ∂ a ℓ l + 1 ∂ z ℓ l + 1 ⋅ ∂ z ℓ l + 1 ∂ a k l

根据 δlk δ k l 定义则有

falk=sl+1=1δl+1zl+1alk ∂ f ∂ a k l = ∑ ℓ = 1 s l + 1 δ ℓ l + 1 ⋅ ∂ z ℓ l + 1 ∂ a k l

θl1kjJ(θ)={1mmi=1slk=1δlkal1j1mmi=1slk=1sl+1=1δl+1θlkalk(1alk)al1jl=Ll<L ∂ ∂ θ k j l − 1 J ( θ ) = { 1 m ∑ i = 1 m ∑ k = 1 s l δ k l a j l − 1 l = L 1 m ∑ i = 1 m ∑ k = 1 s l ∑ ℓ = 1 s l + 1 δ ℓ l + 1 θ ℓ k l ⋅ a k l ( 1 − a k l ) ⋅ a j l − 1 l < L

由上式可知,经过正向传播之后,可以求得输出层的偏差;然后就可以反向传播求得之前神经层的偏差,进而求得代价函数对 θ θ 的偏导数,最后利用梯度下降算法的思想,求得接近的 θ θ 值,生成一张拟合较好的神经网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值