「深层神经网络」学习笔记

课程来源:《神经网络和深度学习》——第四周:深层神经网络 by 吴恩达

本章主要讲述了如何搭建一个深层神经网络,笔记记录了深层神经网络的结构,正反向传播的实现步骤,(超)参数介绍,以及定性分析了深层神经网络的原理与作用。

深度学习=多隐藏层神经网络

4.1 Deep L-layer Neural network 深层神经网络

logistic 回归是一个浅层模型,而5 hidden layers 是一个深层网络,浅层和深层是一个程度的问题。n隐藏层神经网络,也称为n+1层神经网络。对于一个L层神经网络,将第i层的输出记为$a^{[i]}$,输入层x记为$a^{[0]}$,最终的的输出层$\hat y$ 也就是第L层的输出$a^{[L]}$。

image-20181020100509129

4.2 Forward Propagation in a Deep Network 前向传播

前向传播的重点在于各层的向量化计算,对于单层的单元计算可以利用向量化的形式去除了for循环,从而才能提高计算效率。但是层与层之间的的显式for循环无法去除。

image-20181020140451948

4.3 Getting your matrix dimensions right 核对矩阵的维数

一般用要手动过一遍算法中的矩阵的维数,确保矩阵维度正确。反向传播也是一样的。注意维度。

4.4 Why deep representations?为什么深度网络有用?

深度网络可以学习到一些深层次的特征。

深度神经网络的许多隐层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。

2018-10-21 20-04-18屏幕截图

4.5 Building blocks of deep neural networks 搭建深层神经网路块

Forward and backward functions

Layer l (the basic blocks) 单层传播分析

对于一个神经网络的一个隐藏层layer l :参数parameters $W^{[l]}$ ,$b^{[l]}$

  • ➡正向传播Forward:
    • Input $a^{[l-1]}$,output $a^{[l]}$
    • $Z^{[l]}$ :$W^{[l]}a^{[l]}+b^{[l]}$
    • $a^{[l]}$ :$g^{[l]}(Z^{[l]})$
    • 缓存cache $Z^{[l]}$ 对于以后的正向和反向传播步骤非常有用。
  • ➡反向传播Backward:

    • Input $da^{[l]}$ ,$Z^{[l]}$ ,output $d a^{[l-1]}$ ,$dW^{[l]}$,$db^{[l]}$ 。

      更新$W^{[l]}$,$b^{[l]}$

    • $W^{[l]}$ :$W^{[l]}-\alpha dW^{[l]}$

    • $b^{[l]}$ :$b^{[l]}-\alpha db^{[l]}$

计算过程如下图所示:

image-20181020161958760

One iteration of trianing for a neural network invovles 单次神经网络迭代训练

image-20181020163028022

4.6 Forward and backward propagation 前向反向传播(实现)

反向实现细节:

image-20181020192200195

4.7 Parameters VS Hyperparameters 参数vs超参数

什么是参数与超参数?

Parameters:$W^{[i]}$,$b^{[i]}$

Hyperparameters:

  • Learning rate $\alpha$ 学习率
  • #iterations 梯度下降法循环次数
  • #capital L 隐层数 the number of hidden layers
  • #hidden units 隐藏层单元数
  • chioce of activation funciton 激活函数选择

事实上,这些超参数最终也决定了参数W和b的最后的值。即超参数是控制参数的参数(这句话有点绕)

调参即为调整超参数,这个过程是个非常玄学的过程:尝试,然后根据损失函数进行调整。

image-20181020193923230

根据计算机CPU/GPU的运算能力与数据集的变化,超参数的最优数值是会变化的!!