深层神经网络
符号规定
- L L L :表示神经网络的层数;
- l l l :表示第几层;
- n l n^{\~l\~} n l :表示第 l l l 层的节点数;
- a l a^{\~l\~} a l :表示第 l l l 层中的激活函数(泛指);
- a l = g l ( z l ) a^{\~l\~}=g^{\~l\~}(z^{\~l\~}) a l =g l (z l ) :表示第 l l l 层中的激活函数(泛指);
- W l W^{\~l\~} W l :表示第 l l l 层的参数 w w w 的集合;
- b l b^{\~l\~} b l :表示第 l l l 层的参数 b b b 的集合。
前向传播和反向传播都类似之前的笔记。
流程图

前向传播有输入数据 x x x ,反向传播的输入数据是 d a L da^{\~L\~} da L ,即输出层(第 L L L 层)的输出,在向量化代码中,直接展示出来的结果是损失函数 L ( y ^ , y ) L(\widehat{y},y) L(y ,y) ,
因为 d a L = − y a + 1 − y 1 − a da^{\~L\~}=-\frac{y}{a}+\frac{1-y}{1-a} da L =−ay+1−a1−y ,而 L ( y ^ , y ) L(\widehat{y},y) L(y ,y) 对 y ^ \widehat{y} y ( a a a)的导数,正好等于这个结果。因此将损失函数对 y ^ \widehat{y} y ( a a a)求导,可得出 d a L da^{\~L\~} da L ,然后代入反向传播链的输入,开始迭代,如上图所示。
向量化时 d a L da^{\~L\~} da L 需改为 d A L dA^{\~L\~} dA L , d A L = ( d a 1 , d a 2 , . . . , d a m ) dA^{\~L\~}=(da^{\~1\~},da^{\~2\~},...,da^{\~m\~}) dA L =(da 1 ,da 2 ,...,da m ) 。
为何 z l z^{\~l\~} z l 是反向传播的一个输入参数
∵ a l = σ ( z l ) = σ ( W l a l − 1 + b l ) ∵ d L d a l − 1 = d L d a l ⋅ d a l d a l − 1 = d a l ⋅ σ ′ ( W l a l − 1 + b l ) W l ⋅ d a l − 1 ∴ d a l − 1 = d a l ⋅ σ ′ ( z l ) W l ⋅ d a l − 1 \begin{align*} ∵a^{\~l\~}=\sigma&(z^{\~l\~})=\sigma(W^{\~l\~}a^{\~l-1\~}+b^{\~l\~})\\ ∵\frac{dL}{da^{\~l-1\~}}&=\frac{dL}{da^{\~l\~}}·\frac{da^{\~l\~}}{da^{\~l-1\~}}\\ &=da^{\~l\~}·\sigma^{'}(W^{\~l\~}a^{\~l-1\~}+b^{\~l\~})W^{\~l\~}·da^{\~l-1\~}\\ ∴da^{\~l-1\~}&=da^{\~l\~}·\sigma^{'}(z^{\~l\~})W^{\~l\~}·da^{\~l-1\~} \end{align*} ∵a l =σ∵da l−1 dL∴da l−1 (z l )=σ(W l a l−1 +b l )=da l dL⋅da l−1 da l =da l ⋅σ′(W l a l−1 +b l )W l ⋅da l−1 =da l ⋅σ′(z l )W l ⋅da l−1
核对矩阵的维度
向量化前的单个样本
-
前向传播:
W l W^{\~l\~} W l :维度为 ( n l , n l − 1 ) (n^{\~l\~},n^{\~l-1\~}) (n l ,n l−1 ) ;
z l z^{\~l\~} z l :维度为 ( n l , 1 ) (n^{\~l\~},1) (n l ,1) ;
a l a^{\~l\~} a l :维度为 ( n l , 1 ) (n^{\~l\~},1) (n l ,1) ;
b l b^{\~l\~} b l :维度为 ( n l , 1 ) (n^{\~l\~},1) (n l ,1) 。
-
反向传播:
d W l dW^{\~l\~} dW l 和 W l W^{\~l\~} W l 同维度;
d b l db^{\~l\~} db l 和 b l b^{\~l\~} b l 同维度。
向量化后的整个训练集
-
前向传播:
X ( A 0 ) X(A^{\~0\~}) X(A 0 ) :维度为 ( n 0 , m ) (n^{\~0\~},m) (n 0 ,m) ;
W l W^{\~l\~} W l :维度为 ( n l , n l − 1 ) (n^{\~l\~},n^{\~l-1\~}) (n l ,n l−1 ) ;
b l b^{\~l\~} b l :维度为 ( n l , 1 ) (n^{\~l\~},1) (n l ,1) ;# 要广播
Z l Z^{\~l\~} Z l :维度为 ( n l , m ) (n^{\~l\~},m) (n l ,m) ;
A l A^{\~l\~} A l :维度为 ( n l , m ) (n^{\~l\~},m) (n l ,m) 。
-
反向传播:
d W l dW^{\~l\~} dW l 和 W l W^{\~l\~} W l 同维度;
d b l db^{\~l\~} db l 和 b l b^{\~l\~} b l 同维度;
d Z l dZ^{\~l\~} dZ l 和 Z l Z^{\~l\~} Z l 同维度;
d A l dA^{\~l\~} dA l 和 A l A^{\~l\~} A l 同维度。
超参数:
能控制参数 w w w 和 b b b 的参数,需人为设置。
- 学习率 α \alpha α ;
- 梯度下降法循环次数;
- 隐层数 L L L ;
- 隐藏层的单元(节点)数;
- 激活函数类型。
这些参数需要不断测试,实时评估损失函数(横坐标越大,纵坐标越小)。