pytorch设置l2正则_正则化

1. L1与L2正则化

L2正则化

这里的λ是正则化参数,它是一个需要优化的超参数。L2正则化又称为权重衰减,因为其导致权重趋向于0(但不全是0)

tf

L1正则化

这里,我们惩罚权重矩阵的绝对值。其中,λ 为正则化参数,是超参数,不同于L2,权重值可能被减少到0.因此,L1对于压缩模型很有用。其它情况下,一般优先选择L2正则化。

tf

L1L2正则化

tf

示例:

# 导入相应的工具包

2. Dropout正则化

dropout是在深度学习领域最常用的正则化技术。Dropout的原理很简单:神经网络在每个迭代过程中,随机选择某些节点,并且删除前向和后向连接。因此,每个迭代过程都会有不同的节点组合,从而导致不同的输出,这可以看成机器学习中的集成方法(ensemble technique)。集成模型一般优于单一模型,因为它们可以捕获更多的随机性。相似地,dropout使得神经网络模型优于正常的模型。

tf

参数:

rate: 每一个神经元被丢弃的概率

# 导入相应的库

3. 提前停止

提前停止(early stopping)是将一部分训练集作为验证集(validation set)。 当验证集的性能越来越差时或者性能不再提升,则立即停止对该模型的训练。 这被称为提前停止。

tf

上面,monitor参数表示监测量,这里val_loss表示验证集损失。而patience参数则表示模型在训练的过程中,在验证集上的性能,在连续5个epochs后没有提升时,会停止训练。

# 导入相应的工具包

4. 批标准化

批标准化(BN层, Batch Normalization)是2015年提出的一种方法,在进行深度网络训练时,大多会采取这种算法,与全连接层一样,BN层也是属于网络中的一层。

BN层是针对单个神经元进行,利用网络训练时一个 mini-batch 的数据来计算该神经元

的均值和方差,归一化后并重构,因而称为 Batch Normalization。在每一层输入之前,将数据进行BN,然后再送入后续网络中进行学习:

首先我们对某一批次的数据的神经元的输出进行标准化:

然后再使用变换重构,引入了可学习参数

,
,如果各隐藏层的输入均值在靠近0的区域,即处于激活函数的线性区域,不利于训练非线性神经网络,从而得到效果较差的模型。因此,需要用
对标准化后的结果做进一步处理:

# 直接将其放入构建神经网络的结构中即可

pytorch设置l2正则_正则化_第1张图片

你可能感兴趣的:(pytorch设置l2正则)