- early stopping:提前终止训练,因为test.acc达到了最高值
- dropout:随机在两层之间的连接中选取部分weight设为0
注意:
torch.nn.Dropout(p=dropout_prob)
tf.nn.dropout(keep_prob)
model.train() :启用 BatchNormalization 和 Dropout
model.eval() :不启用 BatchNormalization 和 Dropout
减少过拟合:减少数据;将模型换成一个浅层模型;正则化;dropout;early stopping设置交叉验证将数据集分为训练集、dev和测试集dev用来提前防止训练过拟合,每隔一段时间观察testperformace,选取最好的性能模型test是真实交给客户,用来测量模型的真实性能,test不能用来反馈给模型训练K-fold交叉验证:每次迭代都随机将训练数据集划分为k份,将其中的k...
1.1 定义
是指模型对于训练数据拟合呈现过当的情况,反映到评估指标上就是模型在训练集上的表现很好,但是在测试集上的表现较差。结果就是训练出的模型泛化能力差。
1.2 如何防止过拟合
防止过拟合的方法有4种:
(1)增加训练集数据;
该方式是从数据入手,将更多的数据参与到模型的训练中,这是最有效的方法,这样可以让模型学习到更多更有效的特征,降低噪声对模型的影响。
但是往往直接增加数据...
Early stop。增加验证集,验证集性能没有明显提升的时候停止。
增大数据集。常见的是增加一些噪声构造新样本,重采样,从源头采集,以及分析数据分布构造更多假数据。
正则化。为了降低模型复杂度,避免过分拟合训练数据,包括噪声和异常点。
dropout。随机丢弃一些神经元,避免过度赖某些数据特征。
防止欠拟合
添加其他特征
添加多项式特征组合
减少正则化参数
随着训练过程的进行,模型复杂度,在training data上的error渐渐减小。可是在验证集上的error却反而渐渐增大——由于训练出来的网络过拟合了训练集,对训练集以外的数据却不work。
在机器学习算法中,我们经常将原始数据集分为三部分:训练...
偏置/方差折中问题
在所有的机器学习算法的使用中,都必须避免过拟合和欠拟合现象的产生,这就是偏置/方差折中问题的主要研究对象。维基百科中给出这种问题的详细说明:
偏置是一种误差, 这种误差主要来自于学习模型或算法中的错误假设。 比如y=x^2, 如果用线性回归的话,就会带来较大的误差;
方差:方差是指由于数据点波动所带来的误差,例如,若训练集中数据点的输入特征与输出响应为线性关系,但有个别数...
欠拟合和过拟合
欠拟合是指在训练集和测试集(或验证集)上模型效果都不好,一般由于模型能力不足导致;过拟合是指模型在训练集上表现好,而在测试集上表现不好,一般由于模型过度拟合了训练集中的噪声导致。本文主要讨论解决过拟合问题的方法。
L2正则化
无论机器学习还是深度学习,L2正则化项都用于限制参数W过大,它被累加在代价函数之中。
代价函数J除了计算每个实例的误差L,还加入网络中每层参数W的2范数的平方,并用λ作为参数,当λ较大时,就需要W接近0,才能得到较小的代价函数,这样一些无关紧要的参数就变成了
「团结就是力量」。这句老话很好地表达了机器学习领域中强大「集成方法」的基本思想。总的来说,许多机器学习竞赛(包括 Kaggle)中最优秀的解决方案所采用的集成方法都建立在一个这样的假设上:将多个模型组合在一起通常可以产生更强大的模型。
本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案。
采用更大的模型
使用更多的特征
注意使用更多的数据是不能缓解欠拟合的,毕竟现在数据少模型都表现不了数据,数据多了更表现不了了,所以说增加更多的数据并不是万能的,得具体情况具体分析
过拟合:
过拟合表示的是模型在训练集上变现很好但是测试集上表现不行,可以看下面的吴恩达的课上的这个图,本来虚线就已经挺好的,但是模型为了在训练集上取得比较好的变现就产生了一个弯弯曲曲的分类面,但