美文网首页
Tensorflow深度学习的日常——day-5

Tensorflow深度学习的日常——day-5

作者: 唐伟耀 | 来源:发表于2018-10-10 17:32 被阅读0次

    什么是过拟合(overfitting )?

    其实过拟合就相当于我们生活中的自负,机器学习模型于自信,已经到了自负的阶段了,这样往往得不到我们想要的结果. 

    分类例子 (图引用莫凡python)

    上图分类的例子中(我们的目的是把红色和蓝色区分开来),其中黑色的曲线是正常的模型。然而绿色的线就是过拟合模型,尽管它很精确的区分了训练数据,但是并没有具体描述这些数据的整体特征,因此我们换上新的测试数据时,适应性会很差。

    Regression(回归)(图引用莫凡python)

    由回归例子的图可以看出,第三条线尽管经过了所有的训练数据点,但是不能反映数据的趋势,因此它的预测能力会很不足。


    解决方法:

    方法一: 

    增加数据量, 大部分过拟合产生的原因是因为数据量太少了. 如果我们有成千上万的数据, 红线也会慢慢被拉直, 变得没那么扭曲 . 

    方法二:

    (图引用莫凡python)

    运用正规化. 简化机器学习的关键公式为 y=Wx . W为机器需要学习到的各种参数. 在过拟合中, W 的值往往变化得特别大或特别小. 为了不让W变化太大, 我们在计算误差上做些手脚. 原始的 cost 误差是这样计算, cost = 预测值-真实值的平方. 如果 W 变得太大, 我们就让 cost 也跟着变大, 变成一种惩罚机制. 所以我们把 W 自己考虑进来. 这里 abs 是绝对值. 这一种形式的 正规化, 叫做 l1 正规化. L2 正规化和 l1 类似, 只是绝对值换成了平方. 其他的l3, l4 也都是换成了立方和4次方等等. 形式类似. 用这些方法,我们就能保证让学出来的线条不会过于扭曲.

    方法三:

    还有一种专门用在神经网络的正规化的方法, 叫作 dropout. 在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次.第二次再随机忽略另一些, 变成另一个不完整的神经网络. 有了这些随机 drop 掉的规则, 我们可以想象其实每次训练的时候,我们都让每一次预测结果都不会依赖于其中某部分特定的神经元, Dropout 的做法是从根本上让神经网络没机会过度依赖.


    dropout 解决 overfitting 问题

    代码:

    结果:

    (1)当keep_prob=1时,会出现过拟合。

    1

    由图我们可以看出,test和train存在着差距。

    (2)当keep_prob=0.5时。

    0.5

    由图可以看出,test和train几乎重合,这就体现了dropout 解决 overfitting 问题。

    相关文章

      网友评论

          本文标题:Tensorflow深度学习的日常——day-5

          本文链接:https://www.haomeiwen.com/subject/txxmaftx.html