机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。
机器学习算法主要解决分类问题和回归问题两大类,因此损失函数主要也可以分成这两大类别。
损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。
- Hinge 损失函数(分类损失函数)
L ( y , f ( x ) ) = m a x ( 0 , 1 − y f ( x ) ) L(y,f(x)) = max(0,1-yf(x)) L(y,f(x))=max(0,1−yf(x))
这个函数对应SVM,实现了软间隔分类,对于SVM如果分割超平面距离支持向量的距离小于1,则Hinge loss大于0,且就算分离超平面满足最大间隔,Hinge loss仍大于0。因为HingeLoss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。
- 交叉熵损失函数 (Cross-entropy loss function)(分类损失函数)
二 分 类 : L = − 1 n ∑ i [ y i ∗ l o g ( p i ) − ( 1 − y i ) l o g ∗ ( 1 − p i ) ] 二分类: L = -\frac{1}{n}\sum_i[y_i*log(p_i)-(1-y_i)log*(1-p_i)] 二分类:L=−n1i∑[yi∗log(pi)−(1−yi)log∗(1−pi)]
多 分 类 : L = − 1 n ∑ i ∑ c = 1 M y i c ∗ l o g ( p i c ) 多分类: L = -\frac{1}{n}\sum_i\sum_{c=1}^My_{ic}*log(p_{ic}) 多分类:L=−n1i∑c=1∑Myic∗log(pic)
y
i
c
y_{ic}
yic:指示变量(0或1),如果该类别和样本i的类别相同就是1,否则是0;
p
i
c
p_{ic}
pic:对于观测样本i属于类别
C
C
C的预测概率。
交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。
- log对数损失函数
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) = − 1 N ∑ i = 1 N ∑ j = 1 M y i j l o g ( p i j ) L(Y,P(Y|X)) = -logP(Y|X)=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^My_{ij}log(p_{ij}) L(Y,P(Y∣X))=−logP(Y∣X)=−N1i=1∑Nj=1∑Myijlog(pij)
log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。相比于hinge loss对噪声更敏感,逻辑回归的损失函数就是log对数损失函数
参考博客
如何选择合适的损失函数,请看…
损失函数 - 交叉熵损失函数
常见的损失函数(loss function)总结