【机器学习基础】交叉熵(cross entropy)损失函数是凸函数吗?
之所以会有这个问题,是因为在学习 logistic regression 时,《统计机器学习》一书说它的负对数似然函数是凸函数,而 logistic regression 的负对数似然函数(negative log likelihood)和 交叉熵函数(cross entropy)具有一样的形式。
先给出结论,logistic regression 时,cross entropy 是凸的,但多层神经网络时,cross entropy 不是凸的。
logistic regression 时,cross entropy 是凸的:
Why is the error function minimized in logistic regression convex? -- Deepak Roy Chittajallu
多层神经网络(MLP)时,cross entropy 不是凸的:(肯定不是凸的啊,不然调参哪来这么多问题)
Cost function of neural network is non-convex? - Cross Validated
cross entropy 损失函数:(\(\hat{y}\) 为预测值,\(y\) 为真实值)
\[-y \log \hat{y}-(1-y) \log (1-\hat{y})\]
直观解释
简单点的解释是,logistic regression 时,证明两个凸函数相加还是凸函数,因为 \(y\) 不是 0 就是 1,那就要证明此时 \(- \log \hat{y}\) 和 \(- \log (1-\hat{y})\) 关于 \(w\) 都是凸函数,也就是证明 Hessian 矩阵半正定。证明看上述链接。
而 MLP 时,给出直观解释是,在神经网络的某一隐藏层交换两个神经元的权重,最后输出层得到的值不会变,这就说明如果有一个最优解,那交换神经元权重后,解仍然是最优的,那么此时就存在两个最优解了,那就不是凸函数了。
logistic regression 为什么还用梯度下降法求解呢,不直接求解析解?
在令 cross entropy 一阶导数为 0 时,就会发现无法将权重 \(w\) 提到等式左边,即无法写成 \(w = 式子\) 这种形式,所以虽然有等式约束,但直接求解析解还是挺困难。所以梯度下降法、牛顿法、拟牛顿法常用来求解 logistic regression。
References
Why is the error function minimized in logistic regression convex? -- Deepak Roy Chittajallu
Cost function of neural network is non-convex? - Cross Validated
Logistic回归能有解析解吗? - Zzzzzzzz的回答 - 知乎
凸还是非凸?交叉熵在softmax和neural network中的不同凸性 -- RHONYN
【机器学习基础】交叉熵(cross entropy)损失函数是凸函数吗?的更多相关文章
- 最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络
最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写 ...
- 交叉熵cross entropy和相对熵(kl散度)
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...
- 【机器学习基础】熵、KL散度、交叉熵
熵(entropy).KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到.比如在决策树模型使用信息增益来选择 ...
- 理解交叉熵(cross_entropy)作为损失函数在神经网络中的作用
交叉熵的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点: 而即便是R ...
- UDA机器学习基础—交叉验证
交叉验证的目的是为了有在训练集中有更多的数据点,以获得最佳的学习效果,同时也希望有跟多的测试集数据来获得最佳验证.交叉验证的要点是将训练数据平分到k个容器中,在k折交叉验证中,将运行k次单独的试验,每 ...
- softmax分类器+cross entropy损失函数的求导
softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...
- 深度学习中交叉熵和KL散度和最大似然估计之间的关系
机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...
- TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵
TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...
- softmax交叉熵损失函数求导
来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...
随机推荐
- Grafana基础
一.Grafana基础 Grafana是一个开源的指标量监测和可视化工具.官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析.Grafana的das ...
- 深入学习 Arduino LinkedList库(一个变长的集合类数组)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 博主是做Android App开发出身的,所以对Java这门语言算是有 ...
- BGA256芯片植球全过程体验(原创)
今天工具到位,迫不亟待,需要对手上的BGA256的FPGA芯片进行植球, 该芯片买来的时候是有球的,只是在焊接后,由于电路板故障或焊接问题,需要拆下来芯片,导致球损失,需要重新植球. 一般植球都是将所 ...
- Beego在views中格式化显示时间(int64转string)
最近在使用beego开发系统的过程中,遇到时间转换问题,需求如下: 通过以下函数获取Unix时间戳,后台数据库格式为int64: time.Now().Unix() 效果图: 从数据库获取数据,直接以 ...
- 【性能优化】404- 从 12.67s到1.06s 性能优化实战
作者:jerryOnlyZRJ 来源:https://juejin.im/post/5b6fa8c86fb9a0099910ac91 本文是对之前同名文章的修正,将所有webpack3的内容更新为we ...
- 基于Pact的契约测试
背景 如今,契约测试已经逐渐成为测试圈中一个炙手可热的话题,特别是在微服务大行其道的行业背景下,越来越多的团队开始关注服务之间的契约及其契约测试. 什么是契约测试 关于什么是契约测试这个问题, ...
- python之encode和decode编码
u = '中文' str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象 print(str3) u2 = str3.decode('utf-8') ...
- JavaScript动画实例:旋转的圆球
1.绕椭圆轨道旋转的圆球 在Canvas画布中绘制一个椭圆,然后在椭圆上绘制一个用绿色填充的实心圆.之后每隔0.1秒刷新,重新绘制椭圆和实心圆,重新绘制时,实心圆的圆心坐标发生变化,但圆心坐标仍然位于 ...
- Ubuntu19 安装Theano出现“No module named ‘theano.compat.six’”
解决办法:直接在下载好pythearn2包的目录下,对setup.py文件进行修改:将 from theano.compat.six.moves import input 改为 from six. ...
- Geoserver设置style
1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap ...