C1 - week3 - part4 多样本向量化 Vectorizing across multiple examples

本文介绍了如何通过向量化技术加速神经网络的训练过程,特别是在逻辑回归和多层神经网络中,通过矩阵运算一次性计算多个样本的输出。向量化不仅简化了代码,还极大地提高了计算效率。内容包括矩阵乘法在神经网络前向传播中的应用,以及如何利用Python的广播机制处理偏置项。此外,文章还提到了激活函数的选择,并预告了更多种类激活函数的探讨。
摘要由CSDN通过智能技术生成

本节我们将介绍如果向量化多个训练样本并计算出结果,以及详细解释其中的细节。

一、向量化实现

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

在这里插入图片描述

伪代码实现如下:

for i = 1 to m:
	z[1](i) = w[1]x(i) + b(1)
	a[1](i) = sigma(z[1](i))
	z[2](i) = w[2]a[1](i) + b[2]
	a[2](i) = sigma(z[2](i))

对于所有训练样本,我们需要让 i i i 1 1 1 m m m实现上图中四个等式。如果我们想计算 m m m个训练样本上的所有输出,就应该向量化整个计算。接下来我们讲讲如何向量化加速我们的算法:
z [ 1 ] ( i ) = W [ 1 ] ( i ) x ( i ) + b [ 1 ] α [ 1 ] ( i ) = σ ( z [ 1 ] ( i ) ) z [ 2 ] ( i ) = W [ 2 ] ( i ) α [ 1 ] ( i ) + b [ 2 ] α [ 2 ] ( i ) = σ ( z [ 2 ] ( i ) ) } ⇒ { A [ 1 ] = σ ( z [ 1 ] ) z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] A [ 2 ] = σ ( z [ 2 ] ) \left.\begin{array}{r} z^{[1](i)}=W^{[1](i)} x^{(i)}+b^{[1]} \\ \alpha^{[1](i)}=\sigma\left(z^{[1](i)}\right) \\ z^{[2](i)}=W^{[2](i)} \alpha^{[1](i)}+b^{[2]} \\ \alpha^{[2](i)}=\sigma\left(z^{[2](i)}\right) \end{array}\right\} \Rightarrow\left\{\begin{array}{l} A^{[1]}=\sigma\left(z^{[1]}\right) \\ z^{[2]}=W^{[2]} A^{[1]}+b^{[2]} \\ A^{[2]}=\sigma\left(z^{[2]}\right) \end{array}\right. z[1](i)=W[1](i)x(i)+b[1]α[1](i)=σ(z[1](i))z[2](i)=W[2](i)α[1](i)+b[2]α[2](i)=σ(z[2](i))A[1]=σ(z[1])z[2]=W[2]A[1]+b[2]A[2]=σ(z[2])
其中, x = [ ⋮ ⋮ ⋮ ⋮ x ( 1 ) x ( 2 ) ⋯ x ( m ) ⋮ ⋮ ⋮ ⋮ ] x=\left[\begin{array}{clll} \vdots & \vdots & \vdots & \vdots \\ x^{(1)} & x^{(2)} & \cdots & x^{(m)} \\ \vdots & \vdots & \vdots & \vdots \end{array}\right] x=x(1)x(2)x(m) Z [ 1 ] = [ ⋮ ⋮ ⋮ ⋮ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) ⋯ z [ 1 ] ( m ) ⋮ ⋮ ⋮ ⋮ ] Z^{[1]}=\left[\begin{array}{clll} \vdots & \vdots & \vdots & \vdots \\ z^{[1](1)} & z^{[1](2)} & \cdots & z^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \end{array}\right] Z[1]=z[1](1)z[1](2)z[1](m)

A [ 1 ] = [ ⋮ ⋮ ⋮ ⋮ α [ 1 ] ( 1 ) α [ 1 ] ( 2 ) ⋯ α [ 1 ] ( m ) ⋮ ⋮ ⋮ ⋮ ] A^{[1]}=\left[\begin{array}{clll} \vdots & \vdots & \vdots & \vdots \\ \alpha^{[1](1)} & \alpha^{[1](2)} & \cdots & \alpha^{[1](m)} \\ \vdots & \vdots & \vdots & \vdots \end{array}\right] A[1]=α[1](1)α[1](2)α[1](m)

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

对于矩阵 X X X情况也类似,水平方向上对应不同的训练样本;竖直方向上,对应不同的输入特征。

二、向量化实现的解释

对于向量化表达的方式,本质上是运用了线性代数的知识。我们先手动对几个样本计算一下前向传播,看看有什么规律:
z [ 1 ] ( 1 ) = W [ 1 ] x ( 1 ) + b [ 1 ] z [ 1 ] ( 2 ) = W [ 1 ] x ( 2 ) + b [ 1 ] z [ 1 ] ( 3 ) = W [ 1 ] x ( 3 ) + b [ 1 ] z^{[1](1)} = W^{[1]}x^{(1)} + b^{[1]} \\ z^{[1](2)} = W^{[1]}x^{(2)} + b^{[1]} \\ z^{[1](3)} = W^{[1]}x^{(3)} + b^{[1]} z[1](1)=W[1]x(1)+b[1]z[1](2)=W[1]x(2)+b[1]z[1](3)=W[1]x(3)+b[1]
这里便于描述,我们先忽略掉 b [ 1 ] b^{[1]} b[1],因为利用Python的广播机制,我们很容易将其加入矩阵中。现在 W [ 1 ] W^{[1]} W[1]是一个矩阵, x ( 1 ) , x ( 2 ) , x ( 3 ) x^{(1)},x^{(2)},x^{(3)} x(1),x(2),x(3)都是列向量,矩阵乘以列向量得到列向量,如下所示
W [ 1 ] x = [ ⋯ ⋯ ⋯ ] [ ⋮ ⋮ ⋮ ⋮ x ( 1 ) x ( 2 ) x ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ ] = [ ⋮ ⋮ ⋮ ⋮ w ( 1 ) x ( 1 ) w ( 1 ) x ( 2 ) w ( 1 ) x ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ ] = [ ⋮ ⋮ ⋮ ⋮ z [ 1 ] ( 1 ) z [ 1 ] ( 2 ) z [ 1 ] ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ ] = Z [ 1 ] \begin{aligned} &W^{[1]} x=\left[\begin{array}{l} \cdots \\ \cdots \\ \cdots \end{array}\right]\left[\begin{array}{cccc} \vdots & \vdots & \vdots & \vdots \\ x^{(1)} & x^{(2)} & x^{(3)} & \vdots \\ \vdots & \vdots & \vdots & \vdots \end{array}\right]=\left[\begin{array}{cccc} \vdots & \vdots & \vdots & \vdots \\ w^{(1)} x^{(1)} & w^{(1)} x^{(2)} & w^{(1)} x^{(3)} & \vdots \\ \vdots & \vdots & \vdots & \vdots \end{array}\right]\\ & =\left[\begin{array}{cccc} \vdots & \vdots & \vdots & \vdots \\ z^{[1](1)} & z^{[1](2)} & z^{[1](3)} & \vdots \\ \vdots & \vdots & \vdots & \vdots \end{array}\right]=Z^{[1]} \end{aligned} W[1]x=x(1)x(2)x(3)=w(1)x(1)w(1)x(2)w(1)x(3)=z[1](1)z[1](2)z[1](3)=Z[1]
以上就是对神经网络向量化实现的正确性解释,到目前为止,我们仅使用sigmoid函数作为激活函数,事实上这并非最好的选择,接下来我们将会讨论使用更多不同种类的激活函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值