【面试总结】损失函数

损失函数

0-1损失

L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y, f(X)) = \begin{cases} 1, & Y \not= f(X) \\ 0, & Y = f(X) \end{cases} L(Y,f(X))={1,0,Y=f(X)Y=f(X)

  • 直接对应分类判断错误的个数,但是是一个非凸函数,不太好用
  • 感知机使用的就是这种损失函数,但是严格相等过于严格,可以卡一个阈值: L ( Y , f ( X ) ) = { 1 , ∣ Y − f ( X ) ∣ > = T 0 , ∣ Y − f ( X ) ∣ < T L(Y, f(X)) = \begin{cases} 1, & |Y - f(X)|>=T \\ 0, & |Y - f(X)| < T \end{cases} L(Y,f(X))={1,0,Yf(X)>=TYf(X)<T

绝对值损失

L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y, f(X)) = |Y - f(X)| L(Y,f(X))=Yf(X)

对数损失

L ( Y , P ( Y ∣ X ) ) = − l o g ( P ( Y ∣ X ) ) L(Y, P(Y|X)) = -log(P(Y|X)) L(Y,P(YX))=log(P(YX))

  • 能很好的表征概率分布,在很多场景,尤其是多分类的情况,能知道属于某一个类别的置信度
  • 逻辑回归LR的损失函数就是log对数损失

平方损失

L ( Y , f ( X ) ) = ∑ N ( Y − f ( X ) ) 2 L(Y, f(X)) = \sum_N (Y-f(X))^2 L(Y,f(X))=N(Yf(X))2

  • 通常用于回归问题

指数损失

L ( Y , f ( X ) ) = e x p ( − y f ( x ) ) L(Y, f(X)) = exp(-yf(x)) L(Y,f(X))=exp(yf(x))

  • 对异常点,噪声非常敏感

Hinge损失(合页损失)

L ( y , f ( x ) ) = m a x ( 0 , 1 − y f ( x ) ) L(y, f(x)) = max(0, 1-yf(x)) L(y,f(x))=max(0,1yf(x))

  • 如果分类正确,损失为0,否则损失为 1 − y f ( x ) 1-yf(x) 1yf(x),这也是SVM使用的损失函数
    • y ∈ { − 1 , 1 } y\in\{-1,1\} y{1,1},分类错误时损失实际上是 1 + ∣ f ( x ) ∣ 1+|f(x)| 1+f(x)
  • 对异常点不敏感,没有概率解释

感知损失函数

L ( y , f ( x ) ) = m a x ( 0 , − f ( x ) ) L(y, f(x)) = max(0, -f(x)) L(y,f(x))=max(0,f(x))

  • 是合页损失的一个变种,并不是最大化边界距离,所以模型泛化能力不强
  • 可以理解为什么这也是一种合页损失,因为从图上看,都是一个折线,看着像一个合页,所以。。。

交叉熵损失

L = − 1 n ∑ x [ y l n ( p ) + ( 1 − y ) l n ( 1 − p ) ] L = - \frac{1}{n} \sum_x [ yln(p) + (1-y)ln(1-p) ] L=n1x[yln(p)+(1y)ln(1p)]

  • 上式是一个二分类的交叉熵, y ∈ { 0 , 1 } y\in\{0, 1\} y{0,1} p = p ( y ∣ x ) p=p(y|x) p=p(yx)是模型预测属于类别 y y y的概率
  • 多分类的loss函数如下,本质上和上式是一样的: l o s s = − 1 n ∑ i y i l n ( p i ) loss = -\frac{1}{n} \sum_i y_i ln(p_i) loss=n1iyiln(pi)
  • 使用交叉熵的优势:
    • 当激活函数是sigmoid函数的时候:交叉熵能够解决平方误差函数更新权重过慢的问题,误差越大,权重更新越快,误差越小,权重更新慢,这个性质非常好
    • 简单推导:
    • σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
    • σ ′ = σ ∗ ( 1 − σ ) \sigma^\prime = \sigma *(1-\sigma) σ=σ(1σ)
    • 交叉熵的倒数(激活函数是 σ \sigma σ): l o s s ( y , f ( x ) ) = − 1 n ∑ i y i l n ( f ( x i ) ) loss(y, f(x)) = - \frac{1}{n} \sum_i y_iln(f(x_i)) loss(y,f(x))=n1iyiln(f(xi))
      ∂ l o s s ∂ w = ∂ l o s s ∂ f ( x ) ∂ f ( x ) ∂ w = − 1 n ∑ i y i 1 f ( w x i ) ∂ f ( w x i ) ∂ w = − 1 n ∑ i y i 1 σ ( w x i ) ∂ σ ( w x i ) ∂ w = − 1 n ∑ i y i 1 σ ( w x i ) ( σ ( w x i ) ( 1 − σ ( w x i ) ) ) = − 1 n ∑ i y i ( 1 − σ ( w x i ) ) = 1 n ∑ i ( f ( w x i ) − y i ) ) \begin{aligned} \frac{\partial loss}{\partial w} & = \frac{\partial loss}{\partial f(x)} \frac{\partial f(x)}{\partial w} = -\frac{1}{n}\sum_i y_i\frac{1}{f(wx_i)} \frac{\partial f(wx_i)}{\partial w} \\ & = -\frac{1}{n}\sum_i y_i\frac{1}{\sigma(wx_i)} \frac{\partial \sigma(wx_i)}{\partial w} \\ & = -\frac{1}{n}\sum_i y_i\frac{1}{\sigma(wx_i)} (\sigma(wx_i)(1-\sigma(wx_i))) \\ & = -\frac{1}{n}\sum_i y_i (1-\sigma(wx_i)) \\ & = \frac{1}{n}\sum_i (f(w x_i) - y_i )) \end{aligned} wloss=f(x)losswf(x)=n1iyif(wxi)1wf(wxi)=n1iyiσ(wxi)1wσ(wxi)=n1iyiσ(wxi)1(σ(wxi)(1σ(wxi)))=n1iyi(1σ(wxi))=n1i(f(wxi)yi))
    • 均方差的倒数(激活函数是 σ \sigma σ): l o s s ( y , f ( x ) ) = 1 2 n ∑ i ( y i − f ( x i ) ) 2 loss(y, f(x)) = \frac{1}{2n} \sum_i (y_i-f(x_i))^2 loss(y,f(x))=2n1i(yif(xi))2
    • ∂ l o s s ∂ w = ∂ l o s s ∂ f ( x ) ∂ f ( x ) ∂ w = 1 n ∑ i ( y i − f ( w x i ) ) ∂ f ( w x i ) ∂ w = 1 n ∑ i ( y i − σ ( w x i ) ) ( σ ( w x i ) ( 1 − σ ( w x i ) ) ) \begin{aligned} \frac{\partial loss}{\partial w} & = \frac{\partial loss}{\partial f(x)} \frac{\partial f(x)}{\partial w} \\ & = \frac{1}{n} \sum_i (y_i - f(w x_i)) \frac{\partial f(w x_i)}{\partial w} \\ & = \frac{1}{n} \sum_i (y_i - \sigma(w x_i)) (\sigma(w x_i)(1-\sigma(w x_i))) \end{aligned} wloss=f(x)losswf(x)=n1i(yif(wxi))wf(wxi)=n1i(yiσ(wxi))(σ(wxi)(1σ(wxi)))
  • 从均方差和交叉熵的损失函数的倒数的推导来看:
    • 均方差损失,其激活函数的倒数项是无法消掉的,那么当使用sigmoid 激活函数的时候,倒数项一直存在,而sigmoid的倒数项只有在接近0的时候才稍微比较大一点,其余的地方的倒数都是接近0的值,这会导致权重w更新缓慢
    • 交叉熵损失,在使用sigmoid做为激活函数的时候,可以看到,误差越大梯度越大,那么权重w更新越快,性质非常良好
    • 注意这里指的是使用了sigmoid作为激活函数,如果采用了其他的激活函数,并不保证有这样好的性质

参考资料

  • https://zhuanlan.zhihu.com/p/58883095

你可能感兴趣的:(算法与数据结构)