损失函数

在逻辑回归建立过程中,我们需要一个关于模型参数的可导函数,并且它能够以某种方式衡量模型的效果。这种函数称为损失函数(loss function)。

损失函数越小,则模型的预测效果越优。所以我们可以把训练模型问题转化为最小化损失函数的问题。

损失函数有多种,此次介绍分类问题最常用的交叉熵(cross entropy)损失,并从信息论和贝叶斯两种视角阐释交叉熵损失的内涵。

## 公式请查看:https://blog.csdn.net/Ambrosedream/article/details/103379183

K-L散度与交叉熵

  • 随机变量X有k种不同的取值:,,​。 记X的取值​ 的概率为p(X=​) ,简写为P(​) .

  • 克劳德· 香农定义了信息的信息量:

    ​

    注:其中对数可以以任意合理数为底,如 2、e。使用不同的底数所得到的信息量之间相差一个常系数。

    若以2为底,信息量的单位是bit ,I(X=​ )是X = ​ 这条信息的自信息量(self-information) .

  • 自信息量I随着概率P(​)的图像变化如下:

    img

    自信息量背后的含义:信息中事件发生的概率越小,则信息量越大。

    举例:假如有人告诉你即将开奖的彩票中奖号码是777777777,这条信息的价值很高,类似事情发生概率极小。假如有人告诉你明天太阳会升起,这件事对你来说价值很低,但是他发生的概率却很高。所以我们会觉得彩票的开奖号信息量很大,太阳升起的信息量较小。

  • 我们令信息源X 取不同的值 ​ 的概率分布分别为​ .

  • 定义信息源 X的熵(entropy)为:

    H(p) = ​

  • 信息源由概率分布p描述,s所以熵是p的函数,熵的概念来自热力学。H(p)又称平均信息。

  • 根据公式我们可以看出,H(p)是将X所有取值的自信息量以概率为权重取平均。

  • 对于两个概率分布p和q, 定义p和q的K-L散度(kullback-leibler divergence)是:

    ​

  • K-L散度是​ 在分布p上的期望。(注:KLD(p||q) ​ KLD(q||p))

  • 根据上述公式我们可以发现,当和​ 相等时,​ 所以KLD散度等于0。所以说两个同分布的KLD散度为0,所以我们一般使用KLD描述两个概率分布之间的相似度。

  • 我们定义交叉熵:

    ​

  • 所以根据上述两式,有:

    H(p,q) = KLD(p||q) + H(p)

  • 分布p和q的交叉熵等于它们的K-L散度加上p的熵。现在假设分布p固定,则H(p,q)与KLD(p||q)之间只相差一个常数H(p),所以此时H(p,q)也可以被用来描述两个分部之间的相似程度。即:H(p,q)越小,p,q越相似。

  1. 对于一个训练样本{​ } 可以标签​ 给出了一个类别的概率分布:

  2. ,,​

  3. 我们将逻辑回归模型的输出看做一个分布Q:

  4. ,​

  5. 所以我们希望回归模型的准确率尽可能地高,即是希望分布Q与训练集P的分布尽可能地相似,由此我们可以使用交叉熵来描述输出分布于标签分布的相似度,也就是我们所说的损失函数(loss)

​

上式是模型在一个样本的交叉熵,其值越小,预测分布于标签给出分布越相似。

上式是样本的平均交叉熵,作为模型的损失函数。

损失函数--KL散度与交叉熵的更多相关文章

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

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

  2. 第五节,损失函数:MSE和交叉熵

    损失函数用于描述模型预测值与真实值的差距大小,一般有两种比较常见的算法——均值平方差(MSE)和交叉熵. 1.均值平方差(MSE):指参数估计值与参数真实值之差平方的期望值. 在神经网络计算时,预测值 ...

  3. 信息论相关概念:熵 交叉熵 KL散度 JS散度

    目录 机器学习基础--信息论相关概念总结以及理解 1. 信息量(熵) 2. KL散度 3. 交叉熵 4. JS散度 机器学习基础--信息论相关概念总结以及理解 摘要: 熵(entropy).KL 散度 ...

  4. KL散度=交叉熵-熵

    熵:可以表示一个事件A的自信息量,也就是A包含多少信息. KL散度:可以用来表示从事件A的角度来看,事件B有多大不同. 交叉熵:可以用来表示从事件A的角度来看,如何描述事件B. 一种信息论的解释是: ...

  5. 从香农熵到手推KL散度

    信息论与信息熵是 AI 或机器学习中非常重要的概念,我们经常需要使用它的关键思想来描述概率分布或者量化概率分布之间的相似性.在本文中,我们从最基本的自信息和信息熵到交叉熵讨论了信息论的基础,再由最大似 ...

  6. 【深度学习】K-L 散度,JS散度,Wasserstein距离

    度量两个分布之间的差异 (一)K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近 ...

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

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

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

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

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

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

随机推荐

  1. 【Maven】常用命令

    [Maven]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10267028.html Maven Jar 搜索:https://mvnreposit ...

  2. CCF-CSP题解 201812-3 CIDR合并

    题目想求与给定前缀列表等价的包含IP前缀数目最少的前缀列表. 首先是怎么存储前缀列表.用一个long long存储IP地址,再存一个前缀长度,封装在一个结构体里\(<ipNum, len> ...

  3. Winform项目常用配置方法

    在我们做项目的时候经常遇到需要动态配置系统的情况,比如说10台电脑装了同一个软件,需要识别唯一码,这时候我们会用到配置方法. 具体方法如下: 1) Config文件 里面增加你需要的变量,具体用法如下 ...

  4. 转载 全角字符unicode码对应表

    http://www.mytju.com/classcode/tools/encode_utf8.asp 对应关系查询网站 Uni. GB Uni. GB Uni. GB Uni. GB Uni. G ...

  5. 通过ADB获取Android手机信息

    原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CPU,厂商名称等)adb shell "ca ...

  6. Gitlab + Jenkins 的 CI 实践

    0x00 事件 为了开发人员更高效的更新应用而采取的 CI 方式实践. 0x01 过程记录 1.Jenkins 设置 安装插件 Gitlab Hook Plugin Build Authorizati ...

  7. error: src refspec test does not match any.

    我在本地创建了新分支test并提交到github上 错误信息如下: error: src refspec test does not match any. error: failed to push ...

  8. Nuxt+Vuex初体验

    小呀嘛小二郎,背着书包上学堂... 今天一个困扰了我一周时间的问题终于被我解决了,值得庆祝 在Nuxt中使用Vuex实现数据存储 首先: 在store目录下新建一个index.js文件 需要有两个组件 ...

  9. 2019有赞中高级Java工程师面试题与解答

    说说JVM的内存分区 线程私有的区域 程序计数器:JVM中程序计数器相当于汇编语言中的CPU中的寄存器,保存程序当前执行的指令的地址. 虚拟机栈:Java方法执行的栈由许多个栈帧构成,每个栈帧对应一个 ...

  10. 传统js和jsx与ts和tsx的区别

    一.从定义文件格式方面说 1.传统的开发模式可以定义js文件或者jsx文件2.利用ts开发定义的文件格式tsx二.定义state的状态来说 1.传统的方式直接在构造函数中使用 constructor( ...