防止过拟合的方法?
定义:overfitting是指在模型参数拟合的过程中,由于训练数据包含抽样误差,训练时复杂的模型把抽样误差也考虑在内,对这些抽样误差也做了很好的拟合。
表现:最终模型在训练集上表现好,在测试集上表现差。模型泛化能力弱。
解决方案:
1.获取更多的数据,让模型接触到尽可能多的可能性,模型在经过不断的修正之后,就会得到一个比较好的效果。(获取数据可以通过数据增强的方法,比如针对同一张图,进行镜像、缩放、平移和切割等方法)
2.改进网络结构,减少网络层数、神经元的个数。
3.选取合适的训练时间,在训练网络模型的时候,卷积核的初始化权值一般都比较小,随着训练时间的增加,模型对于训练集的适应性越来越好,而导致在测试集上可能效果反而不好。因此在合适的时间节点停止训练,可以有效的防止过拟合。
4.dropout,它是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。当前Dropout被大量利用于全连接网络,而且一般认为设置为0.5或者0.3,而在卷积网络隐藏层中由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积网络隐藏层中使用较少。总体而言,Dropout是一个超参,需要根据具体的网络、具体的应用领域进行尝试。
5.正则化,在L1规范化中,权重通过一个常量向0进行缩小;在L2规范化中,权重通过一个和w成比例的量进行缩小,就是一种权值衰减的方法。