正则化: L 0 L_0 L0, L 1 L_1 L1, L 2 L_2 L2正则化
通过设计不同的层数,大小的网络模型可以为优化算法提供初始的函数假设空间,但是模型的实际容量可以随着网络参数的优化更新产生变化,以一个多项式函数模型为例:
y
=
β
o
+
β
1
x
+
β
2
x
2
+
β
3
x
3
+
.
.
.
.
.
.
β
n
x
n
+
ε
y = \beta_o+\beta_1x+\beta_2x^2+\beta_3x^3+......\beta_nx^n+\varepsilon
y=βo+β1x+β2x2+β3x3+......βnxn+ε
如果在训练的过程中,网络参数
β
k
,
.
.
.
β
n
=
0
\beta_k,...\beta_n=0
βk,...βn=0 ,那么网络的实际容量退化到
k
k
k 次多项式的函数容量。所以通过网络的稀疏性,可以来约束网络的实际容量。这种约束一般通过在损失函数上添加惩罚项来增加参数的稀疏性来实现的,未添加约束之前的优化目标是:
M
i
n
i
m
i
z
e
L
(
f
θ
(
x
)
,
y
)
,
(
x
,
y
)
∈
D
t
r
a
i
n
Minimize L(f_\theta(x),y), (x,y)\in D^{train}
MinimizeL(fθ(x),y),(x,y)∈Dtrain
对模型增加约束项之后的,优化的目标变为:
M
i
n
i
m
i
z
e
L
(
f
θ
(
x
)
,
y
)
+
λ
∗
Ω
(
θ
)
,
(
x
,
y
)
∈
D
t
r
a
i
n
Minimize L(f_\theta(x),y) + \lambda*\Omega(\theta), (x,y)\in D^{train}
MinimizeL(fθ(x),y)+λ∗Ω(θ),(x,y)∈Dtrain
其中,
Ω
(
θ
)
\Omega(\theta)
Ω(θ)是对网络参数
θ
\theta
θ 的稀疏性约束函数。一般的,参数的稀疏性约束的
L
L
L 范数的实现,
Ω
(
θ
)
=
∑
θ
i
∣
∣
θ
i
∣
∣
l
\Omega(\theta) = \sum_{\theta_i}||\theta_i||_l
Ω(θ)=θi∑∣∣θi∣∣l
新的优化目标除了要最小化原来的损失函数
L
(
x
,
y
)
L(x,y)
L(x,y) 之外,还要约束网络参数的稀疏性,优化算法会在降低
L
(
x
,
y
)
L(x,y)
L(x,y) 的同时,尽可能破事网络参数
θ
i
\theta_i
θi 变得稀疏,他们之间的权重关系通过超参数
λ
\lambda
λ 来平衡,较大的
λ
\lambda
λ 意味着网络的稀疏性更加重要;较小的
λ
\lambda
λ 意味着网络的训练误差更重要。通过选择合适的超参数可以获得较好的训练性能,同时保证了网络的稀疏性,获得不错的泛化能力。常用的正则化有
L
0
,
L
1
,
L
2
L_0,L_1,L_2
L0,L1,L2正则化。
L 0 L_0 L0 正则化:
L
0
L_0
L0 正则化是指用
L
0
L_0
L0 范数作为稀疏性惩罚项
Ω
(
θ
)
\Omega(\theta)
Ω(θ) 的正则化方式,即
Ω
(
θ
)
=
∑
θ
i
∣
∣
θ
i
∣
∣
0
\Omega(\theta) = \sum_{\theta_i}||\theta_i||_0
Ω(θ)=θi∑∣∣θi∣∣0
L
0
L_0
L0 范数
∣
∣
θ
i
∣
∣
0
||\theta_i||_0
∣∣θi∣∣0 定义为
θ
i
\theta_i
θi 中的非0 元素的个数。通过约束
∑
θ
i
∣
∣
θ
i
∣
∣
0
\sum_{\theta_i}||\theta_i||_0
∑θi∣∣θi∣∣0 的大小可以使得网络中的连接权值大部分为0,从而降低网络实际参数量和网络容量。由于
L
0
L_0
L0 范数
∣
∣
θ
i
∣
∣
0
||\theta_i||_0
∣∣θi∣∣0 并不可导,不能利用梯度下降算法进行优化,在神经网络中使用的并不多。
L 1 L_1 L1 正则化:
采用
L
1
L_1
L1 范数作为稀疏性惩罚项
Ω
(
θ
)
\Omega(\theta)
Ω(θ) 的正则化方式叫做
L
1
L_1
L1 正则化,
Ω
(
θ
)
=
∑
θ
i
∣
∣
θ
i
∣
∣
1
\Omega(\theta) = \sum_{\theta_i}||\theta_i||_1
Ω(θ)=θi∑∣∣θi∣∣1
其中,
L
1
L_1
L1 范数
∣
∣
θ
i
∣
∣
1
||\theta_i||_1
∣∣θi∣∣1 定义为张量$\theta_i $ 中的所有元素的绝对值之和。
L
1
L_1
L1 正则化也叫做Lasso Regularization,他是连续可导的,在神经网络中使用广泛。
#创建网络权重w1,w2
w1 = tf.random.normal([4,3])
w2 = tf,random.normal([4,3])
#计算L_1正则化
loss_reg = tf.reduce_sum(tf.math_abs(w1))+tf.reduce_sum(tf,math.abs(w2))
$ L_2$ 正则化:
采用$L_2 $ 范数作为稀疏性惩罚项
Ω
(
θ
)
\Omega(\theta)
Ω(θ) 的正则化方式叫做
L
2
L_2
L2 正则化,
Ω
(
θ
)
=
∑
θ
i
∣
∣
θ
i
∣
∣
2
\Omega(\theta) = \sum_{\theta_i}||\theta_i||_2
Ω(θ)=θi∑∣∣θi∣∣2
其中,$L_2 $ 范数$||\theta_i||_2 $ 定义为张量$\theta_i $ 中的所有元素的平方和。$ L_2$ 正则化也叫做 Ridge Regularization,他和$ L_1$ 正则化一样,也是连续可导的。
#计算L_2的正则化
loss_reg = tf.random.sum(tf.squre(W1))+tf.random.sum(tf.squre(w2))
正则化效果:
下面四个图分别表示正则化系数 λ = 0.00001 , 0.001 , 0.1 , 0.13 \lambda = 0.00001,0.001,0.1,0.13 λ=0.00001,0.001,0.1,0.13 ,从结果可以看出,随着正则化系数 λ \lambda λ 的增加,网络对参数的稀疏性惩罚变大,从而使得优化算法搜索网络容量更小的模型。在 λ \lambda λ =0.00001时,正则化的作用比较微弱,网络出现过拟合,但是 λ \lambda λ =0.1时,网络已经找到了合适的容量,过大时会出现欠拟合现象。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZB24Ng2l-1578908838294)(C:\Users\fang-\AppData\Roaming\Typora\typora-user-images\1578902857917.png)]
所以,在实际训练时,一般先采用较小的正则化系数 λ \lambda λ ,观测网络是否会出现过拟合现象。然后尝试逐渐增大 λ \lambda λ 参数来增加网络参数的稀疏性,提高泛化能力。但是,过大的 λ \lambda λ 可能会导致网络的不收敛,要根据实际任务进行调节。
不同的正则化系数 λ \lambda λ 约束会对网络权值产生影响。正则化系数越小,网络中的权值数值相对较大,正则化作用较弱;正则化系数越大,网络中的权值数值相对较小,正则化作用较强。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YmtWz6z-1578908838295)(C:\Users\fang-\AppData\Roaming\Typora\typora-user-images\1578908693052.png)]
的权值数值相对较小,正则化作用较强。
[外链图片转存中…(img-6YmtWz6z-1578908838295)]