tensorflow 权重衰减减和L2正则化是一个意思吗

怎么理解在模型中使用L1+L2正则化? - 知乎355被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答548 条评论分享收藏感谢收起web.stanford.edu/~hastie/TALKS/enet_talk.pdf这个slides主要对比了lasso和e-net以及e-net在pca和svm的应用14添加评论分享收藏感谢收起人关注深度学习中的五大正则化方法和七大优化策略新闻动态 - 商业新知
深度学习中,卷积神经网络和循环神经网络等深度模型在各种复杂的任务中表现十分优秀。例如卷积神经网络(CNN)这种由生物启发而诞生的网络,它基于数学的卷积运算而能检测大量的图像特征,因此可用于解决多种图像视觉应用、目标分类和语音识别等问题。
但是,深层网络架构的学习要求大量数据,对计算能力的要求很高。神经元和参数之间的大量连接需要通过梯度下降及其变体以迭代的方式不断调整。此外,有些架构可能因为强大的表征力而产生测试数据过拟合等现象。这时我们可以使用正则化和优化技术来解决这两个问题。
梯度下降是一种优化技术,它通过最小化代价函数的误差而决定参数的最优值,进而提升网络的性能。尽管梯度下降是参数优化的自然选择,但它在处理高度非凸函数和搜索全局最小值时也存在很多局限性。
正则化技术令参数数量多于输入数据量的网络避免产生过拟合现象。正则化通过避免训练完美拟合数据样本的系数而有助于算法的泛化。为了防止过拟合,增加训练样本是一个好的解决方案。此外,还可使用数据增强、L1 正则化、L2 正则化、Dropout、DropConnect 和早停(Early stopping)法等。
增加输入数据、数据增强、早停、dropout 及其变体是深度神经网络中常用的调整方法。本论文作为之前文章《徒手实现 CNN:综述论文详解卷积网络的数学本质 》的补充,旨在介绍开发典型卷积神经网络框架时最常用的正则化和优化策略。
摘要:卷积神经网络(ConvNet)在一些复杂的机器学习任务中性能表现非常好。ConvNet 架构需要大量数据和参数,因此其学习过程需要消耗大量算力,向全局最小值的收敛过程较慢,容易掉入局部极小值的陷阱导致预测结果不好。在一些案例中,ConvNet 架构与数据产生过拟合,致使架构难以泛化至新样本。为了解决这些问题,近年来研究者开发了多种正则化和优化策略。此外,研究显示这些技术能够大幅提升网络性能,同时减少算力消耗。使用这些技术的前提是全面了解该技术提升网络表达能力的理论原理,本论文旨在介绍开发 ConvNet 架构最常用策略的理论概念和数学公式。
正则化技术
正则化技术是保证算法泛化能力的有效工具,因此算法正则化的研究成为机器学习中主要的研究主题 [9] [10]。此外,正则化还是训练参数数量大于训练数据集的深度学习模型的关键步骤。正则化可以避免算法过拟合,过拟合通常发生在算法学习的输入数据无法反应真实的分布且存在一些噪声的情况。过去数年,研究者提出和开发了多种适合机器学习算法的正则化方法,如数据增强、L2 正则化(权重衰减)、L1 正则化、Dropout、Drop Connect、随机池化和早停等。
除了泛化原因,奥卡姆剃刀原理和贝叶斯估计也都支持着正则化。根据奥卡姆剃刀原理,在所有可能选择的模型中,能很好解释已知数据,并且十分简单的模型才是较好的模型。而从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。
4.1 数据增强
数据增强是提升算法性能、满足深度学习模型对大量数据的需求的重要工具。数据增强通过向训练数据添加转换或扰动来人工增加训练数据集。数据增强技术如水平或垂直翻转图像、裁剪、色彩变换、扩展和旋转通常应用在视觉表象和图像分类中。
4.2 L1 和 L2 正则化
L1 和 L2 正则化是最常用的正则化方法。L1 正则化向目标函数添加正则化项,以减少参数的值总和;而 L2 正则化中,添加正则化项的目的在于减少参数平方的总和。根据之前的研究,L1 正则化中的很多参数向量是稀疏向量,因为很多模型导致参数趋近于 0,因此它常用于特征选择设置中。机器学习中最常用的正则化方法是对权重施加 L2 范数约束。
标准正则化代价函数如下:
其中正则化项 R(w) 是:
另一种惩罚权重的值总和的方法是 L1 正则化:
L1 正则化在零点不可微,因此权重以趋近于零的常数因子增长。很多神经网络在权重衰减公式中使用一阶步骤来解决非凸 L1 正则化问题 [19]。L1 范数的近似变体是:
另一个正则化方法是混合 L1 和 L2 正则化,即弹性网络罚项 [20]。
在《深度学习》一书中,参数范数惩罚 L2 正则化能让深度学习算法「感知」到具有较高方差的输入 x,因此与输出目标的协方差较小(相对增加方差)的特征权重将会收缩。而 L1 正则化会因为在方向 i 上 J(w; X, y) 对 J(w; X, y) hat 的贡献被抵消而使 w_i 的值变为 0(J(w; X, y) hat 为 J(w; X, y) 加上 L1 正则项)。此外,参数的范数正则化也可以作为约束条件。对于 L2 范数来说,权重会被约束在一个 L2 范数的球体中,而对于 L1 范数,权重将被限制在 L1 所确定的范围内。
4.3 Dropout
Bagging 是通过结合多个模型降低泛化误差的技术,主要的做法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。而 Dropout 可以被认为是集成了大量深层神经网络的 Bagging 方法,因此它提供了一种廉价的 Bagging 集成近似方法,能够训练和评估值数据数量的神经网络。
Dropout 指暂时丢弃一部分神经元及其连接。随机丢弃神经元可以防止过拟合,同时指数级、高效地连接不同网络架构。神经元被丢弃的概率为 1 - p,减少神经元之间的共适应。隐藏层通常以 0.5 的概率丢弃神经元。使用完整网络(每个节点的输出权重为 p)对所有 2^n 个 dropout 神经元的样本平均值进行近似计算。Dropout 显着降低了过拟合,同时通过避免在训练数据上的训练节点提高了算法的学习速度。
4.4 Drop Connect
Drop Connect 是另一种减少算法过拟合的正则化策略,是 Dropout 的一般化。在 Drop Connect 的过程中需要将网络架构权重的一个随机选择子集设置为零,取代了在 Dropout 中对每个层随机选择激活函数的子集设置为零的做法。由于每个单元接收来自过去层单元的随机子集的输入,Drop Connect 和 Dropout 都可以获得有限的泛化性能 [22]。Drop Connect 和 Dropout 相似的地方在于它涉及在模型中引入稀疏性,不同之处在于它引入的是权重的稀疏性而不是层的输出向量的稀疏性。
4.5 早停法
早停法可以限制模型最小化代价函数所需的训练迭代次数。早停法通常用于防止训练中过度表达的模型泛化性能差。如果迭代次数太少,算法容易欠拟合(方差较小,偏差较大),而迭代次数太多,算法容易过拟合(方差较大,偏差较小)。早停法通过确定迭代次数解决这个问题,不需要对特定值进行手动设置。
5.1 动量(Momentum)
随机梯度下降和小批量梯度下降是机器学习中最常见的优化技术,然而在大规模应用和复杂模型中,算法学习的效率是非常低的。而动量策略旨在加速学习过程,特别是在具有较高曲率的情况下。动量算法利用先前梯度的指数衰减滑动平均值在该方向上进行回退 [26]。该算法引入了变量 v 作为参数在参数空间中持续移动的速度向量,速度一般可以设置为负梯度的指数衰减滑动平均值。对于一个给定需要最小化的代价函数,动量可以表达为:
其中 α 为学习率,γ ∈ (0, 1] 为动量系数,v 是速度向量,θ是保持和速度向量方向相同的参数。一般来说,梯度下降算法下降的方向为局部最速的方向(数学上称为最速下降法),它的下降方向在每一个下降点一定与对应等高线的切线垂直,因此这也就导致了 GD 算法的锯齿现象。虽然 SGD 算法收敛较慢,但动量法是令梯度直接指向最优解的策略之一。在实践中,γ初始设置为 0.5,并在初始学习稳定后增加到 0.9。同样,α 一般也设置地非常小,因为梯度的量级通常是比较大的。
5.2 Nesterov 加速梯度(NAG)
Nesterov 加速梯度(NAG)和经典动量算法非常相似,它是一种一阶优化算法,但在梯度评估方面有所不同。在 NAG 中,梯度的评估是通过速度的实现而完成的。NAG 根据参数进行更新,和动量算法一样,不过 NAG 的收敛速度更好。在批量梯度下降中,与平滑的凸函数相比,NAG 的收敛速度超出 1/k 到 1/(k^2) [27]。但是,在 SGD 中,NAG 无法提高收敛速度。NAG 的更新如下:
动量系数设置为 0.9。经典的动量算法先计算当前梯度,再转向更新累积梯度。相反,在 NAG 中,先转向更新累积梯度,再进行校正。其结果是防止算法速度过快,且增加了反应性(responsiveness)。
5.3 Adagrad
Adagrad 亦称为自适应梯度(adaptive gradient),允许学习率基于参数进行调整,而不需要在学习过程中人为调整学习率。Adagrad 根据不常用的参数进行较大幅度的学习率更新,根据常用的参数进行较小幅度的学习率更新。因此,Adagrad 成了稀疏数据如图像识别和 NLP 的天然选择。然而 Adagrad 的较大问题在于,在某些案例中,学习率变得太小,学习率单调下降使得网络停止学习过程。在经典的动量算法和 Nesterov 中,加速梯度参数更新是对所有参数进行的,并且学习过程中的学习率保持不变。在 Adagrad 中,每次迭代中每个参数使用的都是不同的学习率。
5.4 AdaDelta
AdaDelta 使用最近历史梯度值缩放学习率,并且和经典的动量算法相似,累积历史的更新以加速学习。AdaDelta 可以有效地克服 Adagrad 学习率收敛至零的缺点。AdaDelta 将累积过去平方梯度的范围限制在固定窗口 w 内,取代了经典动量算法累积所有历史梯度值的做法。在时间 t 运行的平均值计算 E[g^2](t) 依赖于过去的平均值和当前的梯度值。因此,该平均值计算可以表示为:
其中 γ 和动量项相同。实践中,该值通常设为 0.9 左右。根据等式 3.13,SGD 更新的等式为:
根据等式 5.6,Adagrad 的更新为:
使用过往的平方梯度
替换对角矩阵 G_i,得到
其中分母是梯度的平方根误差,
替换先前更新规则中的学习率 α,得到
5.5 RMS prop
RMS prop 类似于 Adadelta 的较早的更新向量,
RMS prop 的更新规则如下:
在 RMS prop 中,学习率除以平方梯度的指数衰减平均值。
1.Adam 优化算法的基本机制
Adam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即 alpha)更新所有的权重,学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。
Adam 算法的提出者描述其为两种随机梯度下降扩展式的优点集合,即:
适应性梯度算法(AdaGrad)为每一个参数保留一个学习率以提升在稀疏梯度(即自然语言和计算机视觉问题)上的性能。
均方根传播(RMSProp)基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。这意味着算法在非稳态和在线问题上有很有优秀的性能。
Adam 算法同时获得了 AdaGrad 和 RMSProp 算法的优点。Adam 不仅如 RMSProp 算法那样基于一阶矩均值计算适应性参数学习率,它同时还充分利用了梯度的二阶矩均值(即有偏方差/uncentered variance)。具体来说,算法计算了梯度的指数移动均值(exponential moving average),超参数 beta1 和 beta2 控制了这些移动均值的衰减率。
移动均值的初始值和 beta1、beta2 值接近于 1(推荐值),因此矩估计的偏差接近于 0。该偏差通过首先计算带偏差的估计而后计算偏差修正后的估计而得到提升。
2.Adam算法
如上算法所述,在确定了参数α、β_1、β_2 和随机目标函数 f(θ) 之后,我们需要初始化参数向量、一阶矩向量、二阶矩向量和时间步。然后当参数 θ 没有收敛时,循环迭代地更新各个部分。即时间步 t 加 1、更新目标函数在该时间步上对参数θ所求的梯度、更新偏差的一阶矩估计和二阶原始矩估计,再计算偏差修正的一阶矩估计和偏差修正的二阶矩估计,然后再用以上计算出来的值更新模型的参数θ。
该算法更新梯度的指数移动均值(mt)和平方梯度(vt),而参数 β_1、β_2 ∈ [0, 1) 控制了这些移动均值(moving average)指数衰减率。移动均值本身使用梯度的一阶矩(均值)和二阶原始矩(有偏方差)进行估计。然而因为这些移动均值初始化为 0 向量,所以矩估计值会偏差向 0,特别是在初始时间步中和衰减率非常小(即β接近于 1)的情况下是这样的。但好消息是,初始化偏差很容易抵消,因此我们可以得到偏差修正(bias-corrected)的估计 m_t hat 和 v_t hat。
注意算法的效率可以通过改变计算顺序而得到提升,例如将伪代码最后三行循环语句替代为以下两个:
3. Adam 的更新规则
4. 初始化偏差修正
正如本论文第二部分算法所述,Adam 利用了初始化偏差修正项。本部分将由二阶矩估计推导出这一偏差修正项,一阶矩估计的推导完全是相似的。首先我们可以求得随机目标函数 f 的梯度,然后我们希望能使用平方梯度(squared gradient)的指数移动均值和衰减率 β_2 来估计它的二阶原始矩(有偏方差)。令 g1, …, gT 为时间步序列上的梯度,其中每个梯度都服从一个潜在的梯度分布 gt ~ p(gt)。现在我们初始化指数移动均值 v0=0(零向量),而指数移动均值在时间步 t 的更新可表示为: 其中 gt^2 表示 Hadamard 积 gt⊙gt,即对应元素之间的乘积。同样我们可以将其改写为在前面所有时间步上只包含梯度和衰减率的函数,即消去 v:
我们希望知道时间步 t 上指数移动均值的期望值 E[vt] 如何与真实的二阶矩
相关联,所以我们可以对这两个量之间的偏差进行修正。下面我们同时对表达式(1)的左边和右边去期望,即如下所示:
如果真实二阶矩 E[g^2] 是静态的(stationary),那么ζ = 0。否则 ζ 可以保留一个很小的值,这是因为我们应该选择指数衰减率 β1 以令指数移动均值分配很小的权重给梯度。所以初始化均值为零向量就造成了只留下了 (1 - βt^2 ) 项。我们因此在算法 1 中除以了ζ项以修正初始化偏差。
在稀疏矩阵中,为了获得一个可靠的二阶矩估计,我们需要选择一个很小的 β2 而在许多梯度上取均值。然而正好是这种小β2 值的情况导致了初始化偏差修正的缺乏,因此也就令初始化步长过大。
Nadam 是 NAG 和 Adam 优化器的结合 [28]。如果过往历史平方梯度的指数衰减平均值为 v_t,而过往历史梯度的指数衰减平均值为 m_t,那么经典动量更新规则如下:
我们需要修改动量规则以获得 Nadam 优化器。因此将上述公式扩展为:
NAG 的修改如下:
可以通过更新梯度 g_t 时(第一次)和更新参数 θ_t+1(第二次)修改 NAG,而不是两次更新动量。因此动量向量直接更新参数可以表述如下:
为了添加 NAG 到 Adam,需要使用当前的动态向量替换先前的动态向量。因此,通过 m hat 和 m_t 扩展上述公式,Adam 更新规则如下:
利用先前时间步动量向量的偏差修正估计更新 Nadam 优化器的规则,如下:
本页面由蜻报采用应用内搜索技术自动爬取,在未重新编辑原始内容的情况下对版式做了优化以提升阅读体验。文章来源:商业新知展开余下 区块链的商业资讯APP最新动态新闻动态 · 新闻动态 · 新闻动态 · 新闻动态 · 新闻动态 · 更多主题8 人关注关注工业4.0最新资讯8 人关注关注工业机器人发展动态6 人关注关注高端装备领域新动向6 人关注关注3D打印技术发展动态8 人关注关注无人机发展动态蜻报为您优选人机交互技术新动向,了解更多区块链商业资讯就上蜻报长按二维码下载蜻报APP区块链的商业资讯APP点击这里,将文章分享到自己的动态
机器学习中的正则化
1.1 竹篮打水一场空-过拟合
如果你发现在训练集上你的模型无比的完美,请晚一点再开心,因为很有可能你的模型已经过拟合了,那么这个模型就算废了。过拟合的直观解释是模型在训练集上性能完美,但在验证集或测试集上效果却不那么尽人意了。机器学习中一个核心任务就是防止模型过拟合,当模型的参数个数远大于数据集样本数量时,模型则可很好的“记忆”每一个训练数据的随机噪声而忘了去学习训练数据中通用的趋势,这就有可能导致过拟合,这个时候你可以简单的扩充数据集中的样本来降低过拟合的影响,但这需要一定的时间和人力成本,且效果可能不那么明显。那么如何用最小的成本来防止模型过拟合呢,即如何使训练错误率与测试错误率的差距尽可能小呢?答案就是本文主要讨论的内容:正则化。
1.2 正则化
我们都知道正则化可以降低泛化错误率,降低模型过拟合几率,但Why?How?下面我们来详细分析下正则化。正则化策略主要的目的是限制学习算法的能力,主要的方法可以是:限制网络模型的神经元数量、限制模型参数(连接权重W,偏置项B等)的数目、在目标函数添加一些额外的惩罚项等。添加惩罚项可看成是对损失函数中的某些参数做一些限制,根据惩罚项的不同可分为:L0范数惩罚、L1范数惩罚(参数稀疏性惩罚)、L2范数惩罚(权重衰减惩罚)。
1.2.1 L0范数惩罚
L0范数惩罚是最“严格”的参数限制策略,它将模型参数不等于0的个数控制在c以内来达到限制模型能力的目的。
1.2.2 L1范数惩罚
L0范数惩罚在实际应用中不太友好,进一步放松限制,不要求参数的非零数量被限制在某个范围内,而要求参数数值的总和要小于某个数值,具体公式可见《深度学习中你需要知道的几个基本概念》,这种对参数数值总和的限制被称为L1范数惩罚,又称参数稀疏性惩罚,那么参数稀疏在哪呢?假设一个带L1正则化的损失函数为J=J0+α∑|w|
其中,J0是原始的损失函数,α∑|w|是L1正则化项,α是正则化系数。L1正则化项是带有绝对值符号的函数,因此加了L1正则化项的损失函数是不完全可微的。当我们在原始损失函数J0后添加L1正则化项后,相当于对J0做了一个约束。令L=α∑|w|,则J=J0+L,我们知道梯度下降算法的目的是使损失函数最小化,那么我们的任务变成在L约束下求出J0取最小值的解。假设在二维的情况,即只有两个权值w1和w2,此时L=|w1|+|w2|。损失函数的梯度等值线如图1中的实线等高椭圆所示,梯度的最小值为其中心点,如果没有加任何限制项,则模型学习过程就是每次沿着梯度等高线垂直的方向寻找极值点。而L1正则化的函数L在w1、w2的二维平面上画出来表示为图1中的黑色方形。如下图1所示。
图1 求解带L1正则化项的损失函数
上图中J0与L在L的一个顶点处(0,w2)相交,这个顶点就是损失函数J的最优解。可以直观想象,因为L函数有很多“突出的角”(二维情况下四个,多维情况下更多),J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型。
在这里,我们在解释下为什么J0与这些角接触的机率会远大于与L其它部位接触的机率?试着想象下,如果方形的四条边凹进去一定的弧度,那么除非梯度等高线在一些特殊的角度才会使得相交点落在四条边上而不是方形的角上。当在多维的情况下(模型参数不只有2个),那么这个时候的L可表示为一个多边形,当边数够多,即角很多,可以近似的看成是四条边凹进去一定弧度后的图形,这样梯度等高线与角相交的概率会远大于L其它部分相交的概率。同样,如果方形的四条边往外凸,当凸出一定弧度后,会转变成一个圆,即为L2正则化的图形,这个时候的J0与L的图形上每个点相交的概率都一样,所以L2正则化无法产生稀疏模型。求解带L2正则化项的损失函数如图2所示。
那么得到稀疏模型有什么好处呢?
稀疏模型是指模型参数矩阵中有很多参数为0,只有少数参数是非零值的。机器学习中特征向量的维数一般很大,在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征很大程度上是噪声特征,其没有贡献或贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。
1.2.3 L2范数惩罚
我们知道L1范数项不可微,所以我们将参数的绝对值求和改为参数平方和,公式如《深度学习中你需要知道的几个基本概念》所示,这就是L2范数惩罚,即权重衰减惩罚。
这时一个带L2正则化的损失函数为J可表示为J=J0+α∑w2
求解带L2正则化项的损失函数如下图所示。
图2 求解带L2正则化项的损失函数
正则化前面的系数α,可以控制L图形的大小。α过小,L的半径则很大,就越容易达到损失函数的最小值(中心点),会发生过拟合现象;α过大,L的半径则很小,即对模型参数惩罚过重,模型的能力也就越弱,会发生欠拟合现象。
模型在拟合过程中通常都会倾向于让权值尽可能小,最终构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,且能适应不同的数据集,在一定程度上可降低过拟合风险。比如,对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,这就是常说的抗扰动能力强。
1.3 其它被视为正则化的策略
在深度学习中你听过的很多名词其实都是一种正则化策略,下面我们将介绍这些正则化策略。
参数共享,在卷积神经网络中,卷积操作其实就采用了参数共享,通过参数共享,减少模型参数,降低模型复杂度,从而减少模型过拟合风险,卷积神经网络的详细内容见《卷积神经网络你需要知道的几个基本概念》。
噪声注入以及数据扩充,降低泛化错误率直接的方法就是训练更多的数据,但有监督学习中,带标签的数据往往是有限的,我们可以通过噪声注入以及数据扩充方法在现有数据的基础上扩充数据集。
稀疏表征,这种正则化策略事通过某种惩罚措施来抑制神经网络隐藏层中大部分神经元,当信息输入神经网络时,只有关键部分神经元处于激活状态。这和1.2.2节的L1范数惩罚相似,只不过,L1范数是使模型参数稀疏化,而表征稀疏化是隐藏层输出大多数为零或接近零。
Dropout,以dropout概率随机断开神经元连接,是一种非常高效的深度学习正则化措施。
本文原创发布于慕课网 ,转载请注明出处,谢谢合作
若觉得本文不错,就分享一下吧!
评论加载中...
看过此文的用户,还看了以下文章
正在加载中
全栈工程师
作者相关文章怎么理解在模型中使用L1+L2正则化? - 知乎355被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答76 条评论分享收藏感谢收起查看: 1329|回复: 1
完全理解正则【L1,L2】化及其作用
主题听众收听
高级会员, 积分 1096, 距离下一级还需 3904 积分
高级会员, 积分 1096, 距离下一级还需 3904 积分
本帖最后由 regan 于
09:34 编辑
1.我们以线性分类来引入正则化的概念
例如要对输入的一张图片去做分类,判断是猫还是狗。那对于RGB图像32*32*3的大小的矩阵我们可以把它看reshape成一个3072大小的向量,对于向量中的每个像素看成线性方程的Xi,自然对每个Xi会有一个系数Wi,在训练的过程中不断调整W使其能正确的预测图片的分类。
Y = WX + b
a1.png (116.01 KB, 下载次数: 0)
09:24 上传
模型训练好之后,可以通过Y = WX +b这个模型获取每个类别的分数。假设我们的最终分类类别有10个。
a2.png (155.33 KB, 下载次数: 0)
09:24 上传
对于一个更具体的实例如下:
a3.png (305.72 KB, 下载次数: 0)
09:24 上传
3*4& && &4 * 1&&-》 3*1
为了方便说明,假设输入图片只有四个像素,每个像素对应的值形成一个X向量,用一个W矩阵和向量相乘再加上偏置项即可得到每个类别的分数。
a4.png (2.99 KB, 下载次数: 0)
09:24 上传
经过计算可以看到预测为猫的分数是最低的。而预测为狗的分数是最高的,因此预测错误,这就产生了误差,在机器学习里面叫损失,我们要根据这个损失去调整权重矩阵W,以使得分类朝着猫的方向发展。
a5.png (307.42 KB, 下载次数: 0)
09:24 上传
对于这类线性的模型,我们抽象出统一的线性方程f(Xi,W,b) = WXi + b
对于前面出现的预测出现的损失,我们需要找到一种衡量损失的方法。例如对于猫图片的分类。
a6.png (353.42 KB, 下载次数: 0)
09:24 上传
第一列表示猫图片预测为猫的分数为3.2,预测为汽车的概率为5.1,预测为青蛙的概率为-1.7,很明显分类是错误的;第二列本身为汽车图片,预测为猫的分数为1.3,预测为汽车的分数为4.9,预测为青蛙的分数为2.0,分类正确;第三种青蛙的图片预测为猫的分数为2.2,预测为汽车的分数为2.5,预测为青蛙的分数为-3.1,很明显分类错误。
既然分类存在错误,我们需要找到一个衡量错误的方法,第一种衡量损失的方法为Hinge-loss折页损失,二维表现形式为一条折线,通用表达式如下:
a7.png (32.5 KB, 下载次数: 0)
09:24 上传
如果被正确分类损失为0,否则损失为Sj-Syi+1。Sj表示预测为错误类别的得分,Syi表示预测为正确类别的得分。
a8.png (151.66 KB, 下载次数: 0)
09:24 上传
由此定义,计算上面的分类的损失:
a9.png (407.95 KB, 下载次数: 0)
09:24 上传
可得到青蛙预测的损失最大,而汽车预测正确,损失为0,猫预测成了汽车损失值为2.9.整体的损失为
2.9 + 0 + 10.9,整体平均损失为13.8 / 3. = 4.6,而我们的目标是使用这个损失去更新权重参数,使得损失值减小。
Hinge-loss损失函数完整定义如下:
a10.png (128.67 KB, 下载次数: 0)
09:24 上传
虽然我们可以通过损失值调整权重参数,但不同的权重参数会对结果有什么不同的影响呢?来看下面的例子:
a11.png (108.94 KB, 下载次数: 0)
09:24 上传
分别有输入向量x,和权重参数w1,w2。
x'W1 =&&1*1 + 1* 0 + 1*0 +1*0 = 1
x'W2 = 0.25 * 1 + 0.25 * 1+ 0.25 * 1+ 0.25 *1 =1
对比两个结果,都为1,但那个权重参数更好呢?如果把x想象成输入的图片,w1只关注了图片上的局部,而w2关注了整张图片,w1不具备泛化能力容易出现过拟合,而w2泛化能力更强且不容易过拟合到数据的局部特征。因此说权重参数也是会对结果产生影响的,怎样了避免或者说减少这种影响呢?这里就引出了正则化这个概念。正则化实际上就是将权重带来的损失添加到损失函数中,那怎样去定义权重损失呢?有两种最常见的方法就是L1和L2正则化。
L1正则化是指权值向量w中各个元素的绝对值之和,通常表示为||w||1L2正则化是指权值向量w中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
现在加入权重参数的正则化项之后,整个损失函数变成如下的样子:
a12.png (118.62 KB, 下载次数: 0)
09:24 上传
a13.png (2.9 KB, 下载次数: 0)
09:24 上传
为惩罚系数,用于调节分类损失和权重参数损失。
以后遇到正则化惩罚项,其实都是指的对权重参数的惩罚。不管是L1,还是L2.只需要记住L1和L2他们对模型的影响就可以了。
2.也许你已经懂了什么是正则化,什么是损失函数,其实损失函数除了Hinge-loss之外呢,还有一种叫常见的损失函数叫交叉熵损失。接下来我们看看它的神秘面纱。
上面对猫的分类中,分类都是以分数来衡量的。例如
a14.png (60.02 KB, 下载次数: 0)
09:25 上传
那对于这种分数有什么不好的地方呢?直观上是没有归一和统一化,分数有大有小,还有负值。那能不能将这种分数直接以某种方式变成百分数比例呢?这就是softmax要做的,先来看下Softmax函数的定义:
a15.png (9.45 KB, 下载次数: 0)
09:25 上传
其输入值为一个向量,向量中的每个值为任意的实数;输出值为一个向量且每个元素位于0~1之间,且元素之和为1。完美!这不就将得分变成了概率分布了吗!
a16.png (870 Bytes, 下载次数: 0)
09:25 上传
为e的得分次幂,使用e为底的幂运算进行了缩放,分母
a17.png (3.17 KB, 下载次数: 0)
09:25 上传
为所有预测类别得分经过e为底的幂运算放缩后的和,可以把它看成归一化因子。得到了每个分类的概率,怎样用概率定义损失呢?概率越小,损失越大,概率越大,损失越小。基于这种关系选择-log不就可以完成了吗?因此最终每个类别的损失定义为:
a18.png (6.84 KB, 下载次数: 0)
09:25 上传
这个损失也被称之为交叉熵损失。
a19.png (297.77 KB, 下载次数: 0)
09:25 上传
接下来使用交叉熵损失来计算一下分类的损失。
a20.png (194.82 KB, 下载次数: 0)
09:25 上传
可以看出概率值小的,最终损失值就越大!
好了最后对比下折页损失和交叉熵损失:
a21.png (294.93 KB, 下载次数: 0)
09:25 上传
得到了总体的损失之后,我们就可以使用相应的策略来优化 相关的参数了,例如在神经网络中通过BP算法来更新W参数。
(271.93 KB, 下载次数: 0)
09:25 上传
本帖被以下淘专辑推荐:
& |主题: 274, 订阅: 6
主题听众收听
新手上路, 积分 18, 距离下一级还需 32 积分
新手上路, 积分 18, 距离下一级还需 32 积分
积极上进,爱好学习
经常帮助其他会员答疑
站长推荐 /4
会员注册不成功的原因
新手获取积分方法
hadoop3.0学习:零基础安装部署hadoop集群
about云课程:大数据日志实时分析
Powered by}

我要回帖

更多关于 权重衰减参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信