损失函数总结
损失函数用来量化模型预测与真实标签之间的差异。
损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。
注:y:样本的真实标签 ,f(x;
损失函数简介
(1)0-1损失函数:
优点:最直观,表示训练集上的错误率。
缺点:不连续且导数为0 ,难以优化。
(2)平方差损失函数
优点:可导,可优化。
缺点:不适合用于分类任务。
(3)交叉熵损失函数(SoftMax损失函数)
优点:适用于分类问题,常与SoftMax函数一起使用。
原理详解:
信息量:信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,也就是说衡量信息量的大小就是看这个信息消除不确定性的程度。
“太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。
”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。
根据上述可总结如下:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大
设某一事件发生的概率为P(xi),其信息量表示为:
信息熵也被称为熵,用来表示所有信息量的期望。期望是试验中每次可能结果的概率乘以其结果的总和,所以信息量的熵表示为:
相对熵,对于同一个随机变量X有两个单独的概率分布P(x)和Q(x),则我们可以使用KL散度来衡量这两个概率分布之间的差异。
其中P(x)来表示样本的真实分布,Q(x)来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器),x1,x2,x3分别代表猫,狗,马,例如一张猫的图片真实分布P(X)=[1,0,0], 预测分布Q(X)=[0.7,0.2,0.1],计算KL散度:
KL散度越小,表示P(x)与Q(x)的分布更加接近,可以通过反复训练Q(x)来使Q(x)的分布逼近P(x)。
交叉熵:首先将KL散度公式拆开:
(p(x))表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵
则交叉熵公式表示为:
因为输入数据与标签常常已经确定,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布P(x)与预测概率分布Q(x)之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。
(4)三元组损失
输入是一个三元组<a, p, n> 。其中a:anchor 原点,p:positive,与 a 同一类别的样本,n:negative,与 a 不同类别的样本
目的:具有相同标签两样本的 embedding 在 embedding 空间中靠得很近。具有不同标签两样本的 embedding 相距很远。
原理:在embedding空间中,三元组<a, p, n>满足以下关系:
最小化L,即 d(a, p) -> 0, d(a, n)≥d(a, q)+margin
注:欧式距离,假设X和Y都是一个n维的向量,即
则欧氏距离:
三元组分为以下三个类别:如下图所示
easy triplets:可以使loss为0的三元组,即容易分辨的三元组。
hard triplets:d(a, n)<d(a, p),即一定会误识别的三元组。
semi-hard triplets:d(a, p)<d(a, n)<d(a, p)+margin,即处在模糊区域的三元组。
正则化简介
正则化是为了防止模型的过拟合,降低模型的复杂度。
过拟合的时候,拟合函数的系数往往非常大,为什么呢?
因为拟合函数需要顾及每个样本点,在某些很小的区间,函数值的变化很剧烈,这就意味着函数在某些小区的导数的绝对值非常大,由于自变量可大可小,所以只有系数足够大,才能保证导数值很大。如下图所示:
(1) L1正则
L1常用来进行特征选择,因为L1正则化会使较多的参数为0。从而产生稀疏解,我们可以将0对应的特征遗弃,进而用来特征选择,一定程度上可以防止过拟合问题。
假设L(W)是未加正则化的损失函数,
则最终的损失函数为:
(2) L2正则
L2正则化是对于大数值的权重向量进行严厉惩罚。则最终的损失函数为:
(3)为什么L1会产生稀疏解?
对于一个参数Wi计算梯度,
L1梯度
L2梯度
从上面公式可以看出,当Wi小于1的时候,L2的惩罚项会越来越小,而L1的惩罚项还会很大,从而使参数为0,而L2很难。