【面试总结】损失函数

本文全面解析了各种损失函数,包括0-1损失、绝对值损失、对数损失、平方损失、指数损失、Hinge损失、感知损失、交叉熵损失等。详细介绍了每种损失函数的特点、应用场景及优缺点。

损失函数

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)∣>=T0,∣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))=−log(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))=exp(−yf(x)) L(Y, f(X)) = exp(-yf(x)) L(Y,f(X))=exp(yf(x))

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

Hinge损失(合页损失)

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

  • 如果分类正确,损失为0,否则损失为1−yf(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))=max(0,−f(x)) L(y, f(x)) = max(0, -f(x)) L(y,f(x))=max(0,f(x))

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

交叉熵损失

L=−1n∑x[yln(p)+(1−y)ln(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)是模型预测属于类别yyy的概率
  • 多分类的loss函数如下,本质上和上式是一样的:loss=−1n∑iyiln(pi) loss = -\frac{1}{n} \sum_i y_i ln(p_i) loss=n1iyiln(pi)
  • 使用交叉熵的优势:
    • 当激活函数是sigmoid函数的时候:交叉熵能够解决平方误差函数更新权重过慢的问题,误差越大,权重更新越快,误差越小,权重更新慢,这个性质非常好
    • 简单推导:
    • σ(x)=11+e−x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
    • σ′=σ∗(1−σ) \sigma^\prime = \sigma *(1-\sigma) σ=σ(1σ)
    • 交叉熵的倒数(激活函数是σ\sigmaσ):loss(y,f(x))=−1n∑iyiln(f(xi)) loss(y, f(x)) = - \frac{1}{n} \sum_i y_iln(f(x_i)) loss(y,f(x))=n1iyiln(f(xi))
      ∂loss∂w=∂loss∂f(x)∂f(x)∂w=−1n∑iyi1f(wxi)∂f(wxi)∂w=−1n∑iyi1σ(wxi)∂σ(wxi)∂w=−1n∑iyi1σ(wxi)(σ(wxi)(1−σ(wxi)))=−1n∑iyi(1−σ(wxi))=1n∑i(f(wxi)−yi)) \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σ):loss(y,f(x))=12n∑i(yi−f(xi))2loss(y, f(x)) = \frac{1}{2n} \sum_i (y_i-f(x_i))^2loss(y,f(x))=2n1i(yif(xi))2
    • ∂loss∂w=∂loss∂f(x)∂f(x)∂w=1n∑i(yi−f(wxi))∂f(wxi)∂w=1n∑i(yi−σ(wxi))(σ(wxi)(1−σ(wxi)))\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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值