深度学习的正则化

在机器学习中,许多策略被显示地设计减少测试误差(可能以增大训练误差为代价),这些策略被统称为正则化。

1. 损失函数:Jw = MSE +  正则项

正则化是指修改学习算法,使其降低泛化误差而非训练误差。

常见正则项有L2,L1

2. 欠拟合(underfitting)和过拟合
(overfitting)。欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训
练误差和和测试误差之间的差距太大。

       通过调整模型的容量(capacity),我们可以控制模型是否偏向于过拟合或者欠
拟合。通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟
合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。

机器学习的主要挑战是我们的算法必须能够在先前未观测的新输入上表现良好,
而不只是在训练集上表现良好。在先前未观测到的输入上表现良好的能力被称为
化(generalization)

通常情况下,当我们训练机器学习模型时,我们可以使用某个训练集,在训练
集上计算一些被称为训练误差(training error)的度量误差,目标是降低训练误差。
目前为止,我们讨论的是一个简单的优化问题。机器学习和优化不同的地方在于,我
们也希望泛化误差(generalization error)(也被称为测试误差(test error))很低。
泛化误差被定义为新输入的误差期望。

在假设空间中,相比于某一个学习算法,我们可能更偏好另一个学习算法。这
意味着两个函数都是符合条件的,但是我们更偏好其中一个。只有非偏好函数比偏
好函数在训练数据集上效果明显好很多时,我们才会考虑非偏好函数。
例如,我们可以加入权重衰减(weight decay)来修改线性回归的训练标准。带
权重衰减的线性回归最小化训练集上的均方误差和正则项的和J(w),其偏好于平方
L2 范数较小的权重。具体如下:

其中 是提前挑选的值,控制我们偏好小范数权重的程度。当 = 0,我们没有任
何偏好。越大的 偏好范数越小的权重。最小化J(w) 可以看作是拟合训练数据和
偏好小权重范数之间的权衡。这会使得解决方案的斜率较小,或是将权重放在较少
的特征上。我们可以训练具有不同 值的高次多项式回归模型,来举例说明如何通
过权重衰减控制模型欠拟合或过拟合的趋势。如图5.5 所示。
更一般地,正则化一个学习函数f(x; ) 的模型,我们可以给代价函数添加被称
为正则化项(regularizer)的惩罚。在权重衰减的例子中,正则化项是Ω(w) = w⊤w。

表示对函数的偏好是比增减假设空间的成员函数更一般的控制模型容量的方法。
我们可以将去掉假设空间中的某个函数看作是对不赞成这个函数的无限偏好。

### 深度学习中的正则化 #### 正则化的概念 正则化是一种用于防止模型过拟合的技术,在深度学习中尤为重要。通过引入额外的信息到训练过程中,可以减少模型复杂度并提高泛化能力。具体来说,正则化能够使模型对于噪声更加鲁棒,从而改善其在未见过的数据上的表现[^2]。 #### L1 和 L2 正则化 两种常见的正则化方式分别是基于L1范数和L2范数的约束: - **L1 正则化**:该方法通过对绝对值形式的权重量罚来促使部分权重变为零,进而达到稀疏解的效果。这有助于特征选择,因为只有重要的特征会被保留下来参与预测过程。 - **L2 正则化 (Ridge)** :此技术则是利用平方后的权值作为惩罚项加至损失函数之中。这样做不仅可以让较大的系数变得平滑一些,而且还能有效抑制那些不必要大的参数增长,最终使得整个网络结构更为简单合理[^1]。 ##### 数学表达式 假设原始的目标函数为 \( J(\theta) \),其中 \( \theta \) 表示待优化的一组参数,则加入了L1/L2正则化的目标函数可分别写作如下: \[ J_{\text{L1}} (\theta)=J(\theta)+\lambda_1 ||\theta||_1 \] \[ J_{\text{L2}} (\theta)=J(\theta)+\frac{\lambda_2}{2}||\theta||^2_2 \] 这里 \( \lambda_1,\lambda_2>0 \) 是超参控制着各自强度大小;\( ||·||_p \)(p=1,2)表示对应类型的范数值计算操作符。 ```python from keras import regularizers model.add(Dense(64, input_dim=64, kernel_regularizer=regularizers.l1_l2(l1=1e-5, l2=1e-4))) ``` #### Dropout 技术 除了上述两种显式的正则手段外,Dropout也是一种非常有效的隐含层随机失活策略。每次迭代时按照一定概率丢弃掉一部分神经元及其连接关系,以此模拟多个子网共同工作的情形,从而增强了系统的稳定性和抗干扰性能。 ```python from tensorflow.keras.layers import Dropout model.add(Dropout(rate=0.5)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值