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

loss:

  • MSE均方误差损失函数:是最经典也是最简单的损失函数,几乎万能,但是不太准确。

  • binary_crossentropy二分类交叉熵损失函数:配合sigmoid输出层用于二分类问题

  • categorical_crossentropy多分类交叉熵损失函数,配合softmax输出层用于多分类问题

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

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

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

常用的损失函数有均方误差: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=1∑n​(yi​−y^​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) ∂y∂loss​=2i=1∑n​(yi​−y^​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=1∑n​y​i​logyi​+(1−y​i​)log(1−y^​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} ∂y∂loss​=−i=1∑n​yi​y​i​​−1−yi​1−y​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=1∑n​y​i1​logyi1​+y​i2​logyi2​+⋯+y^​im​logyim​ 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}} ∂yi1​∂loss​=−i=1∑n​yi1​y^​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}} ∂yi2​∂loss​=−i=1∑n​yi2​y^​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}} ∂yim​∂loss​=−i=1∑n​yim​y^​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​=∑j​eVj​eVi​​softmax激活函数,就是将输入数据取指数,然后归一化后,谁的数值较大谁的概率就越大。这解决了输出数据中概率和必需为1。而且输出概率值与输入值之间成正相关的问题。更重要的是它的求导形式很简单:
i和j相同时: ∂ S i ∂ V i = S i ( 1 − S i ) \frac{\partial S_i}{\partial V_i} = S_i(1-S_i) ∂Vi​∂Si​​=Si​(1−Si​)i和j不同时: ∂ S i ∂ V j = − S i S j \frac{\partial S_i}{\partial V_j} = -S_iS_j ∂Vj​∂Si​​=−Si​Sj​尽管看起来也很复杂,但是和交叉熵结合在一起,就比较简单了。具体推导有时间再看~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值