文章目录

  • 一、前言
  • 二、极大似然估计
  • 三、交叉熵
    • 1. 信息论
    • 2. 交叉熵损失函数
  • 四、总结

一、前言

对于一个多分类问题 (假设为 KKK 类), 有数据集 D={(xi,yi)∣i}D = \{ \ (x_i,y_i \ ) \mid i \}D={ (xi​,yi​ )∣i}. 我们希望建立模型去建模概率分布 pθ(y∣x)p_{\theta}(y \mid x)pθ​(y∣x), 模型参数为 θ\thetaθ.

我们使用损失函数评价模型的好坏, 可以采用两种方式来导出.

二、极大似然估计

由于是多分类问题, 在样本空间上的 p(y∣x)p(y \mid x)p(y∣x) 满足某个分类分布. 由分类分布定义可以知道.

p(y∣x;θ)=∏k=1Kpkykp (y \mid x ; \theta) = {\textstyle \prod_{k=1}^{K}} p_{k}^{y_k} p(y∣x;θ)=∏k=1K​pkyk​​

其中, ppp 是分布的输出概率向量 , θ\thetaθ 是分布的参数. yyy 是 one−hot\mathrm{one-hot}one−hot 编码的标签向量.

例如对于一个天气 4 分类问题, 输出概率向量如下:

p = {'rain' : 0.14 , 'snow' : 0.37 , 'sleet' : 0.03 , 'hail' : 0.46}

则分类为 snow\mathrm{snow}snow 的概率为 P(y=snow=[0,1,0,0])=(0.14)0∗(0.37)1∗(0.03)0∗(0.46)0=0.37P(y = \mathrm{snow} = [0,1,0,0]) = (0.14)^0 * (0.37)^1 * (0.03)^0 * (0.46)^0 = 0.37P(y=snow=[0,1,0,0])=(0.14)0∗(0.37)1∗(0.03)0∗(0.46)0=0.37

当使用极大似然估计去估计分布参数 θ\thetaθ.

假设有 nnn 个样本: (x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i)), 则似然函数为

L(x(i),y(i);θ)=∏i=1n∏k=1Kpkyk\mathcal{L} (x^{(i)},y^{(i)} ; \theta) = {\textstyle \prod_{i=1}^{n}} {\textstyle \prod_{k=1}^{K}} p_{k}^{y_k} L(x(i),y(i);θ)=∏i=1n​∏k=1K​pkyk​​

我们期待最大化似然估计, 即最小化负对数似然函数. 转换成对数是因为计算机常做乘法, 这样有利于计算.

min⁡(−∏i=1n∏k=1Kyklog⁡pk)\min ( - {\textstyle \prod_{i=1}^{n}} {\textstyle \prod_{k=1}^{K}} y_k \log{p_k} ) min(−∏i=1n​∏k=1K​yk​logpk​)

由于采用 one−hot\mathrm{one-hot}one−hot 编码, 故 yk=0y_k=0yk​=0 的项乘积均为 0, 只需考虑 yk=1y_k=1yk​=1 时. 故上述函数可变形为:

min⁡(−∏i=1nlog⁡Pk(yk=1))\min ( - {\textstyle \prod_{i=1}^{n}} \log{P_k}(y_k = 1) ) min(−∏i=1n​logPk​(yk​=1))

此时就可以推导出那个常见的损失函数

L(θ)=−ylog⁡p(x;θ)−(1−y)log⁡(1−p(x;θ))\mathcal{L} (\theta) = -y\log{p(x;\theta)} - (1-y)\log(1-p(x;\theta)) L(θ)=−ylogp(x;θ)−(1−y)log(1−p(x;θ))

三、交叉熵

1. 信息论

信息一般可以被表述为不确定性的程度, 有如下特性

  • 一定发生的事件没有信息

  • 很有可能发生的事件几乎没有信息

  • 随机事件拥有更多的信息

  • 独立事件可以增加信息——抛两次正面的骰子的信息量大于抛一次正面骰子的信息量

