解决训练过拟合的方法

这个内容大家可以看看吴恩达老师的视频和别人写的吴恩达老师课程的笔记,我觉得老师讲的非常好,笔记地址:

http://www.ai-start.com/dl2017/html/lesson2-week1.html,视频可以到网易云课堂里面看,在这里,我只是稍微总结一下,如有错误,欢迎指出,一起学习进步。

解决过拟合的方法:

1.正则化,但是它为什么可以解决过拟合问题呢?首先它是在代价函数中加入了一项函数,如下公式:

你们可以看到加入的是w的范数,可能有的人有疑问,为什么不加入b范数,其中也是可以的,主要是w是个高危矢量,b是个单纯的数值,所以我们在这里为了简单,暂时忽略它。为什么正则化有利于消除过拟合呢,直观理解就是增加到足够大,会接近于0,实际上是不会发生这种情况的,我们尝试消除或至少减少许多隐藏单元的影响,最终这个网络会变得更简单,这个神经网络越来越接近逻辑回归,我们直觉上认为大量隐藏单元被完全消除了,其实不然,实际上是该神经网络的所有隐藏单元依然存在,但是它们的影响变得更小了。神经网络变得更简单了,貌似这样更不容易发生过拟合,因此我不确定这个直觉经验是否有用,不过在编程中执行正则化时,你实际看到一些方差减少的结果。

2.Dropout(随机失活)

这个你在运行程序时,会看到这个函数,你知道这个是怎么做到的吗?

首先要定义向量表示一个三层的dropout向量:

d3 = np.random.rand(a3.shape[0],a3.shape[1])

然后看它是否小于某数,我们称之为keep-probkeep-prob是一个具体数字,上个示例中它是0.5,而本例中它是0.8,它表示保留某个隐藏单元的概率,此处keep-prob等于0.8,它意味着消除任意一个隐藏单元的概率是0.2,它的作用就是生成随机矩阵,如果对进行因子分解,效果也是一样的。是一个矩阵,每个样本和每个隐藏单元,其中中的对应值为1的概率都是0.8,对应为0的概率是0.2,随机数字小于0.8。它等于1的概率是0.8,等于0的概率是0.2。

接下来要做的就是从第三层中获取激活函数,这里我们叫它含有要计算的激活函数,等于上面的乘以a3 =np.multiply(a3,d3),这里是元素相乘,也可写为,它的作用就是让中所有等于0的元素(输出),而各个元素等于0的概率只有20%,乘法运算最终把中相应元素输出,即让中0元素与中相对元素归零。

其实说白了就是d3产生随机数,这个随机数和keep-prob比较,如果大于我们keep-prob值时为零,小于为1,然后这个和激活函数相乘即可。和零相乘的那个函数是不是为零即被去除了。神经元就减少了。

3.数据扩增

这个方法就是增加训练数据,有时候训练数据很难获取,你可以通过对现有的图片进行裁剪,编辑,水平翻转等增加数据集。

4.early stopping


这里主要参考了吴恩达老师讲的课已经上面地址写的笔记。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值