最大似然-最小KL散度-最小化交叉熵损失-三者的关系

问题缘起:给定一组数据(x1,x2,...,xm)(x^1,x^2,...,x^m)(x1,x2,...,xm),希望找到这组数据服从的分布。此种情况下,分布规律用概率密度p(x)表征。

问题归处:如果能够建模/近似建模p(x),就能够利用p(x)进行采样/数据生成。离散化x的空间{xi}i=1n\{x_i\}_{i=1}^n{xi​}i=1n​, 计算{p(xi)}i=1n\{p(x_i)\}_{i=1}^n{p(xi​)}i=1n​,取概率最大的xkx_kxk​作为生成样本。

最大似然:常用来解决这类问题。具体做法:参数还一个概率分布qθ(x)q_\theta(x)qθ​(x),是的观测样本(x1,x2,...,xm)(x^1,x^2,...,x^m)(x1,x2,...,xm)在qθ(x)q_\theta(x)qθ​(x)的似然函数最大。

似然函数:表示的是已知随机变量的取值时,未知参数的取值可能性:L(θ|x)=P(X=x|θ)。直观理解就是在参数θ\thetaθ情况下,出现(x1,x2,...,xm)(x^1,x^2,...,x^m)(x1,x2,...,xm)这组数据的可能性,数学表达式为(概率密度积分记为概率):
L(θ∣x)=∏i=1mpθ(xi)(1)L(θ|x)=\prod_{i=1}^m p_\theta(x_i)\tag{1}L(θ∣x)=i=1∏m​pθ​(xi​)(1)

我们需要调整参数θ\thetaθ来使这个出现这组数据的可能性最大,即最大似然。

为了简化似然函数中的连乘计算,常常会使用对数似然函数,使得连乘转变为连加(取对数不会改变似然的最优解–最优解是自变量的值,最优解值才是因变量的值)。

最大化对数似然问题可以统一为下式,即 最优的参数 是使 对数似然的值最大的θ\thetaθ:
θ∗=arg⁡max⁡θlog⁡∏i=1mpθ(xi)=arg⁡max⁡θ∑i=1mlog⁡pθ(xi)=arg⁡max⁡θ∑i=1m1mlog⁡pθ(xi)≈arg⁡max⁡θEx∼p[log⁡pθ](2)\theta^* = \arg \max_{\theta} \log\prod_{i=1}^m p_\theta(x_i)\\ =\arg \max_{\theta} \sum_{i=1}^m\log p_{\theta}(x_i)\\ =\arg \max_{\theta} \sum_{i=1}^m\frac{1}{m}\log p_{\theta}(x_i)\\ \approx\arg \max_{\theta}\mathbb{E}_{x\sim p}[\log p_{\theta}]\tag{2}θ∗=argθmax​logi=1∏m​pθ​(xi​)=argθmax​i=1∑m​logpθ​(xi​)=argθmax​i=1∑m​m1​logpθ​(xi​)≈argθmax​Ex∼p​[logpθ​](2)

上式子第三行到第四行的转换 为 均值 近似 期望 的离散化计算过程。ppp为目标函数,pθp_\thetapθ​用于近似目标函数为了避免混淆,将pθp_\thetapθ​用qθq_\thetaqθ​表示。上式子可改写成:
θ∗=arg⁡max⁡θEx∼p[log⁡qθ](3)\theta^* =\arg \max_{\theta}\mathbb{E}_{x\sim p}[\log q_{\theta}]\tag{3}θ∗=argθmax​Ex∼p​[logqθ​](3)

最小KL散度:在上式子中加上一项与优化无关的常数项:
θ∗=arg⁡max⁡θ{Ex∼p[log⁡qθ]−Ex∼p[log⁡p]}=arg⁡max⁡θ{∫xp(x)log⁡qθ(x)p(x)dx}=arg⁡max⁡θ−KL(p,q)=arg⁡min⁡θKL(p,q)(4)\theta^* =\arg \max_{\theta}\{\mathbb{E}_{x\sim p}[\log q_{\theta}]-\mathbb{E}_{x\sim p}[\log p]\}\\ =\arg \max_{\theta}\{\int_xp(x)\log\frac{q_\theta(x)}{p(x)}dx\}\\ =\arg \max_{\theta} -KL(p,q)\\ =\arg \min_{\theta} KL(p,q)\tag{4}θ∗=argθmax​{Ex∼p​[logqθ​]−Ex∼p​[logp]}=argθmax​{∫x​p(x)logp(x)qθ​(x)​dx}=argθmax​−KL(p,q)=argθmin​KL(p,q)(4)

