神经网络的数学推导

注:在Cousera的DL课程中,设计矩阵和系数矩阵都是都是转置版本。我们采用这种描述。

$X$为转置的设计矩阵,维数是$n\times m$

$Z^{[1]}=W^{[1]}X+b^{[1]}$,维数是$h\times m$,h为隐藏层神经元数量

$A^{[1]}=\tanh(Z^{[1]})$,维数是$h\times m$

$Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}$,维数是$1\times m$,因为输出为1个变量

$A^{[2]}=\sigma (Z^{[2]})$,维数是$1\times m$

$L=\frac 1 m \sum_{i=1}^m y^{(i)}logA^{[2](i)}(1-y^{(i)})log(1-A^{[2](i)})$,为标量

$\frac{\partial L}{\partial A^{[2]}}=\frac 1 m [-\frac{\boldsymbol y}{A^{[2]}}+\frac{1-\boldsymbol y}{1-A^{[2]}}]$,这里的除法和加减法均为element-wise

$\frac{\partial L}{\partial Z^{[2]}}=\frac 1 m (A^{[2]}-\boldsymbol y)$

$\frac{\partial L}{\partial B^{[2]}}=\frac{\partial L}{\partial Z^{[2]}}=\frac 1 m (A^{[2]}-\boldsymbol y)$ (这里B是broadcast后的b)

$\frac{\partial L}{\partial b^{[2]}}=\sum_i \frac{\partial L}{\partial B^{[2](i)}}=\frac 1 m \sum_i (A^{[2](i)}-y^{(i)})$

$\frac{\partial L}{\partial W^{[2]}}=\frac{\partial L}{\partial Z^{[2]}}A^{[1]T}$ (矩阵乘法求梯度,参见前一篇博文)

$\frac{\partial L}{\partial A^{[1]}}=W^{[2]T}\frac{\partial L}{\partial Z^{[2]}}$ (矩阵乘法求梯度,参见前一篇博文)

$\frac{\partial L}{\partial Z^{[1]}}=\frac{\partial L}{\partial A^{[1]}}\frac{\partial A^{[1]}}{\partial Z^{[1]}}=\frac{\partial L}{\partial A^{[1]}}*(1-A^{[1]}*A^{[1]})$ (*代表element-wise乘法)

$\frac{\partial L}{\partial B^{[1]}}=\frac{\partial L}{\partial Z^{[1]}}=\frac 1 m (A^{[2]}-\boldsymbol y)$ (这里B是broadcast后的b)

$\frac{\partial L}{\partial b^{[1]}}=\sum_i \frac{\partial L}{\partial B^{[1](i)}}$

$\frac{\partial L}{\partial W^{[1]}}=\frac{\partial L}{\partial Z^{[1]}}X^T$ (矩阵乘法求梯度,参见前一篇博文)

posted on 2017-08-10 11:53  米老虎M  阅读(316)  评论(0编辑  收藏  举报

导航