# 损失函数

# 极大似然

# 回归问题

极大似然解释回归问题中的MSE均方误差损失

yi=wx+b+eiy^i=w*x+b+e^i

其中wx+bw*x+b是模型输出结果,eie^i是误差,上式表示的是当前样本的预测值加上当前样本的误差等于当前样本的真实值,认为eie^i是误差(噪声),假定噪声服从高斯分布(一般这种大自然的噪声都服从高斯分布),可以描述其概率密度函数

p(ei)=12πσe(ei)22σ2p(e^i) = \frac{1}{\sqrt{2\pi\sigma}}e^{-\frac{(e^i)^2}{2\sigma^2}}

由于eie^i服从某个均值和方差的高斯分布,而bias=bbias=b是一个常数,因此总可以归到eie^i中,将其表示为

ei=yiwxe^i=y^i-w*x

因此概率密度函数可以表示为

p(yixi,θ)=12πσe((yiwxi)22σ2)p(y^i|x^i,\theta)=\frac{1}{\sqrt{2\pi\sigma}}e(-\frac{(y^i-w*x^i)^2}{2\sigma^2})

对所有样本的概率密度相乘,计算似然函数

L(θ)=i=1m12πσe((yiwxi)22σ2)L(\theta)=\prod_{i=1}^m\frac{1}{\sqrt{2\pi\sigma}}e(-\frac{(y^i-w*x^i)^2}{2\sigma^2})

之后计算对数似然,得到

logL(θ)=mlog12πσ1σ212Σ(yiwxi)2logL(\theta)=mlog\frac{1}{\sqrt{2\pi\sigma}}-\frac{1}{\sigma^2}\frac{1}{2}\Sigma(y^i-w*x^i)^2

第一项是常数,因此最大化似然函数,就是最小化第二项,去除σ\sigma为常数,则最小化的项可以表示为

J(θ)=12Σ(yiwxi)2J(\theta)=\frac{1}{2}\Sigma(y^i-w*x^i)^2

也就是最小均方误差MSE,然后求导计算梯度,用梯度下降的方法逼近模型

# 分类问题

在分类问题中,假设是2分类,也就是伯努利分布,一件事发生的概率为p,不发生的概率为1-p,输入样本经过线性模型后,再经过一个激活函数,就是一个概率值,正好等于事件发生的概率p,此时y就服从二项分布,其概率密度函数可以表示为

p(yixi,θ)=(hθ(xi)y)(1hθ(xi))1yp(y^i|x^i,\theta)=(h_\theta(x^i)^y)(1-h_\theta(x^i))^{1-y}

同样计算似然函数

L(θ)=i=1m(hθ(xi))yi(1hθ(xi))1yiL(\theta)=\prod_{i=1}^m(h_\theta(x^i))^{y^i}(1-h_\theta(x^i))^{1-y^i}

同样计算对数似然

logL(θ)=Σyiloghθ(xi)+(1yi)log(1hθ(xi))logL(\theta)=\Sigma y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))

目标是最大化对数似然,因此加一个符号,就是最小化这个值,这个值其实就是交叉熵

J(θ)=1mΣyiloghθ(xi)+(1yi)log(1hθ(xi))J(\theta)=-\frac{1}{m}\Sigma y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))

在上式中,yiy_i1yi1-y_i就是训练数据的分布(假定这就是真实分布),hθh_\theta1hθ1-h_\theta就是模型的分布

求完导后,得到下式

logL(θ)y=(yihθ(x))xi\frac{\partial logL(\theta)}{\partial y} = (y_i - h_\theta(x))x_i

# 二项分类

表示n次波努利实验的结果

记为X~B(n, p),其中n表示实验次数,p表示每次实验结果为1的高绿,X表示n次试验中成功的次数

p(X=k)=Cnkpk(1p)nk,k=0,1,2,3...np(X=k)=C_n^kp^k(1-p)^{n-k},k=0,1,2,3...n

# 交叉熵

# KL散度(相对熵)

KL散度一般用于计算某个随机变量的两个分布之间的差异。(相当于计算两个分布之间的距离)。KL散度不具有对称性。

KL散度定义为:

D(pq)=Σp(x)logp(x)q(x)D(p||q) = \Sigma p(x)log\frac{p(x)}{q(x)}

也就是随机变量XXpp分布为参照的前提下,与qq分布的距离。

将公式继续改写

D(pq)=Σp(x)logp(x)q(x)D(p||q) = \Sigma p(x)log\frac{p(x)}{q(x)}

=Σp(x)logp(x)Σp(x)logq(x)= \Sigma p(x)logp(x) - \Sigma p(x)logq(x)

=Hp(x)+[Σp(x)logq(x)]= -H_p(x) + [-\Sigma p(x)logq(x)]

其中,第一部分为pp分布(真实分布)的熵,第二部分即为交叉熵(真实分布与预测分布),由于真实分布是确定的(肯定有某个确定的真实分布),因此第一部分熵是确定的,所以KL散度度量两个分布的距离就变为了通过第二部分(交叉熵)来度量两个分布的距离,只需要尽可能使得自己的模型与真实模型的距离更小即可,也就是最小化KL散度(等价于最小化交叉熵)

# 机器学习中

机器学习的过程就是希望在训练数据熵模型学到的分布和数据真实分布越来越接近越好,因此目标就是最小化KL散度

但是KL散度需要两个分布,一个是p分布(真实分布),一个是q(自己的模型分布),实际上我们是没有p分布的,那么只能退而求其次,假定训练数据是从总体分布中进行独立同分布的采样获得的,从而假定训练数据的分布近似于真实模型的分布。

因此目标就变为了自己训练的模型去拟合训练数据的分布(在KL散度中就是使自己的模型与训练数据的分布模型距离最小)

  • 原本希望学习到的模型和真实分布一致:P(model)P(read)P(model) \approx P(read)
  • 但真实分布未知,只好假设训练数据是从真实数据中独立同分布采样出来,因此假定P(sample)P(real)P(sample) \approx P(real)
  • 因此我们希望自己的模型能与样本的分布近似相等P(model)P(sample)P(model)\approx P(sample)

因此理想的情况是如果模型能学到训练数据的分布,那么就近似认为学到了真实数据的分布

P(model)P(sample)P(real)P(model)\approx P(sample) \approx P(real)

# 常见损失

# 0-1损失

是指预测值和目标值不相等为1,不相等为0,这个损失函数对应分类判断错误的个数,但它是一个非凸函数

# 绝对值函数

真实值与预测值之差的绝对值

# Log对数损失函数

其标准形式如下

L(Y,P(YX))=logP(YX)L(Y,P(Y|X)) = -logP(Y|X)

  • 能很好的表征概率分布,尤其是多分类,如果知道结果输入每个类别的置信度,那它非常适合
  • 健壮性不强,相比于hinge loss对噪声敏感
  • 逻辑回归的损失就是log对数损失函数

# 其他

  1. 为什么分类问题不用MSE?

另一种解释为,比如在三分类问题中,预测结果为(a,b,c)(a, b, c),而真实标签为(1,0,0)(1, 0, 0)

对于MSE而言,计算CCC=(a1)2+b2+c2C = (a-1)^2 + b^2 + c^2,相当于

对于交叉熵,计算CC,C = -loga+0\*logb+0\*logc

可以看出,交叉熵的损失函数只和分类正确的预测结果有关系,而MSE的损失函数还和错误的分类有关系,该分类器除了让正确的分类尽量变大,还会让错误的分类变得平均,但实际在分类问题中这个调整是没有必要的。但是对于回归问题来说,这样的平均谁有意义的。所以,回归问题熵使用交叉上并不合适。