神经网络的数学推导

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

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

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

$A^{[1]}= anh(Z^{[1]})$,维数是$h imes m$

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

$A^{[2]}=sigma (Z^{[2]})$,维数是$1 imes 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{oldsymbol y}{A^{[2]}}+frac{1-oldsymbol y}{1-A^{[2]}}]$,这里的除法和加减法均为element-wise

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

$frac{partial L}{partial B^{[2]}}=frac{partial L}{partial Z^{[2]}}=frac 1 m (A^{[2]}-oldsymbol 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]}-oldsymbol 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$ (矩阵乘法求梯度,参见前一篇博文)

原文地址:https://www.cnblogs.com/milaohu/p/7338536.html