一、描述 DNN 的符号
L:层数 (=4)
n^{[l]}:第 l 层的单元数
a^{[l]}:第 l 层的激活 (a^{[l]} = g^{[l]}(z^{[l]}))
w^{[l]} 、b^{[l]}:计算 z^{[l]} 的权重 (z^{[l]} = w^{[l]} a^{[l-1]} +b^{[l]} )
深度学习其实就是多隐层的神经网络。
二、前向和反向传播
1. 前向传播
input: a^{[l-1]}
output: a^{[l]}, cache(z^{[l]})
z^{[l]} = w^{[l]} * a^{[l-1]} + b^{[l]}
a^{[l]} = g^{[l]}(z^{[l]})
2. 反向传播
目的:计算梯度
(1) 算法
input: da^{[l]}
output: da^{[l-1]}, dW^{[l]}, db^{[l]}
dz^{[l]} = da^{[l]} * g^{[l]}\prime(z^{[l]})
dw^{[l]} = dz^{[l]} * a^{[l-1]}
db^{[l]} = dz^{[l]}
da^{[l-1]} = w^{[l]} * dz^{[l]}
总公式: dz^{[l]} = w^{[l+1]} * dz^{[l+1]} * g^{[l]}\prime(z^{[l]})
(2) 激活函数的导数
a. Sigmoid 激活函数
b. tanh 激活函数
g(z) = tanh(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}
c. ReLU 激活函数
f(x) =\left\{ \begin{matrix} x, x>=0 \\0, x<0 \end{matrix} \right.
d. Leaky ReLU 激活函数
LeakyReLU(x) = =\left\{ \begin{matrix} x,x>0 \\ \gamma x,x<=0 \end{matrix} \right.
3. 总结
三、搭建深层神经网络
1. 过程
2. 参数 vs 超参数
-
参数:W^{[1]}, b^{[1]}, W^{[2]}, b^{[2]}, W^{[3]}, b^{[3]} ...
-
超参数:学习率\alpha, 梯度下降循环次数, 隐藏层数L, 隐藏层单元n^{[1]}, n^{[2]}..., 选择的激活函数,momentum, mini batch, 正则化参数....
超参数最终决定了参数
3. 确认矩阵的维数
检查维数,用于排查 bug
w^{[l]}: (n^{[l]}, n^{[l-1]})
b^{[l]}: (n^{[l]}, 1)
dw^{[l]}: (n^{[l]}, n^{[l-1]})
db^{[l]}: (n^{[l]}, 1)
四、为什么使用深度神经网络?
1. 由浅入深
低层次 (较早的前几层) 可以学习一些简单特征,后几层将这些简单特征结合起来 ,去探测更复杂的东西。
2. 电路理论
深层比浅层的实现更容易。