上一节我们学习了单层神经网络,本周学习的是深层神经网络
深层神经网络
上图中分别对应这逻辑回归,2层神经网络,3层神经网络,6层神经网络。
我们认为逻辑回归是相对“浅”的神经网络,6层神经网络相对“深”。
在几年前社区认为有些函数只有较深的神经网络能够学习。
深层神经网络的向前传播
我们先使用单个样本作为例子,展示向前传播时用的符号,之后再进行向量化
z[1]=W[1]x+b[1]
a[1]=g[1](z[1])
z[2]=W[2]a[1]+b[2]
a[2]=g[2](z[2])
一直计算直至最后的输出层
我们可以将 x 看作是 a[0]
所以相应层的计算就变为
z[l]=W[l]a[l−1]+b[l]
a[l]=g[l](z[l])
向量化后与之相似
为什么需要使用较深的网络
Andrew Ng在视频中的解释是较深的网络中各个隐藏层各司其职,离原始数据越接近的隐藏层仅能学习较为简单的特征,比如边缘探测器或者某些简单特征探测器。随后的隐藏层组合这些简单的特征,探测面部的不同部分,末端的隐藏层继续组合,继而探测不同的人脸。不过值得注意的是,较前的边缘探测器都是针对照片中较小的面积。而后部的器官或者面部探测器则是针对图片中的较大面积。
图上的这种金字塔型的结构不仅仅可以用于人脸识别,当你建造一个语音识别系统时,需要解决的是如何可视化语音数据,神经网络的第一层可能会先去开始探测较低层次音频波形的特征,比如音调是变高了还是变低了,分辨白噪声,或者音调。然后把这些波形组合在一起就能去探测声音的基本单元(语言学的概念:音位)再组合起来可能就能识别单词,最后再到完整的句子。
另一种是来自电路理论。
深层网络的反向传播
我们选择其中的一层(l)进行举例
l层的参数有:W[l],b[l]
- 正向传播时
输入l层的参数有:a[l−1],输出的的值是a[l],计算时将z[l]缓存起来以用于反向传播
z[l]=W[l]a[l−1]+b[l]
a[l]=g[l](z[l]) - 反向传播时
输入参数:da[l],输出da[l−1](da的计算需要之前缓存的z)
参数 VS 超参数
参数: 网络中的W权重和b偏置值
超参: 学习率,训练次数,隐藏层数,激活函数的选择
超参控制了最终权重和偏置该是什么值,所以称为超参
除了以上学到的这些后面还会学到:momentum、mini batch size、regularization parameters。
这和大脑有什么关系?
神经网络里的神经元只是过度简化了大脑中的神经元功能,但是大脑中的神经元具体做了什么,现在还没法进行解释。
所以虽然认为深度学习的确是个很好的工具,能学习到各种很灵活很复杂的函数,来学习X到Y的映射。