3.3 神经网络的输出-深度学习-Stanford吴恩达教授


←上一篇↓↑下一篇→
3.2 神经网络表示回到目录3.4 多个例子中的向量化

神经网络输出 (Computing a Neural Network’s Output)

在上一节的视频中,我们介绍只有一个隐藏层的神经网络的结构与符号表示。在这节的视频中让我们了解神经网络的输出究竟是如何计算出来的。

首先,回顾下只有一个隐藏层的简单两层神经网络结构

在这里插入图片描述

其中, x x x 表示输入特征, a a a 表示每个神经元的输出, W W W 表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。

神经网络的计算

关于神经网络是怎么计算的,从我们之前提及的逻辑回归开始,如下图所示。用圆圈表示神经网络的计算单元,逻辑回归的计算有两个步骤,首先你按步骤计算出 z z z ,然后在第二步中你以sigmoid函数为激活函数计算 z z z (得出 a a a ),一个神经网络只是这样子做了好多次重复计算。

在这里插入图片描述

回到两层的神经网络,我们从隐藏层的第一个神经元开始计算,如上图第一个最上面的箭头所指。从上图可以看出,输入与逻辑回归相似,这个神经元的计算与逻辑回归一样分为两步,小圆圈代表了计算的两个步骤。

第一步,计算 z 1 [ 1 ] : z 1 [ 1 ] = w 1 [ 1 ] T x + b 1 [ 1 ] z_1^{[1]}: z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1 z1[1]:z1[1]=w1[1]Tx+b1[1]

第二步,通过激活函数计算 a 1 [ 1 ] : a 1 [ 1 ] = σ ( z 1 [ 1 ] ) a^{[1]}_1:a^{[1]}_1=\sigma(z^{[1]}_1) a1[1]:a1[1]=σ(z1[1])

隐藏层的第二个以及后面两个神经元的计算过程一样,只是注意符号表示不同,最终分别得到 a 2 [ 1 ] 、 a 3 [ 1 ] 、 a 4 [ 1 ] a^{[1]}_2、a^{[1]}_3、a^{[1]}_4 a2[1]a3[1]a4[1] ,详细结果见下:

z 1 [ 1 ] = w 1 [ 1 ] T x + b 1 [ 1 ] , a 1 [ 1 ] = σ ( z 1 [ 1 ] ) z^{[1]}_1=w^{[1]T}_1x+b^{[1]}_1,a^{[1]}_1=\sigma(z^{[1]}_1) z1[1]=w1[1]Tx+b1[1],a1[1]=σ(z1[1]) z 2 [ 1 ] = w 2 [ 1 ] T x + b 2 [ 1 ] , a 2 [ 1 ] = σ ( z 2 [ 1 ] ) z^{[1]}_2=w^{[1]T}_2x+b^{[1]}_2,a^{[1]}_2=\sigma(z^{[1]}_2) z2[1]=w2[1]Tx+b2[1],a2[1]=σ(z2[1]) z 3 [ 1 ] = w 3 [ 1 ] T x + b 3 [ 1 ] , a 3 [ 1 ] = σ ( z 3 [ 1 ] ) z^{[1]}_3=w^{[1]T}_3x+b^{[1]}_3,a^{[1]}_3=\sigma(z^{[1]}_3) z3[1]=w3[1]Tx+b3[1],a3[1]=σ(z3[1]) z 4 [ 1 ] = w 4 [ 1 ] T x + b 4 [ 1 ] , a 4 [ 1 ] = σ ( z 4 [ 1 ] ) z^{[1]}_4=w^{[1]T}_4x+b^{[1]}_4,a^{[1]}_4=\sigma(z^{[1]}_4) z4[1]=w4[1]Tx+b4[1],a4[1]=σ(z4[1])

向量化计算

如果你执行神经网络的程序,用for循环来做这些看起来真的很低效。所以接下来我们要做的就是把这四个等式向量化。向量化的过程是将神经网络中的一层神经元参数纵向堆积起来,例如隐藏层中的 w w w 纵向堆积起来变成一个 (4,3) 的矩阵,用符号 W [ 1 ] W^{[1]} W[1] 表示。另一个看待这个的方法是我们有四个逻辑回归单元,且每一个逻辑回归单元都有相对应的参数——向量 w w w ,把这四个向量堆积在一起,你会得出这4×3的矩阵。 因此, 公式3.8:

