1.6 dropout正则化
dropout又称随机失活,它是通过给定概率随机失活一些节点,让网络更加简单。
下面介绍一个最常用的方法:‘inverted dropout’ (反向随机失活)
假设我们有一个三层的神经网络,每一层节点keep的概率是0.8,而失活的概率是0.2。
该怎么操作呢?
想法是按照保留概率,生成一个对应维度的0-1矩阵,1代表这个节点被保留,而0表示这个节点被失活。
如上图d3那一行命令,先生成一个对应维度的矩阵,其中每个元素都是服从0-1均匀分布的随机数,而在这些随机数中,小于0.8的值我们记为1。对于均匀分布,我们知道一个数小于0.8的概率就是0.8,所以通过这个操作我们可以使所有节点中有近0.8的节点被保留,而0.2的被失活。
然后a3*d3(elementwise),我们得到这一轮迭代过程中的系数矩阵(d3等于1的系数在a3中被保留),绿框中的操作是为了修正或弥补因为dropout操作而遗漏的那部分,以保证Z期望不变。比如我们有50个节点,在失活概率为0.2的情况下,约有10个节点被失活,这时我们求Z时就会因为这些失活的节点而影响Z值的计算,所以为了保证Z的期望不变,我们用a除以keep-prob以保证Z的期望不变。