交叉熵代价函数定义及其求导推导(读书笔记)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/78627450

目的:为了解决学习缓慢的问题


神经元的输出就是 a = σ(z),其中z=∑wjij+bz=\sum w_{j}i_{j}+b是输⼊的带权和。

C=−1n∑[ylna+(1−y)ln(1−a)]C=-\frac{1}{n}\sum[ylna+(1-y)ln(1-a)]

其中 n 是训练数据的总数,求和是在所有的训练输⼊ x 上进⾏的, y 是对应的⽬标输出。

表达式是否解决学习缓慢的问题并不明显。实际上,甚⾄将这个定义看做是代价函数也不是显⽽易⻅的!在解决学习缓慢前,我们来看看交叉熵为何能够解释成⼀个代价函数。

将交叉熵看做是代价函数有两点原因。

第⼀,它是⾮负的, C > 0。可以看出:式子中的求和中的所有独⽴的项都是负数的,因为对数函数的定义域是 (0,1),并且求和前⾯有⼀个负号,所以结果是非负。

第⼆,如果对于所有的训练输⼊ x,神经元实际的输出接近⽬标值,那么交叉熵将接近 0。

假设在这个例⼦中, y = 0 ⽽ a ≈ 0。这是我们想到得到的结果。我们看到公式中第⼀个项就消去了,因为 y = 0,⽽第⼆项实际上就是 − ln(1 − a) ≈ 0。反之, y = 1 ⽽ a ≈ 1。所以在实际输出和⽬标输出之间的差距越⼩,最终的交叉熵的值就越低了。(这里假设输出结果不是0,就是1,实际分类也是这样的)

综上所述,交叉熵是⾮负的,在神经元达到很好的正确率的时候会接近 0。这些其实就是我们想要的代价函数的特性。其实这些特性也是⼆次代价函数具备的。所以,交叉熵就是很好的选择了。但是交叉熵代价函数有⼀个⽐⼆次代价函数更好的特性就是它避免了学习速度下降的问题。为了弄清楚这个情况,我们来算算交叉熵函数关于权重的偏导数。我们将a=ς(z)a={\varsigma}(z)代⼊到 公式中应⽤两次链式法则,得到:

∂C∂wj=====−1n∑∂∂wj[ylna+(1−y)ln(1−a)]−1n∑∂∂a[ylna+(1−y)ln(1−a)]∗∂a∂wj−1n∑(ya−1−y1−a)∗∂a∂wj−1n∑(yς(z)−1−y1−ς(z))∂ς(z)∂wj−1n∑(yς(z)−1−y1−ς(z))ς′(z)xj\begin{eqnarray}\frac{\partial C}{\partial w_{j}}&=&-\frac{1}{n}\sum \frac{\partial }{\partial w_{j}}[ylna+(1-y)ln(1-a)]\\&=&-\frac{1}{n}\sum \frac{\partial }{\partial a}[ylna+(1-y)ln(1-a)]*\frac{\partial a}{\partial w_{j}}\\&=&-\frac{1}{n}\sum (\frac{y}{a}-\frac{1-y}{1-a})*\frac{\partial a}{\partial w_{j}}\\&=&-\frac{1}{n}\sum (\frac{y}{\varsigma(z)}-\frac{1-y}{1-\varsigma(z)})\frac{\partial \varsigma(z)}{\partial w_{j}}\\&=&-\frac{1}{n}\sum (\frac{y}{\varsigma(z)}-\frac{1-y}{1-\varsigma(z)}){\varsigma}'(z)x_{j}\end{eqnarray}

根据ς(z)=11+e−z\varsigma(z)=\frac{1}{1+e^{-z}} 的定义,和⼀些运算,我们可以得到 ς′(z)=ς(z)(1−ς(z)){\varsigma}'(z)=\varsigma(z)(1-\varsigma(z))。化简后可得:

