斯坦福CS231n计算机视觉-神经网络的随机失活

具体操作:对于一个三层网络来说,就是每次每层计算输出,以一定概率乘以一个掩码0,一般为50%,从而让一半的输出无效化,对于被选中的节点,就相当于失活了。

斯坦福CS231n计算机视觉-神经网络的随机失活_第1张图片

斯坦福CS231n计算机视觉-神经网络的随机失活_第2张图片

那么为什么要随机失活?

解释一:

避免过拟合

斯坦福CS231n计算机视觉-神经网络的随机失活_第3张图片

一个猫的特征是多种的,但有时候某些特征过于明显导致其他特征不明显,从而抑制了其他特征的在网络中的表述,这就是对明显特征的过拟合,所以失活可以使你的表征对于图片的表示是冗余的,由于每一个特征都有可能失活,所以分类必须依赖于各种各样的特征。

实际使用时,有时候这个明显的特征获取不到,不明显的特征又没有训练好,就会造成分类错误,所以说随机失活可以防止过拟合,其实和人的学习过程也挺像。

解释二:

随机失活相当于把很多小网络组合大网络,相当于多个网络的混合,之前也说了,会有这样会有性能上的提高。失活不是把权值置零,只是暂时的让他输出不起作用,相当于输出乘以掩码0。想要更多的正则化,可以使用每次失活更多的神经元。

在测试的时候:

斯坦福CS231n计算机视觉-神经网络的随机失活_第4张图片

可以看到,由于P设置为0.5,所以训练时候的权值只有测试时候权值的一半。所以在测试的时候,不要忘记让激活函数乘以P。

有两种修正方式:

1

斯坦福CS231n计算机视觉-神经网络的随机失活_第5张图片

在输出的时候*p

2

斯坦福CS231n计算机视觉-神经网络的随机失活_第6张图片

或者在训练的时候/P

两种方式有什么不同?

你可能感兴趣的:(学习笔记)