机器学习中的损失函数

2018-08-08 77889547 0

log对数损失函数(逻辑回归,也叫交叉熵损失)

逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数。从损失函数的视角来看,它就成了log损失函数了。

log损失函数标准形式:

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

逻辑回归的 P(Y=yx)P( Y = y | x ) 表达式如下(为了将类别标签y统一为1和0,下面将表达式分开表示):

P(Y=yx)={hθ(x)=g(f(x))=11+ef(x);y=11hθ(x)=1g(f(x))=11+ef(x);y=0P( Y = y|x ) = \left \{ \begin{aligned}h_ \theta (x) & = g(f(x)) = \frac { 1 } { 1 + e ^ { -f(x) } } & ; y = 1 \\1 - h_ \theta (x) & = 1 - g(f(x)) = \frac {1} { 1 + e ^ { f(x) } } & ; y = 0\end{aligned}\right.

将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:

L(y,P(Y=yx)={log(1+ef(x));y=1log(1+ef(x));y=0L(y, P(Y = y|x ) = \left \{ \begin{aligned}& log( 1 + e ^ { -f(x) } ) & ; y = 1 \\& log( 1 + e ^ { f(x) } ) & ; y = 0\end{aligned}\right.

逻辑回归最后得到的目标式子如下:

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i))]J(\theta) = - \frac{1}{m} \left [ \sum_{i=1}^{m} y^{(i)} log h_ \theta ( x ^ {(i)}) + ( 1- y ^ {(i)} )log( 1- h_ \theta ( x ^ { (i) } ) \right ]

熵,交叉熵,相对熵

参考:分类问题损失函数的信息论解释

熵的本质是香农信息量 log(1p) log(\frac{1}{p}) 的期望

H(p)=E[log(1/p)]=i=1npilog(1pi)H(p) = E[ log(1/p) ] = \sum_{i=1}^{n} p_i \cdot log( \frac{1}{p_i} )

熵的另一种解释:最短平均编码长度

交叉熵(联合熵),则可以这样理解:使用了“估算”的编码后,得到的平均长度(可能不是最短的)
p是真实概率分布,q是取自样本的概率分布(估算)
你以q去编码,编码方案log(1qi) log(\frac{1}{q_i}) 可能不是最优的,于是,平均编码长度

H(p,q)=i=1npilog(1qi)H(p, q) = \sum_{i=1}^{n} p_i \cdot log( \frac{1}{q_i} )

就是交叉熵, 只有在估算的分布 q 完全正确时,平均编码长度才是最短的,交叉熵 = 熵。

相对熵(条件熵),我们将由q得到的平均编码长度比由p得到的平均编码长度多出的bit数称为“相对熵”。

D(pq)=H(p,q)H(p)=i=1npilogpiqi D(p | q) = H(p, q) - H(p) = \sum_{i=1}^{n} p_i \cdot log \frac{p_i}{q_i}

其又被称为KL散度(Kullback-Leibler divergence, KLD)。它表示两个函数或概率分布的差异性:差异越大则相对熵越大,特别地,若2者相同则相对熵为0。注意KL散度的非对称性。D(pq)!=D(qp) D(p | q ) != D(q | p)

互信息两个随机变量X、Y的互信息定义为X、Y的信息熵减去X、Y的联合熵。

I(X,Y)=H(X)+H(Y)H(X,Y)=x,yp(x,y)logp(x,y)p(x)p(y) \begin{aligned} I(X, Y) &= H(X) + H(Y) - H(X, Y) \\ &= \sum_{x, y}p(x, y) \cdot log\frac{p(x, y)}{p(x)p(y)} \end{aligned}

平方损失函数(最小二乘法, Ordinary Least Squares )

它假设样本和噪声都服从高斯分布(正态分布,为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理。最后通过极大似然估计(MLE)可以推导出最小二乘式子)。

平方损失(Square loss)的标准形式如下:

L(Y,f(X))=(Yf(X))2L(Y, f(X)) = (Y - f(X))^2

当样本个数为n时,损失函数变为:

L(Y,f(x))=i=1n(Yf(X))2L(Y, f(x)) = \sum_{i=1}^{n}(Y - f(X))^2

Yf(X) Y-f(X) 表示的是残差,整个式子表示的是残差的平方和。

假设噪声服从高斯分布,这时最大似然就和最小二乘法等价,原因如下:

高斯分布:

f(x;μ,δ)=1δ2πe(xμ)22δ2f(x; \mu, \delta ) = \frac{1}{\delta \sqrt{2 \pi} }e ^ { - \frac{ (x - \mu)^2 }{ 2 \delta ^ 2} }

噪声服从高斯分布的意思就是说,样本取值的期望 u 落在我们将要拟合的直线上,但是大自然会给它一个偏差,这个偏差的多少,则服从上式分布,譬如偏差在两个标准差内的概率是95.449974%。
这里的每一个样本都独立同分布,于是他们的联合概率应该满足:

PX,Y(x,y)=PX(x)PX(y)P_{X,Y}(x, y) = P_X(x) \cdot P_X(y)

一组参数在一堆数据下的似然值,等于每一条数据的概率之积,累乘结果:

1δ2πe(xμ1)22δ21δ2πe(xμ2)22δ2\frac{1}{\delta \sqrt{2 \pi} }e ^ { - \frac{ (x - \mu1)^2 }{ 2 \delta ^ 2} } \cdot \frac{1}{\delta \sqrt{2 \pi} }e ^ { - \frac{ (x - \mu2)^2 }{ 2 \delta ^ 2} } \cdots

exp相乘的话就是指数相加,指数部分就变为:

((xμ1)22δ2)+((xμ1)22δ2)+(- \frac{ (x - \mu1)^2 }{ 2 \delta ^ 2}) + (- \frac{ (x - \mu1)^2 }{ 2 \delta ^ 2}) +\cdots

提分母即变成了

[(xμ1)2+(xμ2)2+]-[(x-\mu1)^2 + (x-\mu2)^2 + \cdots ]

这已经就是最小二乘的样子了,上面的期望, 便是直线上的理想预测结果,x便是实际的结果。最小二乘法是要求平方和尽可能小,上式前面加上了负号,也就是上式尽可能大,上式是一个指数,指数越大,便是联合概率越大,联合概率越大,便表示,样本的落点越有可能贴近拟合的直线。这样便符合我们一开始讨论的理解。

指数损失函数(Adaboost)

学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。在Adaboost中,经过m此迭代之后,可以得到 fm(x) f_m(x)

fm(x)=fm1(x)+αmGm(x)f_m(x) = f_{m-1}(x) + \alpha _m G_m(x)

Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数 α\alpha GG

argminα,G=i=1Neyi(fm1(xi)+αG(xi))arg min_{\alpha, G} = \sum_{i=1}^{N}e^{ -y_i ( f_{m-1}(x_i) + \alpha G (x_i) ) }

指数损失函数(exp-loss)的标准形式如下

L(y,f(x))=eyf(x) L(y, f(x)) = e ^ { -yf(x) }

若样本数为n,Adaboost损失函数为

L(y,f(x))=1ni=1neyif(xi) L(y, f(x)) = \frac{1}{n} \sum _{i=1}^{n} e ^ { -y_i f(x_i) }

Hinge损失函数(SVM)

hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:

minw,biN[1yi(wxi+b)]++λw2min_{w, b} \sum_{i}^{N} [1 - y_i ( w \cdot x_ i + b)]_{+} + \lambda \cdot || w || ^ 2