z [ n ] = w [ n ] x + b [ n ] z^{[n]}=w^{[n]}x+b^{[n]} z[n]=w[n]x+b[n]

公式3.9:

a [ n ] = σ ( z [ n ] ) a^{[n]}=\sigma(z^{[n]}) a[n]=σ(z[n])

详细过程见下: 公式3.10:

a [ 1 ] = [ a 1 [ 1 ] a 2 [ 1 ] a 3 [ 1 ] a 4 [ 1 ] ] = σ ( z [ 1 ] ) a^{[1]}=\left[ \begin{matrix} a^{[1]}_1\\a^{[1]}_2\\a^{[1]}_3\\a^{[1]}_4 \end{matrix} \right]=\sigma(z^{[1]}) a[1]=a1[1]a2[1]a3[1]a4[1]=σ(z[1])

公式3.11:

[ z 1 [ 1 ] z 2 [ 1 ] z 3 [ 1 ] z 4 [ 1 ] ] = [ ⋯ W 1 [ 1 ] ⋯ ⋯ W 2 [ 1 ] ⋯ ⋯ W 3 [ 1 ] ⋯ ⋯ W 4 [ 1 ] ⋯ ] ⏞ W [ 1 ] ∗ [ x 1 x 2 x 3 ] ⏞ i n p u t + [ b 1 [ 1 ] b 2 [ 1 ] b 3 [ 1 ] b 4 [ 1 ] ] ⏞ b [ 1 ] \left[ \begin{matrix} z^{[1]}_1\\z^{[1]}_2\\z^{[1]}_3\\z^{[1]}_4 \end{matrix} \right]= \overbrace{ \left[ \begin{matrix} \cdots & W^{[1]}_1 & \cdots \\\cdots & W^{[1]}_2 & \cdots\\\cdots & W^{[1]}_3 & \cdots\\\cdots & W^{[1]}_4 & \cdots \end{matrix} \right]}^{W^{[1]}} * \overbrace{ \left[\begin{matrix}x_1\\ x_2\\ x_3\end{matrix}\right] }^{input} + \overbrace{ \left[\begin{matrix}b_1^{[1]}\\ b^{[1]}_2\\ b^{[1]}_3\\b^{[1]}_4\end{matrix}\right] }^{b^{[1]}} z1[1]z2[1]z3[1]z4[1]=W1[1]W2[1]W3[1]W4[1] W[1]x1x2x3 input+b1[1]b2[1]b3[1]b4[1] b[1]

对于神经网络的第一层,给予一个输入 x x x ,得到 a [ 1 ] a^{[1]} a[1] x x x 可以表示为 a [ 0 ] a^{[0]} a[0] 。通过相似的衍生你会发现,后一层的表示同样可以写成类似的形式,得到 a [ 2 ] a^{[2]} a[2] y ^ = a [ 2 ] \hat{y}=a^{[2]} y^=a[2] ,具体过程见公式3.8、3.9。

在这里插入图片描述

图3.3.3

如上图左半部分所示为神经网络,把网络左边部分盖住先忽略,那么最后的输出单元就相当于一个逻辑回归的计算单元。当你有一个包含一层隐藏层的神经网络,你需要去实现以计算得到输出的是右边的四个等式,并且可以看成是一个向量化的计算过程,计算出隐藏层的四个逻辑回归单元和整个隐藏层的输出结果,如果编程实现需要的也只是这四行代码。

总结 通过本视频,你能够根据给出的一个单独的输入特征向量,运用四行代码计算出一个简单神经网络的输出。接下来你将了解的是如何一次能够计算出不止一个样本的神经网络输出,而是能一次性计算整个训练集的输出。

课程板书

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
3.2 神经网络表示回到目录3.4 多个例子中的向量化

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zhao-Jichao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值