首页 > 其他分享 >神经网络优化篇:详解正则化(Regularization)

神经网络优化篇:详解正则化(Regularization)

时间:2023-12-19 13:55:16浏览次数:35  
标签:Regularization frac 神经网络 正则 参数 L2 范数 lambda

正则化

深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少的网络误差。

如果怀疑神经网络过度拟合了数据,即存在高方差问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,这也是非常可靠的办法,但可能无法时时准备足够多的训练数据,或者,获取更多数据的成本很高,但正则化有助于避免过度拟合,或者减少网络误差,下面就来讲讲正则化的作用原理。

用逻辑回归来实现这些设想,求成本函数\(J\)的最小值,它是定义的成本函数,参数包含一些训练数据和不同数据中个体预测的损失,\(w\)和\(b\)是逻辑回归的两个参数,\(w\)是一个多维度参数矢量,\(b\)是一个实数。在逻辑回归函数中加入正则化,只需添加参数λ,也就是正则化参数。

\(\frac{\lambda}{2m}\)乘以\(w\)范数的平方,其中\(\left\| w \right\|_2^2\)是\(w\)的欧几里德范数的平方,等于\(w_{j}\)(\(j\) 值从1到\(n_{x}\))平方的和,也可表示为\(w^{T}w\),也就是向量参数\(w\) 的欧几里德范数(2范数)的平方,此方法称为\(L2\)正则化,因为这里用了欧几里德范数,被称为向量参数\(w\)的\(L2\)范数。

为什么只正则化参数\(w\)?为什么不再加上参数 \(b\) 呢?可以这么做,只是习惯省略不写,因为\(w\)通常是一个高维参数矢量,已经可以表达高偏差问题,\(w\)可能包含有很多参数,不可能拟合所有参数,而\(b\)只是单个数字,所以\(w\)几乎涵盖所有参数,而不是\(b\),如果加了参数\(b\),其实也没太大影响,因为\(b\)只是众多参数中的一个,所以通常省略不计,如果想加上这个参数,完全没问题。

\(L2\)正则化是最常见的正则化类型,们可能听说过\(L1\)正则化,\(L1\)正则化,加的不是\(L2\)范数,而是正则项\(\frac{\lambda}{m}\)乘以\(\sum_{j= 1}^{n_{x}}{|w|}\),\(\sum_{j =1}^{n_{x}}{|w|}\)也被称为参数\(w\)向量的\(L1\)范数,无论分母是\(m\)还是\(2m\),它都是一个比例常量。

如果用的是\(L1\)正则化,\(w\)最终会是稀疏的,也就是说\(w\)向量中有很多0,有人说这样有利于压缩模型,因为集合中参数均为0,存储模型所占用的内存更少。实际上,虽然\(L1\)正则化使模型变得稀疏,却没有降低太多存储内存,所以认为这并不是\(L1\)正则化的目的,至少不是为了压缩模型,人们在训练网络时,越来越倾向于使用\(L2\)正则化。

来看最后一个细节,\(\lambda\)是正则化参数,通常使用验证集或交叉验证集来配置这个参数,尝试各种各样的数据,寻找最好的参数,要考虑训练集之间的权衡,把参数设置为较小值,这样可以避免过拟合,所以λ是另外一个需要调整的超级参数,顺便说一下,为了方便写代码,在Python编程语言中,\(\lambda\)是一个保留字段,编写代码时,删掉\(a\),写成\(lambd\),以免与Python中的保留字段冲突,这就是在逻辑回归函数中实现\(L2\)正则化的过程,如何在神经网络中实现\(L2\)正则化呢?

神经网络含有一个成本函数,该函数包含\(W^{[1]}\),\(b^{[1]}\)到\(W^{[l]}\),\(b^{[l]}\)所有参数,字母\(L\)是神经网络所含的层数,因此成本函数等于\(m\)个训练样本损失函数的总和乘以\(\frac{1}{m}\),正则项为\(\frac{\lambda }{2m}{{\sum\nolimits_{1}^{L}{| {{W}^{[l]}}|}}^{2}}\),称\({||W^{\left[l\right]}||}^{2}\)为范数平方,这个矩阵范数\({||W^{\left[l\right]}||}^{2}\)(即平方范数),被定义为矩阵中所有元素的平方求和,

看下求和公式的具体参数,第一个求和符号其值\(i\)从1到\(n^{[l - 1]}\),第二个其\(J\)值从1到\(n^{[l]}\),因为\(W\)是一个\(n^{[l]}\times n^{[l-1]}\)的多维矩阵,\(n^{[l]}\)表示\(l\) 层单元的数量,\(n^{[l-1]}\)表示第\(l-1\)层隐藏单元的数量。

该矩阵范数被称作“弗罗贝尼乌斯范数”,用下标\(F\)标注”,鉴于线性代数中一些神秘晦涩的原因,不称之为“矩阵\(L2\)范数”,而称它为“弗罗贝尼乌斯范数”,矩阵\(L2\)范数听起来更自然,但鉴于一些大家无须知道的特殊原因,按照惯例,称之为“弗罗贝尼乌斯范数”,它表示一个矩阵中所有元素的平方和。

