《机器学习》第2章 补充:机器学习中用来防止过拟合的方法有哪些

定义:过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合,具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。

解决的方法有以下3种

1.获取更多数据,这是解决过拟合最有效的方法,但我觉得多半不是程序员应该思考的问题。

2.选用合适模型,过拟合主要是有两个原因造成的:数据太少 + 模型太复杂。我们主要针对后半部分。

2.1 优化模型。不用多说,了解各个模型的特产,专业的问题交给专业的模型解决。

《机器学习》第2章 补充:机器学习中用来防止过拟合的方法有哪些_第1张图片

2.2 限制训练时间。当网络权值较小时,神经元的激活函数工作在线性区,此时神经元的拟合能力较弱(类似线性神经元)。如上图。

有了上述共识之后,我们就可以解释为什么限制训练时间(early stopping)有用:因为我们在初始化网络的时候一般都是初始为较小的权值。训练时间越长,部分网络权值可能越大。如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内


3. 结合多种模型

这个可能是业界处理机器学习问题的基本套路,一般解决如广告推荐会同时使用几种机器模型,如有的做分类,有的聚类,有的做细节的功能的整理(如统计周期率),有的计算相似度,有的最后拿出结果。所以经常卉训练多个模型,以每个模型的平均输出作为结果。

3.1  Bagging

简单理解,就是分段函数的概念:用不同的模型拟合不同部分的训练集。以随机森林(Rand Forests)为例,就是训练了一堆互不关联的决策树。但由于训练神经网络本身就需要耗费较多自由,所以一般不单独使用神经网络做 Bagging。

3.2 Boosting

既然训练复杂神经网络比较慢,那我们就可以只使用简单的神经网络(层数、神经元数限制等)。通过训练一系列简单的神经网络,加权平均其输出。

《机器学习》第2章 补充:机器学习中用来防止过拟合的方法有哪些_第2张图片

3.3 Dropout

这是一个很高效的方法。

《机器学习》第2章 补充:机器学习中用来防止过拟合的方法有哪些_第3张图片

在训练时,每次随机(如 50% 概率)忽略隐层的某些节点;这样,我们相当于随机从 2^H 个模型中采样选择模型;同时,由于每个网络只见过一个训练数据(每次都是随机的新网络),所以类似 bagging 的做法,这就是我为什么将它分类到「结合多种模型」中;

此外,而不同模型之间权值共享(共同使用这 H 个神经元的连接权值),相当于一种权值正则方法,实际效果比 L2 regularization 更好。

你可能感兴趣的:(《机器学习》第2章 补充:机器学习中用来防止过拟合的方法有哪些)