CaptainBed人工智能学习笔记——9.如何计算浅层神经网络的前向传播

本文详细介绍了浅层神经网络的前向传播过程,包括单样本计算中每个神经元的z和a计算,以及如何通过向量化提高多样本计算的效率。还提及了损失函数和成本的概念,强调了对输入特征权重的处理。
摘要由CSDN通过智能技术生成

        前面的文章介绍了单神经元的实现方式以及浅显的了解一下浅层神经网络,我们也知道,浅层神经网络的传播和单神经元的传播有很多相似的地方,那么这篇文章就介绍一下浅层神经网络是如何实现前向传播的!

        首先,我们构建出一个浅层神经网络的结构图:

        说明一下,a的上角标是第几层,下角标是该层的第几个神经元,之后我们的深层神经网络的构建也是如此!!!

单样本计算浅层神经网络的前向传播

        所以我们根据单神经元的计算方式,一样可以计算出第一层每一个神经元的 z 和 a :

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        z_{1}^{[1]}=w_{1}^{[1]T}x+b_{1}^{[1]},a_{1}^{[1]}=\sigma (z_{1}^{[1]})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        z_{2}^{[1]}=w_{2}^{[1]T}x+b_{2}^{[1]},a_{2}^{[1]}=\sigma (z_{2}^{[1]})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        z_{3}^{[1]}=w_{3}^{[1]T}x+b_{3}^{[1]},a_{3}^{[1]}=\sigma (z_{3}^{[1]})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        z_{4}^{[1]}=w_{4}^{[1]T}x+b_{4}^{[1]},a_{4}^{[1]}=\sigma (z_{4}^{[1]})

         当然了,为了计算机计算的效率,我们任然要将数据进行向量化来计算:

        其中,每一个的w_{1}^{[1]T} 、w_{2}^{[1]T}w_{3}^{[1]T}w_{4}^{[1]T}都含有3个数据,分表代表三个输入特征的权重,这里为了方便表达层次关系和神经元个数的关系,就简写了。

        因此,我们最后的公式可以写成这样:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        z^{1}=W^{[1]}x+b^[1],a^{[1]}=\sigma (z^{[1]})

        第二层的计算也是一样,只不过对于第二层来说,第一层就相当于输入特征,因此,我们只需要将第一层的输入特征 x 换成第二层的输入,也就是第一层计算出的 a 就可以了:

z^{2}=W^{[2]}a^{[1]}+b^[2],a^{[2]}=\sigma (z^{[2]})

多样本计算浅层神经网络的前向传播

        上面的计算我们只考虑了一个样本,所以也只有一个样本的所有输入特征,但是当我们有 m 个样本时,我们就需要再次进行向量化,我们先看一下对于代码来说,用遍历的方式是怎么计算多样本的:

 

        我们知道使用循环来遍历样本的效率非常的低,所以我们要消除这个for循环,怎么消除?当然是进行重要的向量化操作!!

        此时我们有m个样本,所以对于输入特征 x 来说,也有m组输入特征,所以我们把大写的X作为所有样本的个自的x的向量:

 

        由此,代码就可以写成了:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        Z^{[1]}=W^{[1]}X+b^{[1]} 

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        A^{[1]}=\sigma (Z^{[1]})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        A^{[2]}=\sigma (Z^{[2]})

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}

        关于A和Z,在向量化后的数据是这样的:

        最后算出第二层的A和上面也是一样的,就不多说了,我们算出第二层的A^{[2]} 就可以继续传播到输出层,算出成本了,具体公式是和单神经元的成本公式是一样的,这里我们复习一个点:

损失函数用于单样本,计算单个样本的损失,而成本是对于多样本,每一个样本的损失的平均值

        本案例的成本计算公式如下:

        ​​​​​​​        ​​​​​​​      J=-np.sum(Y*np.log(A^{[2]})+(1-Y)*np.log(1-A^{[2]}))/m 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LifeGPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值