zoukankan      html  css  js  c++  java
  • loss function

    什么是loss?

      loss: loss是我们用来对模型满意程度的指标。loss设计的原则是:模型越好loss越低,模型越差loss越高,但也有过拟合的情况。  
      loss function: 在分类问题中,输入样本经过含权重矩阵θ的模型后会得出关于各个类别的分值,如何通过分值与样本的标签来得到我们对模型的满意程度就是Loss function的主要工作了。训练过程中通过调整参数矩阵θ来降低loss,使用模型更优。多分类问题中常用Softmax分类器与多类SVM分类器。 

    Softmax分类器

    Softmax与logistict回归

      Softmax分类器将类别分值用负对数转换为概率来表示,相对于multiclass-SVM的输出更为直观。
      Softmax分类器的损失函数为交叉熵损失 (cross-entropy loss),即通常所说的Softmax loss。logistic回归是用来解决二分类问题的,其损失函数与Softmax与有很相似的形式。

      Softmax的损失函数:  //1表示指示函数,即真值返回1,否则返回0

         egin{align} J( heta) = - frac{1}{m} left[ sum_{i=1}^{m} sum_{j=1}^{k} 1left{y^{(i)} = j ight} log frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)} }} ight] end{align}

      logistic回归的损失函数:  

          
    egin{align}
    J( heta) =
    -frac{1}{m} left[ sum_{i=1}^m y^{(i)} log h_ heta(x^{(i)}) + (1-y^{(i)}) log (1-h_ heta(x^{(i)})) ight]
    end{align}

      可以看出,将(1)式中k=2即可得到(2)式

      Softmax对样本x的分类结果(假设函数):

    egin{align}
    h_ heta(x^{(i)}) =
    egin{bmatrix}
    p(y^{(i)} = 1 | x^{(i)}; heta)
    p(y^{(i)} = 2 | x^{(i)}; heta)
    vdots
    p(y^{(i)} = k | x^{(i)}; heta)
    end{bmatrix}

    frac{1}{ sum_{j=1}^{k}{e^{ heta_j^T x^{(i)} }} }
    egin{bmatrix}
    e^{ heta_1^T x^{(i)} }
    e^{ heta_2^T x^{(i)} }
    vdots
    e^{ heta_k^T x^{(i)} }
    end{bmatrix}
    end{align}
      

      logistic回归的分类结果(假设函数):

          egin{align}
    h_ heta(x) = frac{1}{1+exp(- heta^Tx)},
    end{align}   

      但(3)式与(4)式有什么关系呢?

      原来Softmax预测出每个类别的概率具有“参数冗余”的特性。“参数冗余”是指:若矩阵θ为代价函数的极小值点,那么θ-Ψ也为代价函数的极小值点。(ψ为向量,并且矩阵-向量=矩阵每个列向量-向量)

              
    egin{align}
    p(y^{(i)} = j | x^{(i)} ; heta)
    &= frac{e^{( heta_j-psi)^T x^{(i)}}}{sum_{l=1}^k e^{ ( heta_l-psi)^T x^{(i)}}}
    &= frac{e^{ heta_j^T x^{(i)}} e^{-psi^Tx^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}} e^{-psi^Tx^{(i)}}}
    &= frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}}}.
    end{align}

       这时,令ψ=θ1、k=2,可得到(3) 等价于(4)的结论

       所以,Softmax其实是logistic regression将二分类问题推广到多分类问题的一般形式。

    但是Softmax分类器与k个logistic回归分类器还是有区别的:

       通常,当k个类别之间互斥时使用k=k的Softmax分类器,当k个类别之间与交集时使用k个logistic回归分类器。 

    Softmax分类器为什么要正则化损失项?

      求解loss最小值时往往不是简单利用“参数冗余”将θ1=0,而是加入权重衰减(正则化损失)来惩罚过大的参数值。加入正则化损失后的代价函数为:
       

    egin{align} otag J( heta) = - frac{1}{m} left[ sum_{i=1}^{m} sum_{j=1}^{k} 1left{y^{(i)} = j ight} log frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)} }} ight] + frac{lambda}{2} sum_{i=1}^k sum_{j=0}^n heta_{ij}^2 end{align}

      其中,第二项为正则化损失荐,加入该项的加一个好处是将代价函数变为一个凸函数。

    简单实例

      在一个三类别模型预测的过程中,假设输出的分值向量为[1, -2, 0]

      则分类计算过过程: [1,-2, 0] => [e1, e-2, e0]=[2.71, 0.14, 1]//熵值化 => [0.7, 0.04, 0.26] //归一化为概率

    算法实践

      后续补充

    Multiclass SVM

      基本思想:正常确类别的分值比错误类别的分值高出一个间距(margin)
      Multiclass SVM分类器的损失函数为hinge loss,也称为SVM loss。

    hinge loss

    @hinge loss | center

    算法实践

    已知

    1. 在一个三类别模型预测的过程中,假设输出的分值向量为[13, -7, 11]
    2. 我们知道标签为1,即第一个类别为正确类别
    3. (Delta=10)

    计算过程

    因为(y_{i})=1, 所以(j只能=2、3)

    [L_{2}=max(0,-7-13+10)=0 ]

    [L_{3}=max(0,11-13+10)=8 ]

    所以,

    [L_{i}=0+8=8 ]

    从上面的计算过程可以看出SVM的损失函数想要正确分类类别(y_{i})的分数比不正确类别分数高,而且至少要高(Delta)。如果不满足这点,就开始计算损失值。

    正则化损失

    提高模型泛化能力,避免过拟合。
    从公式上来看:

    • 若两个等比例的权重,权重的范数越小越好
    • 若两个权重范数相等,权重的系数大小分布越分均等越好
      直观来看:
      从直观上来看,这是因为w_2的权重值更小且更分散。既然L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。

    MutiSVM VS SVM

    未完待续

    补充实验

    reference:

    cs231n

    cs231n

    softmax

    小马奔腾

  • 相关阅读:
    【foj 1746 A Water Problem】
    【hdu 1049 Climbing Worm】
    【hdu 1070 Milks】
    【B ECJTU_ACM 11级队员2012年暑假训练赛(2)】
    『C Free 5.0 注册码共享』
    【E ECJTU_ACM 11级队员2012年暑假训练赛(2)】
    【J ECJTU_ACM 11级队员2012年暑假训练赛(2)】
    【H ECJTU_ACM 11级队员2012年暑假训练赛(2)】
    【C ECJTU_ACM 11级队员2012年暑假训练赛(2)】
    『为黑客正名』
  • 原文地址:https://www.cnblogs.com/fariver/p/6204261.html
Copyright © 2011-2022 走看看