Ng深度学习笔记 深层神经网络

前向传播和反向传播(Forward and backward propagation)

前向传播的步骤可以写成: z [ l ] = W [ l ] ⋅ a [ l − 1 ] + b [ l ] {z}^{[l]}={W}^{[l]}\cdot{a}^{[l-1]}+{b}^{[l]} z[l]=W[l]a[l1]+b[l]
a [ l ] = g [ l ] ( z [ l ] ) {{a}^{[l]}}={{g}^{[l]}}\left( {{z}^{[l]}}\right) a[l]=g[l](z[l])
向量化实现过程可以写成: z [ l ] = W [ l ] ⋅ A [ l − 1 ] + b [ l ] {z}^{[l]}={W}^{[l]}\cdot {A}^{[l-1]}+{b}^{[l]} z[l]=W[l]A[l1]+b[l]
A [ l ] = g [ l ] ( Z [ l ] ) {A}^{[l]}={g}^{[l]}({Z}^{[l]}) A[l]=g[l](Z[l])

反向传播的步骤可以写成:
(1) d z [ l ] = d a [ l ] ∗ g [ l ] ′ ( z [ l ] ) d{{z}^{[l]}}=d{{a}^{[l]}}*{{g}^{[l]}}'( {{z}^{[l]}}) dz[l]=da[l]g[l](z[l])
(2) d w [ l ] = d z [ l ] ⋅ a [ l − 1 ]   d{{w}^{[l]}}=d{{z}^{[l]}}\cdot{{a}^{[l-1]}}~ dw[l]=dz[l]a[l1] 
(3) d b [ l ] = d z [ l ]    d{{b}^{[l]}}=d{{z}^{[l]}}~~ db[l]=dz[l]  
(4) d a [ l − 1 ] = w [ l ] T ⋅ d z [ l ] d{{a}^{[l-1]}}={{w}^{\left[ l \right]T}}\cdot {{dz}^{[l]}} da[l1]=w[l]Tdz[l]
(5) d z [ l ] = w [ l + 1 ] T d z [ l + 1 ] ⋅   g [ l ] ′ ( z [ l ] )   d{{z}^{[l]}}={{w}^{[l+1]T}}d{{z}^{[l+1]}}\cdot \text{ }{{g}^{[l]}}'( {{z}^{[l]}})~ dz[l]=w[l+1]Tdz[l+1] g[l](z[l]) 
式子(5)由式子(4)带入式子(1)得到,前四个式子就可实现反向函数。
向量化实现过程可以写成:
(6) d Z [ l ] = d A [ l ] ∗ g [ l ] ′ ( Z [ l ] )    d{{Z}^{[l]}}=d{{A}^{[l]}}*{{g}^{\left[ l \right]}}'\left({{Z}^{[l]}} \right)~~ dZ[l]=dA[l]g[l](Z[l])  
(7) d W [ l ] = 1 m d Z [ l ] ⋅ A [ l − 1 ] T d{{W}^{[l]}}=\frac{1}{m}\text{}d{{Z}^{[l]}}\cdot {{A}^{\left[ l-1 \right]T}} dW[l]=m1dZ[l]A[l1]T
(8) d b [ l ] = 1 m   n p . s u m ( d z [ l ] , a x i s = 1 , k e e p d i m s = T r u e ) d{{b}^{[l]}}=\frac{1}{m}\text{ }np.sum(d{{z}^{[l]}},axis=1,keepdims=True) db[l]=m1 np.sum(dz[l],axis=1,keepdims=True)
(9) d A [ l − 1 ] = W [ l ] T . d Z [ l ] d{{A}^{[l-1]}}={{W}^{\left[ l \right]T}}.d{{Z}^{[l]}} dA[l1]=W[l]T.dZ[l]
总结一下:

第一层可能有一个ReLU激活函数,第二层为另一个ReLU激活函数,第三层可能是sigmoid函数(如果你做二分类的话),用来计算损失;这样你就可以向后迭代进行反向传播求导来求 d w [ 3 ] {{dw}^{[3]}} dw[3] d b [ 3 ] {{db}^{[3]}} db[3] d w [ 2 ] {{dw}^{[2]}} dw[2] d b [ 2 ] {{db}^{[2]}} db[2] d w [ 1 ] {{dw}^{[1]}} dw[1] d b [ 1 ] {{db}^{[1]}} db[1]。在计算的时候,缓存会把 z [ 1 ] {{z}^{[1]}} z[1] z [ 2 ] {{z}^{[2]}} z[2] z [ 3 ] {{z}^{[3]}} z[3]传递过来,然后回传 d a [ 2 ] {{da}^{[2]}} da[2] d a [ 1 ] {{da}^{[1]}} da[1] ,可以用来计算 d a [ 0 ] {{da}^{[0]}} da[0],但我们不会使用它。

核对矩阵的维数(Getting your matrix dimensions right)

w [ l ] {{w}^{[l]}} w[l]: ( n [ l ] {{n}^{[l]}} n[l], n [ l − 1 ] {{n}^{[l-1]}} n[l1]);
b [ l ] {{b}^{[l]}} b[l] : ( n [ l ] , 1 ) {{n}^{[l]}},1) n[l],1)
z [ l ] {{z}^{[l]}} z[l], a [ l ] {{a}^{[l]}} a[l]: ( n [ l ] , 1 ) ({{n}^{[l]}},1) (n[l],1);
d w [ l ] {{dw}^{[l]}} dw[l] w [ l ] {{w}^{[l]}} w[l]维度相同, d b [ l ] {{db}^{[l]}} db[l] b [ l ] {{b}^{[l]}} b[l]维度相同,且 w w w b b b向量化维度不变,但 z z z, a a a以及 x x x的维度会向量化后发生变化。

向量化后:
Z [ l ] = ( z [ l ] [ 1 ] , z [ l ] [ 2 ] , z [ l ] [ 3 ] , … , z [ l ] [ m ] ) {Z}^{[l]}=({{z}^{[l][1]}},{{z}^{[l][2]}},{{z}^{[l][3]}},…,{{z}^{[l][m]}}) Z[l]=(z[l][1]z[l][2]z[l][3]z[l][m])
m m m为训练集大小, Z [ l ] {Z}^{[l]} Z[l]的维度 ( n [ l ] , m ) ({{n}^{[l]}},m) (n[l],m)
A [ l ] {A}^{[l]} A[l] ( n [ l ] , m ) ({n}^{[l]},m) (n[l],m) A [ 0 ] = X = ( n [ l ] , m ) {A}^{[0]} = X =({n}^{[l]},m) A[0]=X=(n[l],m)

搭建神经网络块(Building blocks of deep neural networks)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

超参数

比如算法中的learning rate a a a(学习率)、iterations(梯度下降法循环的数量)、 L L L(隐藏层数目)、 n [ l ] {{n}^{[l]}} n[l](隐藏层单元数目)、choice of activation function(激活函数的选择)都需要你来设置,这些数字实际上控制了最后的参数 W W W b b b的值,所以它们被称作超参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值