从极大似然估计的角度理解深度学习中loss函数
从极大似然估计的角度理解深度学习中loss函数
为了理解这一概念,首先回顾下最大似然估计的概念:
最大似然估计常用于利用已知的样本结果,反推最有可能导致这一结果产生的参数值,往往模型结果已经确定,用于反推模型中的参数.即在参数空间中选择最有可能导致样本结果发生的参数.因为结果已知,则某一参数使得结果产生的概率最大,则该参数为最优参数.
似然函数:\[ l(\theta) = p(x_1,x_2,...,x_N|\theta) = \prod_{i=1}^{N}{p(x_i|\theta)}\]
为了便于分析和计算,常使用对数似然函数:\[ H(\theta) = ln[l(\theta)]\]
1. logistics regression中常用的loss function:
在logistic regression中常定义的loss function为:\[ l(w) = -(ylog\hat y+(1-y)log(1-\hat y))\]
为什么选择这个函数作为loss function? 一个原因是相比于误差平方和函数的非凸性,交叉熵函数是凸的,因此可以通过梯度下降法求得全局最优点,详细原理请参考凸优化相关理论.
此处重点介绍另一个原因,即从最大似然估计得的角度来理解loss function的选择,Andrew Ng 也是从这个角度进行解释的.对于logsitic regression问题,我们实际上做出了如下假设,即训练样本(x,y)服从以下分布:
\[ P(x,y|\theta) = \begin{cases}\sigma(z),&y=1 \\ 1-\sigma(z),&y=0\end{cases}\]
其中,\(z = w^Tx+b\),意思是,在参数\(\theta\)下,训练样本(x,y)出现的概率为\(P(x,y|\theta)\).
上面的概率分布函数也可以写为整体的形式:
\[p(x,y|\theta) = \sigma(z)^y(1-\sigma(z))^{1-y}\]
对于极大似然估计而言,我们的目的就是在参数空间中,寻找使得\(p(x,y|\theta)\)取得最大的w和b,因为因为训练样本(x,y)已经经过采样得到了,所以使得他们出现概率最大(越接近1)的参数就是最优的参数.
- 对于单个样本\((x_i,y_i)\),其对应的对数似然函数为\(ln[p(x_i,y_i|\theta)]= y_iln(\sigma(z_i))+(1-y_i)ln(1-\sigma(z_i))\)(即在参数\(\theta(w,b)\)下,\((x_i,y_i)\)出现的概率),其中,\(\sigma(z_i)=w^Tx_i+b\).
因为cost function 一般向小的方向优化,所以在似然函数前加上负号,就变为loss function - 对于整个样本集来说,对应的似然函数为\[ln(\prod_{i=1}^{N} p(x_i,y_i|\theta)) = \sum_{i=1}^N{y_iln(\sigma(z_i))+(1-y_i)ln(1-\sigma(z_i))}\]
2. softmax regression中常用的loss function:
softmax regression中常使用如下loss函数:
\[ l(w) = -\sum_{i=1}^{C}y_ilog\hat y_i\]
此处,C指的是样本y的维度(分类的数目),\(y_i\)指的是样本标签第i个分量,\(\hat y_i\)同义.
接下来,同样从最大似然估计的角度进行理解.对于softmax regression,我们实际上也做出了假设,即训练样本(x,y)服从以下分布:\[P(x,y|\theta) = \hat y_l = \sum_{i=1}^{C}y_i\hat y_i\],其中l是样本标签y中唯一为1的序号
- 对于单个训练样本,其对数似然函数为\(ln[p(x_i,y_i|\theta)] = ln(\sum_{i=1}^{C}y_i\hat y_i)\),可以进一步写为\(ln[p(x_i,y_i|\theta)] = \sum_{i=1}^{C}y_iln(\hat y_i)\),因为y中只有唯一的一个维度等于1,其余全为0,通过简单的推理就可以得到化简后的结果.取负号后,得到单样本的loss函数.
- 对于整个训练样本集而言,其对数似然函数为\[ln(\prod_{i=1}^{N} p(x_i,y_i|\theta)) =\sum_{j=1}^{m}\sum_{i=1}^{C}y_i^{(j)}ln(\hat y_i^{(j)})\]
其中,\(y_i^{(j)}\)指的是训练样本集中第j个训练样本标签的第i个维度的值,\(\hat y_i^{(j)}\)同理.取负号求平均后,得到整个训练样本集的coss函数.
从极大似然估计的角度理解深度学习中loss函数的更多相关文章
- 【论文笔记】如何理解深度学习中的End to End
End to end:指的是输入原始数据,输出的是最后结果,应用在特征学习融入算法,无需单独处理. end-to-end(端对端)的方法,一端输入我的原始数据,一端输出我想得到的结果.只关心输入和输出 ...
- 如何理解深度学习中的Transposed Convolution?
知乎上的讨论:https://www.zhihu.com/question/43609045?sort=created 不过看的云里雾里,越看越糊涂. 直到看到了这个:http://deeplearn ...
- 从两个角度理解为什么 JS 中没有函数重载
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数.类型.顺序)的函数,这组函数被称为重载函数.重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字空 ...
- 深度学习中loss总结
一.分类损失 1.交叉熵损失函数 公式: 交叉熵的原理 交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近.假设概率分布p为期望输出,概率分布q为实际输 ...
- 【转载】深度学习中softmax交叉熵损失函数的理解
深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning 版权声明:本文为博主原 ...
- 如何正确理解深度学习(Deep Learning)的概念
现在深度学习在机器学习领域是一个很热的概念,不过经过各种媒体的转载播报,这个概念也逐渐变得有些神话的感觉:例如,人们可能认为,深度学习是一种能够模拟出人脑的神经结构的机器学习方式,从而能够让计算机具有 ...
- 深度学习中交叉熵和KL散度和最大似然估计之间的关系
机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...
- 深度学习中的batch_size,iterations,epochs等概念的理解
在自己完成的几个有关深度学习的Demo中,几乎都出现了batch_size,iterations,epochs这些字眼,刚开始我也没在意,觉得Demo能运行就OK了,但随着学习的深入,我就觉得不弄懂这 ...
- 利用Theano理解深度学习——Multilayer Perceptron
一.多层感知机MLP 1.MLP概述 对于含有单个隐含层的多层感知机(single-hidden-layer Multi-Layer Perceptron, MLP),可以将其看成是一个特殊的Logi ...
随机推荐
- 基于HTML5陀螺仪实现ofo首页眼睛移动效果
最近用ofo小黄车App的时候,发现以前下方扫一扫变成了一个眼睛动的小黄人,觉得蛮有意思的,这里用HTML5仿一下效果. ofo眼睛效果 效果分析 从效果中不难看出,是使用陀螺仪事件实现的. 这里先来 ...
- Android 使用WindowManager实现Android悬浮窗
WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象. 每一个WindowMan ...
- j2ee学习笔记
Servlet: ①字符集问题:②身份验证:③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流. 然后输出时,分析stringWriter , ...
- Openwrt PPTP Server笔记
1.安装PPTP opkg updateopkg install kmod-mppeopkg install pptpd 2./etc/pptpd.conf option /etc/ppp/optio ...
- Algorithms算法题<1.1>
1.1.27 二项分布.估计用一下代码计算binomial(100,50,0.25)将会产生的递归调用次数: public static double binomial(int N,int k,dou ...
- map 解析
Observable.of(1, 2, 3) .map { $0 * $0 } .subscribe(onNext: { print($0) }) .disposed(by: disposeBag) ...
- Swift 中实现 Promise 模式
在异步编程中,除了竟态处理.资源利用以外,另外一个难点就是流程管理.在拥有匿名函数.闭包这些特性的编程语言中,我们通常可以使用回调函数来做一个异步任务完成或失败时的处理.但当我们的业务逻辑逐渐复杂时, ...
- win 运行
1.msconfig - 系统配置 - 服务-全部禁用 2.DXDIAG direct版本
- JS 100以内的质数、只能被1和自己整除
for(var i = 2;i <= 100;i++){ var biao = 1; for(var j = 2;j < i;j++){ if(i%j == 0){ biao = 0; } ...
- poj 3669 bfs(这道题隐藏着一个大坑)
题意 在x,y坐标系,有流星会落下来,给出每颗流星落下来的坐标和时间,问你能否从(0,0)这个点到一个安全的位置.所谓的安全位置就是不会有流星落下的位置. 题解: 广搜,但是这里有一个深坑,就是搜索的 ...