本文主要是介绍data augmentation and dropout,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在深度学习方法中,更多的训练数据,意味着可以用更深的网络,训练出更好的模型。
方法:
(1)将原始图片旋转一个小角度
(2)添加随机噪声
(3)一些有弹性的畸变(elastic distortions)
(4)截取(crop)原始图片的一部分。
Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trike)。它的流程如下
假设我们要训练上图这个网络,在训练开始时,我们随机地“删除”一半的隐层单元,视它们为不存在,得到如下的网络:
保持输入输出层不变,按照BP算法更新上图神经网络中的权值
以上就是一次迭代的过程,在第二次迭代中,也用同样的方法,只不过这次删除的那一半隐层单元,跟上一次删除掉的肯定是不一样的,因为我们每一次迭代都是“随机”地去删掉一半。第三次、第四次……都是这样,直至训练结束。
以上就是Dropout,它为什么有助于防止过拟合呢?可以简单地这样解释,运用了dropout的训练过程,相当于训练了很多个只有半数隐层单元的神经网络(后面简称为“半数网络”),每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么少数的错误分类结果就不会对最终结果造成大的影响。
这篇关于data augmentation and dropout的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!