交叉熵与最大似然估计

在 Andrew Ng 的 Deep Learning Specialization 系列课程中在讲解 Logistic regression 时一直采用的一个损失函数和成本函数定义为:

  • 单个样本的损失函数:L(ŷ, y) = - (ylog(ŷ) + (1 - y) log(1 - ŷ)),注意这里的 log 的底数为自然基底 e,由于在很多计算工具中都将 ln 的实现方法定义为 log,所以公式和课堂上采用的是 log

  • 训练样本集的成本函数:样本集中全部 m 个样本的损失函数的均值
    J = (1/m) ΣL(ŷ(i), y(i)) = (1/m) Σ(-y(i)logŷ(i) - (1 - y(i))log(1 - ŷ(i))),其中 i = 1, 2, 3, ..., m, m 为样本的数量

这里激活函数使用的是 Sigmoid 函数,其数学描述为:σ(z) = 1 / (1 + e-z) ,进而对应每一个特征向量 x,激活函数的输出结果为:

  • ŷ = σ(z) = σ(wTx + b)

在课堂中 Andrew 并没有花时间解释为何采用这个损失函数,实际上这个损失函数是一个二元分类的交叉熵 Cross-Entropy 函数。为了更清楚的解释这个概念,给出交叉熵的概念如下:

如果一个事件的发生概率为 p,则其交叉熵为:

  • CE = - ln(p)

由于对一个概率值取自然对数的结果为一个 ≤ 0 的数,因此加上一个负号则可以使得函数最终的计算结果为一个正数。

在 Logistic regression 中由于 y 的取值只有 0 或 1,而 Sigmoid 函数的输出值值域为 (0, 1),因此可以看作是一个概率,在此有:

  • 当 y 取值为 1 时,我们期望模型的预测值 ŷ 能够接近 1,即激活函数应该输出一个更接近于 1 的概率值,对应的交叉熵函数变为 ln(ŷ) = ln(σ(wTx + b)) ,取值接近于 0

  • 当 y 取值为 0 时,我们期望模型的预测值 ŷ 能够接近 0,即激活函数应该输出一个更接近于 0 的概率值,对应的交叉熵函数变为 ln(1 - ŷ) = ln(1 - σ(wTx + b)) ,取值仍接近于 0

Loss & prediction, from Udacity

由于交叉熵函数的取值和我们期望的误差的取值是一致的,因此可以用交叉熵函数作为一个损失函数,而针对整个样本集来说,则可以定义加总形式的交叉熵函数作为成本函数。

这个交叉熵函数还有一个隐藏的特性是对其求解梯度后有:

  • ∇ CE = (ŷ - y)(x1, x2, x3, ..., xn, 1),这意味着当误差较大时,我们可以给予参数较大幅度的调整,而当误差较小时则给予较小的调整。

更一般地,如果针对存在 n 个分类的 m 个样本,则这个样本集的成本函数的交叉熵函数形式为:

  • CE = - (1/m) ΣmΣnyijln(pij)),这里 i = 1, 2, 3, ..., m,j = 1, 2, 3, ..., n

以交叉熵函数作为成本函数的数学基础来自于统计学中的最大似然估计 Maximum Likelihood Estimation, MLE。

最大似然估计

最大似然估计是一种参数估计,更确切的说,是一个点估计。

在现实世界的研究中,我们可以首先假定某些被研究对象的概率分布服从某种分布形态,例如二项分布、正态分布、指数分布,但对于相应分布中的具体参数的取值却无从知晓,此时我们可以借助从总体中抽样的方式,对总体的概率分布的参数进行一个点对点的估计。假定被研究对象的总体服从二项分布,如果知道了基础的(0,1)分布中结果指定为 1 时的概率 p 也就知道了这个分布形态的全部。

在最大似然估计的语境中,由于总体分布参数未知,因此用 θ 表示总体的一个或多个未知参数。需要注意的是,在最大似然估计中,我们需要限定抽样样本集 X 当中的样本 x1, x2, x3, ..., xn 彼此是独立同分布的,也即样本被抽取到的概率是彼此独立的,它们之间唯一的联系就是来自于同一个总体,具有相同的概率分布形态。

此时,由于样本之间彼此独立且服从参数为 θ 的分布,那么取得任意一个样本 xi 的概率可以表示为 P(xi | θ),因而取得当前这个样本集的概率为:

  • P(X) = P(x1 | θ)P(x2 | θ)P(x3 | θ) ... P(xn | θ)

由于在抽样后会得到总体的一个观测,因此相应的概率在具体的样本集中都是已知的,上面这个函数则可以看作在不同的参数 θ 的取值下,取得当前这个样本集的概率,也即可能性 likelihood,因此将其称为参数 θ 相对于样本集 X 的似然函数 likelihood function,记为L(θ),即有:

  • L(θ) = L(x1, x2, x3, ..., xn | θ) = P(x1 | θ)P(x2 | θ)P(x3 | θ) ... P(xn | θ) = ∏P(xi | θ), i = 1, 2, 3, ..., n

对于抽样得到样本集 X 这个既成事实,我们可以认为这就是最该发生的一个结果,也即所有可能的结果中概率最大的那一个,这就是最大似然估计的命名由来。此时,我们需要寻找的就是那个使似然函数取得最大值的 θ 值:

  • argmax L(θ)

这里 argmax ƒ(x) 是使得函数 ƒ(x) 取得其最大值的所有自变量 x 的集合,相应的 argmin ƒ(x) 是使得函数 ƒ(x) 取得其最小值的所有自变量 x 的集合,而我们想要研究的问题最终再一次变成了一个求极值问题。

由于在计算当中,多个概率的乘法最终会得到一个非常小的值,从而可能造成下溢 underflow,因此一般会进一步对之前的似然函数取一个对数,将连续乘法转化为加法:

  • lnL(θ) = ln(ΠP(xi | θ))= Σ lnP(xi | θ), i = 1, 2, 3, ..., n

总结起来,利用最大似然函数求解总体参数的估计值的一般步骤为:

  1. 获取似然函数

  2. 对似然函数取自然对数

  3. 将对数似然函数求(偏)导数,令其为0,得到似然方程

  4. 求解似然方程,得到的一个或多个数值即为总体参数的最大似然估计值

需要注意的是与任何参数估计方法一样,最大似然估计的准确性也受到样本数量的影响,一般样本数量越大越准确。对于最大似然估计的理解参考了很多 zouxy09的专栏 的内容,在此表示感谢!他的专栏是一个机器学习的知识宝库,后续有时间一定会仔细阅读!

代码实现

以向量化的方式实现交叉熵函数的代码为:

import numpy as np
# Y and P are lists of labels and estimations
# returns the float corresponding to their cross-entropy.
def cross_entropy(Y, P):
    Y = np.float_(Y)
    P = np.float_(P)
    # np.log() is based in e in numpy
    return -np.sum(Y * np.log(P) + (1 - Y) * np.log(1 - P)) / len(Y)

参考阅读

  1. 从最大似然到 EM 算法浅解

  2. 如何通俗的理解最大似然估计 - 马老师的版本

  3. All About Loss Functions

  4. Picking Loss Functions - A comparison between MSE, Cross Entropy, and Hinge Loss

5.Michael Nielsen on Loss

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