第四周:深层神经网络
本文是神经网络和深度学习课程的笔记。
4.1 深层神经网络
- 记号:
- L L L:网络的层数
- n [ l ] , l ∈ [ 1 , L ] n^{[l]},l \in [1,L] n[l],l∈[1,L]: 第l层的神经元的数量, n [ 0 ] n^{[0]} n[0]表示第0层,即输入的尺寸。
- a [ l ] , l ∈ [ 1 , L ] a^{[l]},l \in [1,L] a[l],l∈[1,L]: a [ L ] = y ^ a^{[L]}=\hat{y} a[L]=y^
4.2 深层神经网络中的前向传播
⚠️ 计算公式
单个样本
- 第一层:
z [ 1 ] = W [ 1 ] x + b [ 1 ] z^{[1]}=W^{[1]}x+b^{[1]} z[1]=W[1]x+b[1]
a [ 1 ] = g [ 1 ] ( z [ 1 ] ) a^{[1]}=g^{[1]}(z^{[1]}) a[1]=g[1](z[1]) - 第
l
,
1
≤
l
l,1\leq l
l,1≤l层:
z [ l ] = W [ l ] a [ l − 1 ] + b [ 1 ] z^{[l]}=W^{[l]}a^{[l-1]}+b^{[1]} z[l]=W[l]a[l−1]+b[1]
a [ l ] = g [ l ] ( z [ l ] ) a^{[l]}=g^{[l]}(z^{[l]}) a[l]=g[l](z[l])
多个样本
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
[
l
]
=
g
[
l
]
(
Z
[
l
]
)
A^{[l]}=g^{[l]}(Z^{[l]})
A[l]=g[l](Z[l])
4.3 核对矩阵的维度
因为
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
[
l
]
=
g
[
l
]
(
z
[
l
]
)
a^{[l]}=g^{[l]}(z^{[l]})
a[l]=g[l](z[l])(单个样本)
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
[
l
]
=
g
[
l
]
(
Z
[
l
]
)
A^{[l]}=g^{[l]}(Z^{[l]})
A[l]=g[l](Z[l])(m个样本)
W [ l ] W^{[l]} W[l] | b [ l ] b^{[l]} b[l] | z [ l ] z^{[l]} z[l] | a [ l ] a^{[l]} a[l] | Z [ l ] Z^{[l]} Z[l] | A [ l ] A^{[l]} A[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) | ( n [ l ] , 1 ) (n^{[l]},1) (n[l],1) | ( n [ l ] , 1 ) (n^{[l]},1) (n[l],1) | ( n [ l ] , m ) (n^{[l]},m) (n[l],m) | ( n [ l ] , m ) (n^{[l]},m) (n[l],m) |
4.4 为什么使用深层表示
- 前几层学习一些简单的特征,如边缘检测、音调变化,深层会将简单的特征组合起来变成特殊的特征。
- 电路理论:
- 例子:计算
x
1
X
O
R
x
2
X
O
R
.
.
.
X
O
R
x
n
x_1\text{ }XOR\text{ }x_2\text{ }XOR\text{ } ... \text{ }XOR \text{ } x_n
x1 XOR x2 XOR ... XOR xn
- 例子:计算
x
1
X
O
R
x
2
X
O
R
.
.
.
X
O
R
x
n
x_1\text{ }XOR\text{ }x_2\text{ }XOR\text{ } ... \text{ }XOR \text{ } x_n
x1 XOR x2 XOR ... XOR xn
4.5 搭建深层神经网络块
⚠️ 第
l
l
l层的设计![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/09ddc9a9ba77f892b1a5ecafafea8710.png)
4.6 前向和反向传播
具体实现
前向传播
- 目的:
- Input a [ l − 1 ] a^{[l-1]} a[l−1]
- Output a [ l ] a^{[l]} a[l],cache ( z [ l ] ) (z^{[l]}) (z[l])
- 公式:
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 [ l ] = g [ l ] ( Z [ l ] ) A^{[l]}=g^{[l]}(Z^{[l]}) A[l]=g[l](Z[l])
反向传播
- 目的:
- Input d a [ l ] da^{[l]} da[l]
- Output d a [ l − 1 ] , d W [ l ] , d b [ l ] da^{[l-1]},dW^{[l]},db^{[l]} da[l−1],dW[l],db[l],cache ( z [ l ] ) (z^{[l]}) (z[l])
- 公式:
单个样本:
d z [ l ] = d a [ l ] ∗ g [ l ] ( z [ l ] ) dz^{[l]}=da^{[l]}*g^{[l]}(z^{[l]}) dz[l]=da[l]∗g[l](z[l])
d w [ l ] = d z [ l ] a [ l − 1 ] , T dw^{[l]}=dz^{[l]}a^{[l-1],T} dw[l]=dz[l]a[l−1],T
d b [ l ] = d z [ l ] db^{[l]}=dz^{[l]} db[l]=dz[l]
d a [ l − 1 ] = w [ l ] , T d z [ l ] da^{[l-1]}=w^{[l],T}dz^{[l]} da[l−1]=w[l],Tdz[l]y
多个样本:
d Z [ l ] = d A [ l ] ∗ g [ l ] ( Z [ l ] ) dZ^{[l]}=dA^{[l]}*g^{[l]}(Z^{[l]}) dZ[l]=dA[l]∗g[l](Z[l])
d W [ l ] = d Z [ l ] A [ l − 1 ] , T dW^{[l]}=dZ^{[l]}A^{[l-1],T} dW[l]=dZ[l]A[l−1],T
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 ) db^{[l]}=\frac{1}{m}np.sum(dZ^{[l]},axis=1,keepdims=True) db[l]=m1np.sum(dZ[l],axis=1,keepdims=True)
d a [ l − 1 ] = w [ l ] , T d z [ l ] da^{[l-1]}=w^{[l],T}dz^{[l]} da[l−1]=w[l],Tdz[l]
4.7 参数 & 超参数
⚠️ 参数
W [ 1 ] , b [ 1 ] , W [ 2 ] , b [ 2 ] … … W^{[1]},b^{[1]},W^{[2]},b^{[2]}…… W[1],b[1],W[2],b[2]……
⚠️ 超参数
- 学习率: α \alpha α
- 循环次数
- 隐层数量: L L L
- 每个隐层的神经元数量(Hidden Unit): n [ 1 ] , n [ 2 ] … … n^{[1]},n^{[2]}…… n[1],n[2]……
- 不同的激活函数
其他:
- 超参数可能会随着时间变化而变化,因为电脑的型号会变动。