1.深层神经网络
下图是一个四层的神经网络,其中符号表示如下:
- L L L表示网络层数
- n [ l ] n^{[l]} n[l]表示第 l l l层的神经元个数(输入层的索引为0)
- a [ l ] = g [ l ] ( z [ l ] ) a^{[l]}=g^{[l]}(z^{[l]}) a[l]=g[l](z[l])表示第 l l l层经过激活函数后的结果( a [ 0 ] a^{[0]} a[0]表述输入特征, a [ L ] a^{[L]} a[L]表示预测结果)
- w [ l ] w^{[l]} w[l]表示在第 l l l层由于计算 z [ l ] z^{[l]} z[l]的权重( b [ l ] b^{[l]} b[l]同理)
1.1 前向传播和反向传播
以单个样本为例,当前输入为 a [ l − 1 ] a^{[l-1]} a[l−1],前向传播的过程为:
- z [ l ] = W [ l ] ⋅ a [ l − 1 ] + b [ l ] z^{[l]}=W^{[l]}·a^{[l-1]}+b^{[l]} z[l]=W[l]⋅a[l−1]+b[l]
- a [ l ] = g [ l ] ( z [ l ] ) a^{[l]}=g^{[l]}(z^{[l]}) a[l]=g[l](z[l])
反向传播的过程如下图所示,其中(5)是将(4)带入(1)中得到的:
整体流程如下图所示,由于在反向传播中会用到前向传播的中间计算结果 z [ l ] z^{[l]} z[l],所以会将其进行缓存,其中蓝方框中的参数为当前层计算需要的计算值,绿方框为最后进行梯度下降需要的值:
1.2 核对矩阵的维数
对于神经网络中众多的矩阵,需要核对每个矩阵的维度才能保证计算的准确性,矩阵的具体大小如下:
- w [ l ] : n [ l ] × n [ l − 1 ] w^{[l]}:n^{[l]}×n^{[l-1]} w[l]:n[l]×n[l−1]( w [ l ] w^{[l]} w[l]中每一行可以理解为每个神经元的向量表示)
- b [ l ] : n [ l ] × 1 b^{[l]}:n^{[l]}×1 b[l]:n[l]×1
- z [ l ] : n [ l ] × 1 z^{[l]}:n^{[l]}×1 z[l]:n[l]×1( m m m个样本时变为 n [ l ] × m n^{[l]}×m n[l]×m)
- a [ l ] : n [ l ] × 1 ( a^{[l]}:n^{[l]}×1( a[l]:n[l]×1( m m m个样本时变为 n [ l ] × m n^{[l]}×m n[l]×m)
1.3 参数VS超参数
整个网络中,参数即 W W W和 b b b,而超参数控制了最后的 W W W和 b b b的值,常见的超参数有:
- 学习率 α \alpha α
- 梯度下降迭代次数 i t e r a t i o n s iterations iterations
- 隐藏层数目 L L L
- 隐藏层单元数 n [ l ] n^{[l]} n[l]
- 激活函数
- 正则化参数
- m i n i B a t c h S i z e miniBatchSize miniBatchSize
- …
2.参考
https://www.bilibili.com/video/BV1FT4y1E74V?p=36-42