前文提到使用梯度下降求logistic regression的cost function的极小值,需要用到偏导数。本文介绍如何使用Computational Graph来计算偏导数。

Computational Graph求偏导数

一个简单函数的Computational Graph

首先考虑一个简单函数:

其computational graph如下:

Fig.1 Computational Graph for J(a,b,c)
Fig.1 Computational Graph for J(a,b,c)

computational graphForward Propagation(left to right)用于计算函数结果;Backward Propagation(right to left)用于计算函数偏导数。

通过Backward Propagation计算J(a,b,c)分别对a,b,c的偏导数,即,

  1. 首先计算J(a,b,c)对v的导数,有
  2. 再分别计算对a,b,c的偏导数
    1. 对a的偏导数:v对a的导数有,

      由链式法则,J(a,b,c)对a的偏导数:
    2. 对b的偏导数,u对b的导数有(c作为常数2),

      同样由链式法则,J(a,b,c)对b的偏导数:
    3. 对c的偏导数,u对c的导数有(b作为常数3),

      同样由链式法则,J(a,b,c)对c的偏导数:

Computational Graph for Loss Function

同样通过Backward Propagation计算logistic regression的loss function偏导数。Logistic regression的loss function:

考虑一个sample只需要两个features的情况:,有

其Computational graph:

Fig.2 Computational Graph for Loss Function
Fig.2 Computational Graph for Loss Function

目标是求Loss function对的偏导数,即

  1. 首先考虑对a的导数,有
  2. 考虑a对z的导数,有
  3. 由(3)式和(4)式,有
  4. 分别计算对的导数
    1. 的偏导数,
    2. 的偏导数,
    3. 的偏导数,

最后,前文提到使用迭代法求lost function的极小值,迭代:

其中learning rate,通过不断迭代,求得lost function的极小值,也得到了相应的。以上式子只针对lost function,即单个sample。

(Update 2/13/19)