3.4 多个例子中的向量化-深度学习-Stanford吴恩达教授


←上一篇↓↑下一篇→
3.3 计算神经网络的输出回到目录3.5 向量化实现的解释

多个例子中的向量化 (Vectorizing across Multiple Examples)

在上一个视频,了解到如何针对于单一的训练样本,在神经网络上计算出预测值。

在这个视频,将会了解到如何向量化多个训练样本,并计算出结果。该过程与你在逻辑回归中所做类似。

逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算。神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值。这种计算是所有的训练样本同时进行的,以下是实现它具体的步骤:

在这里插入图片描述

图3.4.1

上一节视频中得到的四个等式。它们给出如何计算出 z [ 1 ] , a [ 1 ] , z [ 2 ] , a [ 2 ] z^{[1]},a^{[1]},z^{[2]},a^{[2]} z[1]a[1]z[2]a[2]

对于一个给定的输入特征向量 X X X ,这四个等式可以计算出 a [ 2 ] a^{[2]} a[2] 等于 y ^ \hat{y} y^ 。这是针对于单一的训练样本。如果有 m m m 个训练样本,那么就需要重复这个过程。

用第一个训练样本 x [ 1 ] x^{[1]} x[1] 来计算出预测值 y ^ [ 1 ] \hat{y}^{[1]} y^[1] ,就是第一个训练样本上得出的结果。

然后,用 x [ 2 ] x^{[2]} x[2] 来计算出预测值 y ^ [ 2 ] \hat{y}^{[2]} y^[2] ,循环往复,直至用 x [ m ] x^{[m]} x[m] 计算出 y ^ [ m ] \hat{y}^{[m]} y^[m]

用激活函数表示法,如上图左下所示,它写成 a [ 2 ] ( 1 ) 、 a [ 2 ] ( 2 ) a^{[2](1)}、a^{[2](2)} a[2](1)a[2](2) a [ 2 ] ( m ) a^{[2](m)} a[2](m)

【注】: a [ 2 ] ( i ) a^{[2](i)} a[2](i) ( i ) (i) (i) 是指第 i i i 个训练样本而 [ 2 ] [2] [2] 是指第二层。

如果有一个非向量化形式的实现,而且要计算出它的预测值,对于所有训练样本,需要让 i i i 从1到 m m m 实现这四个等式:

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

对于上面的这个方程中的 ( i ) ^{(i)} (i) ,是所有依赖于训练样本的变量,即将 ( i ) (i) (i) 添加到 x , z x,z xz a a a 。如果想计算 m m m 个训练样本上的所有输出,就应该向量化整个计算,以简化这列。

本课程需要使用很多线性代数的内容,重要的是能够正确地实现这一点,尤其是在深度学习的错误中。实际上本课程认真地选择了运算符号,这些符号只是针对于这个课程的,并且能使这些向量化容易一些。

所以,希望通过这个细节可以更快地正确实现这些算法。接下来讲讲如何向量化这些: 公式3.12:

x = [ ⋮ ⋮ ⋮ ⋮ x ( 1 ) x ( 2 ) ⋯ x ( m ) ⋮ ⋮ ⋮ ⋮ ] x=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ x^{(1)} & x^{(2)} & \cdots & x^{(m)}\\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right] x=x(1)x(2)x(m)

公式3.13:

Z [ 1 ] = [ ⋮ ⋮ ⋮ ⋮ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) ⋯ z [ 1 ] ( m ) ⋮ ⋮ ⋮ ⋮ ] Z^{[1]}=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ z^{[1](1)} & z^{[1](2)} & \cdots & z^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right] Z[1]=z[1](1)z[1](2)z[1](m)

公式3.14:

A [ 1 ] = [ ⋮ ⋮ ⋮ ⋮ a [ 1 ] ( 1 ) a [ 1 ] ( 2 ) ⋯ a [ 1 ] ( m ) ⋮ ⋮ ⋮ ⋮ ] A^{[1]}=\left[ \begin{matrix} \vdots & \vdots &\vdots & \vdots \\ a^{[1](1)} & a^{[1](2)} & \cdots & a^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \\ \end{matrix} \right] A[1]=a[1](1)a[1](2)a[1](m)

公式3.15:

z [ 1 ] ( i ) = W [ 1 ] ( i ) x ( i ) + b ( 1 ) a [ 1 ] ( i ) = σ ( z [ 1 ] ( i ) ) z [ 2 ] ( i ) = W [ 2 ] ( i ) a [ 1 ] ( i ) + b ( 2 ) a [ 2 ] ( i ) = σ ( z [ 2 ] ( i ) ) } ⇒ { A [ 1 ] = σ ( z [ 1 ] ) z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] A [ 2 ] = σ ( z [ 2 ] ) \left.\begin{matrix} z^{[1](i)}=W^{[1](i)}x^{(i)}+b^{(1)} \\ a^{[1](i)}=\sigma(z^{[1](i)}) \\ z^{[2](i)}=W^{[2](i)}a^{[1](i)}+b^{(2)} \\ a^{[2](i)}=\sigma(z^{[2](i)}) \\ \end{matrix}\right\} \Rightarrow \left \{\begin{matrix} A^{[1]}=\sigma(z^{[1]}) \\ z^{[2]}=W^{[2]}A^{[1]}+b^{[2]} \\ A^{[2]}=\sigma(z^{[2]}) \\ \end{matrix}\right. z[1](i)=W[1](i)x(i)+b(1)a[1](i)=σ(z[1](i))z[2](i)=W[2](i)a[1](i)+b(2)a[2](i)=σ(z[2](i))A[1]=σ(z[1])z[2]=W[2]A[1]+b[2]A[2]=σ(z[2])

前一张幻灯片中的for循环是来遍历所有个训练样本。 定义矩阵 X X X 等于训练样本,将它们组合成矩阵的各列,形成一个 n n n 维或 n n n 乘以 m m m 维矩阵。接下来计算见公式3.15:

以此类推,从小写的向量 x x x 到这个大写的矩阵 X X X ,只是通过组合 x x x 向量在矩阵的各列中。

同理, z [ 1 ] ( 1 ) , z [ 1 ] ( 2 ) z^{[1](1)},z^{[1](2)} z[1](1)z[1](2) 等等都是 z [ 1 ] ( m ) z^{[1](m)} z[1](m) 的列向量,将所有 m m m 都组合在各列中,就的到矩阵 Z [ 1 ] Z^{[1]} Z[1]

同理 a [ 1 ] ( 1 ) , a [ 1 ] ( 2 ) , … … a [ 1 ] ( m ) a^{[1](1)},a^{[1](2)},……a^{[1](m)} a[1](1)a[1](2)a[1](m) ,将其组合在矩阵各列中,如同从向量 x x x 到矩阵 X X X ,以及从向量 z z z 到矩阵 Z Z Z 一样,就能得到矩阵 A [ 1 ] A^{[1]} A[1]

同样的,对于 Z [ 2 ] Z^{[2]} Z[2] A [ 2 ] A^{[2]} A[2] ,也是这样得到。

这种符号其中一个作用就是,可以通过训练样本来进行索引。这就是水平索引对应于不同的训练样本的原因,这些训练样本是从左到右扫描训练集而得到的。

在垂直方向,这个垂直索引对应于神经网络中的不同节点。例如,这个节点,该值位于矩阵的最左上角对应于激活单元,它是位于第一个训练样本上的第一个隐藏单元。它的下一个值对应于第二个隐藏单元的激活值。它是位于第一个训练样本上的,以及第一个训练示例中第三个隐藏单元,等等。

当垂直扫描,是索引到隐藏单位的数字。当水平扫描,将从第一个训练示例中从第一个隐藏的单元到第二个训练样本,第三个训练样本……直到节点对应于第一个隐藏单元的激活值,且这个隐藏单元是位于这 m m m 个训练样本中的最终训练样本。

从水平上看,矩阵 A A A 代表了各个训练样本。从竖直上看,矩阵 A A A 的不同的索引对应于不同的隐藏单元。

对于矩阵 Z , X Z,X ZX 情况也类似,水平方向上,对应于不同的训练样本;竖直方向上,对应不同的输入特征,而这就是神经网络输入层中各个节点。

神经网络上通过在多样本情况下的向量化来使用这些等式。

在下一个视频中,将证明为什么这是一种正确向量化的实现。这种证明将会与逻辑回归中的证明类似。

课程板书

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


←上一篇↓↑下一篇→
3.3 计算神经网络的输出回到目录3.5 向量化实现的解释

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zhao-Jichao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值