当我们定义好一个模型之后,如何对模型进行评估呢?对于评估指标我们又应该通过调整什么而去优化模型呢?这就是我们现在要讨论的问题。
首先,对于第一个问题,这里有两个概念——偏差和方差。偏差大说明模型欠拟合;方差大说明模型过拟合,泛化能力差。
对于偏差大的情况,可以考虑增加模型的复杂度(增加多项式/网络层数)、减轻正则化。
对于方差大的情况,可以考虑增加数据、减少特征、加重正则化。
下面对其中方法具体介绍:
1、正则化
正则化的理解部分在另一文章中有详细介绍,所以这里重点介绍如何找到合适的 λ 。可以通过控制 λ 的大小,画出在不同 λ 下构成的损失曲线,当 λ 过于小时,呈现出训练集损失很小而验证集上损失很大,也就是过拟合现象;而当 λ 过于大时,呈现出训练集和验证集的损失都很大,也就是欠拟合现象。我们中间的一个点使得两者都尽可能小。这里引用吴恩达老师的图作为展示。
2、数据规模
对于同一个模型,数据规模的增加会使得模型在训练集上更难拟合(损失增大)而验证集上拟合效果变好(损失减小)。但数据规模的影响会随着增加而逐渐减小,也就是说模型时有上限的。
有时我们的数据是有限的,这时我们可以采用数据增强(data augmention)的方式来增加数据。例如一张图片,我们可以对它旋转、裁剪、扭曲、调整对比度等方式,又或者一段音频,我们可以增加各种噪音来干扰,从而达到人为增加训练数据的大小。或者我们可以采用数据合成(data synthesis)的方式,这不是修改现有样本,而是创建全新的样本。在计算机视觉领域,如识别图片中的文字,我们可以利用计算机所拥有的各种字体编写代码生成丰富的数据集。
对于数据规模实在有限的情况。我们可以使用迁移学习的方式。比如,现在我们要解决一个图像分类任务,但是我们手头并没有足够的数据,我们可以用一个已经在大数据集上训练好的类似的图像分类模型作为我们的初始模型修改分类头后做训练,或者把它的部分甚至全部参数冻结,在修改的分类头上做训练。
3、特征数量
特征的引入可以增加信息的丰富度,提高模型的预测能力,同时也会导致计算成本提高、收敛速度变慢,同时特征过多,尤其是包含大量冗余的噪声特征时,会使得模型过拟合严重。
通过特征选择,我们可以得到现有特征中与标签关联度更高的特征参与训练,从而避免过拟合。而当我们的现有特征仍然欠拟合时,我们可以通过误差分析的方式找到更多的相关特征。比如对于现在预测出错的样本,我们可以从中抽出一部分人工计算统计,找到这些样本的一些共同点作为新特征加入到训练中。