常见的损失函数之MSE\Binary_crossentropy\categorical_crossentropy

损失函数是机器学习最重要的概念之一。

这篇文章写的时候还很嫩,读者指出的很多问题无法一一答复,可参考其他文章哈。

通过计算损失函数的大小,是学习过程中的主要依据也是学习后判断算法优劣的重要判据。

  • 常用的损失函数有均方误差:MSE l o s s = ∑ i = 1 n ( y i − y ^ i ) 2 loss = \sum_{i=1}^n(y_i - \hat y_i)^2 loss=i=1n(yiy^i)2 ∂ l o s s ∂ y = 2 ∑ i = 1 n ( y i − y ^ i ) \frac{\partial loss}{\partial y} = 2\sum_{i=1}^n(y_i - \hat y_i) yloss=2i=1n(yiy^i)
    是最经典也是最简单的损失函数,几乎万能,但是不太准确。

  • binary_crossentropy交叉熵损失函数,一般用于二分类: l o s s = − ∑ i = 1 n y ^ i l o g y i + ( 1 − y ^ i ) l o g ( 1 − y ^ i ) loss = -\sum_{i=1}^n \hat y_i log y_i + (1- \hat y_i)log (1-\hat y_i) loss=i=1ny^ilogyi+(1y^i)log(1y^i) ∂ l o s s ∂ y = − ∑ i = 1 n y ^ i y i − 1 − y ^ i 1 − y i \frac{\partial loss}{\partial y} = -\sum_{i=1}^n \frac{\hat y_i}{y_i} - \frac{1-\hat y_i}{1-y_i} yloss=i=1nyiy^i1yi1y^i
    这个是针对概率之间的损失函数,你会发现只有 y i y_i yi y ^ i \hat y_i y^i是相等时,loss才为0,否则loss就是为一个正数。而且,概率相差越大,loss就越大。这个神奇的度量概率距离的方式称为交叉熵。

  • categorical_crossentropy分类交叉熵函数: l o s s = − ∑ i = 1 n y ^ i 1 l o g y i 1 + y ^ i 2 l o g y i 2 + ⋯ + y ^ i m l o g y i m loss = -\sum_{i=1}^n \hat y_{i1} log y_{i1} + \hat y_{i2} log y_{i2} + \dots + \hat y_{im} log y_{im} loss=i=1ny^i1logyi1+y^i2logyi2++y^imlogyim n是样本数,m是分类数,注意,这是一个多输出的loss的函数
    ,所以它的loss计算也是多个的。 ∂ l o s s ∂ y i 1 = − ∑ i = 1 n y ^ i 1 y i 1 \frac {\partial loss}{\partial y_{i1}} = -\sum_{i=1}^n \frac{\hat y_{i1}}{y_{i1}} yi1loss=i=1nyi1y^i1 ∂ l o s s ∂ y i 2 = − ∑ i = 1 n y ^ i 2 y i 2 \frac {\partial loss}{\partial y_{i2}} = -\sum_{i=1}^n \frac{\hat y_{i2}}{y_{i2}} yi2loss=i=1nyi2y^i2 … \dots ∂ l o s s ∂ y i m = − ∑ i = 1 n y ^ i m y i m \frac {\partial loss}{\partial y_{im}} = -\sum_{i=1}^n \frac{\hat y_{im}}{y_{im}} yimloss=i=1nyimy^im
    一般来说,如果最后一层接上softmax作为分类概率输出时,都会用categorical_crossentropy作为损失函数,所以框架中会进行优化,对这两条公式的梯度合起来计算,发现合起来以后,loss计算就会超简单。
    所以稍微介绍一下softmax激活函数:
    S i = e V i ∑ j e V j S_i = \frac{e^{V_i}}{\sum_j{e^{V_j}} } Si=jeVjeVisoftmax激活函数,就是将输入数据取指数,然后归一化后,谁的数值较大谁的概率就越大。这解决了输出数据中概率和必需为1。而且输出概率值与输入值之间成正相关的问题。更重要的是它的求导形式很简单:
    i和j相同时: ∂ S i ∂ V i = S i ( 1 − S i ) \frac{\partial S_i}{\partial V_i} = S_i(1-S_i) ViSi=Si(1Si)i和j不同时: ∂ S i ∂ V j = − S i S j \frac{\partial S_i}{\partial V_j} = -S_iS_j VjSi=SiSj尽管看起来也很复杂,但是和交叉熵结合在一起,就比较简单了。具体推导有时间再看~

  • 32
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值