zoukankan      html  css  js  c++  java
  • 机器学习基石笔记(四)

    四、 How Can Machines Learn Better?

       我个人感觉第四讲是整个基石课程的精髓所在,很多东西说的很深也很好。

     首先是overfitting的问题,过拟合是一个常发生的情况,简单的理解就是下图,low Ein不一定是好事,因为我们的目的是low Eout。所以不能过拟合你的训练集是每个machine learning工程师需要注意的事情。

     

    overfitting简单的理解就是:学习的人太厉害,而需要学习的知识太简单,如上图,你用一个5次的函数去学习这样一个数据集,实在是大材小用了。

    当然影响overfitting的还有其他因素,总的来说要避免overfitting我们需要做到:1、很少的噪声数据 2、适合的dvc 3、足够多的数据。

    下图是一个悲伤的故事,我们知道十次函数的学习能力肯定远远的超过二次函数,但似乎在这两种情况下,它的表现都很令人捉鸡...

    Why?如果你还记得之前的学习曲线和公示的话大概就会清楚了,如下图所示,需要注意的是,这一切都建立在N比较小的时候。

      需要注意的是,我们通常可能认为g10不如g2的时候,是因为它对噪声的影响太过敏感了,而事实上在完全没有噪声的数据上,他也是完败的,这里引出来的问题是,真的没有“噪声”么?或许目标的复杂度一定程度上也可以看做噪声?

      In fact,我们可以把噪声分为两类,stichastic noise,真实世界产生的噪声数据,deterministic noise,由模型的复杂度引起的噪声数据,后者简单的理解就是,我用10次多项式去拟合一个由50次多项式产生的数据,肯定有很多地方我是做不到拟合的,那么那些数据从某种意义上来说,就是噪声。

      下图蓝色表示好,红色表示很差。左图很好理解,右图在左下角需要解释一下。因为目标函数是一个十次函数产生的数据,所以在模型的复杂度从10往下走的时候,表现的会越来差。因为当你用10次多项式的函数去拟合小于10次的目标函数的时候,表现的当然回事overftting

      

      

      下面说的是一个避免overfitting的一个常见的方法: Regularization,正则化!

      这里林老师引入正则化的角度非常棒,我们上面知道,H2的表现有时候比H10好,然后H10是可以做成H2的效果的,只要让多出来的几项的参数为0即可,也就是如果我们给H10的W加上一系列的限制,或许他可以取得不错的效果。

      下图事关于constrained optimization的方法,其实就是拉格朗日乘子法的后一步。

      

      下图是三个参数之前的关系:

      

    并且,正则化可以很好的和VCbound联系起来,因为减小了参数的自由度,自然也就降低了模型的复杂度,也就减小了过拟合的风险:

        Then,是Validation,在实践中非常重要的一个问题,因为我们不可能获得最终的测试集的,当然即使可以也不应该用,因为不利于模型的Generalization,所以设置验证集是很有用and很有必要的。

        validation在模型的选择、超参数的选择上面有很大的作用。

        但在给定的数据集上划分train set和validation set同样存在一个悖论问题,很好理解,K太大,train就不准,k太小,validation就不准,因此根据经验,一般取K=N/5:

        

      

        更加好的方法是V-fold Validation,就是把数据集分成V个fold,然后分别把每个作为验证集在用其他V-1的fold去train,得到的V个结果再平均,这个结果很不错,问题是计算量有点大,一般在实际中取5-fold或者10-fold

      Conclusion

        Ok,终于到基石的最后一章了,整个笔记我觉得写得很一般...不过还好其实只是给自己看的,有些东西好不容易理解了,还是记下来常看看比较好,所以就这样了吧..

        奥卡姆的剃须刀阐释了一个原则:simple is better,翻译过来就是,不要想太多.....

        后面还提到了一个data snooping的问题,也就是我们要尽量少的利用数据的先验,除非你知道你算法应用的场景一定也满足这个先验,不然很容易让你的模型overfitting。

        然后是一个总结性的东西:

        

        

     

     

  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/daihengchen/p/5899903.html
Copyright © 2011-2022 走看看