目录

  1. 前言
  2. 交叉熵损失函数
  3. 交叉熵损失函数的求导

前言

最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机器学课的作业)感觉虽然不够严谨,但是很多地方还算直观,就先把它放过来吧。

说明: 本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本质是一样的,后面我会专门有一篇文章说明两者关系,先在这里挖个坑)。 首先,我们二话不说,先放出逻辑回归交叉熵的公式:

以及

对参数
的偏导数(用于诸如梯度下降法等优化算法的参数更新),如下:

但是在大多论文或数教程中,也就是直接给出了上面两个公式,而未给出推导过程,这就给初学者造成了一定的困惑。交叉熵的公式可以用多种解释得到,甚至不同领域也会有不同,比如数学系的用极大似然估计,信息工程系的的从信息编码角度,当然更多是联合KL散度来解释。但是我这里假设那些你都不了解的情况下如何用一个更加直白和直观的解释来得到Logistic Regression的交叉熵损失函数,说清楚它存在的合理性就可以解惑(关于交叉熵的所谓"正统"解释后续我会专门写一篇文章来总结,先挖个坑)。因水平有限,如有错误,欢迎指正。

废话不说,下文将介绍一步步得到Logistic Regression的交叉熵损失函数,并推导出其导数,同时给出简洁的向量形式及其导数推导过程。

交叉熵损失函数(Logistic Regression代价函数)

我们一共有

组已知样本(
),
表示第
组数据及其对应的类别标记。其中
维向量(考虑偏置项),
则为表示类别的一个数:
  • logistic回归(是非问题)中,

    取0或者1;
  • softmax回归 (多分类问题)中,
    取1,2...k中的一个表示类别标号的一个数(假设共有k类)。

这里,只讨论logistic回归,输入样本数据

,模型的参数为
,因此有

二元问题中常用sigmoid作为假设函数(hypothesis function),定义为:

因为Logistic回归问题就是0/1的二分类问题,可以有

现在,我们不考虑“熵”的概念,根据下面的说明,从简单直观角度理解,就可以得到我们想要的损失函数:我们将概率取对数,其单调性不变,有

那么对于第

组样本,假设函数表征正确的组合对数概率为:

其中,

为示性函数(indicative function),简单理解为{ }内条件成立时,取1,否则取0,这里不赘言。 那么对于一共
组样本,我们就可以得到模型对于整体训练样本的表现能力:

由以上表征正确的概率含义可知,我们希望其值越大,模型对数据的表达能力越好。而我们在参数更新或衡量模型优劣时是需要一个能充分反映模型表现误差的损失函数(Loss function)或者代价函数(Cost function)的,而且我们希望损失函数越小越好。由这两个矛盾,那么我们不妨领代价函数为上述组合对数概率的相反数:

上式即为大名鼎鼎的交叉熵损失函数。(说明:如果熟悉“信息熵"的概念

,那么可以有助理解叉熵损失函数)

交叉熵损失函数的求导

这步需要用到一些简单的对数运算公式,这里先以编号形式给出,下面推导过程中使用特意说明时都会在该步骤下脚标标出相应的公式编号,以保证推导的连贯性。

(为了方便这里
,即
,其他底数如2,10等,由换底公式可知,只是前置常数系数不同,对结论毫无影响)

另外,值得一提的是在这里涉及的求导均为矩阵、向量的导数(矩阵微商),这里有一篇教程总结得精简又全面,非常棒,推荐给需要的同学。

下面开始推导:

交叉熵损失函数为:

其中,

由此,得到

这次再计算

对第
个参数分量
求偏导:

这就是交叉熵对参数的导数:

向量形式

前面都是元素表示的形式,只是写法不同,过程基本都是一样的,不过写成向量形式会更清晰,这样就会把

和求和符号
省略掉了。我们不妨忽略前面的固定系数项
,交叉墒的损失函数(1)则可以写成下式:

带入,得到:

再对

求导,前面的负号直接削掉了,

转载请注明出处Jason Zhao的知乎专栏“人工+智能“,文章链接:

Jason Zhao:交叉熵损失函数的求导(Logistic回归)

sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)相关推荐

  1. 交叉熵损失函数分类_交叉熵损失函数

    我们先从逻辑回归的角度推导一下交叉熵(cross entropy)损失函数. 从逻辑回归到交叉熵损失函数 这部分参考自 cs229-note1 part2. 为了根据给定的 预测 (0或1),令假设函 ...

  2. 交叉熵损失函数优缺点_交叉熵损失函数的优点(转载)

    第一篇: 利用一些饱和激活函数的如sigmoid激活时,假如利用均方误差损失,那么损失函数向最后一层的权重传递梯度时,梯度公式为 可见梯度与最后一层的激活函数的导数成正比,因此,如果起始输出值比较大, ...

  3. 交叉熵损失函数优缺点_交叉熵损失函数

    交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函 ...

  4. AI学习[随堂笔记1109]_交叉熵损失函数_方差损失函数_基础

    交叉熵损失函数 一种用于分类问题1的损失函数2,原理为:将模型输出的概率,与标准答案3的值对比. 和正确答案越接近,则计算结果:交叉熵越低,模型质量越好 和错误答案越接近,则交叉熵越大,模型质量越差 ...

  5. 交叉熵损失函数公式_交叉熵损失函数对其参数求导

    1.Sigmoid 二分类交叉熵 交叉熵公式: 其中y是laebl:0 或1. hθ(xi)是经过sigmoid得到的预测概率.θ为网络的参数, m为样本数. hθ()函数如下所示, J(θ) 对参数 ...

  6. 交叉熵损失函数和似然估计_熵、交叉熵及似然函数的关系

    熵.交叉熵及似然函数的关系 1. 熵 1.1 信息量 信息量:最初的定义是信号取值数量m的对数为信息量\(I\),即 \(I=log_2m\).这是与比特数相关的,比如一个信号只有两个取值,那么用1个 ...

  7. Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数

    文章目录 一.逻辑回归参数估计基本思路 1. 构建损失函数 2. 损失函数求解 二.利用极大似然估计进行参数估计 三.熵.相对熵与交叉熵 1. 熵(entropy)的基本概念与计算公式 2. 熵的基本 ...

  8. python交叉熵损失函数实现_Softmax和交叉熵的深度解析和Python实现

    原标题:Softmax和交叉熵的深度解析和Python实现 作者 | PARAS DAHAL 译者 | zzq [导读]如果你稍微了解一点深度学习的知识或者看过深度学习的在线课程,你就一定知道最基础的 ...

  9. 逻辑回归损失函数通常是凸函数(附平方差损失的非凸证明以及交叉熵损失函数求导)

    Q:为什么逻辑回归损失函数往往要求是凸函数?(此处凸函数是指下凸,国内和国外凸函数的标准不一样,是相反的,吴恩达的机器学习课程凸函数是指下凸) A:如果损失函数是非凸的,使用梯度下降法优化时,最后得到 ...

最新文章

  1. 关于EF中批量添加的个人探索
  2. python 调试 cyberbrain 教程
  3. 互联网公司面试必问的mysql题目(下)
  4. C#对App.config文件或者web.config文件中节点的操作类
  5. ARM 嵌入式入门经验
  6. 【upc5020】 Knight
  7. P6329-[模板]点分树 | 震波
  8. php $r,PHP
  9. 计算机组成原理中的直接映像,计算机组成原理cache存储器的直接映像与变换.doc...
  10. linux拷贝带子文件夹命令,简单带子目录的makefile练习
  11. ANDROID 高性能图形处理 之 OPENGL ES
  12. 【转】Office2003与Office2007/2010共存方法
  13. 批量输出lib文件名(PCL或者opencv等环境配置)
  14. 【转】博客美化(6)为你的博文自动添加目录
  15. 电脑中了“魔鬼波”病毒 冲击波补丁
  16. adobe怎么统计字数_pdf文件怎么快速统计字数?
  17. drop python_用Python做自己的AirDrop 1 - 环境搭建
  18. injected stylesheet 导致页面样式异常
  19. 计算机病毒和木马完全相同,木马和计算机病毒的特点
  20. 如何关闭微软news

热门文章

  1. 学习Spark——那些让你精疲力尽的坑
  2. 知方可补不足~sqlserver中使用ROW_NUMBER进行的快速分页
  3. 别人要访问我的电脑上部署的tomcat,必须关闭防火墙吗?
  4. 柴油机制造商QMD谈System Center 2012实践
  5. Apache Nutch 1.3 学习笔记目录
  6. Linux内核中流量控制(4)
  7. 程序员|那天下班回家,突然民警叫住我....
  8. 【转载】生怕我等着急了的扬州程序员
  9. zhajinhuagame为了迎接新版
  10. 虚拟光驱的开发者斟酌了很久