精华内容
下载资源
问答
  • 机器学习-泛化能力

    千次阅读 2021-02-20 23:25:57
    2.什么是好的机器学习模型的提出 3.泛化误差 4.模型泛化能力的评价标准 4.提高泛化能力 5.举例 6.相关引用文献 1.什么是泛化能力 百度百科解释:机器学习算法对新鲜样本的适应能力。 更加具体的解释:学习到...

    目录

    1.什么是泛化能力

    2.什么是好的机器学习模型的提出

    3.泛化误差

    4.模型泛化能力的评价标准 

    4.提高泛化能力

    5.举例

    6.相关引用文献


    1.什么是泛化能力

    百度百科解释:机器学习算法对新鲜样本的适应能力。

    更加具体的解释:学习到的模型对未知数据的预测能力,这个未见过的测试数据必须是和训练数据处于同一分布,不在同一分布的数据是不符合独立同分布假设的(对同一规律不同的数据集的预测能力)。通常通过测试误差来评价学习方法的泛化能力。

    通俗+形象解释:
    就是通过数据训练学习的模型,拿到真实场景去试,这个模型到底行不行,如果达到了一定的要求和标准,它就是行,说明泛化能力好,如果表现很差,说明泛化能力就差。为了更好的理解泛化能力,这里引入三种现象,欠拟合、过拟合以及不收敛。泛化能力的本质就是反映模型有没有对客观世界做真实的刻画,还是发生了过拟合。
    考试成绩差的同学,有这三种可能:
    一、泛化能力弱,做了很多题,始终掌握不了规律,不管遇到老题新题都不会做,称作欠拟合
    二、泛化能力弱,做了很多题,只会死记硬背,一到考试看到新题就蒙了,称作过拟合
    三、完全不做题,考试全靠瞎蒙,称作不收敛

    2.什么是好的机器学习模型的提出

    奥卡姆的威廉是 14 世纪一位崇尚简单的修士和哲学家。 他认为科学家应该优先采用更简单(而非更复杂)的公式或理论。

    奥卡姆剃刀定律在机器学习方面的运用如下: 

    机器学习模型越简单,良好的实证结果就越有可能不仅仅基于样本的特性。

    现今,我们已将奥卡姆剃刀定律正式应用于 统计学习理论 和 计算学习理论 领域。这些领域已经形成了 泛化边界,即统计化描述模型根据以下因素泛化到新数据的能力: 

    • 模型的复杂程度

    • 模型在处理训练数据方面的表现

    虽然理论分析在理想化假设下可提供正式保证,但在实践中却很难应用。 机器学习速成课程则侧重于实证评估,以评判模型泛化到新数据的能力。

    机器学习模型旨在根据以前未见过的新数据做出良好预测。 但是,如果要根据数据集构建模型,如何获得以前未见过的数据呢? 一种方法是将您的数据集分成两个子集:

    • 训练集 - 用于训练模型的子集。

    • 测试集 - 用于测试模型的子集。

    一般来说,在测试集上表现是否良好是衡量能否在新数据上表现良好的有用指标,前提是:

    • 测试集足够大。

    • 您不会反复使用相同的测试集来作假。

    3.泛化误差

    首先给出泛化误差的定义, 如果学到的模型是 f^ , 那么用这个模型对未知数据预测的误差即为泛化误差

     泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效, 事实上,泛化误差就是所学到的模型的期望误差。

    4.模型泛化能力的评价标准 

    回归任务常用的性能度量是“均方误差”。

    1. 错误率与精度

    错误率与精度是分类任务中最常用的两种性能度量。既适用于二分类,也适用于多分类。
    
     错误率:分类错误的样本数占总样本数的比例。
     精度 : 分类正确的样本数占总样本数的比例。
    
     精度 + 错误率 = 1 
    
              假设,总的样本数为m个,我们对这m个样本进行预测,其中预测对了的样本有p个,预测错的样本有n个(p+n = m),则:
              错误率 = n/m
              精度  = p/m
    

     2. 查全率、查准率、F1

       当任务有所偏好时,错误率与精度便不能满足任务的需求。比如我们关心的是“检索出来的信息中有多少是用户感兴趣的”或者“用户感兴趣的信息有多少被检索出来了”。此时就需要查全率、查准率、F1值来进行模型的性能度量。
    
       假设,总的测试样本有m个,其中正样本有z个,负样本有f个。
    
       查全率:对这m个样本进行预测,其中z个正样本中有zm个被预测对。查全率 = zm / z
       查准率: 对这m个样本进行预测,预测的结果中有ym个是正样本,ym个样本中有y个是z的,则:查准率 = y / ym
       ![这里写图片描述](https://img-blog.csdn.net/20170323192002648?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
       上图为混淆矩阵,TP + FN + FP + TN = 样例总数。
       对应的查准率P和查全率R分别定义为:
       ![这里写图片描述](https://img-blog.csdn.net/20170323192302192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
      查准率和查全率是一对矛盾的度量。
      查准率越高时,查全率往往偏低。而查全率越高时,查准率往往偏低。
    

    P-R曲线:(查准率-查全率曲线) 
    这里写图片描述

    P-R曲线是以查全率为横轴,以查准率为纵轴的二维坐标图。

    P-R曲线的建立过程: 
    根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的则是学习器任务“最不可能”是正例的样本。按此排序,逐个把样本作为正例进行预测,则每次可以计算出当前的查全率和查准率。以此为纵轴和横轴作图,便得到了查全率-查准率曲线,即P-R曲线。

    P-R曲线作用: 
    用来对比不同学习器的好坏的。例如上图2.3中学习器A包含学习器C,则说学习器A优于学习器C。但当两个学习器的P-R曲线有交叉时,难以判断那个学习器较好。通常的做法是计算每个学习器曲线所包含的面积,比较面积的大小。但这值不太容易估算。于是人们便使用“平衡点”(简称BEP)这一度量,即“查准率 = 查全率”时的取值。例如上图中的平衡点可判定,学习器A优于学习器B。

    F1值: 
    F1值为查全率和查准率的协调平均值, 
    这里写图片描述

    在一些应用中,对查全率和查准率的重视程度有所不同,F1度量的一般形式能让我们表达出对查全率和查准率的的不同偏好。
    ![这里写图片描述](https://img-blog.csdn.net/20170323200924929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    其中β > 0 度量的查全率对查准率的相对重要性。β = 1 时便为标准的F1。β > 1时查全率有更大的影响,β < 1时查准率有更大的影响。
    
    当我们在多个二分类混淆矩阵上综合考虑查全率和查准率时有两种方法:
    第一种,先在各混淆矩阵上分别计算出查全率和查准率,再计算平均值。这样就得到了“宏查全率”、“宏查准率”、以及“宏F1”
    ![这里写图片描述](https://img-blog.csdn.net/20170323201635647?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    

    第二种,先将各混淆矩阵的对应元素进行平均,再基于这些平均值进行计算,得出“微查全率”“微查准率”以及“微F1”, 
    这里写图片描述 
    这里写图片描述

    3.ROC与AUC

    ROC曲线与AUC常被用来评价一个二分类器的优劣。

    和P-R曲线类似,“ROC曲线”是根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要的量值(真正例率TRP和假正例率FPR),分别以他们作为横、纵坐标作图,就得到了“ROC曲线”。

    这里写图片描述

    这里写图片描述

        上图(a)中的虚线表示“随机猜测”模型。在(0,1)点处,即FPR=0, TPR=1,这意味着FN = 0,并且FP = 0。这是一个完美的分类器,它将所有的样本都正确分类。在(1,0)点处,即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。在(0,0)点处,即FPR=TPR=0,即FP = TP =0,可以发现该分类器预测所有的样本都为负样本。在(1,1)点处,分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。
    
    •  

    现实任务中通常是利用有限个测试样本来绘制ROC图的,所以仅能或得有限个(真正例率TRP和假正例率FPR)坐标对,绘制出的图如上图中的(b)。

    ROC曲线绘制过程:

       给定m个正例和n个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设置为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)出标记一个点。然后,将分类的阈值依次设置为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记的坐标为(x,y),当前若为真正例,则对应的标记点的坐标为(x, y+1/m);若当前为假正例,则对应标记点的坐标为(x+1/n, y), 然后用线段连接相邻的点即可。
    
    •  

    学习器比较:

      若一个学习器A的ROC曲线包含另外一个学习器B的ROC曲线,则认为学习器A的性能优于学习器B。
      若两者的ROC曲线相交,则需要对各自ROC曲线下得面积(即AUC)进行比较。
    

    AUC可通过对ROC曲线下各部分面积求和而得。 
    这里写图片描述

    4.代价敏感错误率与代价曲线

    不同类型的错误所造成的后果不同。

    为权衡不同类型错误造成的不同损失,可为错误赋予“非均等代价”。

    以二分类为例,可设定一个“代价矩阵” 
    这里写图片描述

    表中cost10 表示将第1类错分为第0类的代价,cost01同样,表示将第0类错分为第1类的代价。此二分类也可拓展为多分类costij表示将第i类错分为第j类的代价。

    前面的性能度量都默认的假设了均等代价,所有错误率是直接计算错误的次数,并没有考虑不同错误会造成的不同的后果。在非均等代价下,我们希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”。 
    这里写图片描述 
    上式中,D+和D-分别表示样例集D中的正例子集和反例子集。

    在非均等代价下,ROC曲线不能直接反应学习器期望的总体代价,而“代价曲线”则可达到该目的。 
    代价曲线图的横轴是取值为[0,1]的正例概率代价: 
    这里写图片描述 
    上式中p是样例为正例的概率。

    纵轴是取值为[0,1]的归一化代价:

    这里写图片描述

    FNR表示假正例率,FNR = 1 - TPR

    代价曲线的绘制:

       ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上的坐标为(TPR,FPR),则可相应的计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下面的面积即表示了该条件下得期望总体代价。如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价。
    
    •  

    这里写图片描述

     

    4.提高泛化能力

    提高泛化能力的方式大致有三种:1.增加数据量。2.正则化。3.凸优化。

     

    5.举例

    下面图片中每个点代表一棵树的位置,蓝点代表生病的树,橙点代表健康的树。

    给你样本数据,要求提供一个机器学习算法算法,区分开两种树。

    你千辛万苦画出来一条曲线能够很好地进行聚类,而且模型的损失非常低(损失函数),几乎完美的把两类点一分为二。但这个模型真的就是好模型吗?

    用该算法预测新样本时,没有很好的区分两类点,表现得有些差劲。

    上述模型过拟合了训练数据的特性,过拟合模型在训练过程中产生的损失很低,但在预测新数据方面的表现却非常糟糕。如果某个模型在拟合当前样本方面表现良好,那么我们如何相信该模型会对新数据做出良好的预测呢?过拟合是由于模型的复杂程度超出所需程度而造成的。机器学习的基本冲突是适当拟合我们的数据,但也要尽可能简单地拟合数据。

     

    6.相关引用文献

    https://blog.csdn.net/tiankong_/article/details/78361496

    https://zhuanlan.zhihu.com/p/59673364?utm_source=wechat_session

    https://segmentfault.com/a/1190000016425702?utm_source=tag-newest

    https://my.oschina.net/u/4604431/blog/4476343

    https://www.jianshu.com/p/849423297c7f

    https://blog.csdn.net/vvyuervv/article/details/65449079

     

    展开全文
  • 模型泛化能力:指机器学习算法对新鲜样本的适应能力。 学习的目的:学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。 由此可见,经训练样本...

    模型的泛化能力:指机器学习算法新鲜样本适应能力
    学习的目的:学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。

    由此可见,经训练样本训练的模型需要对新样本做出合适的预测,这是泛化能力的体现。

    举个例子,高中生每天各种做题,五年高考三年模拟一遍遍的刷,为的什么,当然是想高考能有个好成绩。高考试题一般是新题,谁也没做过,平时的刷题就是为了掌握试题的规律,能够举一反三、学以致用,这样面对新题时也能从容应对。这种规律的掌握便是泛化能力,有的同学很聪明,考上名校,很大程度上是该同学的泛化能力好。

    考试成绩差的同学,有这三种可能:一、泛化能力弱,做了很多题,始终掌握不了规律,不管遇到老题新题都不会做二、泛化能力弱,做了很多题,只会死记硬背,一到考试看到新题就蒙了三、完全不做题,考试全靠瞎蒙。机器学习中,第一类情况称作欠拟合,第二类情况称作过拟合,第三类情况称作不收敛在这里插入图片描述

    展开全文
  • 2019-05-25 09:06:50 这是专栏《AI初识境》的第9篇文章。所谓初识,就是对相关...今天来说说深度学习中的generalization问题,也就是泛化和正则化有关的内容。 作者&编辑 | 言有三 1 什么是generalizatio...

    https://www.toutiao.com/a6694764857343869454/

     

    2019-05-25 09:06:50

    这是专栏《AI初识境》的第9篇文章。所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法。

    今天来说说深度学习中的generalization问题,也就是泛化和正则化有关的内容。

    作者&编辑 | 言有三

    1 什么是generalization

    机器学习方法训练出来一个模型,希望它不仅仅是对于已知的数据(训练集)性能表现良好,对于未知的数据(测试集)也应该表现良好,也就是具有良好的generalization能力,这就是泛化能力。测试集的误差,也被称为泛化误差

    举个例子来说,我们在ImageNet上面训练分类模型,希望这个模型也能正确地分类我们自己拍摄的照片。

    在机器学习中,泛化能力的好坏,最直观表现出来的就是模型的过拟合(overfitting)与欠拟合(underfitting)。

    过拟合和欠拟合是用于描述模型在训练过程中的两种状态,一般来说,训练会是这样的一个曲线。下面的training error,generalization error分别是训练集和测试集的误差。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    训练刚开始的时候,模型还在学习过程中,训练集和测试集的性能都比较差,这个时候,模型还没有学习到知识,处于欠拟合状态,曲线落在underfitting zone,随着训练的进行,训练误差和测试误差都下降。

    随着模型的进一步训练,在训练集上表现的越来越好,终于在突破一个点之后,训练集的误差下降,测试集的误差上升了,这个时候就进入了过拟合区间overfitting zone

    不过也不是说什么训练过程,都会满足上面的曲线。

    (1) 模型训练过程中,训练集的误差一定一直低于测试集吗?未必。

    如果这两个集合本来就取自于同样的数据分布,比如从一个数据集中随机采样,那么有可能测试的误差从一开始就低于训练集。不过,总体的趋势肯定是不变的,两者从一开始慢慢下降直到最后过拟合,训练集的误差低于测试集。

    (2) 模型的训练一定会过拟合吗?这也不一定!

    如果数据集足够大,很可能模型的能力不够始终都不会过拟合。另一方面,有很多的方法可以阻止,或者减缓模型的过拟合,比如正则化,这就是下面第二部分要说的。

    2 什么是Regularization

    Regularization即正则化,它本是代数几何中的一个概念,我们不说因为说不好。放到机器学习里面来说,所谓正则化,它的目标就是要同时让经验风险和模型复杂度较小

    「AI初识境」如何增加深度学习模型的泛化能力

     

    以上是我们的优化目标,V就是损失函数,它表示的是当输入xi预测输出为f(xi),而真实标签为yi时,应该给出多大的损失。那么我们不禁要问,有这一项不就行了吗?为什么还需要后面的那一项呢?R(f)又是什么呢?

    这就是回到上面的泛化误差和过拟合的问题了,一个机器学习系统,学习的是从输入到输出的关系,只要一个模型足够复杂,它是不是可以记住所有的训练集合样本之间的映射,代价就是模型复杂,带来的副作用就是没见过的只是略有不同的样本可能表现地就很差,就像下面这张图,只是更改了一个像素,预测就从Dog变成了Cat。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    造成这种情况的问题就是学的太过,参数拟合的太好以致于超过了前面那个训练曲线的最低泛化误差临界点,究其根本原因是模型的表达能力足够强大到过拟合数据集。

    式子中的R(f),正是为了约束模型的表达能力,f是模型,R是一个跟模型复杂度相关的函数,单调递增。

    有同学可能会说,模型的表达能力跟模型大小,也就是参数量有关,限制模型的表达能力不是应该去调整模型大小吗?这里咱们从另一个角度来看模型的能力问题。

    如果我们限制一层神经网络的参数只能为0或者1,它的表达能力肯定不如不做限制,所以同样的参数量,模型的表达能力与参数本身也有关系,正则项就可以在参数上做文章。

    所以说正则化就用于提高模型的泛化能力,这里所说的仅仅是狭义上的参数正则化,而广义上的正则化方法众多,第3部分进行介绍。

    正则化的最终目标用一句土话来说,就是让网络学的不要太死,否则变成僵硬的书呆子。

    3 正则化方法有哪些

    正则化方法,根据具体的使用策略不同,有直接提供正则化约束的参数正则化方法如L1/L2正则化,以及通过工程上的技巧来实现更低泛化误差的方法,比如训练提前终止和模型集成,我将其称为经验正则化,也有不直接提供约束的隐式正则化方法如数据增强等,下面就从这三类进行讲述。

    1、经验正则化方法

    这里主要包含两种方法,即提前终止和模型集成

    (1) 提前终止

    前面我们看的训练曲线随着不断迭代训练误差不断减少,但是泛化误差减少后开始增长。假如我们在泛化误差指标不再提升后,提前结束训练,也是一种正则化方法,这大概是最简单的方法了。

    (2) 模型集成

    另一种方法就是模型集成(ensemable),也就是通过训练多个模型来完成该任务,它可以是不同网络结构,不同的初始化方法,不同的数据集训练的模型,也可以是用不同的测试图片处理方法,总之,采用多个模型进行投票的策略。

    在这一类方法中,有一个非常有名的方法,即Dropout。

    Dropout在2014年被H提出后在深度学习模型的训练中被广泛使用。它在训练过程中,随机的丢弃一部分输入,此时丢弃部分对应的参数不会更新。所谓的丢弃,其实就是让激活函数的输出为0。结构示意图如下。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    因而,对于一个有n个节点的神经网络,有了dropout后,就可以看做是2^n个模型的集合了,使用的时候当然不能用2^n个模型来进行推理,而是采用了近似方法,即在使用的时候不进行权重丢弃。根据丢弃比例的不同,在测试的时候会给输出乘以相应的系数,比如某一层在训练的时候只保留50%的权重,在测试的时候是需要用到所有参数的,这个时候就给该层的权重乘以0.5。

    关于dropout的有效性,从结构上来说,它消除或者减弱了神经元节点间的联合,降低了网络对单个神经元的依赖,从而增强了泛化能力。不过也有另外的一些研究从数据增强的角度来思考这个问题。

    那么,就真的不担心dropout会把一些非常重要的神经元删除吗?最新的神经科学的研究以及DeepMind等研究人员通过对神经元进行随机删除来研究网络性能,发现虽然某些神经元确实很重要,它们会选择性激活特定输入,比如只对输入猫图特别敏感,对其他输入则完全不感冒,但是删除这一类神经元仍然不影响网络能识别到猫。

    这说明网络中未必少了谁就不行。不过反过来,上面说到的单个像素的攻击,则说明又有某些神经元至关重要。关于这其中的关系,仍然是研究热门,还是不断跟进更多最新的研究吧。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    总之一句话,不怕删了谁。就dropout的使用方法而言,我们平常只更改dropout的比例,作者对此还有更多的建议。

    (1) 因为dropout降低了模型的性能,所以对于原本需要容量为N的网络才能解决的问题,现在需要N/p,p就是保留该节点的概率,这个概率通常在0.5~0.9之间,p=1就是普通的网络了。

    (2) 因为dropout相当于增加了噪声,造成梯度的损失,所以需要使用更大的学习率和动量项。与此同时,对权重进行max-norm等权重约束方法,使其不超过某个值。

    (3) 训练更久,很好理解。

    对dropout方法,还有很多的变种,包括dropout connect,maxout,stochastic depth等。

    一个神经元的输出实际上是由输入以及参数来共同决定,dropout把神经元的值设置为0了,那是不是也可以把参数设置为0呢?这就是drop connect,而且它可以比dropout更加灵活,可视为Dropout的一般化形式,从模型集成的角度来看,Dropout是2^n个模型的平均,那DropConnect呢?它应该更多,因为权重连接的数目比节点数本身更多,所以DropConnect模型平均能力更强。

    Drop Connect和Dropout均引入了稀疏性,不同之处在于Drop Connect引入的是权重的稀疏而不是层的输出向量的稀疏。

    另外,在dropout这一个思路上做相关文章的还有一些,比如maxout,是一种激活函数,它对N个输入选择最大的作为激活输出。比如随机pooling,是一种池化方法。比如stochastic depth,它用在带有残差结构的网络中,将某些res block直接设置为等价映射。还有backdrop,在前向的时候不drop,在梯度反传的时候才做。

    在这里不禁想给大家提两个问题

    (1) 你还能想到多少种drop方法?想不到就等我们下次专门说。

    (2) dropout应该怎么跟其他的方法结合,比如batch normalization,会强强联合得到更好的结果吗?

    2、参数正则化方法

    L2/L1正则化方法,就是最常用的正则化方法,它直接来自于传统的机器学习。

    L2正则化方法如下:

    「AI初识境」如何增加深度学习模型的泛化能力

     

    L1正则化方法如下:

    「AI初识境」如何增加深度学习模型的泛化能力

     

    那它们俩有什么区别呢?最流行的一种解释方法来自于模式识别和机器学习经典书籍,下面就是书中的图。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    这么来看上面的那张图,参数空间(w1,w2)是一个二维平面,蓝色部分是一个平方损失函数,黄色部分是正则项。

    蓝色的那个圈,中心的点其实代表的就是损失函数最优的点,而同心圆则代表不同的参数相同的损失,可见随着圆的扩大,损失增大。黄色的区域也类似,周边的红色线表示的是损失相同点的轮廓。

    正则项的红色轮廓线示平方损失的蓝色轮廓线总要相交,才能使得两者加起来的损失最小,两者的所占区域的相对大小,是由权重因子决定的。不管怎么说,它们总有一个交叉点。

    对于L2正则化,它的交点会使得w1或者w2的某一个维度特别小,而L1正则化则会使得w1或者w2的某一个维度等于0,因此获得所谓的稀疏化。

    在深度学习框架中,大家比起L1范数,更钟爱L2范数,因为它更加平滑和稳定。

    3、隐式正则化方法

    前面说了两种正则化方法,第一种,通过对网络结构的修改或者在使用方法上进行调整。第二种,直接对损失函数做了修改。这两种方法,其实都应该算作显式的正则化方法,因为在做这件事的过程中, 我们是有意识地知道自己在做正则化。

    但是还有另一种正则化方法,它是隐式的正则化方法,并非有意识地直接去做正则化,却甚至能够取得更好的效果,这便是数据有关的操作,包括归一化方法和数据增强,扰乱标签。

    关于数据增强的方法,大家可以去有三AI公众号看。

    实验表明,隐式的方法比显式的方法更强,从batch normalization的使用替换掉了dropout,以及数据扩增碾压一切trick就可以看出。另外,批量随机梯度算法本身,也可以算是一种隐式的正则化方法,它随机选择批量样本而不是整个数据集,与上面的dropout方法其实也有异曲同工之妙。

    这么看来,其实data dependent方法更好,咱们前面的几期都说过,不要闷着头设计,从数据中学习才是王道。

    4 深度学习泛化能力到底好不好

    你说深度学习的泛化能力是强还是不强,感觉完全可以打一架。

    一方面,深度学习方法已经在各行各业落地,说泛化能力不好谁都不信,都已经经得起工业界的考验。关于如何定量的衡量泛化能力,目前从模型复杂度的角度有一些指标,可以参考[1]。

    但是另一方面,有许多的研究[2-3]都表明,仅仅是对图像作出小的改动,甚至是一个像素的改动,都会导致那些强大的网络性能的急剧下降,这种不靠谱又让人心慌,在实际应用的过程中,笔者也一直遇到这样的问题,比如下图微小的平移操作对输出概率的严重影响,真的挺常见。

    「AI初识境」如何增加深度学习模型的泛化能力

     

    正则化方法可以完美解决吗?甚至最强的数据增强方法能做的都是有限的,一个网络可以记忆住样本和它的随机标签[4],做什么正则化都没有作用。说起来神经网络一直在力求增强各种不变性,但是却往往搞不定偏移,尺度缩放。这就是为什么在刷比赛的时候,仅仅是对图像采用不同的crop策略,就能胜过任何其他方法的原因,从这一点来说,是一件非常没有意思的事情。

    或许,关于正则化,再等等吧。

    参考文献

    [1] Neyshabur B, Bhojanapalli S, Mcallester D A, et al. Exploring Generalization in Deep Learning[J]. neural information processing systems, 2017: 5947-5956.

    [2] Su J, Vargas D V, Sakurai K, et al. One Pixel Attack for Fooling Deep Neural Networks[J]. IEEE Transactions on Evolutionary Computation, 2019: 1-1.

    [3] Azulay A, Weiss Y. Why do deep convolutional networks generalize so poorly to small image transformations[J]. arXiv: Computer Vision and Pattern Recognition, 2018.

    [4] Zhang C, Bengio S, Hardt M, et al. Understanding deep learning requires rethinking generalization[J]. international conference on learning representations, 2017.

    展开全文
  • 过拟合是什么呢? 过拟合简单来说就是模型是由训练数据集得来的,得到的模型只针对训练集有更...往往我们都希望我们的模型泛化能力强,这样才能真正的具有应用于实际的可靠性。 那么对于过拟合我们应该采取什么方法...

    过拟合是什么呢?
    过拟合简单来说就是模型是由训练数据集得来的,得到的模型只针对训练集有更好的预测效果,对于未知的数据集预测效果很差。这其实是由于训练过程中,模型过于偏向于训练数据集,导致模型对训练数据集的拟合效果很好,导致模型失去了泛化能力。
    模型的泛化能力即指模型对于未知数据的预测能力。往往我们都希望我们的模型泛化能力强,这样才能真正的具有应用于实际的可靠性。

    那么对于过拟合我们应该采取什么方法去解决呢?或者说如何增强模型的泛化能力
    两种常用的方法是正则化和交叉验证。
    正则化是从模型上着手,改变模型的表达式来达到目的。而交叉验证则是从数据集出发,通过对数据集的各种划分,在进行训练来提高模型的泛化能力。

    正则化的出发点是是什么呢?
    往往过拟合的原因是由于模型参数过多或参数为了“迎合”训练集导致参数分布“太偏”,导致模型过于复杂。正则化则是在损失函数后面加上一个正则化项aJ(f),J(f)也称结构风险,a为调节经验和结构风险的系数。J(f)往往为||w||2,其实J(f)的作用相当于将权重向量w的各个分项向0处拉,这样就会使模型变得简单,同时,如果w中有的分量接近于零,其实相当于减少了模型权重的参数个数,因为当w的某个分量很接近于0时,x中与该分量对应的数无论是大还是小与该分量相乘都为零。正则化方法也正符合了奥卡姆剃刀原理。
    奥卡姆剃刀原理:在所有可能选择的模型中,能够很好的解释已知数据并且十分简单才是最好的模型。

    交叉验证其实相当于充分利用已有数据,尽量的留有未知数据去验证模型。
    交叉验证一般三种常见的方法:简单交叉验证、S折交叉验证、留一交叉验证
    简单交叉验证:随机的将数据分为两份,一般为3:7,训练集占7份,测试集占3份。当然划分比例不是固定的,可以根据不同的情况去设置。
    S折交叉验证:将数据集随机分为s份,取出一份,其余用作训练集,用取出的那一份作测试集。之后放回轮流取出剩下每份数据,重复S次,选择测试效果最好的那次结果。

    留一交叉验证:留一交叉验证其实有点像S折交叉验证的特殊情况,假如样本数为N,如果S=N,此时S折交叉验证就相当于留一交叉验证,往往在数据稀缺的时候采用这种方法。

    展开全文
  • 那么我们怎么知道一个模型泛化能力的好坏呢?很容易想到的就是使用训练集测试集分离,我们用训练集进行模型的fit,然后拿测试集进行预测,最后对比测试集的特征数据预测出来的结果 对比测试集合的真实结果,就能知道...
  • 1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去改进从而使下次...
  • 基于机器学习的全参考图像质量评价模型泛化能力分析.pdf
  • 机器学习-泛化能力笔记

    万次阅读 2017-10-27 09:57:45
    机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。 2.泛化误差的定义 大家马上应该发现,这个不是损失函数的...
  • 模型泛化能力是其是否能良好地应用的标准,因此如何通过有限的数据训练泛化能力更好的模型也是深度学习研究的重要问题。仅在数据集上高度拟合而无法对之外的数据进行正确的预测显然是不行的。本文将不断总结相关的...
  • 深度强化学习实验室官网:http://www.neurondance.com/来源:https://zhuanlan.zhihu.com/p/328287119作者:网易伏羲实验室编辑:...
  • 在预测任务中,给定样例,要评估学习器的性能,就要把预测结果与真实标记与进行比较。回归任务中最常用的性能度量是“均方误差”(mean squared error,MSE)。下面我们主要介绍分类任务中常用的性能度量。 二、分类...
  • 机器学习--泛化能力

    千次阅读 2018-03-09 16:33:23
     泛化能力就是模型对未知数据的预测能力。在实际当中,我们通常通过测试误差来评价学习方法的泛化能力。二. 泛化误差的定义 大家很快就能发现,这不是损失函数的期望吗?没错,泛化误差就是所学习到的模型的风险...
  • 提升模型泛化能力的方法 从数据角度上来说。可以通过数据增强、扩充训练集等方法提高泛化能力。 在训练策略上,可以增加每个batch size的大小,进而让模型每次迭代时见到更多数据,防止过拟合。 调整数据分布,做...
  • 提升深度学习模型泛化性的方法

    千次阅读 2021-02-03 09:15:50
    一个好的深度学习模型的目标是将训练数据很好地推广到问题领域的任何数据。这使我们可以对模型从未见过的数据进行将来的预测。 首先,当模型泛化性差的时候,我们需要找到其原因,当训练集能够很好地拟合,但是测试...
  • 机器学习之——泛化能力

    千次阅读 2018-07-31 10:46:00
    机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。 2.泛化误差的定义 大家马上应该发现,这个不是损失函数的期望吗...
  • 数据层面: 数据增强 模型层面: dropout(深度学习) 损失函数: L1正则化(特征稀疏,或者降维度) L2正则化(特征均衡减少,增强泛化) 用标签平滑技术 ...
  • **标准化(Normalization)**是一大类方法,用于让机器学习模型看到的不同样本彼此之间更加 相似,这有助于模型的学习与对新数据的泛化。 最常见的数据标准化形式就是你已经在本书中 多次见到的那种形式:将数据减去...
  • 机器学习模型泛化能力增强技巧简介    在之前的文章中,我们已经介绍了三种提高模型泛化能力的方法,即前一篇文章介绍的L1正则化、L2正则化、DropOut方法。在本文中,我们将会从数据角度、模型训练...
  • \frac {TP+TN}{TP+FP+FN+TN}accuracy=TP+FP+FN+TNTP+TN​ 该评价指标容易受到正负样本不平衡影响,若正样本数量很少,也可以得到高正确率的模型,但是并没有实际作用(模型基本没学到正样本的特征)。为了解决这一...
  • 机器学习--提高神经网络的泛化能力

    千次阅读 2019-06-09 15:31:36
    ***泛化能力***是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。 在实际情况中,我们...
  • 机器学习模型评估ppt

    2020-11-09 16:43:24
    除此之外,还可以辅助以假设检验,比较学习器之间的泛化能力。 我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。 为此,需使用一个“测试集”来测试学习器,然后以测试集上的“测试误差”作为泛化...
  • 关于机器学习中鲁棒性和泛化能力

    千次阅读 2019-09-19 14:59:13
    关于机器学习中鲁棒性和泛化能力鲁棒性泛化能力 鲁棒性 鲁棒性字面上理解可以认为是健壮性,健壮性可以认为是更好,更加抗风险的 因此是 1.模型具有较高的精度或有效性,这也是对于机器学习中所有学习模型的基本...
  • 模型具有好的泛化能力指的是模型不但在训练数据集上表现的效果很好,对于新数据的适应能力也有很好的效果 二、泛化能力的表现:过拟合和欠拟合 (一)过拟合overfitting:模型在训练数据上表现良好,在未知数据或...
  • 深度学习提高泛化能力的技术

    万次阅读 2019-04-14 15:37:34
    对于模型,我们不仅要求它对训练数据集有很好的拟合(训练误差),同时也希望它可以对未知数据集(预测集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。 度量泛化能力的好坏,最直观的表现就是...
  • 机器学习的目的是使学习到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。不同的学习方法会给出不同的模型。当损失函数给定时, 基于损失函数的模型的训练误差(training error) 和模型的测试误差(test...
  • 近几天做模式识别实验时遇到了一个问题。在A环境下采集的数据所训练出的...第二,不用换环境采集新数据,而是对现有的训练数据合理去噪(或称滤波),用去噪后的强特征数据重新训练模型,以此提高模型泛化能力。 ...
  • 欠拟合 在机器学习过程中,特别是线性回归,那么会对数据进行拟合 如果一条曲线经过的数据点很少且很多数据相当于没有用上 ## 过拟合 ...wiki解释:一个机器学习模型泛化误差(Generalizatio...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,311
精华内容 20,924
关键字:

机器学习模型泛化能力