交叉熵损失函数学习

为什么学习慢

实际生活中我们大多数不喜欢被指出错误。想象以下一位同学在开始学习弹奏钢琴不久后,在一个听众前做了处女秀。她很紧张,开始时将八度音阶的曲段演奏得很低。她很困惑,因为不能继续演奏下去了,直到有个人指出了她其中的错误。当时,她非常尴尬。不过,尽管不开心,她却能够因为明显的犯错快速地学习到正确的东西。我们相信下次她再演奏肯定会是正确的!相反,在错误的弹奏不能很好地定义的时候,学习的过程会变得更缓慢。理想地,我们希望和期待神经⽹络可以从错误中快速地学习。但是在实际应用中,人工神经元在其犯错较大的情况下其实学习很有难度,并且这种情况实际上是非常普遍的。

为了探索这个问题的源头,回忆以下神经元是通过改变权重和偏置,并以一个代价函数的偏导数( ∂ C ∂ ω \frac{\partial C}{\partial \omega} ωC ∂ C ∂ b \frac{\partial C}{\partial b} bC)决定的速度学习。所以我们平常说的“学习缓慢”,实际上就是偏导数很小。假设我们的损失函数为:
C = ( y − α ) 2 2 C = \frac{(y-\alpha)^2}{2} C=2(yα)2
其中 α \alpha α为神经元的输出, α = σ ( ω x + b ) \alpha = \sigma(\omega x + b) α=σ(ωx+b),训练输入为 x = 1 , y = 0 x=1,y=0 x=1y=0,应用链式法则求权重和偏置的偏导数:
∂ C ∂ ω = ( α − y ) σ ′ ( z ) x = α σ ′ ( z ) ∂ C ∂ b = ( α − y ) σ ′ ( z ) = α σ ′ ( z ) \frac{\partial C}{\partial \omega}=(\alpha -y)\sigma^{\prime}(z)x=\alpha \sigma^{\prime}(z) \\ \frac{\partial C}{\partial b}=(\alpha -y)\sigma^{\prime}(z)=\alpha \sigma^{\prime}(z) ωC=(αy)σ(z)x=ασ(z)bC=(αy)σ(z)=ασ(z)
在这里插入图片描述
上图为 s i g m o i d sigmoid sigmoid函数的图像,当神经元的输出接近于1的时候,曲线变得相当平,所以 σ ′ \sigma^{\prime} σ就会很小,这就导致梯度很小,学习缓慢。

交叉熵代价函数

在研究了 σ ′ \sigma^{\prime} σ的特点后,我们更倾向于选择一个偏导数不包含 σ \sigma σ的代价函数。假设有一对训练样本 x x x,其代价函数 C = C x C=C_x C=Cx满足:
∂ C ∂ ω j = x j ( α − y ) ∂ C ∂ b = ( α − y ) \frac{\partial C}{\partial \omega_j}=x_j(\alpha-y) \\ \frac{\partial C}{\partial b}=(\alpha -y) ωjC=xj(αy)bC=(αy)
如果选择的代价函数满足上述条件,那么就能呈现这样的特性:初始误差越大,神经元学习越快。
下面我们来进行推导:
由链式法则:
∂ C ∂ b = ∂ C ∂ α σ ′ ( z ) \frac{\partial C}{\partial b}=\frac{\partial C}{\partial \alpha}\sigma^{\prime}(z) bC=αCσ(z)
又因为 σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) = α ( 1 − α ) \sigma^{\prime}(z)=\sigma(z)(1-\sigma(z))=\alpha(1-\alpha) σ(z)=σ(z)(1σ(z))=α(1α),上式变换为:
∂ C ∂ b = ∂ C ∂ α α ( 1 − α ) \frac{\partial C}{\partial b}=\frac{\partial C}{\partial \alpha}\alpha(1-\alpha) bC=αCα(1α)
对比 ∂ C ∂ b = ( α − y ) \frac{\partial C}{\partial b}=(\alpha -y) bC=(αy),有:
α − y = ∂ C ∂ α α ( 1 − α ) \alpha -y = \frac{\partial C}{\partial \alpha}\alpha(1-\alpha) αy=αCα(1α)
那么:
∂ C ∂ α = α − y α ( 1 − α ) \frac{\partial C}{\partial \alpha} = \frac{\alpha-y}{\alpha(1-\alpha)} αC=α(1α)αy
对上式关于 α \alpha α进行积分,得到:
C = − [ y l n α + ( 1 − y ) l n ( 1 − α ) ] + c o n s t a n c e C = -[yln \alpha+(1-y)ln(1-\alpha)] + constance C=[ylnα+(1y)ln(1α)]+constance
其中 c o n s t a n c e constance constance是常量,这是一个单独的样本对代价函数的贡献,对所有样本进行平均,得到整个代价函数:
C = − 1 n ∑ x [ y l n α + ( 1 − y ) l n ( 1 − α ) ] + c o n s t a n c e C=-\frac{1}{n}\sum_x[yln \alpha+(1-y)ln(1-\alpha)] + constance C=n1x[ylnα+(1y)ln(1α)]+constance

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yougwypf1991

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值