基本元素符号约定
- 上标 [ l ] [l] [l]代表神经网络的层数 l t h l^{th} lth ,比如 a [ L ] a^{[L]} a[L] 是 [ L ] [L] [L]层的激活, W [ L ] W^{[L]} W[L]是 [ L ] [L] [L]层的权重, b [ L ] b^{[L]} b[L]是 [ L ] [L] [L]层的偏置。
- 上标 ( i ) (i) (i) 表示第 i t h i^{th} ith个样本,比如 x ( i ) x^{(i)} x(i)是第 i t h i^{th} ith个训练样本。
- 下标 i i i 表示 [ l ] [l] [l]层的第 i t h i^{th} ith 项, 比如 a i [ l ] a^{[l]}_i ai[l] 表示第 l t h l^{th} lth层的第 i t h i^{th} ith个激活项
一、原理
多层神经网络搭建的流程图
1.1 为L-层神经网络初始化参数
W的维度 | b的维度 | 激活值的计算 | 激活值的维度 | |
---|---|---|---|---|
第1层 | ( n [ 1 ] , 12288 ) (n^{[1]},12288) (n[1],12288) | ( n [ 1 ] , 1 ) (n^{[1]},1) (n[1],1) | Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]} = W^{[1]} X + b^{[1]} Z[1]=W[1]X+b[1] | ( n [ 1 ] , 209 ) (n^{[1]},209) (n[1],209) |
第2层 | ( n [ 2 ] , n [ 1 ] ) (n^{[2]}, n^{[1]}) (n[2],n[1]) | ( n [ 2 ] , 1 ) (n^{[2]},1) (n[2],1) | Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] Z^{[2]} = W^{[2]} A^{[1]} + b^{[2]} Z[2]=W[2]A[1]+b[2] | ( n [ 2 ] , 209 ) (n^{[2]}, 209) (n[2],209) |
⋮ \vdots ⋮ | ⋮ \vdots ⋮ | ⋮ \vdots ⋮ | ⋮ \vdots ⋮ | ⋮ \vdots ⋮ |
第L-1层 | ( n [ L − 1 ] , n [ L − 2 ] ) (n^{[L-1]}, n^{[L-2]}) (n[L−1],n[L−2]) | ( n [ L − 1 ] , 1 ) (n^{[L-1]}, 1) (n[L−1],1) | Z [ L − 1 ] = W [ L − 1 ] A [ L − 2 ] + b [ L − 1 ] Z^{[L-1]} = W^{[L-1]} A^{[L-2]} + b^{[L-1]} Z[L−1]=W[L−1]A[L−2]+b[L−1] | ( n [ L − 1 ] , 209 ) (n^{[L-1]}, 209) (n[L−1],209) |
第L层 | ( n [ L ] , n [ L − 1 ] ) (n^{[L]}, n^{[L-1]}) (n[L],n[L−1]) | ( n [ L ] , 1 ) (n^{[L]}, 1) (n[L],1) | Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] Z^{[L]} = W^{[L]} A^{[L-1]} + b^{[L]} Z[L]=W[L]A[L−1]+b[L] | ( n [ L ] , 209 ) (n^{[L]}, 209) (n[L],209) |
-
W [ l ] W^{[l]} W[l]:
parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[i - 1]) / np.sqrt(layer_dims[l - 1])
-
b [ l ] b^{[l]} b[l]:
parameters['b' + str(l] = np.zeros(shape=(layer_dims[l], 1))
1.2 前向传播
1.2.1 前向传播的线性部分 Z [ l ] = W X + b Z^{[l]}=WX + b Z[l]=WX+b
W = [ j k l m n o p q r ]        X = [ a b c d e f g h i ]        b = [ s t u ] W = \begin{bmatrix} j & k & l\\ m & n & o \\ p & q & r \end{bmatrix}\;\;\; X = \begin{bmatrix} a & b & c\\ d & e & f \\ g & h & i \end{bmatrix} \;\;\; b =\begin{bmatrix} s \\ t \\ u \end{bmatrix} W=⎣⎡jmpknqlor⎦⎤X=⎣⎡adgbehcfi⎦⎤b=⎣⎡stu⎦⎤
W X + b = [ ( j a + k d + l g ) + s ( j b + k e + l h ) + s ( j c + k f + l i ) + s ( m a + n d + o g ) + t ( m b + n e + o h ) + t ( m c + n f + o i ) + t ( p a + q d + r g ) + u ( p b + q e + r h ) + u ( p c + q f + r i ) + u ] WX + b = \begin{bmatrix} (ja + kd + lg) + s & (jb + ke + lh) + s & (jc + kf + li)+ s\\ (ma + nd + og) + t & (mb + ne + oh) + t & (mc + nf + oi) + t\\ (pa + qd + rg) + u & (pb + qe + rh) + u & (pc + qf + ri)+ u \end{bmatrix} WX+b=⎣⎡(ja+kd+lg)+s(ma+nd+og)+t(pa+qd+rg)+u(jb+ke+lh)+s(mb+ne+oh)+t(pb+qe+rh)+u(jc+kf+li)+s(mc+nf+oi)+t(pc+qf+ri)+u⎦⎤
Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} +b^{[l]} Z[l]=W[l]A[l−1]+b[l]其中 A [ 0 ] = X A^{[0]} = X A[0]=X
1.2.2 计算前向传播的线激活函数部分
激活函数公式
- Sigmoid: σ ( Z ) = σ ( W A + b ) = 1 1 + e − ( W A + b ) \sigma(Z) = \sigma(W A + b) = \frac{1}{ 1 + e^{-(W A + b)}} σ(Z)=σ(WA+b)=1+e−(WA+b)1
- Relu: A = R E L U ( Z ) = m