吴恩达 向量化(Vectorization)

向量化(Vectorization)

在深度学习的算法中,我们通常拥有大量的数据,在程序的编写过程中,应该尽最大可能的少使用 loop 循环语句,利用 python 可以实现矩阵运算,进而来提高程序的运行速度,避免 for 循环的使用。

逻辑回归向量化

输入矩阵XX:(nx,m)(nx,m)
权重矩阵ww:(nx,1)(nx,1)
偏置bb:为一个常数
输出矩阵YY:(1,m)(1,m)
所有 m 个样本的线性输出 Z 可以用矩阵表示:

Z=wTX+bZ=wTX+b
Z = np.dot(w.T,X) + b
A = sigmoid(Z)

重点总结:
所有 m 个样本的线性输出 ZZ 可以用矩阵表示:

Z=wTX+bZ=wTX+b
Z = np.dot(w.T,X) + b
A = sigmoid(Z)
1
2
逻辑回归梯度下降输出向量化

dZdZ对于mm个样本,维度为(1,m)(1,m),表示为:

dZ=A−YdZ=A−Y
db可以表示为:

db=1m∑mi=1dz(i)db=1m∑i=1mdz(i)
db = 1/mnp.sum(dZ)
1
dw可表示为:
dw=1mX⋅dZTdw=1mX⋅dZT
dw = 1/m
np.dot(X,dZ.T)

单次迭代梯度下降算法流程:

Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Y
dw = 1/mnp.dot(X,dZ.T)
db = 1/m
np.sum(dZ)

w = w - alphadw
b = b - alpha
db

在对应图中的神经网络结构,我们只用 Python 代码去实现右边的四个公式即可实现神经网络的输出计算。

吴恩达 向量化(Vectorization)

吴恩达 向量化(Vectorization)

吴恩达 向量化(Vectorization)

吴恩达 向量化(Vectorization)

重点总结:
神经网络的梯度下降法

以本节中的浅层神经网络为例,我们给出神经网络的梯度下降法的公式。

参数:W[1],b[1],W[2],b[2]W[1],b[1],W[2],b[2];
输入层特征向量个数:nx=n[0]nx=n[0];
隐藏层神经元个数:n[1]n[1];
输出层神经元个数:n[2]=1n[2]=1;
W[1]W[1] 的维度为(n[1],n[0])(n[1],n[0]),b[1]b[1]的维度为 (n[1],1)(n[1],1);
W[2]W[2]的维度为(n[2],n[1])(n[2],n[1]),b[2]b[2]的维度为 (n[2],1)(n[2],1);
下面为该例子的神经网络反向梯度下降公式(左)和其代码向量化(右):
吴恩达 向量化(Vectorization)