我们假设模型在训练时以p概率丢弃神经元,则训练、测试时的情况如下所述。
神经元的输入:x
神经元的输出:p*0 + (1-p)*x=(1-p)x 因为模型以概率p丢弃神经元,以概率1-p保留神经元,所以其总体输出为p0 + (1-p)*x=(1-p)*x。可以看出(1-p)*x相比于神经元输入x变小了,所以此时有两种处理方式:
1).训练期间对所有输出均除以(1-p),使其输出的期望仍为x。因为测试的时候所有的神经元均激活,假设测试时神经元的输入为x,则输出也为x。
2).训练期间除随机丢弃神经元,不做其他操作,则总体输出为(1-p)*x。因为测试的时候所有的神经元均激活,假设测试时神经元的输入为x,则此时神经元输出为x,明显大于(1-p)*x,且分布也变化了。为了让测试阶段抵消这种差异,对测试的输出要乘以(1-p),这样测试输出结果也为(1-p)*x,大小、分布与训练阶段统一了。
这是我理解的dropout训练、测试阶段的使用缩放系数的情况,理解有误的话请评论指正,感谢!