∂C∂wj=1n∑xj(ς(z)−y)\frac{\partial C}{\partial w_{j}}=\frac{1}{n}\sum x_{j}({\varsigma}(z)-y)

这是⼀个优美的公式。它告诉我们权重学习的速度受到ς(z)−y\varsigma(z)-y,也就是输出中的误差的控制。更⼤的误差,更快的学习速度。这是我们直觉上期待的结果。特别地,这个代价函数还避免了像在⼆次代价函数中类似⽅程中ς′(z){\varsigma}'(z)导致的学习缓慢。当我们使⽤交叉熵的时候,ς′(z){\varsigma}'(z)被约掉了,所以我们不再需要关⼼它是不是变得很⼩。这种约除就是交叉熵带来的特效。实际上,这也并不是⾮常奇迹的事情。我们在后⾯可以看到,交叉熵其实只是满⾜这种特性的⼀种选择罢了。

根据类似的⽅法,我们可以计算出关于偏置的偏导数。我这⾥不再给出详细的过程,你可以轻易验证得到:

∂C∂b=1n∑(ς(z)−y)\frac{\partial C}{\partial b}=\frac{1}{n}\sum ({\varsigma}(z)-y)

再⼀次, 这避免了⼆次代价函数中类似ς′(z){\varsigma}'(z)项导致的学习缓慢。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【AlphaGo Zero 核心技术-深度强化学习教程笔记07】策略梯度

【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不使用人类先验知识,使用纯强化学习,将价值...

32350
来自专栏量子位

深度学习在推荐系统上的应用

作者:陈仲铭 量子位 已获授权编辑发布 转载请联系原作者 深度学习最近大红大紫,深度学习的爆发使得人工智能进一步发展,阿里、腾讯、百度先后建立了自己的AI La...

41950
来自专栏大数据文摘

从概念到应用:一文搞定数据科学和机器学习的最常见面试题

19460
来自专栏腾讯大讲堂的专栏

深度学习及并行化实现概述

摘要: 深度学习可以完成需要高度抽象特征的人工智能任务,如语音识别、图像识别和检索、自然语言理解等。深层模型是包含多个隐藏层的人工神经网络,多层非线性结构使其具...

34380
来自专栏AI研习社

深度学习在推荐系统上的应用

深度学习最近大红大紫,深度学习的爆发使得人工智能进一步发展,阿里、腾讯、百度先后建立了自己的AI Labs,就连传统的厂商OPPO、VIVO都在今年开始筹备建立...

70790
来自专栏新智元

南开大学提出新物体分割评价指标,相比经典指标错误率降低 69.23%

---- 新智元专栏 作者:范登平(南开大学) 【新智元导读】南开大学媒体计算实验室等研究团队从人类视觉系统对场景结构非常敏感的角度出发,提出一种新颖、...

34680
来自专栏小小挖掘机

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

GBDT和LR的融合在广告点击率预估中算是发展比较早的算法,为什么会在这里写这么一篇呢?本来想尝试写一下阿里的深度兴趣网络(Deep Interest Netw...

41020
来自专栏小石不识月

测试数据集与验证数据集之间有什么区别呢?

验证数据集(Validation Datasets)是训练模型时所保留的数据样本,我们在调整模型超参数时,需要根据它来对模型的能力进行评估。

1.1K100
来自专栏腾讯大数据的专栏

解密最接近人脑的智能学习机器 ——深度学习及并行化实现

训练深层模型是长期以来的难题,近年来以层次化、逐层初始化为代表的一系列方法的提出给训练深层模型带来了希望,并在多个应用领域获得了成功。深层模型的并行化框架和训...

31750
来自专栏ATYUN订阅号

数据科学家应该知道的10个深度学习的高级架构!

随着深度学习不断地产生新进展,要跟上时代的脚步变得异常困难。几乎每天都有创新,或是产生一种新的深度学习的应用。 这篇文章包含了最近深度学习的一些进展。为了保持文...

40150

扫码关注云+社区

领取腾讯云代金券