笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。

我的公众号为:livandata

吴恩达的讲义在深度学习过程中是非常经典的资料,但是在讲解过程中部分环节没有详细给出推导公式,导致笔者在学习神经网络过程中总是不明就里,因此才有了写一篇细节补充的想法,本系列主要针对吴恩达深度学习讲义的细节部分进行补充,讲义中讲的比较清楚的部分不做赘述,具体可见笔者上传的资料:

https://download.csdn.net/download/livan1234/10565750

理解的标准为像笔者这样的深度学习小白,希望能够有所裨益:

本系列的第一篇文章为:正向传播和反向传播,这两项是神经网络运算的基础,也是比较重要的部分,在文中反复出现,但是文中只给出了最终的推导结果,推导过程并没有详细的给出,作为小白理解起来比较困难,故单独给出一个推导的过程,主要是对文中的反向求导的过程(第101页)进行推导,明确各个公式的由来:

理解本文需要一定的求导基础,如有问题,请大家能留言讨论,谢谢:

 

上面为一个含有两个隐藏层的神经网络结构:

Xi(j)为输入数据,i为一个样本数据有几个特征,上图有三个特征;j为第几层网络,输入层为第0层,输出层为第3层;

Wmn(j)为各个层级的权重,W是一个矩阵,mn为m行n列;

Z(j)为第几个隐藏层的输入求和值:Z=WX+b

a(j)为第几个隐藏层的输出值:a=g(Z);

L为整个神经网络的损失;

1、正向传播:

正向传播是指数据从X传入到神经网络,经过各个隐藏层得到最终损失的过程:

 

从上图可以看出,第二层的输入值为第一层的输出值。

正向传播的流程如上图:先计算Z(1),然后计算a(1),然后计算Z(2),然后计算a(2),最后计算L(a(2),y)整个流程为上面的图形结构。

2、反向传播:

反向传播主要是针对神经网络优化的过程中进行,在L端计算总的损失函数,然后根据梯度递减公式,逐层的向前反馈,形成反向传播机制:

 

简化形式的神经网络结构如上图。

 

首先计算最后一层,即第二隐层的参数和对应的数值:da(2)、dz(2)、dw(2)、db(2)四个参数,即神经网络中常用的链式求导法则,根据总的损失L,逐层的向前计算每一层的数值。

在第二隐层向第一隐层过度时,需要用到第二隐层计算出的dz(2)值,乘以W(2)计算出第一层的输出值da(1)(如下图)。

然后再按照链式求导罚则逐层计算第一隐层的各个参数da(1)、dz(1)、dw(1)、db(1),如下图:

 

链式求导法则主要是求得每一层中的w与d的值,以供梯度递减方法使用。

如下为神经网络的梯度递减应用:

相关参考文献为:https://blog.csdn.net/weixin_40920228/article/details/80709216

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