【机器学习基础】交叉熵(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求导的推导过程,不仅可以给自己理清思路,还可以造福 ...
随机推荐
- ZOJ 3195 Design the city (LCA 模板题)
Cerror is the mayor of city HangZhou. As you may know, the traffic system of this city is so terribl ...
- UESTC-1975弗吉桑(回文串,manacher算法)
弗吉桑 Time Limit: 3000 MS Memory Limit: 64 MB Submit Status 弗吉桑是一座横跨清水河大草原的活火山,位于子科技大学主楼东北方约 80km ...
- 笔记||Python3之算法
循环嵌套:先从外层循环里面取出一个元素,再执行内层的循环:当内层的循环都执行后,再执行外层循环. for循环嵌套语法: for x in range(): for y in range() ...
- 001_Java概述与环境搭建
Java由来: SUN公司开发,95年推出,96年推出JDK1.0版本 09年被Oracle(甲骨文)收购 詹姆斯·高斯林被称作“Java之父” JavaSE:Java Standard Editoi ...
- LInux内核配置过程
内核版本 linux 2.6.32.2 配置内核的过程 配置内核可以通过执行 make menuconfig 来进行,下面分析该命令的执行流程 执行该目标 %config: scripts_basic ...
- Harbor搭建企业级docker仓库
一. Harbor简介 1.1 Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Do ...
- 关于java反射里的.class、.getClass()、Class.Forname()
博主在研究java反射这一章节时,曾被三个方法困扰多时,.class..getClass().Class.Forname(),先上代码 这是类A package cn.yonyong.net.tcp. ...
- MySQL必知必会-官方数据库表及SQL脚本导入生成
最近在复习SQL语句,看的是MySQL必知必会这本书,但是发现附录中只有表设计,没有表的具体数据.所以在学习相应的语句中体验不是很好,去网上查了数据库的内容,自己慢慢导入到了数据库中.把表放出来作为参 ...
- 你不知道的JavaScript(上)this和对象原型(四)原型
五章 原型 1.[[ Prototype ]] JavaScript 中的对象有一个特殊的 [[Prototype]] 内置属性,其实就是对于其他对象的引用.几乎所有的对象在创建时 [[Prototy ...
- 如何将hive表中的数据导出
近期经常将现场的数据带回公司测试,所以写下该文章,梳理一下思路. 1.首先要查询相应的hive表,比如我要将c_cons这张表导出,我先查出hive中是否有这张表. 查出数据,证明该表在hive中存在 ...