深度学习笔记:欠拟合、过拟合
防止过拟合(二):Dropout
防止过拟合(三):数据增强
前言
通过设计不同层数、大小的网络模型,可以为优化算法提供初始的函数假设空间(或者所示网络容量)。但是随着网络参数的优化更新,模型的实际容量是可以随之变化的。
以多项式函数模型为例:
上述模型容量可以通过n来简单衡量。在训练的过程中,如果模型参数,表征的函数模型也就降维了,那么网络的实际容量也就相应的减小了。因此,通过限制网络的稀疏性,可以来约束网络的实际容量。
正则化
正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则项),来限制网络的稀疏性,以此约束网络的实际容量,从而防止模型出现过拟合。
因此,对模型的参数添加稀疏性惩罚项后,我们的目标损失函数就变为:
式子中的第一项为原始的损失函数,第二项是对网络参数的稀疏性约束函数,也就是正则项。
下面我们重点来研究一下正则项。一般地,参数的稀疏性约束通过约束参数的L范数实现,即:
新的优化目标除了要最小化原来的损失函数之外,还需要约束网络参数的稀疏性,优化算法会在降低损失函数的同时,尽可能地迫使网络参数变得稀疏,他们之间的权重关系通过超参数????来平衡,较大的????意味着网络的稀疏性更重要;较小的????则意味着网络的训练误差更重要。通过选择合适的????超参数可以获得较好的训练性能,同时保证网络的稀疏性,从而获得不错的泛化能力。
常用的正则化方式有 L0,L1,L2 正则化。即0范数、1范数、2范数。
L0 正则化
L0 正则化是指采用 L0 范数作为稀疏性惩罚项的正则化方式,即
其中,L0范数定义为:中非零元素的个数。通过约束的大小,可以迫使网络中的连接权值大部分为0。但是由于L0范数并不可导,不能利用梯度下降法进行优化,所以在神经网络中的使用并不多。
L1 正则化
采用 L1 范数作为稀疏性惩罚项的正则化方式叫做 L1 正则化,即
其中,L1范数定义为:中所有元素的绝对值之和。L1 正则化也叫 Lasso
Regularization,它是连续可导的,在神经网络中使用广泛。
L2正则化
采用 L2 范数作为稀疏性惩罚项的正则化方式叫做 L2 正则化,即
其中L2范数定义为:中所有元素的平方和。L2 正则化也叫Ridge Regularization,它和 L1 正则化一样,也是连续可导的,在神经网络中使用广泛。
正则化效果
下面实验,在维持网络结构等其他超参数不变的条件下,在损失函数上添加L2正则化项,并通过改变超参数来获得不同程度的正则化效果。
实验效果如下:
可以看到,随着正则化系数????的增加,网络对参数稀疏性的惩罚变大,从而迫使优化算法搜索而得到网络容量更小的模型。在???? = 0.00001时,正则化的作用比较微弱,网络出现了过拟合现象;但是???? = 0.1时,网络已经能够优化到合适的容量,并没有出现明显过拟合和欠拟合的现象。
需要注意的是,实际训练时,一般先尝试较小的正则化系数????,观测网络是否出现过拟合现象。然后尝试逐渐增大????参数来增加网络参数稀疏性,提高泛化能力。但是,过大的????
参数有可能导致网络不收敛,需要根据实际任务调节。