Dropout

Motivation

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

  • 使用噪音的数据等价于 Tikhonov 正则
  • 丢弃法:在层之间加入噪音

无偏差的加入噪音

  • 加入噪音得到, 希望期望不变

  • 丢弃法对每个元素进行如下扰动

使用丢弃法

  • 通常将丢弃法作用在隐藏全连接层的输出上

Flex

MLP

MLP

Dropout

Dropout

总结

  • dropout 将一些输出项随机置0来空值模型复杂度
  • 常作用在多层感知机的隐藏层输出上
  • 丢弃概率是空值模型复杂度的超参数

Dropout Code

import torch 
def dropout_layer(X,dropout):
	assert 0<= dropout <=1 #概率值在0-1之间
	if dropout == 1:
		return torch.zeros_like(X)
	if dropout == 0:
		return X
	mask = (torch.randn(X.shape) > dropout).float
	return mask * X / (1.0-dropout)