权重衰退
我们通过获取更多的数据来缓解过拟合,或者我们可以使用正则化技术来使得模型容量得以限制
本质上权重衰退就是L2正则化,通过函数与0的距离来衡量函数的复杂度
我们通过引入系数 λ \lambda λ来作为超参数来控制正则项的重要程度
等价于
m
i
n
l
(
w
,
b
)
+
λ
2
∣
∣
w
∣
∣
2
,这里的
w
是向量
min \;l(w, b) + \frac{\lambda}{2} ||w||^2,这里的w是向量
minl(w,b)+2λ∣∣w∣∣2,这里的w是向量
超参数
λ
\lambda
λ越大,
w
∗
w*
w∗越趋向于0,控制的程度越高
这里引入图片来展示正则项的影响
其实乍一看这个图片看不大懂的,这里的我们假设现在的w只有两个分量w1和w2,分别为x轴和y轴。每个不同颜色的线代表两个w组成该函数表达式下相等值的地方,也就是w1与w2构成的函数的等值线。橙色的线代表的是正则项的等值线,绿色的线代表是平方误差的等值线。因为两个都是平方,所以构成的都是圆
只有在交点上能保证两个点是一组值,也起到了把损失拉到一个合理的值上去。
这里推荐去看Datawhale南瓜书讲解的p16有讲解,讲解的会更好一点,但是录音稍稍有点问题,还希望2.0的南瓜书讲解快快上线呀
那么这样我们就把原本的损失函数加上L2正则项就代表了我们新的损失函数来进行优化了
数值稳定性
数值补稳定主要指的是梯度消失和梯度爆炸,而他们的本质原因是神经网络中链式求导使得一个参数的更新会经历多次的乘法运算(比如 0. 8 100 , 1. 5 100 0.8^{100},1.5^{100} 0.8100,1.5100)
梯度爆炸可能会导致超出浮点所能表示的数据范围造成inf
梯度消失,sigmoid作为激活函数可能会引起梯度消失的问题,原因是它在离0越远的位置梯度越小
带来的问题:
代码实现中,在SGD中可以设置weight_decay
参数来设置
λ
\lambda
λ
参数初始化
我们要让训练更加稳定可以用:
- 梯度值在合理的范围内,例如[1e-6, 1e3]
- 乘法变加法:ResNet和LSTM
- 归一化;梯度归一化,梯度裁剪
- 合理的权重初始和激活函数
权重初始化在训练开始数值不稳定,可能离最优解比较远最终导致的效果不好。
我们可以使用Xavier初始化来满足上述条件:
对于常见的sigmoid带来的梯度下降的问题,经过推导可以使其变化在0附近能够更拟合y=x
4
∗
s
i
g
m
o
i
d
(
x
)
−
2
4 * sigmoid(x)-2
4∗sigmoid(x)−2