该如何使用该范数实现梯度下降呢?

backprop计算出\(dW\)的值,backprop会给出\(J\)对\(W\)的偏导数,实际上是$ W{[l]}$,把$W\(替换为\)W^{[l]}\(减去学习率乘以\)dW$。

这就是之前额外增加的正则化项,既然已经增加了这个正则项,现在要做的就是给\(dW\)加上这一项\(\frac {\lambda}{m}W^{[l]}\),然后计算这个更新项,使用新定义的\(dW^{[l]}\),它的定义含有相关参数代价函数导数和,以及最后添加的额外正则项,这也是\(L2\)正则化有时被称为“权重衰减”的原因。

用$ dW{[l]}$的定义替换此处的$dW\(,可以看到,\)W{[l]}$的定义被更新为$W\(减去学习率\)\alpha$ 乘以backprop 再加上\(\frac{\lambda}{m}W^{[l]}\)。

该正则项说明,不论\(W^{[l]}\)是什么,都试图让它变得更小,实际上,相当于给矩阵W乘以\((1 - \alpha\frac{\lambda}{m})\)倍的权重,矩阵\(W\)减去\(\alpha\frac{\lambda}{m}\)倍的它,也就是用这个系数\((1-\alpha\frac{\lambda}{m})\)乘以矩阵\(W\),该系数小于1,因此\(L2\)范数正则化也被称为“权重衰减”,因为它就像一般的梯度下降,\(W\)被更新为少了\(\alpha\)乘以backprop输出的最初梯度值,同时\(W\)也乘以了这个系数,这个系数小于1,因此\(L2\)正则化也被称为“权重衰减”。

不打算这么叫它,之所以叫它“权重衰减”是因为这两项相等,权重指标乘以了一个小于1的系数。

以上就是在神经网络中应用\(L2\)正则化的过程。

标签:Regularization,frac,神经网络,正则,参数,L2,范数,lambda
From: https://www.cnblogs.com/oten/p/17913549.html

相关文章

  • 240-jquery 正则匹配的2种写法
    $('#textInput').on('input',function(){//获取输入框的值varinputValue=$(this).val();//定义正则表达式varregex=/^[a-zA-Z0-9]+$/;//使用正则表达式进行匹配if(regex.test(inputValue)){......
  • 正则表达式相关。示例:包含a和b,包含a不包含b
    普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。非打印字符非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:字符描述\cx匹配由x指明的控制字符。......
  • 课8正则练习
    1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)[root@srehost~]#cat/proc/meminfo|egrep-o"^(s|S).*"SwapCached:0kBSwapTotal:8257532kBSwapFree:8257532kBShmem:11044kBSlab:128976kBSReclaima......
  • 聊聊神经网络的优化算法
    优化算法主要用于调整神经网络中的超参数,使得训练数据集上的损失函数尽可能小。其核心逻辑是通过计算损失函数对参数的梯度(导数)来确定参数更新方向。SGDStochasticGradientDescent(随机梯度下降法):随机梯度下降算法是一种改进的梯度下降方法,它在每次更新参数时,只随机选择一个......
  • 神经网络优化篇:机器学习基础(Basic Recipe for Machine Learning)
    机器学习基础下图就是在训练神经网络用到的基本方法:(尝试这些方法,可能有用,可能没用)这是在训练神经网络时用到地基本方法,初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或训练数据的性能。如果偏差的确很高,甚至无法拟合训练集,那么要做的就是选择一个新......
  • 【scikit-learn基础】--『预处理』之 正则化
    数据的预处理是数据分析,或者机器学习训练前的重要步骤。通过数据预处理,可以提高数据质量,处理数据的缺失值、异常值和重复值等问题,增加数据的准确性和可靠性整合不同数据,数据的来源和结构可能多种多样,分析和训练前要整合成一个数据集提高数据性能,对数据的值进行变换,规约等(比如......
  • PINN——加入物理约束的神经网络
    【摘要】基于物理信息的神经网络(Physics-informedNeuralNetwork,简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理......
  • deep - glu:卷积神经网络和Bi-LSTM模型的结合,使用ProtBert和手工特征来识别l
    Deepro-Glu:combinationofconvolutionalneuralnetworkandBi-LSTMmodelsusingProtBertandhandcraftedfeaturestoidentifyl会议时间:2022-10-30会议地点:腾讯会议关键词:lysineglutaryation,BERT,deeplearning,proteinlanguagemodels作者:XiaoWang期刊:Bioinform......
  • Java正则操作类Pattern和Matcher​详解
    Java正则操作类Pattern和MatcherPattern类Pattern位于java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态compile方法,它返回一个Pattern.split(CharSeque......
  • 基于卷积ARMA滤波器的图神经网络
    PAMI(IEEETransactionsonPatternAnalysisandMachineIntelligence)模式分析与机器智能-2021IF:17.730FilippoMariaBianchiDanieleGrattarolaLorenzoLiviCesareAlippiAbstract​ 流行的图神经网络基于多项式频谱滤波器在图上实现卷积操作。在本......