如图是上一节中的4个方程,用于计算 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,对于这单个训练样本,可以用它生成一个 a ( 2 ) = y ^ a^{(2)}=\hat{y} a(2)=y^。现在,如果有m个训练样本,你可能需要重复这个过程,比如说,第一个训练样本 x ( 1 ) x^{(1)} x(1)计算得到 y ^ \hat{y} y^,这是对第一个训练样本的预测,然后用第二个样本 x ( 2 ) x^{(2)} x(2)来生成预测 y ^ \hat{y} y^,一直到 x [ m ] x^{[m]} x[m]生成预测 y ^ \hat{y} y^。所以要用激活函数来表示这些式子,可以表示为 a [ 2 ] ( 1 ) = y ^ 1 a^{[2](1)}=\hat{y}^{1} a[2](1)=y^1等。 a [ 2 ] ( i ) a^{[2] (i)} a[2](i)中圆括号内的i表示训练样本i,方括号指的是第二层,所以这表示如果你有一个没有向量化的实现并想要计算所有训练样本的预测。需要对 i = 1 i=1 i=1到m遍历,然后实现图中的4个方程。
我们一般喜欢将整个计算向量化,这样可以去掉这些公式,其for循环遍历所有的m个训练样本的代码如下图所示:
把每个训练样本 x ( i ) x^{(i)} x(i)堆叠到矩阵各列,构成大X矩阵。对于z也可以做同样的事情,将 z [ l ] ( i ) z^{[l](i)} z[l](i)作为列向量堆叠起来得到矩阵 Z [ l ] Z^{[l]} Z[l]。对于a,把 a [ l ] ( i ) a^{[l](i)} a[l](i)作为列向量堆叠起来得到矩阵 A [ l ] A^{[l]} A[l],于是for循环的实现变为向量化可以表示为: Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]}=W^{[1]}X+b^{[1]} Z[1]=W[1]X+b[1] A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]}=\sigma (Z^{[1]}) A[1]=σ(Z[1]) Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]} Z[2]=W[2]A[1]+b[2] A [ 2 ] = σ ( Z ( 2 ) ) A^{[2]}=\sigma (Z^{(2)}) A[2]=σ(Z(2))