课程来源:吴恩达 深度学习课程 《神经网络基础》
笔记整理:王小草
时间:2018年5月16日
1.深层神经网络
逻辑回归是一个very shallow network:
只有一个隐藏层的网络是一个2 layer neural netowork,也称shallow neural network:
隐藏层>=2的网络称为deep neural network:
关于深层神经网络的notation定义如下:
n[l]:表示第l层的神经元数目
a[l]:表示第l层的激活函数的值(也是该层的输出,下一层的输入)
w[l]:表示l层计算z[l]时的权重
2.网络中的前向传播与反向传播
2.1 前向传播
对于第l层:
input: a[l-1]
output:a[l]
中间过程:
z[l] = w[l] * a[l-1] + b[l]
a[l] = g[l](z[l])
(g[l]是第l层的激活函数)
用向量化的形式表示出来:
Z[l] = W[l] * A[l-1] + b[l]
A[l] = g[l](Z[l])
当有n层神经网络的时候,可以使用for循环,目前没有更好的办法替代for循环。
2.2 反向传播
对于第l层:
input: da[l]
output: 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]T * dz[l+1] * g[l]’(z[l])
用向量化的形式表示出来:
dZ[l] = dA[l] * g[l]’(Z[l])
dW[l] = 1/m * dZ[l] * A[l-1]
db[l] = 1/m * np.sum(dz[l], axis=1, keepdims=True)
dA[l-1] = W[l]T * dZ[l]
3.核对矩阵的维数
假设有一个5层的神经网络,每层的神经元分别为3,5,4,2,1
layer 1:
z1 = w1 * x + b1
z,w,x,b的维度分别为
Layer 2:
以此类推,课总结出规律:
向量化后的维度:
非向量化是:
向量化后是:
4.为何使用深层表示
深层神经网络有很大的优势
1.首先可以处理维度很高的特征,比如说图像,语音
2.其次可以用无限个异或组合来你何处任何训练集
5.搭建深层神经网络块
针对第l层
前向计算:
input: a[l-1]
output: a[l]
中间过程:
z[l] = w[l] * a[l-1] + b[l]
a[l] = g[l](z[l])
(g[l]是第l层的激活函数)
反向传播:
input: da[l]
output: da[l-1],dw[l], db[l]
两个过程如下:
6.参数与超参数
6.1 参数
神经网络中涉及的参数有两类:w, b
6.2 超参数
涉及的超参数:
(1)learning rate 学习率
(2)iterations 迭代次数
(3)hidden layers’ number 隐藏层的数目
(4)hidden units 每个隐藏层的神经元数目
(5)choice of activation function 激活函数的选择
(6)momentum
(7)mini batch size
(8)various forms of regularization parameters
6.3 如何选择超参数
可以用以下图形来判断超参数在cost和iterations上的变化。