文章目录
- 1. 深层神经网络
- 2. 前向传播和反向传播
- 3. 核对矩阵维数
- 4. 参数、超参数
参考:
吴恩达视频课
深度学习笔记
1. 深层神经网络
有的时候只有非常深的神经网络才能发挥作用。
但是无法提前预知多少层的神经网络合适,可以先尝试逻辑回归,尝试一层,然后两层隐含层,然后把隐含层的数量当作超参数,然后交叉验证
2. 前向传播和反向传播
前向传播:
- 输入: a[l−1]a^{[l-1]}a[l−1]
- 输出:a[l]a^{[l]}a[l]
- 缓存:z[l],w[l],b[l]z^{[l]},w^{[l]},b^{[l]}z[l],w[l],b[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[l−1]+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[l−1]+b[l]
A[l]=g[l](Z[l])A^{[l]}=g^{[l]}\left(Z^{[l]}\right)A[l]=g[l](Z[l])
后向传播:
- 输入: da[l]da^{[l]}da[l]
- 输出: da[l−1],dw[l],db[l]da^{[l-1]},dw^{[l]},db^{[l]}da[l−1],dw[l],db[l]
dz[l]=da[l]∗g[l]′(z[l])dw[l]=dz[l]⋅a[l−1]db[l]=dz[l]da[l−1]=w[l]T⋅dz[l]dz[l]=w[l+1]Tdz[l+1]⋅g[l]′(z[l])\begin{array}{l}d z^{[l]}=d a^{[l]} * g^{[l]^{\prime}}\left(z^{[l]}\right) \\ d w^{[l]}=d z^{[l]} \cdot a^{[l-1]} \\ d b^{[l]}=d z^{[l]} \\ d a^{[l-1]}=w^{[l] T} \cdot d z^{[l]} \\ d z^{[l]}=w^{[l+1] T} d z^{[l+1]} \cdot g^{[l]^{\prime}}\left(z^{[l]}\right)\end{array}dz[l]=da[l]∗g[l]′(z[l])dw[l]=dz[l]⋅a[l−1]db[l]=dz[l]da[l−1]=w[l]T⋅dz[l]dz[l]=w[l+1]Tdz[l+1]⋅g[l]′(z[l])
向量化写法
dZ[l]=dA[l]∗g[l]′(Z[l])dW[l]=1mdZ[l]⋅A[l−1]Tdb[l]=1mnp⋅sum(dz[l],axis=1,keepdims =True)dA[l−1]=W[l]T⋅dZ[l]\begin{array}{l}d Z^{[l]}=d A^{[l]} * g^{[l]^{\prime}}\left(Z^{[l]}\right) \\ d W^{[l]}=\frac{1}{m} d Z^{[l]} \cdot A^{[l-1] T} \\ d b^{[l]}=\frac{1}{m} n p \cdot \operatorname{sum}\left(d z^{[l]}, \text {axis}=1, \text { keepdims }=\text {True}\right) \\ d A^{[l-1]}=W^{[l] T} \cdot d Z^{[l]}\end{array}dZ[l]=dA[l]∗g[l]′(Z[l])dW[l]=m1dZ[l]⋅A[l−1]Tdb[l]=m1np⋅sum(dz[l],axis=1, keepdims =True)dA[l−1]=W[l]T⋅dZ[l]
3. 核对矩阵维数
4. 参数、超参数
参数有 W, b
超参数:
- 学习率
- 梯度下降 迭代次数
- 隐藏层数量
- 隐藏层单元数量
- 激活函数选择
- momentum
- mini batch size
- 正则化参数
多种组合,各种尝试,选择效果最好的参数组合,第二门课会介绍