专栏首页从流域到海域为什么使用交叉熵作为损失函数?

为什么使用交叉熵作为损失函数?

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

如果概括性地回答这个问题,我们其实是希望得到最大似然(maximum likelihood),使得模型的预测分布与数据的实际分布尽可能相近。而最大化log似然等同于最小化负log似然,最小化负log似然等价于最小化KL散度(相对熵),KL散度里包含有只与数据集相关而与模型无关的logp^datalog\hat{p}_{data}logp^​data​,这一部分对每个特定数据集来说是一个定值,为了简化去掉该部分我们最后得到了交叉熵。

也就是说,虽然最小化的是交叉熵,但其实我们的目的是最大似然,因为最大似然有以下性质:

最大似然有两个非常好的统计性质:

  1. 样本数量趋于无穷大时,模型收敛的概率会随着样本数m的增大而增大。这被称为一致性
  2. 一个一致性估计器能够在固定数目的样本m下取得更低的泛化误差(generalization error),或者等价的,需要更少的样本就可以得到固定水平的泛化误差。这被称作统计高效性

最大化log似然和最小化均方误差(MSE),得到的估计是相同的。

The Cramér-Rao lower bound (Rao, 1945; Cramér, 1946)证明了没有任何其他的一致性估计器(consistent estimator)比最大log似然估计器有更小的MSE。

另外,在梯度计算层面上,交叉熵对参数的偏导不含对sigmoid函数的求导,而均方误差(MSE)等其他则含有sigmoid函数的偏导项。大家知道sigmoid的值很小或者很大时梯度几乎为零,这会使得梯度下降算法无法取得有效进展,交叉熵则避免了这一问题。

综上所述,最小化交叉熵能得到拥有一致性统计高效性的最大似然,而且在计算上也比其他损失函数要适合优化算法,因此我们通常选择交叉熵作为损失函数。

参考文献

【1】Deep Learning 英文版 【2】https://blog.csdn.net/huwenxing0801/article/details/82791879

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 最大似然估计(Maximum Likelihood Estimation) - 机器学习基础

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    Steve Wang
  • 改善深层神经网络 - 第二课第一周作业 1.1 Initialization

    Steve Wang
  • 人脸识别相关及其内部原理

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

    Steve Wang
  • hippy-react 三端同构

    Hippy (https://github.com/Tencent/Hippy) 是腾讯在2019年12月20日开源跨端框架。

    17kidd
  • 【经验】交互规范设计流程最全总结

    规范和秩序存在于生活的方方面面。不知道大家有没观察过,稍微有点规模的咖啡连锁店,一般至少会有3位职员,分别负责收银点单,制作咖啡,打扫。他们各司其职,高效配合,...

    用户1730674
  • angular教程推荐

    用户1408045
  • Python第十六课:循环

    同If语句一样,循环语句也是编程语言的一个必备基本单元。一般而言,Python有两种方式可以实现循环语句,一种是for另一种便是while,我们先从稍微简单一点...

    HuangWeiAI
  • 谈谈Java Intrumentation和相关应用

      对于Java 程序员来说,Java Intrumentation、Java agent这些技术可能平时接触的很少,听上去陌生但又好像在哪里见到过。实际上,我...

    JavaEdge
  • 继BERT之后,这个新模型再一次在11项NLP基准上打破纪录

    BERT 和微软新模型都采用了通用语言理解评估(GLUE)基准中的 11 项任务,并希望借助 GLUE 展示模型在广泛自然语言理解任务中的鲁棒性。其中 GLUE...

    机器之心
  • Java工具集-获取IP(IpUtils)

    cwl_java

扫码关注云+社区

领取腾讯云代金券