天天看点

损失函数的推导似然函数推导损失函数信息论推导损失函数

  • 似然函数推导损失函数
  • 信息论推导损失函数
    • 信息量
    • 相对熵(KL散度)
    • 交叉熵

似然函数推导损失函数

之前在机器学习算法的学习中一直疑惑,为什么cost function通常都为

J(θ)=12(y−hθ(x))2 J ( θ ) = 1 2 ( y − h θ ( x ) ) 2

起初认为是绝对值不好计算因而换成平方项,但是这个 12 1 2 解释不通(虽然它并不影响),而且为什么不是其余偶数次项,于是很好奇这个是怎么来的。

后面听了吴恩达老师的课,也算是解答了一些疑惑。

我们设模型为 hθ(x) h θ ( x ) ,有以下假设:

  1. y=hθ(x)+ϵ y = h θ ( x ) + ϵ
  2. ϵ(i) ϵ ( i ) ~ N(0,δ2) N ( 0 , δ 2 ) , ϵ(i) ϵ ( i ) 独立同分布

即y由模型拟合以及随机扰动构成,而由中心极限定理,我们假设随机扰动 ϵ ϵ 服从均值为0方差为 δ2 δ 2 的正态分布。

移项可得:

y−hθ(x)=ϵ y − h θ ( x ) = ϵ

由正态分布密度函数,对于某一样本点 y(i) y ( i ) , x(i) x ( i ) ,有:

P(y(i)|x(i);θ)=12π√δe−(y(i)−hθ(x(i)))22δ2 P ( y ( i ) | x ( i ) ; θ ) = 1 2 π δ e − ( y ( i ) − h θ ( x ( i ) ) ) 2 2 δ 2

由于 ϵ(i) ϵ ( i ) 独立同分布,则可写出似然函数:

L(θ)=∏mi=112π√δe−(y(i)−hθ(x(i)))22δ2 L ( θ ) = ∏ i = 1 m 1 2 π δ e − ( y ( i ) − h θ ( x ( i ) ) ) 2 2 δ 2

取对数似然函数,化简可得:

l(θ)=nlog12π√δ+∑mi=1−(y(i)−hθ(x(i)))22δ2 l ( θ ) = n l o g 1 2 π δ + ∑ i = 1 m − ( y ( i ) − h θ ( x ( i ) ) ) 2 2 δ 2

为使得 argmaxθl(θ) a r g m a x θ l ( θ ) ,若 δ2 δ 2 为固定参数,则即:

argminθ12(y(i)−hθ(x(i)))2 a r g m i n θ 1 2 ( y ( i ) − h θ ( x ( i ) ) ) 2

与通常认知的cost function相符。

此时,若模型拟合效果不好,则残差并不完全符合高斯分布,cost function较大,因变量并不能有效分解为模型假设以及误差的和。因此,通过检验残差的白噪声性能检验模型的拟合优度,这也与我们的学习所相符。

但并不是所有的因变量都能分解为这两部分的和,换句话说,不是所有的模型都能够有能力拟合地非常好,使得这个cost function有效。因此,有的算法的似然函数并不是通过此类方法推导得到,而是通过计算数据的后验分布得到,例如logistic 回归和朴素贝叶斯等。

下面来探讨另外一种定义损失函数的方法,从信息论的角度来分析。

信息论推导损失函数

损失函数是刻画模型假设与真实分布差异的函数。从信息论的角度,当模型假设所蕴含的信息与真实分布差异较小时,代表着模型拟合效果较好。因此从信息论的角度出发也可以定义较好的损失函数。

信息量

首先是信息量。假设以下两个事件:

1. 明天天晴(90%概率)

2. 明天阴天(10%概率)

那么从直觉来说,第二条包含较多的信息,因为其概率较小,而第一条消息信息较少(因为你大概率知道明天天晴)

设X是一个离散型随机变量,其取值集合为X,概率分布函数p(x)=Pr(X=x),x∈X,则定义事件 X=x0 X = x 0 的信息量为:

I(x0)=−log(p(x0)) I ( x 0 ) = − l o g ( p ( x 0 ) )

从数学表达式也易得, I(x0) I ( x 0 ) 是P(X=x)的减函数

熵表示一个系统内部的混乱程度(也即信息情况),通过信息量我们可衡量各个事件所蕴含的信息情况。在一个系统内部有各种各样的事件,为了衡量信息情况综合考虑所有的事件,显然容易想到的是所有事件信息量的期望。数学表达式如下:

H(X)=−∑ni=1p(xi)log(p(xi)) H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) )

其中n代表事件数(也即样本数)

相对熵(KL散度)

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异,而在machine learning中,P往往是真实分布,而Q是模型假设。举个例子,在supervised learning中,P即数据集的标注变量(即真实的y),而Q即模型预测出来的 y^ y ^ .而相对熵则描述了真实分布P和模型假设Q之间的信息量差异,显然Q的信息量小于或等于P,因此从预测的角度看,经过不断地训练和调参,当Q的信息量逐渐增加,越来越逼近P,则模型预测效果则越来越好。数学表达式如下:

DKL(p||q)=∑ni=1p(xi)log(p(xi)q(xi)) D K L ( p | | q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) )

当KL散度越小,也即P和Q信息量差异越小,模型拟合越好

交叉熵

交叉熵由相对熵推导而来,对相对熵的表达式作变形:

DKL(p||q)=∑i=1np(xi)log(p(xi)q(xi))=−H(X)−∑i=1np(xi)log(q(xi)) D K L ( p | | q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) = − H ( X ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) )

其中H(X)为真实分布的信息量,在machine learning中H(X)不变,因此要减少相对熵,也即减少后半部分,定义后半分为交叉熵,即

H(p,q)=−∑ni=1p(xi)log(q(xi)) H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) )

从相对熵和交叉熵的定义来看,将交叉熵作为损失函数较为可行

下面举个例子来说明计算各个指标

序号 事件 模型预测概率 真实标记 信息量
A 电脑正常开机 0.7 1 -log(p(A))=0.36
B 电脑无法开机 0.3 -log(p(B))=1.2

因此,可计算熵如下

H(Q)H(p,q)=E(I(X))=0.36∗0.7+1.2∗0.3=0.612=−p(A)log(q(A))−p(B)log(q(B))=−1∗log(0.7)−0∗log(0.3)=0.357 H ( Q ) = E ( I ( X ) ) = 0.36 ∗ 0.7 + 1.2 ∗ 0.3 = 0.612 H ( p , q ) = − p ( A ) l o g ( q ( A ) ) − p ( B ) l o g ( q ( B ) ) = − 1 ∗ l o g ( 0.7 ) − 0 ∗ l o g ( 0.3 ) = 0.357

在计算相对熵时,由于H(P)计算时有log(0),因此真实分布的信息量是无穷大的,因此不能将其放入loss function的定义中,再者H(P)为真实分布的熵,评估模型时用不上,因此以交叉熵定义loss function较为合适。

继续阅读