查看“︁正则化 (数学)”︁的源代码
←
正则化 (数学)
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA |G1=IT |1=zh-hans:过拟合; zh-hant:過適; |2=zh-hans:拟合; zh-hant:調適; |3=zh-hans:数据集; zh-hant:資料集; |4=zh-hans:数据; zh-hant:資料; |5=zh-hans:样本; zh-hant:範例; |6=zh-hans:欠拟合; zh-hant:乏適; |7=zh-hans:信息; zh-hant:資訊; |8=zh-hans:泛化; zh-hant:一般化; |9=zh-hans:噪音; zh-hant:雜訊; }} {{machine learning bar}} 在[[数学]]与[[计算机科学]]中,尤其是在[[机器学习]]和[[逆问题]]领域中,'''正则化'''(英语:regularization)是指为解决[[适定性问题]]或[[过拟合]]而加入额外信息的过程。<ref>{{cite journal |doi=10.1007/978-3-642-20192-9 |title=Statistics for High-Dimensional Data|series=Springer Series in Statistics |year=2011 |last1=Bühlmann |first1=Peter |last2=Van De Geer |first2=Sara |isbn=978-3-642-20191-2 |page=9 |quote=If p > n, the ordinary least squares estimator is not unique and will heavily overfit the data. Thus, a form of complexity regularization will be necessary.}}</ref> 在机器学习和逆问题的优化过程中,正则项往往被加在[[损失函数|目标函数]]当中。 == 概述 == 概括来讲,[[机器学习]]的训练过程,就是要找到一个'''足够好'''的函数<math>F^{*}</math>用以在新的数据上进行[[推理]]。<ref>{{cite journal |title=Glossary of terms |author1=Ron Kohavi |author2=Foster Provost |journal=Machine Learning |volume=30 |pages=271–274 |year=1998 |url=https://ai.stanford.edu/~ronnyk/glossary.html |access-date=2019-12-10 |archive-date=2019-11-11 |archive-url=https://web.archive.org/web/20191111072341/http://ai.stanford.edu/~ronnyk/glossary.html |dead-url=no }}</ref>为了定义什么是「好」,人们引入了[[损失函数]]的概念。一般地,对于样本<math>(\vec x, y)</math>和模型<math>F</math>,有预测值<math>\hat y = F(\vec x)</math>。损失函数是定义在<math>\mathbb R\times\mathbb R \to\mathbb R</math>上的二元函数<math>\ell(y, \hat y)</math>,用来描述[[基准真相]]和模型预测值之间的差距。一般来说,损失函数是一个有[[下确界]]的函数;当基准真相和模型预测值足够接近,损失函数的值也会接近该下确界。 因此,机器学习的训练过程可以被转化为[[训练集]]<math>\mathcal D</math>上的[[最小化]]问题。我们的目标是在[[泛函空间]]内,找到使得全局损失<math>L(F) = \sum_{i \in \mathcal D}\ell(y_i, \hat y_i)</math>最小的模型<math>F^{*}</math>。 <math>F^{*} := \mathop{\text{arg min}}_{F}L(F).</math> 由于损失函数只考虑在训练集上的[[经验风险最小化|经验风险]],这种做法可能会导致[[过拟合]]。为了对抗过拟合,我们需要向损失函数中加入描述模型复杂程度的正则项<math>\Omega(F)</math>,将经验风险最小化问题转化为结构风险最小化。 <math>F^{*} := \mathop{\text{arg min}}_{F}\text{Obj}(F) = \mathop{\text{arg min}}_{F}\bigl(L(F) + \gamma\Omega(F)\bigr),\qquad \gamma > 0.</math> 这里,<math>\text{Obj}(F)</math>称为[[损失函数|目标函数]],它描述模型的[[结构风险]];<math>L(F)</math>是训练集上的损失函数;<math>\Omega(F)</math>是正则项,描述模型的复杂程度;<math>\gamma</math>是用于控制正则项重要程度的参数。正则项通常包括对[[光滑函数|光滑度]]及[[向量空间]]内[[范数]]上界的限制。<ref name="book:prml">{{cite book|last1=Bishop|first1=Christopher M.|title=Pattern recognition and machine learning|date=2007|publisher=Springer|location=New York|isbn=978-0387310732|edition=Corr. printing.}}</ref>[[Lp范数|<math>L_{p}</math>-范数]]是一种常见的正则项。 在{{le|贝叶斯学派的观点|Bayesian_interpretation_of_kernel_regularization}}看来,正则项是在模型训练过程中引入了某种模型参数的[[先验]]分布。 == Lp正则项 == 所谓[[范数]]即是抽象之长度,通常意义上满足长度的三种性质:[[非负性]]、[[齐次性]]和[[三角不等式]]。 以函数的观点来看,范数是定义在<math>\mathbb R^{n}\to\mathbb R</math>的函数;并且它和损失函数类似,也具有下确界。后一性质是由范数的非负性和齐次性保证的<ref>范数的非负性保证了范数有下界。当齐次性等式<math>\lVert c\cdot\vec x\rVert = |c| \cdot \lVert\vec x\rVert</math>中的<math>c</math>取零时可知,零向量的范数是零,这保证了范数有下确界。</ref>。这一特性使得<math>L_{p}</math>-范数天然适合做正则项,因为目标函数仍可用[[梯度下降]]等方式求解最优化问题。<math>L_{p}</math>-范数作为正则项时被称为<math>L_{p}</math>-正则项。 === L0和L1正则项 === 机器学习模型当中的参数,可形式化地组成参数向量,记为<math>\vec\omega</math>。不失一般性,以线性模型为例: <math>F(\vec x;\vec\omega) := \vec\omega^{\intercal}\cdot\vec x = \sum_{i = 1}^{n}\omega_{i}\cdot x_{i}.</math> 由于[[训练集]]当中[[统计噪声]]的存在,冗余的特征可能成为[[过拟合]]的一种来源。这是因为,对于统计噪声,模型无法从有效特征当中提取信息进行[[拟合]],故而会转向冗余特征。为了对抗此类过拟合现象,人们会希望让尽可能多的<math>\omega_{i}</math>为零。为此,最直观地,可以引入<math>L_{0}</math>-正则项 <math>\Omega\bigl(F(\vec x;\vec\omega)\bigr) := \gamma_0\frac{\lVert\vec\omega\rVert_0}{n},\;\gamma_{0} > 0.</math> 通过引入<math>L_{0}</math>-正则项,人们实际上是向优化过程引入了一种惩罚机制:当优化算法希望增加模型复杂度(此处特指将原来为零的参数<math>\omega_{i}</math>更新为非零的情形)以降低模型的经验风险(即降低全局损失)时,在结构风险上进行大小为<math>\tfrac{\gamma_{0}}{n}</math>的惩罚。于是,当增加模型复杂度在经验风险上的收益不足<math>\tfrac{\gamma_{0}}{n}</math>时,整个结构风险实际上会增大而非减小。因此优化算法会拒绝此类更新。 引入<math>L_{0}</math>-正则项可使模型参数稀疏化,以及使得模型易于解释。但<math>L_{0}</math>-正则项也有无法避免的问题:非连续、非凸、不可微。因此,在引入<math>L_{0}</math>-正则项的目标函数上做最优化求解,是一个无法在多项式时间内完成的问题。于是,人们转而考虑<math>L_{0}</math>-范数的[[最紧凸放松]]——<math>L_{1}</math>-范数,令 <math>\Omega\bigl(F(\vec x;\vec\omega)\bigr) := \gamma_1\frac{\lVert\vec\omega\rVert_1}{n},\;\gamma_{1} > 0.</math> 和引入<math>L_{0}</math>-正则项的情况类似,引入<math>L_{1}</math>-正则项是在结构风险上进行大小为<math>\tfrac{\gamma_{1}|\omega_{i}|}{n}</math>的惩罚,以达到稀疏化的目的。 <math>L_{1}</math>-正则项亦称[[Lasso算法|LASSO]]-正则项。<ref>{{cite journal|last=Santosa|first=Fadil|last2=Symes|first2=William W.|year=1986|title=Linear inversion of band-limited reflection seismograms.|url=|journal=SIAM Journal on Scientific and Statistical Computing|publisher=SIAM|volume=7|issue=4|pages=1307–1330|doi=10.1137/0907087}}</ref><ref name = "Tibshirani 1996">{{cite journal |last=Tibshirani |first=Robert |year=1996 |title=Regression Shrinkage and Selection via the lasso |journal=Journal of the Royal Statistical Society |series=Series B (methodological) |volume=58 |issue=1 |publisher=Wiley |pages=267–88 |jstor=2346178 }}</ref> === L2正则项 === [[File:Overfitting show case for polynomial model and linear model.png|thumb|800px|图中左侧是[[训练集]],右侧是[[验证集]]。训练集和验证集数据均是由线性函数加上一定的随机扰动生成的。图中橙色直线是以线性模型拟合训练集数据得到模型的函数曲线;绿色虚线则是以15-阶多项式模型拟合训练数据得到模型的函数曲线。由此可見,儘管多项式模型在训练集上的误差小于线性模型,但在验证集上的误差则显著大于线性模型。此外,多项式模型为了拟合[[统计噪声|噪声]]点,在噪声点附近进行了高[[曲率]]的弯折。这说明多项式模型[[过拟合]]了训练集数据。]] 在发生[[过拟合]]时,模型的函数曲线往往会发生剧烈的弯折,这意味着模型函数在局部的切线之斜率非常高。一般地,函数的曲率是函数参数的[[线性组合]]或非线性组合。为了对抗此类过拟合,人们会希望使得这些参数的值相对稠密且均匀地集中在零附近。于是,人们引入了<math>L_{2}</math>-范数,作为<math>L_{2}</math>-正则项。令 <math>\Omega\bigl(F(\vec x;\vec w)\bigr) := \gamma_2\frac{\lVert\vec\omega\rVert_2^2}{2n},\;\gamma_2 > 0,</math> 于是有目标函数 <math>\text{Obj}(F) = L(F) + \gamma_2\frac{\lVert\vec\omega\rVert_2^2}{2n},</math> 於是對於參數<math>\omega_{i}</math>取偏微分 <math>\frac{\partial\text{Obj}}{\partial \omega_i} = \frac{\partial L}{\partial \omega_i} + \frac{\gamma_2}{n}\omega_i.</math> 因此,在[[梯度下降]]时,参数<math>\omega_{i}</math>的更新 <math>\omega'_{i}\gets \omega_i - \eta\frac{\partial L}{\partial \omega_i} - \eta\frac{\gamma_2}{n}\omega_i = \Bigl(1 - \eta\frac{\gamma_2}{n}\Bigr)\omega_{i} - \eta\frac{\partial L}{\partial \omega_i}.</math> 注意到<math>\eta\tfrac{\gamma_2}{n}</math>通常是介于<math>(0,\,1)</math>之间的数<ref>可通过恰当地调整学习率<math>\eta</math>与正则系数<math>\gamma_{2}</math>来满足这一点。</ref>,<math>L_{2}</math>-正则项会使得参数接近零,从而对抗过拟合。 <math>L_{2}</math>-正则项又称[[吉洪诺夫正则化|Tikhonov]]-正则项或Ridge-正则项。 == 提前停止 == {{Main|提前停止}} [[提前停止]]可看做是时间维度上的正则化。直觉上,随着迭代次数的增加,如梯度下降这样的训练算法倾向于学习愈加复杂的模型。在时间维度上进行正则化有助于控制模型复杂度,提升泛化能力。在实践中,提前停止一般是在[[训练集]]上进行训练,而后在统计上独立的[[验证集]]上进行评估;当模型在验证集上的性能不再提升时,就提前停止训练。最后,可在[[测试集]]上对模型性能做最后测试。 == 参考文献 == {{reflist}} == 外部链接 == * [https://liam.page/2017/03/30/L1-and-L2-regularizer/ 谈谈 <math>L_1</math> 与 <math>L_2</math>-正则项] {{Wayback|url=https://liam.page/2017/03/30/L1-and-L2-regularizer/ |date=20210116201846 }} {{zh}} [[Category:機器學習]] [[Category:计算机科学]]
该页面使用的模板:
Template:Cite book
(
查看源代码
)
Template:Cite journal
(
查看源代码
)
Template:Le
(
查看源代码
)
Template:Machine learning bar
(
查看源代码
)
Template:Main
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Wayback
(
查看源代码
)
Template:Zh
(
查看源代码
)
返回
正则化 (数学)
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息