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

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

  • 常用的损失函数有均方误差:MSE

    loss=i=1n(yiy^i)2 l o s s = ∑ i = 1 n ( y i − y ^ i ) 2
    lossy=2i=1n(yiy^i) ∂ l o s s ∂ y = 2 ∑ i = 1 n ( y i − y ^ i )

    是最经典也是最简单的损失函数,几乎万能,但是不太准确。

  • binary_crossentropy交叉熵损失函数,一般用于二分类:

    loss=i=1ny^ilogyi+(1y^i)log(1y^i) l o s s = − ∑ i = 1 n y ^ i l o g y i + ( 1 − y ^ i ) l o g ( 1 − y ^ i )
    lossy=i=1ny^iyi1y^i1yi ∂ l o s s ∂ y = − ∑ i = 1 n y ^ i y i − 1 − y ^ i 1 − y i

    这个是针对概率之间的损失函数,你会发现只有 yi y i y^i y ^ i 是相等时,loss才为0,否则loss就是为一个正数。而且,概率相差越大,loss就越大。这个神奇的度量概率距离的方式称为交叉熵。

  • categorical_crossentropy分类交叉熵函数:

    loss=i=1ny^i1logyi1+y^i2logyi2++y^imlogyim 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
    n是样本数,m是分类数,注意,这是一个多输出的loss的函数
    ,所以它的loss计算也是多个的。
    lossyi1=i=1ny^i1yi1 ∂ l o s s ∂ y i 1 = − ∑ i = 1 n y ^ i 1 y i 1
    lossyi2=i=1ny^i2yi2 ∂ l o s s ∂ y i 2 = − ∑ i = 1 n y ^ i 2 y i 2
    lossyim=i=1ny^imyim ∂ l o s s ∂ y i m = − ∑ i = 1 n y ^ i m y i m

    一般来说,如果最后一层接上softmax作为分类概率输出时,都会用categorical_crossentropy作为损失函数,所以框架中会进行优化,对这两条公式的梯度合起来计算,发现合起来以后,loss计算就会超简单。
    所以稍微介绍一下softmax激活函数:
    Si=eVijeVj S i = e V i ∑ j e V j
    softmax激活函数,就是将输入数据取指数,然后归一化后,谁的数值较大谁的概率就越大。这解决了输出数据中概率和必需为1。而且输出概率值与输入值之间成正相关的问题。更重要的是它的求导形式很简单:
    i和j相同时:
    SiVi=Si(1Si) ∂ S i ∂ V i = S i ( 1 − S i )
    i和j不同时:
    SiVj=SiSj ∂ S i ∂ V j = − S i S j
    尽管看起来也很复杂,但是和交叉熵结合在一起,就比较简单了。具体推导有时间再看~

你可能感兴趣的:(深度学习之点滴)