Skip to content

Lesson-13

丢弃法

动机:一个好的模型需要对输入数据的扰动鲁棒

丢弃法在层之间加入噪音。

无偏差地加入噪音:

无偏差指的是\(E[x'] = E[x]\)

\[x'=\left\{ \begin{aligned} 0 && \text{with the probablity p} \\ \frac{x}{1-p} && \text{otherise} \end{aligned} \right.\]

即一定可能性下归为0,一定可能性下放大

通常将丢弃法作用在隐藏全连接层的输出上,即\(h' = \text{dropout}(h)\) 只在训练的时候进行dropout,推理的时候不用dropout 实现代码如下:

1
2
3
4
5
6
7
8
9
def dropout_layer(X, dropout):
    assert 0 <= dropout <= 1
    if dropout == 0:
        return X
    elif dropout == 1:
        return torch.zeros_like(X)
    else:
        mask = (torch.rand(X.shape) > dropout).float()
        return mask * X / (1 - dropout)
这里的mask赋值语句就是为了产生随机丢弃神经元的效果。