事件的信息可以形式化为:

I(x)=−log⁡(P(x))I(x) = - \log(P(x)) I(x)=−log(P(x))

熵用于衡量信息的多少, 被定义为:

H(x)=Ex∼P(I(x))=−Ex∼p[log⁡P(x)]H(x) = \mathbb{E}x \sim P(I(x)) = -\mathbb{E}x \sim p[\log{P(x)}] H(x)=Ex∼P(I(x))=−Ex∼p[logP(x)]

离散随机变量 xxx 的熵即:

H(x)=−∑xP(x)log⁡P(x)H(x) = - {\textstyle \sum_{x}} P(x)\log{P(x)} H(x)=−∑x​P(x)logP(x)

若 log⁡\loglog 以2为底, 则可以衡量编码信息的比特数多少. 在信息论中, 信息与随机性是正相关的. 高熵等于高随机性, 需要更多的比特来编码.

例如, 计算丢一枚硬币的熵:

H(x)=−p(正面)log⁡2p(正面)−p(反面)log2p(反面)=−log⁡212=1H(x) = -p(正面) \log_{2}p(正面) - p(反面)log_{2}p(反面) = - \log_{2}\frac{1}{2} = 1 H(x)=−p(正面)log2​p(正面)−p(反面)log2​p(反面)=−log2​21​=1

则我们可以用 1 位比特来编码.

KL\mathrm{KL}KL 散度用于衡量两个分布 P,QP,QP,Q 的距离, 被定义为

DKL(P∥Q)=∑xP(x)(log⁡P(x)−log⁡Q(x))D_{\mathrm{KL}}(P \parallel Q) = {\textstyle \sum_{x}} P(x)(\log{P(x)} - \log{Q(x)}) DKL​(P∥Q)=∑x​P(x)(logP(x)−logQ(x))

在这里 KL\mathrm{KL}KL 距离不对称. 也就是 DKL(P∥Q)≠DKL(Q∥P)D_{\mathrm{KL}}(P \parallel Q) \neq D_{\mathrm{KL}}(Q \parallel P)DKL​(P∥Q)=DKL​(Q∥P)

熵可以衡量编码信息的最少比特数, 交叉熵则可以衡量使用 Q\mathrm{Q}Q 的错误优化编码方案对具有分布 P\mathrm{P}P 的 xxx 进行编码的最小比特数. 其被定义为:

H(P,Q)=−∑xP(x)log⁡Q(x)H(P,Q) = - {\textstyle \sum_{x}} P(x)\log{Q(x)} H(P,Q)=−∑x​P(x)logQ(x)

同时, 其可以被写为:

H(P,Q)=−∑Plog⁡Q=−∑Plog⁡P+∑Plog⁡P−∑Plog⁡Q=H(P)+∑Plog⁡PQ=H(P)+DKL(Q∥P)H(P,Q) = - \sum P\log{Q} = - \sum P\log{P} + \sum P\log{P} - \sum P\log{Q} = H(P) + \sum P\log{\frac{P}{Q}} = H(P) + D_{\mathrm{KL}}(Q \parallel P) H(P,Q)=−∑PlogQ=−∑PlogP+∑PlogP−∑PlogQ=H(P)+∑PlogQP​=H(P)+DKL​(Q∥P)

由于 H(P)H(P)H(P) 与模型参数无关, 可以视为常数. 所以最小化 KL\mathrm{KL}KL 距离等价于最小化交叉熵.

在深度学习中, PPP 一般为真实标签的分布, QQQ 一般为模型预测输出的分布.

2. 交叉熵损失函数

我们希望能够最小化真实分布 P(y∣x)P(y \mid x)P(y∣x) 与模型输出分布 P(y^∣x)P(\hat{y} \mid x)P(y^​∣x) 的距离, 等价于最小化两者的交叉熵, 其被定义为:

