1.深层神经网络
下图是一个四层的神经网络,其中符号表示如下:
- LLL表示网络层数
- n[l]n^{[l]}n[l]表示第lll层的神经元个数(输入层的索引为0)
- a[l]=g[l](z[l])a^{[l]}=g^{[l]}(z^{[l]})a[l]=g[l](z[l])表示第lll层经过激活函数后的结果(a[0]a^{[0]}a[0]表述输入特征,a[L]a^{[L]}a[L]表示预测结果)
- w[l]w^{[l]}w[l]表示在第lll层由于计算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]×1b^{[l]}:n^{[l]}×1b[l]:n[l]×1
- z[l]:n[l]×1z^{[l]}:n^{[l]}×1z[l]:n[l]×1(mmm个样本时变为n[l]×mn^{[l]}×mn[l]×m)
- a[l]:n[l]×1(a^{[l]}:n^{[l]}×1(a[l]:n[l]×1(mmm个样本时变为n[l]×mn^{[l]}×mn[l]×m)
1.3 参数VS超参数
整个网络中,参数即WWW和bbb,而超参数控制了最后的WWW和bbb的值,常见的超参数有:
- 学习率α\alphaα
- 梯度下降迭代次数iterationsiterationsiterations
- 隐藏层数目LLL
- 隐藏层单元数n[l]n^{[l]}n[l]
- 激活函数
- 正则化参数
- miniBatchSizeminiBatchSizeminiBatchSize
- …
2.参考
https://www.bilibili.com/video/BV1FT4y1E74V?p=36-42