最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络
最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看。今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分。
单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西。最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种。未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Maximum Posterior Estimation)的关系。
(版权所有,转载请注明出处)
最大似然估计
如果写出最大似然估计的公式的话是这样的:
\[\theta_\text{ML}={arg\,max}_\theta P(Y|X;\theta)\]
假设一个模型是一个图片分类任务,从一个\(256 \times 256\)的图片来识别出模型到底是一个猫,一个狗,还是其他什么东西。那么输入就是\(256 \times 256\)的矩阵(图片),输出就是一个3维的向量,比如说\(\{0.1, 0,2,0.7\}\)代表从图片到对应三个分类的概率。
对于这个任务而言,我们需要学习的是一个给定分类函数的参数\(\theta\), 这个函数可以是任何函数,只要这个函数最终能输出三分类对应的概率向量就可以了。对于\(\theta\)而言,我们的目标是,对于给定的输入,输出值越接近真实值越理想,这个就是所谓的最大似然。
如果用模型训练的角度上来说,我们可以把公式展开成如下的形式:
\[{arg\,max}_\theta \sum_{i=1}^{n} log P(y^\text{(i)}|x^\text{(i)};\theta) \]
在这里,\(x^\text{(i)}\)和\(y^\text{(i)}\)分别代表一张训练数据的图片和训练数据图片代表的分类结果,在公式里面求和是希望考虑所有的样本情况。由于用于训练的图片是事先标注好的属于某一个类别,所以最终的概率向量的每一个分量不是\(0\)就是\(1\),比如说\(\{0, 1,0\}\), \(\{0,0,1\}\)之类的。
那么问题来了,我们如何来判断目前\(\theta\)的输出概率更接近于真实的概率呢?在这里我们能用到一个现成的工具: KL Divergence (KL散度), KL 散度是用来判断两个概率分布的距离,其公式为(假设我们要判断从概率分布P到概率分布Q的距离):
\[D_\text{KL}(P||Q)=-\sum_{i} P(i) log \frac{Q(i)}{P(i)}\]
所以说在我们这里就成为:
\[D_\text{KL}(Y||\hat{Y})=-\sum_{i} y^\text{(i)} log \frac {\hat{y}^\text{(i)}}{y^\text{(i)}}\]
在这里\(y^\text{(i)}\)指的是标注好的输出,而\(\hat{y}^\text{(i)}\)指的是算法的输出。
那么我们的优化目标就变成了使得\(D_\text{KL}\)最小。
交叉熵
这里不想叙述太多关于熵和交叉熵的基本知识,简单来说交叉熵是用来计算两个函数或者概率之间的距离,计算的方式也是使用的KL Divergence,在机器学习的世界里面大概可以认为交叉熵和最大似然估计是一回事,如果看到这两个术语应该把他们联系在一起。
具体可以参考下面的几篇文章:
1) Andrew Moore关于信息论的Tutorial。
2) A Friendly Introduction to Cross-Entropy Loss
与深度学习的关系
那么最大似然估计(交叉熵)与深度神经网络有什么关系呢?如果你写过TensorFlow的程序的话,你会注意到程序的最后往往会加上一个Softmax函数。Softmax函数一个重要的性质就是把输出归一化转换到每一个对应分类的概率。一旦转换为概率之后,我们就可以用到最大似然估计(交叉熵)的方式来求得最大似然或者最小交叉熵。
在这里推荐Tobe同学的一篇总结Cross Entropy在Tensorflow中应用的文章:
其他参考资料
1) https://www.autonlab.org/_media/tutorials/mle13.pdf
2) http://www.mi.fu-berlin.de/wiki/pub/ABI/Genomics12/MLvsMAP.pdf
最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络的更多相关文章
- 最大似然估计(Maximum likelihood estimation)(通过例子理解)
似然与概率 https://blog.csdn.net/u014182497/article/details/82252456 在统计学中,似然函数(likelihood function,通常简写为 ...
- 最大似然估计(Maximum likelihood estimation)
最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:"模型已定,参数未知".简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差 ...
- 交叉熵cross entropy和相对熵(kl散度)
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...
- Maximum Likelihood及Maximum Likelihood Estimation
1.What is Maximum Likelihood? 极大似然是一种找到最可能解释一组观测数据的函数的方法. Maximum Likelihood is a way to find the mo ...
- 似然函数 | 最大似然估计 | likelihood | maximum likelihood estimation | R代码
学贝叶斯方法时绕不过去的一个问题,现在系统地总结一下. 之前过于纠结字眼,似然和概率到底有什么区别?以及这一个奇妙的对等关系(其实连续才是f,离散就是p). 似然函数 | 似然值 wiki:在数理统计 ...
- Linear Regression and Maximum Likelihood Estimation
Imagination is an outcome of what you learned. If you can imagine the world, that means you have lea ...
- 均匀分布(uniform distribution)期望的最大似然估计(maximum likelihood estimation)
maximum estimator method more known as MLE of a uniform distribution [0,θ] 区间上的均匀分布为例,独立同分布地采样样本 x1, ...
- 【MLE】最大似然估计Maximum Likelihood Estimation
模型已定,参数未知 已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值.最大似然估计是建立在这样的思想上:已知某个参数能使这个 ...
- 理解交叉熵(cross_entropy)作为损失函数在神经网络中的作用
交叉熵的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点: 而即便是R ...
随机推荐
- YYHS-NOIP模拟赛-mine
题解 这道题不难想到用dp来做 dp[i][0]表示第i个格子放0 dp[i][1]表示第i个格子放1且第i-1个格子放雷 dp[i][2]表示第i个格子放2 dp[i][3]表示第i个格子放1且第i ...
- win10 uwp 圆角按钮
本文讲的是如何做圆角按钮,我们在UWP本来的按钮都是矩形,圆角Radius没有,所以本文就用简单方法去做圆角按钮. 我们按钮需要圆角,而自带没有,其实做一个很简单,把原来的按钮变为背景透明,然后使用矩 ...
- Java Swing学习
在Java学习的过程中,我们时常会因为控制台程序的枯燥而失去了学习Java的乐趣,那么今天我们就开始学习Java的Swing.也就是GUI(Graphical user interface),在应用到 ...
- web.xml中<init-param>报错
报错信息如下图: 控制台报错:严重: Servlet /*** threw load() exceptionjava.lang.ClassNotFoundException: MyApplicatio ...
- LeetCode 121. Best Time to Buy and Sell Stock (买卖股票的最好时机)
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- 事件轮询中的task与microtask
event loop 网上看到的一篇文章,关于介绍task和Tasks, microtasks, queues and schedules,尝试简单翻译一下写进来吧! 原文地址:https://jak ...
- Linux学习(十四)磁盘格式化、磁盘挂载、手动增加swap空间
一.磁盘格式化 分好去的磁盘需要格式化之后才可以使用.磁盘分区一般用mke2fs命令或者mkfs.filesystemtype.这个filesystemtype分为ext4,ext3,xfs等等.xf ...
- D - MUH and Cube Walls
D. MUH and Cube Walls Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant ...
- 删除链表中等于给定值val的所有节点。
样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5. /** * D ...
- window.onload,document.ready
执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 编写个数不同 wind ...