神经网络的反向传播公式表达(吴恩达)
作者:互联网
首先要明确的是反向传播的目的
神经网络训练的最终目的,是得到可观的模型参数(如ω,b等)训练参数的方式,就是通过反向传播,使用梯度下降法(一般情况下)改变模型参数。
其原理则是通过最优化损失函数(loss function),即使其导数向0靠近,公式表达为dL/dω,而损失函数L是一个复合函数,则其求导过程如图所示
由链式法则知,dL/dω = dL/da * da/dz * dz/dω (一切的源头)
需要注意的是,上述链式法则实际上部分应该为偏导,但此次为方便理解全部使用导数,其中da/dz为激活函数(即非线性函数)求导,需注意
吴恩达后续的视频中用
dz表达dL/dz
da表达dL/da
dw表达dL/dω
这是为了方便在python中定义变量dzdadw等,需要注意
则由上式可以得出
dz/dω = X
dz/db = 1
所以最终可以得到
dw = dL/dω = dL/dz * dz/dω = dz*X (或者dz*A)
db = dL/db = dL/dz * dz/db = dz
da[L-1] = ω * dz (吴恩达视频并没有给出推导过程)
其中dz = dL/da * da/dz
对于dL/da:如果在最后一层,dL/da则由前向传播最终值yhat和损失函数得到,如果在中间层,则可以后一层a计算得到。
对于da/dz:即激活函数的求导
由以上四个公式,则可计算反向传播如图
标签:吴恩达,函数,db,dL,da,神经网络,dz,反向 来源: https://www.cnblogs.com/toriyung/p/16444688.html