深度学习笔记-dropout(随机失活)
程序员文章站
2022-07-13 10:08:44
...
-
drop 是通过设定的概率在每一层上随机清除一定的unit,网络会变得简洁,因为少了一些点
keep-prob = 0.8 d3.np.random.rand(a3.shape[0],a3.shape[1]) < keep-prob ##hidden layer中80%的点会保留,20%的点会消除,最终会是元素为true和false的矩阵 a3 = np.multiply(a3,d3) #a3*d3, 做乘法时,会将d3的元素转成0,1 ##下面这步骤为 Inverted dropout(反向随机失活),dropout中最常用的种 ##保证消除部分点后a3的期望值不变,如这里消除了20%的点,通过除以keep-prob来保证期望不变 a3 /= keep-prob
-
正向测试阶段并不希望结果是随机的,并无必要使用,即使使用后对于每一次z=wx+b也都是线性的运算,并无实际的作用
-
每一层的keep-prob都可能不一样,如果某层的参数矩阵维度最大,为了消除过拟合,可能会设置keep-prob的值使得该层的unit消除的较多
-
dropout的过程:将一个总的样本分为多个小的样本。假定分成了10份。假如设置的消除概率为20%,则在训练时会消除20%的unit,保留80%,那么对第一批样本保留下来的80%的units进行训练,得到第一次的,后梯度下降,得到新的一批W和b,再对第二批样本重新消除20%(因为这里说是消除,但只是不对其进行运算,单元本身还是在网络中),第二批剩下的80%的units进行运算得到新的,再梯度下降一次,直到找到全局最优解,即cost function的值达到最小值。训练完毕。在测试阶段,是对全部的units,包括先前的20%的units,训练时候只是不对这20%的units进行运算,但是其还保留在网络中,测试的时候不采取dropout,是对全部的100%个units进行运算。
-
drop的缺点是会消除一小点,导致代价cost函数J不再被明确定义,方法是先确定好cost funciton,使其为单调下降的,再使用dropout
上一篇: 机器学习——Dropout原理介绍
下一篇: 深度学习之dropout的实现