深度学习笔记(5) 深层神经网络
1. 深层神经网络
当算神经网络的层数时,不算输入层,只算隐藏层和输出层
上图是一个四层的神经网络,有三个隐藏层
L 表示层数,上图:L = 4
输入层的索引为 “0”
第一个隐藏层 n[1] = 5, 表示有5个隐藏神经元
在
l l
l 层的输入a [l-1] 用 w[l],b[l] 作为权重得到z[l] ,z[l] 再用激活函数 g[l] 得到激活后结果 a[l] ,并且为
l l
l +1层的输入
输入层,x 同样也是0层的激活函数,所以x = a[0] , n[0] = nx = 3
2. 前向传播和反向传播
前向传播的步骤:权重后的激活:输入 a[l-1] ,输出是 a[l] ,缓存为 z[l]
从实现的角度来说,可以缓存下w[l] 和b[l],这样更容易在不同的环节中调用函数
- 前向传播的步骤:
- 向量化实现过程:
前向传播需要喂入A[0] 也就是X,a[0] 对应于一个训练样本的输入特征
而A[0] 对应整个训练样本的输入特征
反向传播的步骤:导数的逆推:输入为
dada
da[l] ,输出为
d a da
da[l-1] ,
dw dw
dw[l] ,
db db
db[l]
- 反向传播的步骤:
- 向量化实现过程:
3. 核对矩阵的维数
实现深度神经网络的时候,常用的检查代码是否有错的方法:拿出一张纸过一遍算法中矩阵的维数
-
w的维度:(下一层的维数,前一层的维数),即 w[l] : (n[l] ,n[l-1] )
但在实现的过程:w的维度:(前一层的维数,下一层的维数)即 w[l] : (n[l-1] , n[l]),因为会用w.T去运算 -
b的维度:(下一层的维数,1),即 b[l] : (n[l] , 1)
-
z[l] ,a[l] 的维度: (n[l] , 1)
向量化后:
Z[l] 可以看成由每一个单独的Z[l] 叠加而得到,Z[l] = (z[l][1],z[l][2],z[l][3] ,…,z[l][m])
m为训练集大小,所以Z[l] 的维度不再是(n[l] ,1),而是(n[l] ,m)
相同的,A[l] :(n[l] ,m),A[0] = X = (n[l] ,m)
4. 参数和超参数
比如算法中的
-
learning rate
a a
a(学习率)
-
iterations(梯度下降法循环的数量)
-
L(隐藏层数目)
-
n[l](隐藏层单元数目)
-
choice of activation function(激活函数的选择)
都需要设置,这些数字实际上控制了最后的参数W和b的值,所以它们被称作超参数
之后也会介绍其他的超参数,如momentum、mini batch size、regularization parameters等等寻找超参数的最优值:
走Idea—Code—Experiment—Idea这个循环
尝试各种不同的参数,实现模型并观察是否成功,然后再迭代可能尝试不同的
a a
a 并观察 损失函数J 这么变了,试试一组值,然后可能损失函数发生变化
这个a a
a 值会加快学习过程,并且收敛在更低的损失函数值上(箭头标识),就用这个
aa
a 值了
5. 深度学习和大脑的关联性
一个神经网络的逻辑单元可以看成是对一个生物神经元的过度简化,但迄今为止连神经科学家都很难解释究竟一个神经元能做什么,它可能是极其复杂的;
它的一些功能可能真的类似logistic回归的运算,但单个神经元到底在做什么目前还没有人能够真正可以解释。
大脑中的神经元是怎么学习的,至今这仍是一个谜之过程。
参考:
相关推荐:
深度学习笔记(4) 浅层神经网络
深度学习笔记(3) 向量化逻辑回归
深度学习笔记(2) 神经网络基础
深度学习笔记(1) 深度学习简介
谢谢!