如何防止模型过拟合?
三个方面来解释这件事情,分别是模型、数据和训练。
************模型*************
深度学习本质上就是对数据的归纳偏置,但是不同的模型归纳偏置的倾向性是不一样的,例如:RNN,LSTM先天对时序性信息敏感,CNN的平移不变性对空间图像信息敏感,因此,对于不用的数据采用合适的模型可以增加模型的泛化能力,用尽可能少的参数就可以达到不错的模型效果。文本使用LSTM,图像使用CNN等。
*************数据*************
在很多任务场景中,有时候数据是非常少量的,我们需要时候合适的方法进行数据增强,例如,对于图片数据来说,就可以进行图片的旋转、剪切、平移等方法来增强数据。当然现在更多的是预训练+fine-tune的模型范式,因为数据标注是非常耗费时间精力的,因为,可以在无标记数据中进行self-supervised learning,然后在下游任务进行fine-tune就可以。
**************训练*************
在模型训练的时候加入一些trick,来防止模型过拟合,方法包含:对数据进行限制;对模型参数进行限制。
对数据进行限制:Normalization,包括Batch normalization,Layer Normalization。
对模型参数进行限制:加入正则项对参数进行规范,Dropout。
更多的trick包括:warm-up,early-stopping
************模型*************
深度学习本质上就是对数据的归纳偏置,但是不同的模型归纳偏置的倾向性是不一样的,例如:RNN,LSTM先天对时序性信息敏感,CNN的平移不变性对空间图像信息敏感,因此,对于不用的数据采用合适的模型可以增加模型的泛化能力,用尽可能少的参数就可以达到不错的模型效果。文本使用LSTM,图像使用CNN等。
*************数据*************
在很多任务场景中,有时候数据是非常少量的,我们需要时候合适的方法进行数据增强,例如,对于图片数据来说,就可以进行图片的旋转、剪切、平移等方法来增强数据。当然现在更多的是预训练+fine-tune的模型范式,因为数据标注是非常耗费时间精力的,因为,可以在无标记数据中进行self-supervised learning,然后在下游任务进行fine-tune就可以。
**************训练*************
在模型训练的时候加入一些trick,来防止模型过拟合,方法包含:对数据进行限制;对模型参数进行限制。
对数据进行限制:Normalization,包括Batch normalization,Layer Normalization。
对模型参数进行限制:加入正则项对参数进行规范,Dropout。
更多的trick包括:warm-up,early-stopping