在选择机器学习或深度学习模型时,我们期望选择能较好解释已知数据同时复杂度不高的模型。也就是希望我们训练得到的模型可以有较好的普适性或泛化性能,要有较强的鲁棒性,而不是仅仅对训练数据友好的模型,只对训练数据有效的模型就发生了过拟合,所以在模型训练时需要避免过拟合,以适应不同的数据集。
结构调整
dropout
一般和全连接层一起用,两部分,一部分是以保留概率p通过伯努利函数生成概率向量,p的概率是1,(1-p)的概率是0;第二步是要进行缩放,使得训练和预测时满足一个确定的期望结果。
由于训练时以一定的概率使某些神经元失活,那么到达输出层时的输入个数就会少很多,导致在输出层上的输入和丢失很多,所以训练时还要对前一层的输出数据除以p再传给输出层神经元,作为失活神经元的补偿,输出层每个神经元的输入和的期望会有量级上的差异(训练时不进行缩放在测试时对权重乘以p可以达到一样的效果)。
规范化
normalization通常在非线性函数之前。一般要求训练集完全乱序,并采用一个比较大的batch值,以达到缩小与全量数据的差别。
BN,对输入激活函数的输入进行归一化,解决输入数据发生偏移和增大的影响,在深度神经网络训练过程中使得每一层神经网络的输入保持相似的分布。通过计算样本均值、方差进行标准化处理后,进行平移和缩放,这里需要学习两个参数,让网络可以学习恢复出原始网络所要学习的特征分布。经过BN后,对每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方