为什么交叉熵可以作为机器学习的损失函数

先简单了解信息论中信息量和信息熵的概念,再通过信息熵引出相对熵(KL散度)和交叉熵,并说明为什么交叉熵可以用于机器学习中分类任务的损失函数。

在信息论发明出来之前,人们是无法精确地用数值衡量一个事件包含的信息量的(如,小明这次考试得了100分包含多少信息?),即信息的量化。信息论之父香农提出量化一个事件包含的信息量可以基于这样的想法:一个不太可能发生的事件发生了,要比一个非常可能发生的事件提供更多的信息(如,上面的例子,如果小明之前经常考试是100分,那么这次考试得100的概率本来就很高,这是在我们的预料之内的,所以没有什么好惊讶的,也不需要有什么信息需要进一步了解;如果小明以前是个学渣,每次考试都是0分,所以按照以前的统计经验,他得100分的概率几乎为0,那这次考试得了100分就不得了了,这里面一定包含很多未知的信息需要我们了解(调查):小明抄袭了?痛改前非奋发图强了?还是吃了叮当猫的记忆面包,一下子变成了天才?等等),这便可以得出事件发生概率和该事件包含信息量的量化关系:

I(x) = -\log(P(x)) = \log(\frac{1}{P(x)})

这便是香农信息量,又称为自信息(self-information),其代表一个事件所能够提供信息的多少(公式中是底数为 2 的对数,信息量用比特(bit)衡量,那么信息的多少就是多少比特)。然而,自信息只能衡量单个事件的信息量,而整个系统呈现的是一个分布(多个事件的集合),因此在信息论中,使用信息熵来对整个系统事件集合包含的信息进行量化,即对概率分布进行量化,计算公式为:

H(X) = E_{X \sim P}[I(X)] = -E_{X \sim P}[log(P(X))] =- \sum_{k=1}^{N}p_k\log_2(p_k)

其中,N为x所有可能取值的数量,p_k为x取值X_k时的概率。

从公式可以看出,信息熵的本质是香农信息量log(1/p)的期望,即各个事件包含信息的加权平均。从信息论的角度来说,信息熵就是按照真实分布p来衡量识别一个样本的所需要的编码长度(上面提到信息量使用比特衡量,此处的编码长度就是一个数据(事件)至少需要多少个比特进行编码)的期望,即平均最小编码长度。 

为了引出相对熵(KL散度)和交叉熵,我们先使用一个例子:含有4个字母(A,B,C,D)的数据集中,真实分布P=(1/2,1/2,0,0),即A和B出现的概率均为1/2,C和D出现的概率都为0。计算H(p)为1(计算方法:1/2 * log(2) + 1/2 * log(2)=1),即只需要1位编码即可编码A和B。如果使用分布Q=(1/4, 1/4, 1/4, 1/4)来编码则得到H(p,q)=2,即需要2位来编码识别A和B(当然还有C和D,尽管C和D并不会出现,因为真实分布P中C和D出现的概率为0,这里就指定概率为0的事件不会发生,即0*log0=0,0*log(4)=0)。(引申:其实从这里就可以解释为什么霍夫曼编码使用长短不一的编码方式)。从这个例子可以看出根据非真实分布q得到的平均编码长度H(p,q)(需要使用更多的载体存储信息)大于根据真实分布p得到的平均编码长度H(p)(最优的存储信息的方式)。事实上,根据Gibbs'inequality可知,H(p,q)>=H(p)恒成立,当q为真实分布p时二者相等。我们将由q得到的平均编码长度与由p得到的平均编码长度的差(额外多出的信息载体)称为相对熵,也称为KL散度

KL(p||q)  = H(p,q) - H(p) = -\sum_{k=1}^{N}p_k\log_2(q_k) + \sum_{k=1}^{N}p_k\log_2(p_k) = \sum_{k=1}^{N}p_k\log_2(\frac{p_k}{q_k})

上式中的的H(p,q)便是交叉熵,在信息论编码中,它说明的是使用q分布对原分布为p的字符集进行编码所需要的平均编码长度(信息量的期望)。

如果我们将p和q的概念从上面例子中字符的概率再引申扩展下,即:p为数据的真实概率分布,而q为机器学习算法预测数据的分布,那么KL散度便可以用来衡量两个分布的差异,可以将其作为机器学习的目标函数,通过训练尽量降低KL散度,就可以降低两个分布的差异,预测模型分布q就越接近真实分布p。然而,由上面的公式可以看出,交叉熵只是比KL散度少了H(p)一项,由于在机器学习中H(p)是固定的(真实分布的信息熵),所以在优化的时候我们只需要尽量降低H(p,q)的值(这便是交叉熵可以作为分类算法损失函数的原因)。所以,使用交叉熵作为算法的误差函数即可。 

下面是单个样本的**交叉熵损失**函数公式,其中N为分类任务中的类别数量:

Loss = -\sum_{k=1}^{N}p_k\log_2(q_k)

多个样本(mini-batch)的平均交叉熵损失函数公式,M为样本数量:

Loss = -\frac{1}{M}\sum_{i=1}^{M}\sum_{k=1}^{N}p_{ik}\log_2(q_{ik})

以上的公式中,q_k通过sigmoid(二分类)函数或者softmax(多类别分类)计算得到。

参考:

如何通俗的解释交叉熵与相对熵

作者能力有限,不正确之处欢迎斧正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容