卷积神经网络调参技巧(2)--过拟合(Dropout)

来源:互联网 发布:伟创网络 编辑:程序博客网 时间:2024/06/08 02:25

Dropout(丢弃)

首先需要讲一下过拟合,训练一个大型网络时,因为训练数据有限,很容易出现过拟合。过拟合是指模型的泛化能力差,网络对训练数据集的拟合能力很好,但是换了其他的数据集,拟合能力就变差了。

在训练深层网络模型时,按照一定的概率,暂时将神经元丢弃,得到一个更加简单的网络模型,即每一个batch训练的网络模型都是不一样的,都是原始网络的子集,这些子网络共享权值,与原始网络的层数、参数数目相等。这样,每一个神经元在网络中出现都是独立的,不会依赖其他神经元。不同的batch训练得到更多的子网络,提高了网络模型的泛化能力,可以防止过拟合。


由上图可以看出,(a)是原始神经网络,(b)是dropout之后的网络。

原始网络中第层第个神经元的输出是:

采用dropout之后的网络中第层第个神经元的输出是:

其中,是第层第个神经元的输出,是第层第个神经元的权重(卷积核),

是第层第个神经元的偏置。由伯努利函数以概率随机的产生0、1向量,来决定网络中第层第个神经元被丢弃还是保留,0表示该神经元被dropout,就是使该神经元的激活被置零;1则表示该神经元被保留用于构成子网络。

在测试阶段:

我们前面说过,其实Dropout是类似于平均网络模型。我们可以这么理解,我们在训练阶段训练了1000个网络,每个网络生成的概率为Pi,然后我们在测试阶段的时候,我们肯定要把这1000个网络的输出结果都计算一遍,然后用这1000个输出,乘以各自网络的概率Pi,求得的期望值就是我们最终训练得到原始网络的精确度。 

M是Dropout中所有的子网络的集合,所以当我们在测试阶段的时候,我们就是对M中所有的子网络,以其出现的概率进行加权平均,得到期望值,就是原始网络的精确度。

注:经过交叉验证,dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多

缺点是模型收敛速度会减慢。

 

原创粉丝点击