| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【机器学习】欠拟合 & 过拟合 & 正则化 -> 正文阅读 |
|
[人工智能]【机器学习】欠拟合 & 过拟合 & 正则化 |
正则化拟合效果欠拟合(underfitting):指相较于数据而言,模型参数过少或者模型结构过于简单,以至于无法学习到数据中的规律。具体体现为曲线过于简单,对数据的拟合能力不强。 过拟合(overfitting):给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。具体表现为曲线过于复杂,泛化能力不强。模型在验证集合上和训练集合上表现都很好,而在测试集合上变现很差。在回归问题中过拟合情况为:拟合曲线过于复杂;在分类问题中过拟合情况为:决策边界过于复杂。 拟合效果分析结合交叉验证评估模型的表现,可较准确判断拟合程度。 现实中通常由训练误差及测试误差(泛化误差)评估模型的学习程度及泛化能力。 统计学常用“偏差-方差分解”(bias-variance decomposition)来分析模型的泛化性能:其泛化误差为偏差、方差与噪声之和。 泛 华 误 差 = 错 误 率 ( e r r o r ) = b i a s 2 ( x ) + v a r ( x ) + ε 2 泛华误差=错误率(error)=bias^2(x)+var(x)+\varepsilon^2 泛华误差=错误率(error)=bias2(x)+var(x)+ε2 噪声(ε) 表达了在当前任务上任何学习算法所能达到的泛化误差的下界,即刻画了学习问题本身(客观存在)的难度。 偏差(Bias) 是指用所有可能的训练数据集训练出的所有模型的输出值与真实值之间的差异,刻画了模型的拟合能力。偏差较小即模型预测准确度越高,表示模型拟合程度越高。 方差(Variance) 是指不同的训练数据集训练出的模型对同预测样本输出值之间的差异,刻画了训练数据扰动所造成的影响。方差较大即模型预测值越不稳定,表示模型(过)拟合程度越高,受训练集扰动影响越大。 “偏差-方差分解” 说明,模型拟合过程的泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。 欠拟合:模型准确度不高(高偏差),受训练数据的扰动影响较小(低方差),其泛化误差大主要由高的偏差导致。 过拟合:模型准确度较高(低偏差),模型容易学习到训练数据扰动的噪音(高方差),其泛化误差大由高的方差导致。 欠拟合原因特征量过少可能还存在其他特征对模型产生较大的影响,但并未考虑这些特征。 参数太少,模型复杂度过低过拟合原因建模样本选取有误如样本数量太少、选样方法错误、样本标签错误等,导致选取的样本数据不足以代表预定的分类规则。 样本噪音干扰过大使得机器学习了噪音,还认为是特征,从而扰乱了预设的分类规则。 假设不成立假设的模型无法合理存在,或者说是假设成立的条件实际并不成立。 参数太多,模型复杂度过高其他tree-based模型对于tree-based模型,如果对于其深度与split没有合理的限制,有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。 神经网络模型权值学习迭代次数太多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。 BP算法使权值可能收敛过于复杂的决策面。 什么是「过拟合」,如何判断,常见的原因是什么? - 桔了个仔 针对拟合效果优化欠拟合优化增加特征维度:如增加新业务层面特征,特征衍生来增大特征假设空间,以增加特征的表达能力; 过拟合优化针对数据特征增加数据如寻找更多训练数据样本,数据增强等,以减少对局部数据的依赖; 迁移学习迁移学习的工作原理是在大型数据集(如ImageNet)上训练网络,然后将这些权重用作新任务中的初始权重。 特征选择通过筛选掉冗余特征,减少冗余特征产生噪声干扰; 针对模型降低模型复杂度。 简化模型结构如减少神经网络深度,决策树的数目等。 L1/L2正则化通过在代价函数加入正则项(权重整体的值)作为惩罚项,以限制模型学习的权重。(拓展:通过在神经网络的网络层引入随机的噪声,也有类似L2正则化的效果) 提前停止(Early stopping)通过迭代次数截断的方法,以限制模型学习的权重。 结合多个模型集成学习如随机森林(bagging法)通过训练样本有放回抽样和随机特征选择训练多个模型,综合决策,可以减少对部分数据/模型的依赖,减少方差及误差; Dropout神经网络的前向传播过程中每次按一定的概率(比如50%)随机地“暂停”一部分神经元的作用。这类似于多种网络结构模型bagging取平均决策,且模型不会依赖某些局部的特征,从而有更好泛化性能。 为什么正则化可防止过拟合?在数据量不够大的情况下,如果使用一个高阶多项式(图中红色曲线所示),例如10阶,对目标函数(蓝色曲线)进行拟合。拟合曲线波动很大,虽然 E i n E_in Ei?n很小,但是 E o u t E_out Eo?ut很大,也就造成了过拟合现象。
一种修正办法是将高阶多项式转为低阶多项式,高阶多项式hypothesis sets里包含了低阶多项式hypothesis sets的所有项,那么在高阶多项式中加入一些限定条件,使它近似为低阶多项式。这种函数近似曾被称之为不适定问题(ill-posed problem)。 例如,在上例中可以对10阶多项式(
H
1
0
H_10
H1?0)添加限定条件
w
i
=
0
,
i
>
2
w_i=0, i>2
wi?=0,i>2,即可将10阶多项式转换为2阶多项式(
H
2
H_2
H2?)。 但,限定条件
w
i
=
0
,
i
>
2
w_i=0, i>2
wi?=0,i>2过于苛刻,可以适当放宽约束(Looser Constraint),只限定w不为0的个数,即10个w中,只要有8个w为0,2个w不为0即可。将放宽约束后的多项式记为(
H
2
′
H_2'
H2′?)。 Looser Constraint对应的hypothesis应该更好解一些,但事实是如何找出一组好的sparse w即解 ∑ q = 0 10 [ [ w q ≠ 0 ] ] ≤ 3 \sum_{q=0}^{10}[[w_q\neq 0]] \le 3 ∑q=010?[[wq??=0]]≤3 被证明是NP-hard问题(何为 NP-hard - 你通透就好 别问我是谁)。 如何寻找一种更容易求解的宽松的限定条件(Softer Constraint)? 不再限制w=0的个数,而是限定所有的权重w的平方和的大小不超过常数C,这种hypothesis sets称为regularized hypothesis set,记为 w t T x n w_t^Tx_n wtT?xn?。这种形式的限定条件是可以进行求解的,把求解得到的满足限定条件的权重w记为 w R E G w_{REG} wREG? 。 C值越大,限定的范围越大,即越宽松。当C无限大的时候,即限定条件非常宽松,相当于没有加上任何限制。就与
H
1
0
H_10
H1?0相同。 综上所述,给loss function加上正则化项,能使得新得到的优化目标函数h = f+normal,需要在 f 和 normal 中做一个权衡(trade-off),因为min h=min f+ min normal,既在保证 f 最小的同时还要保证 normal 最小。如果还像原来只优化f的情况下,那可能得到一组解比较复杂,使得正则项normal比较大,那么h就不是最优的,因此可以看出加正则项能让解更加简单,符合奥卡姆剃刀理论,同时也比较符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合程度。 参考:L1正则化与L2正则化 - bingo酱的文章 - 知乎 如何计算 w R E G w_{REG} wREG??后续补充。 L0正则化用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。 L1正则化L1正则化公式: E i n + λ ∑ j ∣ w j ∣ E_in+\lambda \sum_j|w_j| Ei?n+λ∑j?∣wj?∣ L1范数(稀疏规则算子(Lasso regularization))∣ ∣ x ∣ ∣ 1 = ( ∑ i ∣ x i ∣ ) ||x||_1=(\sum_i|x_i|) ∣∣x∣∣1?=(∑i?∣xi?∣),其中 p ∈ R , p ≥ 1 p\in \mathbb R, p\ge1 p∈R,p≥1。 表示向量中所有元素绝对值之和。又称为稀疏规则算子(Lasso regularization) 当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L1 范数。每当 x 中某个元素从 0 增加 ?,对应的 L1 范数也会增加 ?。 L1正则化应用场景1 L1正则也常被用来进行特征选择,主要原因在于L1正则化会使得较多的参数为0,从而产生稀疏解(即稀疏模型),将0对应的特征遗弃,进而用来选择特征。 2 平方 L2 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数:L1 范数。当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L1 范数。每当 x 中某个元素从 0 增加 ?,对应的 L1 范数也会增加 ?。 为什么需要权值稀疏?(1)特征选择(Feature Selection):大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。 (2)可解释性(Interpretability):另一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1x1+w2x2+…+w1000x1000+b(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,不方便诊断。 参考:机器学习中的范数规则化之(一)L0、L1与L2范数 - 呆风语者 稀疏模型与特征选择的关系上面提到L1正则化有助于生成一个稀疏权值矩阵,进而可以用于特征选择。为什么要生成一个稀疏矩阵? 稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0. 通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。 参考:机器学习中正则化项L1和L2的直观理解 - 阿拉丁吃米粉 为什么L1范数会使权值稀疏?因为添加的L1正则项的损失函数在梯度下降优化过程中,很可能会在 w i = 0 w_i=0 wi?=0处取得最优解,对比未添加L1正则项的损失函数,添加L1正则项可以使得最后的解向量中含更多的0(即:该向量很多维度上值为0),所以L1范数会使权值稀疏。 如何梯度下降优化含L1正则项的损失函数?任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。 如上图中右图所示,假设空间中有一点 w(图中紫色点),蓝色椭圆区域是最小化 E i n Ein Ein 区域,红色方形是 w 的限定条件区域 ∣ w 1 ∣ + ∣ w 2 ∣ = C |w_1|+|w_2|=C ∣w1?∣+∣w2?∣=C。蓝色线是等高线。 没有限定条件C时:一般使用梯度下降算法,在蓝色椭圆区域内w会一直沿着 ? ? E i n -\nabla E_in ??Ei?n的方向(w 梯度的反方向)移动(图中蓝色箭头指示的方向),在没有限定条件的情况下,w最终会取得最小值 w l i n w_lin wl?in,即“谷底”的位置。 存在限定条件C时:L1限定条件为w被限定在边长为C的方形内及其边界上,w距离原点的距离不能超过这个红色方形范围 ∣ ∣ w ∣ ∣ = C ||w||=C ∣∣w∣∣=C。与方形边向量垂直的向量(图中红色箭头normal指示的方向)是w的方向,因为存在限定条件,w不能沿着红色箭头方向移动,极限情况下,只能位于方形上边缘位置,沿着方形的边移动。所以,w不能到达 w l i n w_lin wl?in的位置。随着迭代优化过程,只要 ? ? E i n -\nabla E_in ??Ei?n与w点切线方向不垂直,那么根据向量知识, ? ? E i n -\nabla E_in ??Ei?n一定在w点切线方向上有不为零的分量,即w点会继续移动。只有当 ? ? E i n -\nabla E_in ??Ei?n与红色法向量平行的时候,在方形边方向上没有不为零的分量了,也就表示这时w达到了最优解的位置。 为什么w最优解的位置在 w i = 0 w_i=0 wi?=0处?假设只有一个参数为w,损失函数为
L
(
w
)
L(w)
L(w),加上L1正则项后为:
E
i
n
+
λ
∑
j
∣
w
j
∣
E_in+\lambda \sum_j|w_j|
Ei?n+λ∑j?∣wj?∣。 可知,代价函数在0处的导数有一个突变。从 d 0 ? λ d_0-\lambda d0??λ到 d 0 + λ d_0+\lambda d0?+λ,若 d 0 ? λ d_0-\lambda d0??λ和 d 0 + λ d_0+\lambda d0?+λ异号,则在0处会是一个极小值点。因此,含L1正则项的损失函数梯度下降优化时,很可能优化到该极小值点上,即 w = 0 w=0 w=0处。 所以添加L1正则项,可以使得最后的解向量中含有更多的0。 参考:L1正则为什么更容易获得稀疏解 - keep_forward L0可以实现稀疏,为什么不用L0,而要用L1?一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以L0范数和L1范数都可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。 L2正则化L2正则化公式: E i n + λ ∑ j w j 2 E_in+\lambda \sum_jw_j^2 Ei?n+λ∑j?wj2? L2正则化优点及应用场景1)从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。 2)从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。 参考:机器学习中的范数规则化之(一)L0、L1与L2范数 - 呆风语者 L2正则化缺点但是在很多情况下,平方 L2 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。 为什么L2在原点附近增长缓慢?
参考:l0-Norm, l1-Norm, l2-Norm, … , l-infinity Norm 权重尺度偏移不变性假如已经训练得到一组参数,这组参数泛化性能可能不大好,于是我们希望L2正则能帮助优化器找到一组更好参数,但因为权重尺度偏移不变性的存在,模型完全可以找到一组新的参数,它跟原来参数的模型完全等价(没有提升泛化性能),但是L2正则还更小(L2正则起作用了)。说白了,就是L2正则确实起作用了,但没有提升模型泛化性能,没有达到使用L2正则的初衷。 L2正则没有想象那么好?可能是“权重尺度偏移”惹的祸 - PaperWeekly的文章 - 知乎 L2优化求解过程
没有限定条件C时:一般使用梯度下降算法,在蓝色椭圆区域内w会一直沿着 ? ? E i n -\nabla E_in ??Ei?n的方向(w 梯度的反方向)移动(图中蓝色箭头指示的方向),在没有限定条件的情况下,w最终会取得最小值 w l i n w_lin wl?in,即“谷底”的位置。 存在限定条件C时:L2限定条件为w被限定在半径为 C \sqrt C C?的圆内,w距离原点的距离不能超过圆的半径,球如图中红色圆圈所示 w T w = C w^Tw=C wTw=C ,即w不能离开红色圆形区域。与绿色向量垂直的向量(图中红色箭头normal指示的方向)是圆切线的法向量,即w的方向,因为存在限定条件,w不能沿着红色箭头方向移动,极限情况下,只能位于圆上边缘位置,沿着圆的切线方向移动(图中绿色箭头指示的方向)。所以,w不能到达 w l i n w_lin wl?in的位置。随着迭代优化过程,只要 ? ? E i n -\nabla E_in ??Ei?n与w点切线方向不垂直,那么根据向量知识, ? ? E i n -\nabla E_in ??Ei?n一定在w点切线方向上有不为零的分量,即w点会继续移动。只有当 ? ? E i n -\nabla E_in ??Ei?n与绿色切线垂直,即与红色法向量平行的时候,在切线方向上没有不为零的分量了,也就表示这时w达到了最优解的位置。 为什么L2范数不会使权值稀疏?假设只有一个参数为w,损失函数为
L
(
w
)
L(w)
L(w),加上L2正则项后为:
E
i
n
+
λ
∑
j
w
j
2
E_in+\lambda \sum_jw_j^2
Ei?n+λ∑j?wj2?。 引入L2正则时,代价函数在0处的导数仍是 d 0 d_0 d0?,无变化。所以添加L2正则项,得到的解比较平滑(不是稀疏),并不能使得最后的解向量中含有更多的0。但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。 为什么L2正则化可以得到值很小的权值而不是值为0的权值?从上式可以看出每次更新时,会对特征系数进行一个比例缩放而不是像L1 正则化减去一个固定值,这会让系数趋向变小而不会变为 0,因此L2正则化会让模型变得更简单,防止过拟合,而不会起到特征选择的作用。 参考:机器学习中的正则化(Regularization) - Zero黑羽枫 L2正则化会将最优解w*的分量进行缩放,某分量方向上代价函数降低得越慢,则对其缩放的程度越高。 参考:正则项的原理、梯度公式、L1正则化和L2正则化的区别、应用场景 - pyxiea 为什么参数的绝对值更小对应的模型更简单?考虑多项式拟合的场景: 在等量的数据集规模下,复杂的模型为了对训练样本的拟合程度更高,拟合的曲线要不断地剧烈上下抖动以求穿过每一个训练样本点,这就导致多项式的阶数比较大且参数绝对值比较大;反之,而当模型比较简单时,曲线就更平滑,即多项式阶数比较小且参数绝对值也小得多。 越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。 参考:正则项的原理、梯度公式、L1正则化和L2正则化的区别、应用场景 - pyxiea 从不同角度看L1 L2 范数权值稀疏作用大小
参考:l1 相比于 l2 为什么容易获得稀疏解? - ser jamie的回答 - 知乎 概率角度详细分析L1稀疏权值和L2平滑权值从贝叶斯学派的观点来看看正则化,即先假设要求的参数服从某种先验分布,以线性回归为例子,用高斯分布的极大似然估计求线性回归。 参考:L1正则化与L2正则化 - bingo酱的文章 - 知乎 L1正则化 vs L2正则化正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化的一种策略实现。 结构风险最小化: 在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。 L1正则化就是在loss function后边所加正则项为L1范数,加上L1范数容易得到稀疏解(0比较多)。L2正则化就是loss function后边所加正则项为L2范数的平方,加上L2正则相比于L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。 参考:L1正则化与L2正则化 - bingo酱的文章 - 知乎 可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。 相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。 因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。 为什么梯度下降的等值线与正则化函数第一次交点是最优解?当不带正则项的损失函数的等值线与正则项的图形首次相交的地方就是最优解。这是带约束的最优化问题。可以参考:带约束的最优化问题 后续补充。 为什么L1和L2稀疏作用经典解释图为什么要理解为三维立体?(如何理解“L1范数是L0范数的最优凸近似”?)
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:28:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |