1.深度神经网络
1.1 基本概念
定义: 与浅层神经网络类似,在其基础上增加隐藏层数量,是由多个隐藏层构成的神经网络
1.2 深度神经网络的表示
其表示方法与浅层神经网络完全一致,只是层数增多
1.2.1 单输入
数学表示
- 输入层: a [ 0 ] = x a^{[0]}=x a[0]=x
- 隐藏层:
a
[
l
]
=
g
(
z
[
l
]
)
,
l
∈
[
1
,
3
]
a^{[l]}=g(z^{[l]}),l\in [1,3]
a[l]=g(z[l]),l∈[1,3]
z [ l ] = w [ l ] ⋅ x + b , l ∈ [ 1 , 3 ] z^{[l]}=w^{[l]}\cdot x+b,l\in [1,3] z[l]=w[l]⋅x+b,l∈[1,3] - 输出层: y ^ = a [ 4 ] = g ( z [ 4 ] ) \hat y =a^{[4]}=g(z^{[4]}) y^=a[4]=g(z[4])
各层维度
- w [ l ] : ( n [ l ] , n [ l − 1 ] ) w^{[l]}:(n^{[l]},n^{[l-1]}) w[l]:(n[l],n[l−1])
- b [ l ] : ( n [ l ] , 1 ) b^{[l]}:(n^{[l]},1) b[l]:(n[l],1)
- d w [ l ] : ( n [ l ] , n [ l − 1 ] ) dw^{[l]}:(n^{[l]},n^{[l-1]}) dw[l]:(n[l],n[l−1])
-
d
b
[
l
]
:
(
n
[
l
]
,
1
)
db^{[l]}:(n^{[l]},1)
db[l]:(n[l],1)
1.2.2 多输入(向量化表示)
数学表示
- 输入层: A [ 0 ] = X A^{[0]}=X A[0]=X
- 隐藏层:
A
[
l
]
=
g
(
Z
[
l
]
)
A^{[l]}=g(Z^{[l]})
A[l]=g(Z[l])
Z [ l ] = W [ l ] ⋅ X + b [ l ] Z^{[l]}=W^{[l]}\cdot X+b^{[l]} Z[l]=W[l]⋅X+b[l] - 输出层: y ^ = A [ 4 ] = g ( Z [ 4 ] ) \hat y = A^{[4]}=g(Z^{[4]}) y^=A[4]=g(Z[4])
各层维度
- Z [ l ] : ( n [ l ] , 1 ) Z^{[l]}:(n^{[l]},1) Z[l]:(n[l],1)
- A [ l ] : ( n [ l ] , 1 ) A^{[l]}:(n^{[l]},1) A[l]:(n[l],1)
- W [ l ] : ( n [ l ] , n [ l − 1 ] ) W^{[l]}:(n^{[l]},n^{[l-1]}) W[l]:(n[l],n[l−1])
- b [ l ] : ( n [ l ] , 1 ) b^{[l]}:(n^{[l]},1) b[l]:(n[l],1)
- d W [ l ] : ( n [ l ] , n [ l − 1 ] ) dW^{[l]}:(n^{[l]},n^{[l-1]}) dW[l]:(n[l],n[l−1])
-
d
b
[
l
]
:
(
n
[
l
]
,
1
)
db^{[l]}:(n^{[l]},1)
db[l]:(n[l],1)
1.3 深度神经网络的优势
(1)解构特征:
深度神经网络能够逐层解构特征,逐层分解问题,将复杂问题分解成多个基本问题,进而提高学习能力和理解能力
(2)符合电路理论:空间复杂度低
深层网络可构成类似二叉树的结构,只需要较少神经元就能处理复杂问题,其空间复杂度为
O
(
l
o
g
n
)
O(logn)
O(logn)
若使用浅层神经网络,要达到同样的效果则需要的神经元成指数增加,其空间复杂度为
O
(
2
n
)
O(2^n)
O(2n)
电路理论(选修):
2.正向传播与反向传播
2.1 正向传播
其流程与浅层神经网络一致,只需逐层计算即可
注意: 在正向传播过程,要将中间结果
z
[
l
]
、
w
[
l
]
、
b
[
l
]
z^{[l]}、w^{[l]}、b^{[l]}
z[l]、w[l]、b[l]进行缓存,在反向传播时使用
整体流程:
具体计算过程:
2.2 反向传播
整体流程:
具体计算过程(选修):
2.3 完整流程
一次完整流程 = 正向传播 + 反向传播
整体流程:
一次正向传播+反向传播:
总结:
3.参数与超参数
3.1 参数
定义: 神经元内部的权重,即模型想通过训练学习到的信息,会随着训练进行而不断改变。
即
W
[
l
]
、
b
[
l
]
W^{[l]}、b^{[l]}
W[l]、b[l]
3.2 超参数
定义: 用来控制模型或训练过程的外部参数,通常是人为规定的,不会随训练过程改变。
常见超参数:
- 学习率:
α
\alpha
α
- 迭代次数:
N
N
N
- 隐藏层的层数:
L
L
L
- 每一层的神经元个数:
n
1
,
n
2
,
.
.
,
n
L
n^1,n^2,..,n^L
n1,n2,..,nL
- 激活函数:sigmoid、tanh、ReLU…