极大似然估计和交叉熵
文章目录
- 一、前言
- 二、极大似然估计
- 三、交叉熵
- 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=1Kpkyk
其中, 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=1Kpkyk
我们期待最大化似然估计, 即最小化负对数似然函数. 转换成对数是因为计算机常做乘法, 这样有利于计算.
min(−∏i=1n∏k=1Kyklogpk)\min ( - {\textstyle \prod_{i=1}^{n}} {\textstyle \prod_{k=1}^{K}} y_k \log{p_k} ) min(−∏i=1n∏k=1Kyklogpk)
由于采用 one−hot\mathrm{one-hot}one−hot 编码, 故 yk=0y_k=0yk=0 的项乘积均为 0, 只需考虑 yk=1y_k=1yk=1 时. 故上述函数可变形为:
min(−∏i=1nlogPk(yk=1))\min ( - {\textstyle \prod_{i=1}^{n}} \log{P_k}(y_k = 1) ) min(−∏i=1nlogPk(yk=1))
此时就可以推导出那个常见的损失函数
L(θ)=−ylogp(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[logP(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)logP(x)H(x) = - {\textstyle \sum_{x}} P(x)\log{P(x)} H(x)=−∑xP(x)logP(x)
若 log\loglog 以2为底, 则可以衡量编码信息的比特数多少. 在信息论中, 信息与随机性是正相关的. 高熵等于高随机性, 需要更多的比特来编码.
例如, 计算丢一枚硬币的熵:
H(x)=−p(正面)log2p(正面)−p(反面)log2p(反面)=−log212=1H(x) = -p(正面) \log_{2}p(正面) - p(反面)log_{2}p(反面) = - \log_{2}\frac{1}{2} = 1 H(x)=−p(正面)log2p(正面)−p(反面)log2p(反面)=−log221=1
则我们可以用 1 位比特来编码.
KL\mathrm{KL}KL 散度用于衡量两个分布 P,QP,QP,Q 的距离, 被定义为
DKL(P∥Q)=∑xP(x)(logP(x)−logQ(x))D_{\mathrm{KL}}(P \parallel Q) = {\textstyle \sum_{x}} P(x)(\log{P(x)} - \log{Q(x)}) DKL(P∥Q)=∑xP(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)logQ(x)H(P,Q) = - {\textstyle \sum_{x}} P(x)\log{Q(x)} H(P,Q)=−∑xP(x)logQ(x)
同时, 其可以被写为:
H(P,Q)=−∑PlogQ=−∑PlogP+∑PlogP−∑PlogQ=H(P)+∑PlogPQ=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)logQ(y^∣x)=−∑k=1Kyklogyk^{\textstyle \sum_{y}} P(y \mid x) \log{Q(\hat{y} \mid x)} = - {\textstyle \sum_{k=1}^{K}} {y_k\log{\hat{y_k}}} ∑yP(y∣x)logQ(y^∣x)=−∑k=1Kyklogyk^
四、总结
最小化负对数似然函数和最小化交叉熵在形式上虽然看起来是一样的, 但是公式背后的含义不同.
极大似然估计和交叉熵相关推荐
- 机器学习中的损失函数(交叉熵损失、Hinge loss)
损失函数 文章目录 损失函数 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 机器学习中的MLE 交叉熵损失 1.2 多分类的交叉熵损失函数 1.3 比较 2. Hinge lo ...
- 最大似然函数、交叉熵和经验分布的关系
这是对<deep learning>书中(5.59)式和均方损失是经验分布和高斯模型之间的交叉熵的理解. 经验分布 最大似然函数能推导出交叉熵,他们俩本质是一回事,推导的桥梁就是经验分布. ...
- 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度
交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录
- Lesson 4.2 逻辑回归参数估计:极大似然估计、相对熵与交叉熵损失函数
文章目录 一.逻辑回归参数估计基本思路 1. 构建损失函数 2. 损失函数求解 二.利用极大似然估计进行参数估计 三.熵.相对熵与交叉熵 1. 熵(entropy)的基本概念与计算公式 2. 熵的基本 ...
- LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数
在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...
- 深度学习中softmax交叉熵损失函数的理解
1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...
- LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计,为什么呢?可 ...
- 一文读懂交叉熵和最大似然的关系及在人脸识别中的应用
目录 一.信息论 1.信息量 2.信息熵 3. 相对熵(KL散度) 4.交叉熵 二.最大似然 1.概念 2.最大似然的求解 三.交叉熵和最大似然在人脸识别中的应用 四.insightface中的los ...
- 损失函数-负对数似然和交叉熵(Pytorch中的应用)
文章目录 1.负对数似然损失函数 1.1.似然 1.2.似然函数 1.3.极大似然估计 1.4.对数似然 1.5.负对数似然 1.6.pytorch中的应用 2.交叉熵损失函数 2.1.信息量 2.2 ...
- 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)
在看Pytorch的交叉熵损失函数torch.nn.CrossEntropyLoss官方文档介绍中,给出的表达式如下.不免有点疑惑为何交叉熵损失的表达式是这个样子的 loss ( y , clas ...
最新文章
- python使用lxml及request爬取-python用lxml解析网页为什么不完整?
- 软件测试周记录之jmeter
- learn python app v3_App Store 上的“Learn Python and Scratch”
- 用 WebClient.UploadData 方法 上载文件数据
- 计算机签到程序,基于spring boot技术的签到管理系统的设计与实现计算机专业.doc...
- Java调用Javascript、Python算法总结
- 重命名DC 以及 域
- 【MATLAB】MATLAB应用手册(1):高等数学的MATLAB应用
- 使用itertools建立词表
- 红米note4手机怎么屏幕录制视频
- 深度学习:淘气3000问
- sap的pod确认_SAP POD 在途库存 SIT
- Linux ping 命令
- android点击展开内容,Android编程实现Listview点击展开和隐藏的方法
- 2017年5月历史文章汇总
- python笑傲江湖_PHP 2019年继续笑傲江湖
- STM32f103+protues仿真(二) OLED显示
- alphacam模板@橱柜门专用alphacam模板
- ubuntu 12.04安装截图功能的软件 gimp
- 两分钟学会用ADC0804采集数据