交叉熵损失
式(2)添一个负号后可以转换为最小化交叉熵的问题:
arg⁡max⁡θEx∼p[log⁡pθ]=arg⁡min⁡θcrossentropy(p,qθ)(5)\arg \max_{\theta}\mathbb{E}_{x\sim p}[\log p_{\theta}]\\=\arg \min_{\theta}cross\ entropy(p,q_\theta)\tag{5}argθmax​Ex∼p​[logpθ​]=argθmin​cross entropy(p,qθ​)(5)

综上
1.求解最大似然问题 等价于 最小化参数分布和目标分布的KL散度

2.常用于分类问题中的交叉熵损失函数 本质是 极大似然问题,也就是在最小化 目标分布模型输出分布的之间的KL散度问题。在实际K分类问题中, 目标分布用one-hot编码表示; 神经网络模型最后全联接层输出的K个得分数值 可以通过softmax 归一化成对应类别的概率分布,即模型输出分布。

参考资料:
似然函数参见百度百科:https://baike.baidu.com/item/%E4%BC%BC%E7%84%B6%E5%87%BD%E6%95%B0/6011241?fr=aladdin

MachineLearning(9)-最大似然、最小KL散度、交叉熵损失函数三者的关系相关推荐

  1. 交叉熵损失函数原理详解,KL散度

    https://blog.csdn.net/b1055077005/article/details/100152102 https://blog.csdn.net/tsyccnh/article/de ...

  2. 损失函数——交叉熵损失函数

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

  3. 交叉熵损失函数原理详解

    交叉熵损失函数原理详解 之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函 ...

  4. 史上最全交叉熵损失函数详解

    在我们自学神经网络神经网络的损失函数的时候会发现有一个思路就是交叉熵损失函数,交叉熵的概念源于信息论,一般用来求目标与预测值之间的差距.比如说我们在人脑中有一个模型,在神经网络中还有一个模型,我们需要 ...

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

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

  6. matlab计算kl散度命令,熵,交叉熵,KL散度公式与计算实例

    交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function ...

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

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

  8. 训练分类器为什么要用cross entropy loss(交叉熵损失函数)而不能用mean square error loss(MSE,最小平方差损失函数)?

    在一个人工智能群里,有人问起,训练分类器为什么要用cross entropy loss(交叉熵损失函数)而不能用mean square error loss(MSE,最小平方差损失函数)呢? 正好,在 ...

  9. sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)

    目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...

最新文章

  1. C语言解析命令行函数:getopt系列
  2. 计算机网络·详解TCP流量控制,拥塞控制,运输连接管理
  3. 小工匠聊架构- 提升性能的大杀器之缓存技术
  4. 完美的单例实现(The Perfect Singleton)
  5. linux清空redis命令,使用Linux管道批量删除Redis的key
  6. 常用技巧 —— 打表规律
  7. android sdcard文件存储 + 媒体库更新方法
  8. ROS中阶笔记(三):机器人仿真—ArbotiX+rviz功能仿真
  9. 大数据技术的特点有哪些
  10. 数据结构与算法经典问题解析 Java语言描述pdf
  11. Maven命令安装JAR包到本地仓库
  12. vscode replace with a newline
  13. 与CVTE的完美“邂逅”
  14. 揭秘HTML5小游戏排名,究竟哪些游戏最受欢迎?
  15. Android学习资源汇总
  16. 如何实现两个笔记本电脑间的文件传输
  17. ACM故事之踏上贼船 by LittleKid
  18. 用原生JavaScript写出类似jQuery中slideUp和slideDown效果
  19. 数据结构实验报告 栈和队列
  20. 从 .NET 到 JavaScript —— 纯前端报表控件 ActiveReportsJS 焕新登场

热门文章

  1. 学习linux/unix编程方法的建议[转]
  2. mysql group by自定义_mysql – GROUP BY和自定义顺序
  3. mysql中索引约束有哪些_Mysql中索引和约束的示例语句
  4. 【转】Postman系列四:Postman接口请求设置环境变量和全局变量、测试沙箱和测试断言、测试集运行与导入数据文件
  5. Sharepoint学习笔记—ECM系列--2 管理元数据服务应用Metadata Service Application
  6. 多线程知识梳理(2) - 并发编程的艺术笔记
  7. 计算机系统的物质实体,计算机基础-(-第1次-).pdf
  8. hadoop集群-格式化namenode节点后,从节点的datanode不能启动,或者是datanode启动到主节点上。
  9. 【Python CheckiO 题解】Pawn Brotherhood
  10. android 获取服务对象,android 如何取得正在运行的service对象