目录

1.正则化是什么

(1)定义

2.L2正则化

(1)L2正则化

(2)深层神经网络中的正则化

(3)为什么L2正则化可以减少过拟合

3.dropout正则化

(1)原理

(2)通过inverted dropout实现dropout正则化

4.其他减少过拟合的方法

(1)增强数据集 (以分类器的图片数据为例)

(2)提前停止技术(不好)


1.正则化是什么
(1)定义
  • 正则化(Regularization)是机器学习中用于防止模型过拟合、提升泛化能力的核心技术,通过在损失函数/成本函数中加入“惩罚项”,限制模型参数的“复杂度”或“大小”来实现。
  • 范数:范数(Norm)是向量空间中对“长度”或“大小”的一种推广定义,能用来衡量向量或矩阵的“尺度”。
    • L₂范数(欧几里得范数):向量各元素平方和的平方根,是最贴近日常“长度”认知的范数。
2.L2正则化
(1)L2正则化
  • 在成本函数中加入正则化参数(λ/2m)||w||₂²,其中 ||w||₂² = W.T W(λ是正则化参数)(这里是1NN)
  • 因为W几乎覆盖了所有参数,而b只是众多参数中的一个,影响太小,所以几乎不加b的正则化参数
(2)深层神经网络中的正则化
  • J(w[1], b[1].....w[l], b[l]) = (1/m)Σ(L(y^, y)) +(λ/2m)Σ(||w[l]||₂²)
    (这个也叫佛罗贝尼乌斯范数)

  • 最后梯度下降中 W[l] = (1 - (αλ/m))W[l] - α(from backprop),所以L2正则化也叫权重衰减

  • 权重衰减确实导致了最后W,b不是最优参数,但别忘了正则化的目的是为了抑制过拟合,就是为了抑制达到最优W,b

(3)为什么L2正则化可以减少过拟合
  • 从成本函数J来解释
  • 直观上理解就是如果正则化λ设置得足够大,权重矩阵W被设置为接近于0的值,相当于把许多隐藏单元的权重设为0,基本上消除了那些隐藏单元的影响。这种情况下,w很小,z就很小,这样激活函数基本是线性的,多层后也趋于线性(左图),神经网络变得简单(曲线不像右图那么复杂),它会使这个网络从过拟合的状态更接近于左图的高偏差状态。但实际上该神经网络的所有隐藏单元依然存在,只是它们的影响变得更小了。
3.dropout正则化
(1)原理
  • 通过随机“消除”一些隐藏单元来减小过拟合,类似于L2正则化(相当于在隐藏层中减少一些输入特征来减少具体和特殊性,从而实现泛化)(这里的消除只是逻辑上的消除)
(2)通过inverted dropout实现dropout正则化
  • 对于每一层的输入,随机使一些元素变为0,相当于减少了一些隐藏单元,最后逆dropout来减少对输入值期望的影响
# 正向传播
# 以第3层为例
# 1.首先定义一个保留概率
keep = 0.8
# 2.定义一个矩阵(和输入a3同维度)
d3 = np.random.randn(a3.shape[0], a3.shape[1]) < keep
# 3.随机使a3的20%元素为0
a3 = np.multiply(a3, d3) # a3=a3*d3
# 4.逆dropout
a3 /= keep


# 反向传播
da3 = da3 * d3
da3 = da3 / keep 
  • 注意:测试时不要随机dropout

  • 对于不同的隐藏层,要适当设置保留概率

  • 对于可能过拟合的层,保留概率小一些(0.5),过拟合不严重的大一些或者全保留,输入层别搞dropout

4.其他减少过拟合的方法
(1)增强数据集 (以分类器的图片数据为例)
  • 通过图片反转,裁剪,扭曲等方式扩大数据集
(2)提前停止技术(不好)
  • 当你还未在神经网络上运行太多迭代过程的时候,参数w接近0,因为随机初始化w值时,它的值可能都是较小的随机值,所以在你长期训练神经网络之前w依然很小,在迭代过程和训练过程中w的值会变得越来越大,所以提前停止技术就是在中间点停止迭代过程,我们得到一个w值中等大小的弗罗贝尼乌斯范数,与L2正则化相似,选择参数w范数较小的神经网络。

更多推荐