deep learning中各种loss function大杂烩
学习深度学习也有一段时间啦,很多论文都会在 loss function 上做文章,说明还是非常最重要的呢,因此总结一下自己对不同的loss function的理解。
Softmax Loss
网络的全连接层出来后,会加上一个softmax层,softmax的输入是该样本在某个类下的得分(这个得分没有范围限制),经过softmax层之后,输出为该样本属于某个类的概率(范围是0到1)。softmax的计算公式如下,想要更直观地理解公式,可以随便带几个值进去试一试。
e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j \frac{e^{W_{y_{i}}^{T} \boldsymbol{x}_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} \boldsymbol{x}_{i}+b_{j}}} ∑j=1neWjTxi+bjeWyiTxi+byi
softmax loss 就是对计算出来的概率求损失函数值,其公式如下所示,预测错比预测对的损失要大,预测错得离谱比预测错得轻微的损失要大。举个例子,某样本的真是标签是类别3,即y=[0 0 1 0],模型1预测得到的softmax输出为[0.1 0.2 0.6 0.1],即得到正确的分类标签,对应的loss=-log(0.6);模型2预测得到的softmax输出为[0.2 0.4 0.3 0.1],即得到错误的分类标签,对应的loss=-log(0.3);模型3预测得到的softmax输出为[0.2 0.5 0.1 0.2],即得到错误的分类标签,对应的loss=-log(0.1);直观地感受一下,模型1分类正确,模型2、3分类错误,但模型3较模型2错误的更离谱,所以,我们得到的损失函数值排序为:loss=-log(0.6)<loss=-log(0.3)<loss=-log(0.1)。
L S = − ∑ i = 1 m log e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j \mathcal{L}_{S}=-\sum_{i=1}^{m} \log \frac{e^{W_{y_{i}}^{T} \boldsymbol{x}_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} \boldsymbol{x}_{i}+b_{j}}} LS=−