文档章节

从信息熵的角度来理解机器学习要优化的目标

saintqdd
 saintqdd
发布于 2017/07/20 17:36
字数 1977
阅读 413
收藏 13
点赞 3
评论 0

 

摘要:机器学习任务中最核心的工作是对构造合适的损失函数,并对其进行优化,得到最终的模型。那么如何来构造损失函数,常用的构造函数背后有哪些理论的支撑,本篇文章从熵的角度来解析,希望对对读者起到抛装引玉的作用。

一、 基础概念

信息量

对于离散概率,定义p_i的信息量为

wpsD01C.tmp

可以理解为需要查找多少次可以找到对应的离散值,比如概率0.125,对应的信息量是3,也就是说需要至少折半查找3次才能找到对应的离散取值。

信息熵(Information entropy

衡量信息的不确定性(对于人来说),熵越小,信息就越确定。通俗的说,可以从几个方面来描述,比如人判断一件事情时有把握的程度、信息压缩编码时最小需要的位数。简单的说,熵反应了信息量。定义如下wpsD01D.tmp

交叉熵(Cross Information entropy)

如果一件事情的不确定性为0,那么信息熵也为0,所以信息熵可以理解为消除事件不确定性所要付出的代价,而实际当中很难采用最真实的概率分布来对事件进行判断,而是采用一种接近真实的概率分布,比如q来拟合真实的场景,将q带入信息熵的公式就可以得出交叉熵的定义

wpsD01E.tmp

交叉熵所代表的含义是,采用非真实概率分布q下,要消除事件的不确定性所付出的代价,通常情况下,交叉熵要比信息熵大,证明的方法可参考Gibbs inequality

相对熵(relative Information entropy

交叉熵减去信息熵即是相对熵的定义

wpsD01F.tmp

实际上相对熵和交叉熵只相差了一个常量,代表了采用非真实概率分布q下,消除事件不确定性所付出的代价比采用真实概率分布下所付出的代价的差距,也可以看做是两个概率分布的差异性,和KL散度是等价的。

接下来举个例子来真切的感受下不同熵指标的变化。

举个例子A: 箱子里有4个球,2个白色,2个黑色,现在从中随即拿出来一个,猜测下颜色,猜对有奖。那么我们需要猜测几次才能中奖呢?很明显,白色和黑色的概率相同,那么最优的策略是随即选个颜色了,白色吧,如果不对,那就肯定是黑色了,所以最多只需要猜一次就可以完成。此时信息熵为

wpsD020.tmp

举个例子B:箱子里有4个球,1个白色,3个黑色,现在从中随机拿出来一个,猜测下颜色。很显然,黑色概率更高,此时肯定不会向例子A那样随即选择颜色了,更好的策略是先选择黑色,如果错了,在选择白色了。显然此时,能够猜对的概率要比A例子高很多,也就是意味着这个时间的不确定性相比A下降了。此时信息熵为

wpsD030.tmp

举个例子C: 箱子里有四个球,全是黑色,现在从中随即选择一个,猜测下颜色。太明显了,不用猜了。时间完全是确定性的,熵为0

wpsD031.tmp

举个例子D: 箱子里有四个球,1白3黑,但是不告诉真实的概率分布,现在从中选择一个,猜测下颜色。此时对时间完全一无所知,只能随机的来猜,默认黑白各半,试想这个肯定是不够优秀的策略,此时的交叉熵为

wpsD032.tmp

和例子B相比,使用随机猜测,事件的熵上升,说明基于的概率分布猜测不好,如果能够知道真实的概率分布,那么信息熵将为最低,H4-H2的差(相对熵)0.19,就是我们做模型、做特征工程、做优化的奋斗目标啊。

二、 损失函数

相对熵是要优化的目标,而相对熵和交叉熵相差一个常量,一般使用交叉熵来推导模型。因为本篇使用概率输出,所以选择二元分类逻辑回归模型和多元分类逻辑回归模型来描述基于熵的模型优化。

拿点击率预估来阐述,来了一条样本,要预估它的点击概率P(click),当然P(click)+P(nonclick)=1。显然对点击还是不点击这件事情来说,真实的概率分布就是(P(click)=100%,P(nonclick)=0%)或者(P(click)=0%,P(nonclick)=100%)。

那么我们已经知道了真实的概率分布,但是无法确切的知道具体的概率公式或者具体形式,所以只能通过构造一个概率公式比如

wpsD033.tmp

来近似真实的概率分布,那么我们就可以计算交叉熵了,形式如下

wpsD034.tmp

其中参数含义为

wpsD035.tmp

代入具体的构造概率公式,可以得到

wpsD036.tmp

其中y_hat是真实的label(1,0),这个形式和基于最大似然推导出来的损失函数形式上是一样了。

对于多类逻辑回归,最常见的场景为文本分类,此时有多个输出目标,也就是说有多个输出概率值,此时构造的概率公式为

wpsD037.tmp

针对每个输出,都一组对应的参数来进行拟合。此时的交叉熵形式如下

wpsD038.tmp

wpsD039.tmp

如果将k设置为2,就和二元分类一样了,但是形式看上仍然多了一组参数,而二元逻辑回归只有一组参数,实际上这一组参数是W0和W1的差值,为了节省空间,自然就没有多增加一组参数了。

有了交叉熵,也即要求的损失函数,剩下的事情就是通过梯度下降法来找到最优解了,在附录中,会把梯度推导的过程也粘贴过来,以备查阅。

三、 总结思考

本文从熵的角度来思考模型的优化问题,对于以概率输出的模型,都可以通过交叉熵的方式来定义优化目标,通过定义不同的概率公式,可以形成不同的模型。

交叉熵并不是概率输出模型的唯一优化方式,这是频率学派的常规思路,还可以通过贝叶斯的方式优化以概率输出为目标的模型,下一篇文章将对此阐述。

附录:

多元逻辑回归的梯度计算

对于输出label为i的样本进行交叉熵损失函数的梯度计算,求导的参数有W_0~W_k(k为分类数)

wpsD03A.tmp

先对W_i进行求导

wpsD03B.tmp

令:wpsD03C.tmp wpsD03D.tmp,则有

wpsD03E.tmp

wpsD03F.tmp

然后在对其余W_j请求求导

wpsD040.tmp

综合一下,可以得到多元分类逻辑回归模型损失函数的梯度计算公式为

wpsD051.tmp

实际应用中,损失函数使用自然对数而非以2为底对数,这样可以去掉ln(2)这个常数,同时并不改变模型本身的性质。

二元逻辑回归的梯度计算

此时参数只有一组,直接对W进行求偏导数,也分成两种情况下来计算,先看下Label=0的情况下的梯度

wpsD052.tmp

在看下Label=1的情况下的梯度

wpsD053.tmp

综合一下,可以得到二元分类逻辑回归模型的梯度计算公式

wpsD054.tmp

和多元回归一样,损失函数一般采用自然对数,可以消除常数ln(2)

© 著作权归作者所有

共有 人打赏支持
saintqdd
粉丝 1
博文 3
码字总数 1977
作品 0
机器学习各种熵:从入门到全面掌握

信息熵是信息论和机器学习中非常重要的概念,应用及其广泛,各种熵之间都存在某些直接或间接的联系,本文试图从宏观角度将各种熵穿插起来,方便理解。本文首先讲解机器学习算法中常用的各种熵...

机器学习算法全栈工程师 ⋅ 03/19 ⋅ 0

干货丨一份机器学习的初学者指南

机器学习: 引言 听过人们谈论过机器学习,但对它的概念却是一知半解? 想要从零开始机器学习,却被网络上的海量资源冲昏头脑? 不用担心,我们给你们提供了机器学习从0到1系列,这个系列可以让...

r1unw1w ⋅ 04/11 ⋅ 0

《统计学习方法》笔记(五)逻辑斯蒂回归与最大熵模型

LR回归(Logistic Regression) LR回归,虽然这个算法从名字上来看,是回归算法,但其实际上是一个分类算法。在机器学习算法中,有几十种分类器,LR回归是其中最常用的一个。 LR回归是在线性...

ch1209498273 ⋅ 05/23 ⋅ 0

TensorFlow基本原理,入门教程网址

TensorFlow 进阶 Python代码的目的是用来 构建这个可以在外部运行的计算图,以及 安排计算图的哪一部分应该被运行。 http://tensorfly.cn/ github 地址 : https://github.com/tensorflow/te...

寒月谷 ⋅ 06/05 ⋅ 0

观点 | 从信息论的角度理解与可视化神经网络

  选自TowardsDataScience   作者:Mukul Malik   机器之心编译   参与:Pedro、思源      信息论在机器学习中非常重要,但我们通常熟知的是信息论中交叉熵等模型度量方法。最近...

机器之心 ⋅ 04/11 ⋅ 0

机器学习面试之各种混乱的熵(一)

0x01 从随机变量说起 假设有一枚硬币,将其抛出,落下后朝上的面为y。 这里的y是对未知量的一个表示。但它的值却是不确定的,可能取正面和反面两个值。 类似的不确定变量还有好多,比如说,将...

xrzs ⋅ 2013/06/09 ⋅ 1

从无监督构建词库看「最小熵原理」,套路是如何炼成的

在深度学习等端到端方案已经逐步席卷 NLP 的今天,你是否还愿意去思考自然语言背后的基本原理?我们常说“文本挖掘”,你真的感受到了“挖掘”的味道了吗? 无意中的邂逅 前段时间看了一篇关...

技术小能手 ⋅ 04/27 ⋅ 0

入行机器学习,对数学的要求高吗?

在过去的几个月里,我一直和一些人交流,他们已经开始切入数据科学领域并积极使用机器学习(ML)技术来探索统计规律、或构建完善的数据驱动产品。然而,我发现很多情况下统计分析结果不尽人意...

duozhishidai ⋅ 04/22 ⋅ 0

机器学习Machine Learning:成本(cost) 函数,损失(loss)函数,目标(Objective)函数的区别和联系?

机器学习Machine Learning:cost 函数,loss函数,objective函数的区别和联系? 关于这个问题,我也是机器学习初学者,对于这些概念感觉有必要追根究底。 不同笔者有不同的见解,通过搜集一些...

qq_39818571 ⋅ 04/22 ⋅ 0

交叉熵代价函数(作用及公式推导)

1 前言 注意两个名词的区别: 相对熵:Kullback–Leibler divergence 交叉熵:cross entropy KL距离的几个用途: ① 衡量两个概率分布的差异。 ② 衡量利用概率分布Q 拟合概率分布P 时的能量...

witnessai1 ⋅ 03/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

来自一个优秀Java工程师的简历

写在前面: 鉴于前几天的一份前端简历,虽然带着很多不看好的声音,但却帮助了很多正在求职路上的人,不管评论怎么说,我还是决定要贴出一份后端的简历。 XXX ID:357912485 目前正在找工作 ...

颖伙虫 ⋅ 20分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部