正则化是指在损失函数上添加奖惩来使得模型具有更高的泛化性。
这是L1正则化:
这是L2正则化:
解释一下这俩公式这是什么意思:
MSE就理解为方差(其实叫均方误差mean aquare error,无妨叫什么无所谓),所有的回归方程(包括神经网络)都是求一个回归方程使得方差最小。这里的指参数,在线性回归方程里面就是斜率和偏置项。
我们通过拆解神经网络来解释为什么正则化以后模型泛化性提升:
首先我们得理解什么是神经网络:
神经网络是一个由很多个激活函数叠加、复合而成的多元复合函数(每个参数是一个维度),训练一个神经网络其实就是对这个复合函数进行回归。
神经网络入门:通俗理解“激活函数”是如何让神经网络工作的-CSDN博客(为了解释这篇博客,我专门写了上一篇博客解释什么是神经网络。)
既然神经网络就是一个复合函数,那么不难理解提高模型的泛化性就是提高回归以后的复合函数的平滑度。
训练神经网络就是最小化代价函数,拟合回归曲线的过程。我们假设这里的代价函数已经修正为经过L2正则化以后的。不难理解,要求训练过程中最小,那么很多参数就会不可避免地趋于0。这些参数趋于0以后整个复合函数会趋于平滑吗?让我们研究一下
先从实践看一下,这是一个训练两层神经网络得到的二分类的回归曲线(代价函数没有正则化):
这是它的参数
人工调参了一下(超小声hhh),现在整体参数的绝对值都比之前小很多,依然可以进行分类(阈值大概为0.6)。整体曲线也比以往平滑了很多。
再结合理论分析一下,为什么参数更趋于0,更平滑。
这是一个sigmoid函数(当然其它的激活函数也同理)
从sigmoid来看,当参数趋于0,会稳定在左右,非线性的作用减少,线性的作用增多,从直观上就体现为用更多的线性部分代替非线性部分,从而复合函数就会更加平滑,模型泛化性更高。