Vectorization通过去掉显式的循环,大幅度提高算法的performance。那么如何使用vectorization优化logistic regression的算法呢?

1.带显式循环求解logistic regression cost function算法

带显式循环的logistic regression算法1:

初始化:

遍历所有的samples:

最后求平均:

算法有两个显式循环:

  1. 1 to m: 遍历每个sample
  2. : 遍历每个w(features)

2. 使用vectorization去掉遍历sample的循环

2.1 计算Z值

logistic regression首先计算:

考虑有m幅图片,即m个samples,需要计算:

而每个sample是一个向量:

考虑所有m个samples,作为一个的矩阵:

同时计算所有samples的值:

numpy代码:

Z=np.dot(w.T,X)+b

2.2 计算A值

计算后,继续计算logistic regressionA值,

这样就通过vectorization去掉了遍历samples的显式循环。

3. 使用vectorization去掉遍历w的循环

3.1 计算dZ

计算完之后,继续计算

由(2)式和

3.2 计算dW

由显式循环求解logistic regression cost function算法,有

所以有:

需要平均,有

3.3 计算db

只是简单的求和,所以有

numpy代码:

np.SUM(dZ) / m

4. logistic regression的vectorization算法

综上,得到使用vectorization求解logistic regression的cost function算法:

从而得到cost function 对所有w(features)的偏导数:

已经对b的偏导数

进而可以使用梯度下降,不断迭代w和b:

是learning rate。最后求得cost function的极小值,以及相应的

(Update 2/14/19)