∑yP(y∣x)log⁡Q(y^∣x)=−∑k=1Kyklog⁡yk^{\textstyle \sum_{y}} P(y \mid x) \log{Q(\hat{y} \mid x)} = - {\textstyle \sum_{k=1}^{K}} {y_k\log{\hat{y_k}}} ∑y​P(y∣x)logQ(y^​∣x)=−∑k=1K​yk​logyk​^​

四、总结

最小化负对数似然函数和最小化交叉熵在形式上虽然看起来是一样的, 但是公式背后的含义不同.

极大似然估计和交叉熵相关推荐

  1. 机器学习中的损失函数(交叉熵损失、Hinge loss)

    损失函数 文章目录 损失函数 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 机器学习中的MLE 交叉熵损失 1.2 多分类的交叉熵损失函数 1.3 比较 2. Hinge lo ...

  2. 最大似然函数、交叉熵和经验分布的关系

    这是对<deep learning>书中(5.59)式和均方损失是经验分布和高斯模型之间的交叉熵的理解. 经验分布 最大似然函数能推导出交叉熵,他们俩本质是一回事,推导的桥梁就是经验分布. ...

  3. 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度

    交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录

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

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

  5. LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数

    在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...

  6. 深度学习中softmax交叉熵损失函数的理解

    1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...

  7. LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)

    首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计,为什么呢?可 ...

  8. 一文读懂交叉熵和最大似然的关系及在人脸识别中的应用

    目录 一.信息论 1.信息量 2.信息熵 3. 相对熵(KL散度) 4.交叉熵 二.最大似然 1.概念 2.最大似然的求解 三.交叉熵和最大似然在人脸识别中的应用 四.insightface中的los ...

  9. 损失函数-负对数似然和交叉熵(Pytorch中的应用)

    文章目录 1.负对数似然损失函数 1.1.似然 1.2.似然函数 1.3.极大似然估计 1.4.对数似然 1.5.负对数似然 1.6.pytorch中的应用 2.交叉熵损失函数 2.1.信息量 2.2 ...

  10. 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)

    在看Pytorch的交叉熵损失函数torch.nn.CrossEntropyLoss官方文档介绍中,给出的表达式如下.不免有点疑惑为何交叉熵损失的表达式是这个样子的 loss ⁡ ( y , clas ...

最新文章

  1. 最新 ECSHOP v2.7.3数据表(88张表)
  2. 自己写一个轻量的JqueryGrid组件
  3. word2vec模型的理解
  4. Codeforces Round #167 (Div. 1) C. Dima and Horses(BFS+贪心)
  5. Go语言实现HashSet
  6. 实践:创建异步 HTTP 处理器
  7. 北京黑龙江商会成立纪实(2)
  8. 获取当前ip_百度定位:IP定位、浏览器定位、SDK辅助定位
  9. 说一下syslog日志吧~~~
  10. php自定义函数指定参数类型,php – Doctrine:如何添加带可选参数的自定义函数?...
  11. Recurdyn与AMESim联合仿真出现无法加载DLL错误解决方法
  12. 超级搜索术6-问题驱动/系统思维
  13. php 获取 客户端,php 获取客户端信息
  14. Java链表——创建链表对象
  15. Apache安装教程
  16. 计算机二级考试vb试题,2016计算机二级考试《VB》真题练习
  17. hdu 5234 Happy birthday 背包 dp
  18. 原来js让任务栏闪烁这么简单
  19. 魅族容器云平台基于Kubernetes自动化运维实践
  20. 证件照制作:使用PS打印一寸照片

热门文章

  1. 苹果CMSV10红色自适应网站模板
  2. JAVA-时间日期格式转换
  3. HTML——表格的快速生成以及表格的合并
  4. html怎么创建表格,html怎么做表格
  5. 一、Java入门基础
  6. python读pdf/双层pdf
  7. java的学习--第一章 java基础入门
  8. redis 中 epoll 模型 ~ 霓裳
  9. 初始化Maven本地仓库
  10. 利用数据细分目标客户群