之所以会有这个问题,是因为在学习 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)损失函数是凸函数吗?的更多相关文章

  1. 最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

    最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写 ...

  2. 交叉熵cross entropy和相对熵(kl散度)

    交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量真实分布p与当前训练得到的概率分布q有多么大的差异. 相对熵(relativ ...

  3. 【机器学习基础】熵、KL散度、交叉熵

    熵(entropy).KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到.比如在决策树模型使用信息增益来选择 ...

  4. 理解交叉熵(cross_entropy)作为损失函数在神经网络中的作用

    交叉熵的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点: 而即便是R ...

  5. UDA机器学习基础—交叉验证

    交叉验证的目的是为了有在训练集中有更多的数据点,以获得最佳的学习效果,同时也希望有跟多的测试集数据来获得最佳验证.交叉验证的要点是将训练数据平分到k个容器中,在k折交叉验证中,将运行k次单独的试验,每 ...

  6. softmax分类器+cross entropy损失函数的求导

    softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...

  7. 深度学习中交叉熵和KL散度和最大似然估计之间的关系

    机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论 ...

  8. TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵

    TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...

  9. softmax交叉熵损失函数求导

    来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...

随机推荐

  1. Grafana基础

    一.Grafana基础 Grafana是一个开源的指标量监测和可视化工具.官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析.Grafana的das ...

  2. 深入学习 Arduino LinkedList库(一个变长的集合类数组)

    QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 博主是做Android App开发出身的,所以对Java这门语言算是有 ...

  3. BGA256芯片植球全过程体验(原创)

    今天工具到位,迫不亟待,需要对手上的BGA256的FPGA芯片进行植球, 该芯片买来的时候是有球的,只是在焊接后,由于电路板故障或焊接问题,需要拆下来芯片,导致球损失,需要重新植球. 一般植球都是将所 ...

  4. Beego在views中格式化显示时间(int64转string)

    最近在使用beego开发系统的过程中,遇到时间转换问题,需求如下: 通过以下函数获取Unix时间戳,后台数据库格式为int64: time.Now().Unix() 效果图: 从数据库获取数据,直接以 ...

  5. 【性能优化】404- 从 12.67s到1.06s 性能优化实战

    作者:jerryOnlyZRJ 来源:https://juejin.im/post/5b6fa8c86fb9a0099910ac91 本文是对之前同名文章的修正,将所有webpack3的内容更新为we ...

  6. 基于Pact的契约测试

    背景 如今,契约测试已经逐渐成为测试圈中一个炙手可热的话题,特别是在微服务大行其道的行业背景下,越来越多的团队开始关注服务之间的契约及其契约测试. 什么是契约测试     关于什么是契约测试这个问题, ...

  7. python之encode和decode编码

    u = '中文' str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象 print(str3) u2 = str3.decode('utf-8') ...

  8. JavaScript动画实例:旋转的圆球

    1.绕椭圆轨道旋转的圆球 在Canvas画布中绘制一个椭圆,然后在椭圆上绘制一个用绿色填充的实心圆.之后每隔0.1秒刷新,重新绘制椭圆和实心圆,重新绘制时,实心圆的圆心坐标发生变化,但圆心坐标仍然位于 ...

  9. Ubuntu19 安装Theano出现“No module named ‘theano.compat.six’”

    解决办法:直接在下载好pythearn2包的目录下,对setup.py文件进行修改:将  from theano.compat.six.moves import input 改为  from six. ...

  10. Geoserver设置style

    1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap ...