损失函数中加入正则化参数调整参数:权重矩阵的影响(去掉权重矩阵的负面影响)
其中兰木达 越大表明去变异,是矩阵平缓,
本文将通过一个例子来理解什么是损失函数:
从图中我们可以发现,这组特定的权值W效果并不好,给了猫一个非常低的得分。我们将用损失函数(有时也称为成本函数或目标函数)来衡量我们对结果的不满意程度。直观地说,如果我们在分类培训数据方面做得不好,损失就会很大;如果我们做得好,损失就会很小。 这里有几种方式来定义损失函数: MSE(Mean Squared Error):
MSE在线性回归问题中比较好用。
Multiclass Support Vector Machine(SVM): 这个函数可以保证每个图像对于正确类的打分高于不正确类的打分 Δ 。对于不同的样本,第i个样本的损失函数定义为:
举一个例子来理解这个函数时怎样工作的。假定我们拥有三个类别并且得到了三个分数s = [13, -7, 11],并且第一个类别是正确的类别。与此同时,我们假定一个上述定义的变量Δ(一个超参) = 10。代入上述损失函数,我们得到两项:
不难算出第一项得到了一个0,而第二项得到了8。由于正确的类分数(13)至少比错误的类分数(-7)大10,所以这对组合的损失为零。实际上差值为20,远远大于10,但SVM只关心差值至少为10;任何超出边界的额外差异都将被最大操作限制在零处。第二项计算[11 - 13 + 10]得到8。也就是说,即使正确的班级的分数比错误的班级(13 > 11)高,也不会比期望的分数高10。差额只有2,这就是为什么损失是8(即差额要多高才能达到差额)。总之,SVM损失函数要正确的分数类易被比错误的类分数由至少Δ。如果不是这样,我们将积累损失。 对于神经网络来说,我们利用一个线性方程式获取分数:
所以说,我们可以重新定义损失函数格式:
其中,wj为矩阵W对的第j个行向量(第j个类别对应的向量)变形成为的列向量。最后通过一张图,更加直观理解上式:
将所有样本损失函数整合成一个整体的损失函数:
Softmax: 将会在下文中介绍。
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合。
L2正则化可以防止模型过拟合(overfitting)
L2正则化可以直观理解为它对于大数值的权重向量进行严厉惩罚,倾向于更加分散的权重向量。由于输入和权重之间的乘法操作,这样就有一个优良的特性:使网络更倾向于使用所有输入特征,而不是严重依赖输入特征中某些小部分特征。L2惩罚倾向于更小更分散的权重向量,这就会鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度,这样做可以提高模型的范化能力,降低过拟合的风险。
下面是正则化常用的几种方式: (1)L2正则化: L2正则化是正则化中最普通的一种方式。它通过惩罚所有参数的平方项来实现,也就是在损失函数中添加一项1/2 λ w²,这里采用1/2是为了在应用梯度下降时,针对于每一个w是λw 而不是2λw。L2正则化有一个吸引人的特性,即鼓励网络中所有的输入都有一部分参加,而不是大量使用某些输入。最后请注意,在梯度下降法参数更新,使用L2正规化最终意味着每个权重是线性衰退:W + = - λ* W直到0。 (2)L1正则化 L1正则化增加的项是λ|w|,我们有时候可以将L1与L2同时使用。L1有一个非常优秀的性质,它能够在最优化过程会走光,令权重向量变得稀疏。换句话说,L1最终可以使最重要的一个稀疏子集输入,而无视噪声。相比之下,L2正则化的最终权向量通常是分散的、小的数字。在实践中,如果您不关心明确的特征选择,L2正则化的性能优于L1。 (3)Max norm constraints 对每个神经元的权向量的大小施加一个绝对上界,并使用梯度下降来施加约束。在实践中,我们正常更新参数w,不过强制参数w在啊某一个范围内,它的特性是,即使在学习率设置得太高时,网络也不会“爆炸”,因为更新总是有限的。 (4)Dropout 一种防止神经网络过拟合的简单方法(p,它补充了其他方法(L1、L2、maxnorm)。当训练时,通过保持一个神经元以一定的概率p(超参数)激活,或者将其设置为0。学习难度较高,具体实现可以参考Dropout: A Simple Way to Prevent Neural Networks
假定我们找到了一个对于所有类别损失函数都为0的权重矩阵,这时可能出现一种问题,权重矩阵并不是严格唯一的,可能会出现很多W都使得样本分类正确。 这里首先要明确一件事,如果一些参数W正确分类所有的例子,那么任何这些参数乘以λ(λ > 1)因为这个变换均匀延伸所有分数大小。例如,如果一个正确的类和一个最接近的不正确的类之间的分数差是15,那么将W的所有元素乘以2将得到新的差值30。 我们如何找到唯一一个确定的权重矩阵W,这里就需要给损失函数添加正则化损失函数R(W)
完整的损失函数表达式为:
整体扩展为:
其中N是训练样本的数量而λ为超参数。正则化惩罚有很多优秀的性质,最吸引人的特性是惩罚较大的权重有助于提高泛化能力,这意味着没有任何输入维度可以单独对分数产生非常大的影响。 假设我们有一个输入向量x=[1,1,1,1],两个权向量w1=[1,0,0,0], w2=[0.25,0.25,0.25,0.25]。然后wT1x=wT2x=1所以两个权向量得到相同的点积,但是w1的L2损失是1。而w2的L2损失是0.25。因此,根据L2惩罚,权向量w2是首选,因为它实现了更低的正则化损失。直观上,这是因为w2中的权重更小,更分散。由于L2惩罚倾向于更小和更分散的权重向量,因此鼓励最终分类器将所有的输入维都考虑到,而不是只重点考虑几个输入维。这对于提高分类器泛化性能,防止过拟合有着重要的作用。
是一种常用的防止机器学习模型过拟合的技术。过拟合是指模型在训练数据上表现得太好,以至于它不能很好地推广到未见过的数据上。正则化通过引入一个惩罚项来限制模型的复杂度,使得模型在尽可能减小训练误差的同时,也要尽量保持模型的简单。 常见的正则化方法有L1正则化和L2正则化: 1. L1正则化(Lasso回归):L1正则化将模型的参数权重的绝对值之和作为惩罚项。这意味着模型的某些参数可能会变为零,从而使得模型更稀疏,也就是说模型会依赖于更少的特征。这也使得L1正则化具有特征选择的功能。 2. L2正则化(岭回归):L2正则化将模型的参数权重的平方和作为惩罚项。这使得模型的参数会被适度地缩小,但是不太可能变为零。这种方法可以防止模型的参数值过大,导致模型过于敏感。 在损失函数中引入这些正则项,模型在训练时不仅要最小化原始的损失函数(如均方误差、交叉熵等),还要尽量使得模型的复杂度(即参数的大小)保持较小。这种权衡使得模型在减小训练误差的同时,也要考虑模型的复杂度,从而防止过拟合。
正则化的选择和调整是一个重要的调参过程,选择合适的正则化方法和参数可以显著地提高模型的泛化性能。
假设我们有一个线性回归模型,其损失函数是均方误差(Mean Squared Error,MSE),表示为: L(θ) = Σ(yi - θ*xi)^2 其中 θ 是模型的参数,xi 是输入,yi 是真实输出,Σ 是对所有训练样本的求和。 现在我们要在这个损失函数中引入一个正则化项。对于L2正则化(岭回归),我们添加的是参数的平方和;对于L1正则化(Lasso回归),我们添加的是参数的绝对值。我们将正则化参数表示为 λ,那么带有L2正则化的损失函数可以表示为: L(θ) = Σ(yi - θxi)^2 + λΣθ^2 带有L1正则化的损失函数可以表示为: L(θ) = Σ(yi - θxi)^2 + λΣ|θ| 现在我们的目标是最小化这个新的损失函数。这意味着我们不仅要使预测值与真实值之间的差异尽可能小,也要使模型的参数尽可能小。因为如果模型的参数较大,那么正则化项就会较大,损失函数就会较大。 这就是正则化如何在数学上鼓励模型保持较小的参数的原理。通过选择合适的正则化参数 λ,我们可以控制模型对拟合数据和保持参数小之间的取舍,从而防止过拟合。 需要注意的是,虽然正则化可以帮助防止过拟合,但如果正则化参数 λ 设置得过大,可能会导致模型过于简单,无法捕捉到数据的复杂性,这就是欠拟合。所以,选择合适的正则化参数是一个重要的任务,通常需要通过交叉验证或其他方式进行。
在机器学习中,模型的参数决定了模型的复杂性和拟合能力。参数的数量和大小都会影响模型的复杂性。 考虑一个线性模型的例子,该模型的形式为y = θ0 + θ1x1 + θ2x2 + ... + θn*xn。其中,θi是模型的参数,xi是输入特征。模型的输出y是输入特征和参数的线性组合。
如果参数θi的绝对值很大,那么对应的特征xi就会对模型的输出产生很大的影响。换句话说,模型对这个特征非常“敏感”。这可能会导致模型过于复杂,对训练数据中的噪声或异常值过度敏感,导致过拟合。 相反,如果参数θi的绝对值较小,那么对应的特征xi对模型的输出的影响就较小。这意味着模型对这个特征不那么敏感,模型的复杂性相对较低。 正则化就是通过添加一个与参数大小相关的惩罚项来鼓励模型保持较小的参数。这可以防止模型过于依赖某个或某些特征,使得模型对输入数据的各个方面都有适当的关注,从而提高模型的泛化能力。
Softmax:如果你曾经听说过二分逻辑回归分类器,那么Softmax分类器是它的一种推广,以一个多类分类器。与支持向量机将输出f(xi,W)作为每个类的得分(未校准且可能难以解释)不同,Softmax分类器提供了更直观的输出(归一化类概率)。首先来看一下损失函数的形式:
Softmax分类器目标是最小化待测类的概率与它真正属性之间的交叉熵。其中,交叉熵希望预测分布全部集中在正确答案上。先观察下方表达式:
可以将其解释为,在给定的图像xi和由w参数化的情况下,分配给正确标签yi的(标准化)概率。要了解这一点,请记住Softmax分类器将输出向量f中的得分解释为非标准化的 log 概率。因此,将这些量取幂就得到了(未标准化的)概率,然后进行除法,从而使概率之和为1。 从概率角度来解释,我们最小化正确类的负对数似然,这可以解释为执行最大似然估计(MLE),具体内容见第五模块——极大似然估计。这种方法有一个很好的特点就是我们能够 解释在完整损失函数中的正则化项R(W)来自一个高斯先验权重矩阵W,在这个权重矩阵中,我们正在执行最大后验(MAP)估计,这里选用log函数的原理是交叉熵,想要深究的读者可以参考(交叉熵在机器学习中的作用),本文在下一模块进行简要介绍。
如果你想要去实现Softmax函数,就要注意代码编写过程中,由于指数的存在,分子和分母都有可能是非常大的数字。大数运算是不稳定的,这里引入参数C来解决这一问题,将表达式作如下变换:
我们可以自由选择c的值,这不会改变任何结果,但是我们可以使用这个值来提高计算的数值稳定性。如果选择函数结果中的最大值为C(最常用),通过代码可以很好理解:
f = np.array([123, 456, 789])
p = np.exp(f) / np.sum(np.exp(f)) # 出现数值不稳定问题
# 将最大值转换为0
f -= np.max(f) # f ——> [-666, -333, 0]
p = np.exp(f) / np.sum(np.exp(f)) # 结果不变,且过程安全
下面通过一张图,更加直观理解两种分类器的区别:
SVM: 将这些分数解释为类分数,其损失函数鼓励正确的类(蓝色表示的是类2)获得比其他类分数高的分数。 Softmax分类器: 将每个类的得分解释为(非标准化的)log概率,然后鼓励正确类的(标准化的)log概率高(相当于其负数低)。 与支持向量机计算未经校准和不容易解释所有类的分数不同,Softmax分类器允许我们计算所有标签的“概率”。这里概率打引号是因为最终的概率大小还收到损失函数中正则化参数λ的影响。如果正则化强度λ是高,权重W的惩罚也会增加,这将导致权重变小,使概率分布也更加分散。
(摘自交叉熵在机器学习中的作用) 简单概括为:将神经网络分类问题概括为单分类问题和多分类问题:(举例) 单分类问题:继续沿用文章开头例子,假设目标类型为三个,分别为猫,狗和船。假设现在有一个猫的样本,则对应的预测值为[0(狗),1(猫), 0(船)],假设通过上述计算获取的P为[0.3, 0.6,0.1],已知交叉熵公式为:
则可以根据公式求得损失函数(交叉熵):
多分类问题: 继续沿用文章开头例子,假设目标类型为三个,分别为猫,狗和船。假设现在有一个猫的样本,则对应的预测值为[0(狗),1(猫), 0(船)],假设通过上述计算获取的P为[0.3, 0.6,0.1],和单分类问题的标签不同,多分类的标签是n-hot。 比如一张图中可以既有一只狗,又有一只猫,所以是一个多分类问题 。 这里的Pred不再是通过softmax计算的了,这里采用的是sigmoid。将每一个节点的输出归一化到[0,1]之间。所有Pred值的和也不再为1。换句话说,就是每一个Label都是独立分布的,相互之间没有影响。所以交叉熵在这里是单独对每一个节点进行计算,每一个节点只有两种可能值,所以是一个二项分布。前面说过对于二项分布这种特殊的分布,熵的计算可以进行简化。 同样的,交叉熵的计算也可以简化,即 :
单个样本的loss即为loss=loss猫+loss狗+loss船
(参考文章) 声明:这里直接复制了部分作者原文内容,目的是与本文做对比,给读者更清晰的理解。
在实际问题中,我们能获得的数据可能只有有限数目的样本数据,而先验概率和类条件概率(各类的总体分布)都是未知的。根据仅有的样本数据进行分类时,一种可行的办法是我们需要先对先验概率和类条件概率进行估计。
先验概率的估计较简单,因为对于神经网络来说每个样本所属的自然状态都是已知的(有监督学习)。类条件概率的估计(非常难),原因包括:概率密度函数包含了一个随机变量的全部信息,而样本数据可能不多;特征向量x的维度可能很大等等。
极大似然估计就是一种参数估计方法。当然了,概率密度函数的选取很重要,模型正确,在样本区域无穷时,我们会得到较准确的估计值。最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
在神经网络中 ,极大似然估计求得的目标参数值是权重矩阵W,类条件概率为(与交叉熵对应起来):
求解极大似然函数步骤:
2、实际中为了便于分析,定义了对数似然函数(Softmax的损失函数(交叉熵)):
由于Li都后半部分是个定值,所以我们只需要最优化Li = -fyi。 3、未知参数有多个(θ为向量) 则θ可表示为具有S个分量的未知向量:
记梯度算子:
若似然函数满足连续可导的条件,则最大似然估计量就是如下方程的解。
方程的解只是一个估计值,只有在样本数趋于无限多的时候,它才会接近于真实值。
对于神经网络来说,极大似然估计求梯度算子也就是损失函数的梯度下降最优化。具体内容本文不重点讨论,可以参考我的神经网络学习与总结。最后通过神经网络计算样本后验概率进行预测分类。
本文主要通过介绍两种最常见的分类器SVM与Softmax完成了对于神经网络中损失函数的讲解,从中我们发现损失函数的定义方式是,对训练数据进行良好的预测就等于损失很小。 支持向量机和Softmax的性能差异通常很小,不同的人对哪种分类器工作得更好会有不同的看法。Softmax分类器从不完全满意它生成的分数:正确的类总是有更高的概率,而错误的类总是有更低的概率,损失总是更好。然而,一旦边界得到满足,SVM就会很高兴,而且它不会对超出这个限制的准确分数进行微观管理。 除此之外还介绍了正则化常用的一些公式,以及最大似然估计的具体步骤。损失函数学习结束之后,便是最优化问题了,神经网络中最优化问题常采用梯度下降法来实现