L1正则化:
L2正则化: From: (1) J = − 1 m ∑ i = 1 m ( y ( i ) log ( a [ L ] ( i ) ) + ( 1 − y ( i ) ) log ( 1 − a [ L ] ( i ) ) ) J = -\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} \tag{1} J=−m1i=1∑m(y(i)log(a[L](i))+(1−y(i))log(1−a[L](i)))(1) To: (2) J r e g u l a r i z e d = − 1 m ∑ i = 1 m ( y ( i ) log ( a [ L ] ( i ) ) + ( 1 − y ( i ) ) log ( 1 − a [ L ] ( i ) ) ) ⎵ cross-entropy cost + 1 m λ 2 ∑ l ∑ k ∑ j W k , j [ l ] 2 ⎵ L2 regularization cost J_{regularized} = \small \underbrace{-\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} }_\text{cross-entropy cost} + \underbrace{\frac{1}{m} \frac{\lambda}{2} \sum\limits_l\sum\limits_k\sum\limits_j W_{k,j}^{[l]2} }_\text{L2 regularization cost} \tag{2} Jregularized=cross-entropy cost −m1i=1∑m(y(i)log(a[L](i))+(1−y(i))log(1−a[L](i)))+L2 regularization cost m12λl∑k∑j∑Wk,j[l]2(2) λ \lambda λ的值是一个超参数,您可以使用开发集对其进行调优。 L2正则化使决策边界更平滑。如果 λ \lambda λ太大,也可能会“过度平滑”,导致模型具有较高的偏差。
算法图示如下 d3 = np.random.rand( a3.shape[0] , a3.shape[1] ) < keep_prop (生成一个随机矩阵,当d3的元素值小于keep_prop时,为1,否则为0的 0-1矩阵) a3 = np.multiply( a3 , d3 ) 也就是点乘, a3 ∗ * ∗ = = = d3 a3 = a3 / keep_prop
注意点: 1.反向随机失活技术,是对于训练集中每一个样本训练时,都由不同的NN网络(经过随机失活后)进行训练。 2.进行失活后,a3(也就是个例子)的20%都被清零了(keep_prop = 0.8),为了不减少z3的期望,因此要给 a3 / keep_prop用来保证 z4 = w4 * a3 + b3 的期望值不变。
一般将W控制在一个可变范围,通常来说是 W : = 1 n W:= \frac {1}{n} W:=n1 如果g函数用的是ReLU函数,则 W : = 2 n W:= \frac {2}{n} W:=n2 “Xavier初始化” : 如果g函数用的是tan h 函 数,则 W : = 1 n ( l − 1 ) W:=\sqrt \frac{1}{n ^ {(l-1)}} W:=n(l−1)1 “HE 初始化”:如果g函数用的是ReLU 函 数,则 W : = 2 n ( l − 1 ) W:=\sqrt \frac{2}{n ^ {(l-1)}} W:=n(l−1)2