首先要明确的是反向传播的目的
神经网络训练的最终目的,是得到可观的模型参数(如ω,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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。