初始化方案的选择至关重要,且初始化方案的选择可以与非线性激活函数的选择有趣的结合在一起。我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。糟糕选择可能会导致我们在训练时遇到梯度爆炸或者梯度消失。
梯度消失
不稳定梯度会威胁到我们优化算法的稳定性。会存在梯度爆炸(gradient exploding)问题:参数更新过大,破环了模型的稳定收敛;梯度消失(gradient vanishing)问题:参数更新过小,在每次更新时几乎不会移动,导致模型无法学习。
sigmoid函数会导致梯度消失
%matplotlib inline
import torch
from d2l import torch as d2l
x = torch.arange(-8.0, 8.0, 0.1