提升神经网络的性能-防止过拟合

1.数据正则化(L1和L2)

       L1正则化可以产生稀疏值矩阵,拟合过程中倾向于让权值接近于0,即产生一个稀疏模型(压缩模型),可以用于特征选择和解决过拟合。

       L2正则化也可以很好的解决过拟合问题。拟合过程中通常都倾向于让权值尽可能小,最后构造出一个让所有参数都比较小的模型。

# l2
kernel_regularizer=tf.keras.regularizers.l2(0.002)
# l1
kernel_regularizer=tf.keras.regularizers.l1(0.002)
# l1_l2
kernel_regularizer=tf.keras.regularizers.l1—l2(0.002)

参考链接:前两篇介绍的比较详细,后一篇以代码为主

需要注意的是:如果使用贝叶斯正则优化,这种情况表现为有作用的参数个数接近总的参数个数,当网络足够大时,有效参数个数应该比总的参数个数少。

神经网络的正则化(L1正则化,L2正则化)一文概述深度学习中的正则化(含Python代码)

[TensorFlow] [Keras] kernel_regularizer、bias_regularizer 和 activity_regularizer

2.使用Dropout层-随机丢弃神经元之间的连接,迫使网络找到新的路径

        常用于神经网络较大,且随机性更多的情况,一般情况下为0-0.5,依据网络深度决定

1.当丢失率为0.5 时,Dropout会有最强的正则化效果。因为 p(1-p)在 p=0.5时取得最大值。
2. 丢失率的选择策略:在比较深的网络中,使用 0.5的丢失率是比较好的选择,因为这时Dropout能取到最大的正则效果;在比较浅层的网络中,丢失率应该低于 0.2,因为过多的丢失率会导致丢失过多的输入数据对模型的影响比较大;不建议使用大于 0.5的丢失率,因为它在丢失过多节点的情况下并不会取得更好的正则效果。

        带有droput的网络的梯度的期望等价于带有正则的普通网络,即dropout起到了正则的作用深度学习-Dropout详解

        另一篇参考文章理解dropout

3.数据增强

       在分类任务当中,了扩大训练集,我们能采取的方法有——旋转、翻转、缩小/放大、位移、截取、添加随机噪声、添加畸变等【机器学习】数据增强(Data Augmentation)

       在回归任务中,还未找到

4.提前终止训练

参考keras中的callbacks详解之EarlyStopping

tf.keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None,restore_best_weights=False)

# 示例
callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss',min_delta=0.0001, patience=10, restore_best_weights=True)   
history = model. Fit(X_train_lst, df_y_train.values, epochs=500, batch_size=200, validation_split=0.3,callbacks=[callback])

monitor: 监控指标,如val_loss
min_delta: 认为监控指标有提升的最小提升值。如果变化值小于该值,则认为监控指标没有提升。
patience: 在监控指标没有提升的情况下,epochs 等待轮数。等待大于该值监控指标始终没有提升,则提前停止训练。
verbose: log输出方式
mode: 三选一 {“auto”, “min”, “max”},默认auto。min 模式是在监控指标值不再下降时停止训练;max 模式是指在监控指标值不再上升时停止训练;max 模式是指根据 monitor来自动选择。
baseline: 监控指标需要到达的baseline值。如果监控指标没有到达该值,则提前停止。
restore_best_weights: 是否加载训练过程中保存的最优模型权重,如果为False,则使用在训练的最后一步获得的模型权重。

min_delta和patience都和“避免模型停止在抖动过程中”有关系,所以调节的时候需要互相协调。通常情况下,min_delta降低,那么patience可以适当减少;min_delta增加,那么patience需要适当延长;反之亦然。

猜你喜欢

转载自blog.csdn.net/sky_ying/article/details/127344457