script type="text/javascript" src="http://latex.codecogs.com/latex.js">

第二周:梯度下降法的向量化推导

Coursera系列课程 第二周的向量化一节中,关于梯度下降法的向量化过程,开始不是很明白,后来自己推导了一下,记录到这里。

如下是梯度下降法的参数递归公式(假设n=2):

公式1:

$\theta_0 := \theta_0 - \alpha \frac{1}{m}\sum_{i=1}^{m}(h_\theta (x^{(i)}) - y^{(i)})x^{(i)}_0$

$\theta_1 := \theta_1 - \alpha \frac{1}{m}\sum_{i=1}^{m}(h_\theta (x^{(i)}) - y^{(i)})x^{(i)}_1$

$\theta_2 := \theta_2 - \alpha \frac{1}{m}\sum_{i=1}^{m}(h_\theta (x^{(i)}) - y^{(i)})x^{(i)}_2$

老师在讲到此处时,提到上述等式向量化后即为:

公式2:

$\Theta := \Theta - \alpha \delta$

公式3:

$\delta = \frac{1}{m}\sum_{i=1}^{m}(h_\theta (x^{(i)}) - y^{(i)})X^{(i)}$

那么这个结果是如何得到的呢?如下是我的推导过程:

(1)首先,对公式1整体进行一个向量化的操作:

$\begin{pmatrix} \theta _0 \\  \theta_1 \\ \theta_2 \end{pmatrix} := \begin{pmatrix} \theta_0 - \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_0^{(i)} \\ \theta_1 - \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_1^{(i)} \\ \theta_2 - \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_2^{(i)} \end{pmatrix}$

(2)等号右边根据矩阵减法和乘法规则,可以拆分成如下:

$\begin{pmatrix} \theta _0 \\  \theta_1 \\ \theta_2 \end{pmatrix} := \begin{pmatrix} \theta_0 \\ \theta_1 \\ \theta_2  \end{pmatrix} - \alpha \frac{1}{m} \begin{pmatrix} \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_0^{(i)} \\ \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_1^{(i)} \\ \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)})x_2^{(i)} \end{pmatrix}$

(3)等号两边的$\theta$自然可以向量化为$\Theta$,那么关键就是减号后面的部分了,我们可以将其展开:

$\Theta := \Theta - \alpha \frac{1}{m} \begin{pmatrix} (h_\theta (x^{(1)}) - y^{(1)})x_0^{(1)} + (h_\theta (x^{(2)}) - y^{(2)})x_0^{(2)} + ... + (h_\theta (x^{(m)}) - y^{(m)})x_0^{(m)}\\ (h_\theta (x^{(1)}) - y^{(1)})x_1^{(1)} + (h_\theta (x^{(2)}) - y^{(2)})x_1^{(2)} + ... + (h_\theta (x^{(m)}) - y^{(m)})x_1^{(m)}\\ (h_\theta (x^{(1)}) - y^{(1)})x_2^{(1)} + (h_\theta (x^{(2)}) - y^{(2)})x_2^{(2)} + ... + (h_\theta (x^{(m)}) - y^{(m)})x_2^{(m)}\\  \end{pmatrix}$

(4)将展开后的矩阵采用加法规则,拆分成如下m份:

$\Theta := \Theta - \alpha \frac{1}{m} ( \begin{pmatrix} (h_\theta (x^{(1)}) - y^{(1)})x_0^{(1)} \\ (h_\theta (x^{(1)}) - y^{(1)})x_1^{(1)} \\ (h_\theta (x^{(1)}) - y^{(1)})x_2^{(1)} \end{pmatrix} + \begin{pmatrix} (h_\theta (x^{(2)}) - y^{(2)})x_0^{(2)} \\ (h_\theta (x^{(2)}) - y^{(2)})x_1^{(2)} \\ (h_\theta (x^{(2)}) - y^{(2)})x_2^{(2)} \end{pmatrix} + ... + \begin{pmatrix} (h_\theta (x^{(m)}) - y^{(m)})x_0^{(m)} \\ (h_\theta (x^{(m)}) - y^{(m)})x_1^{(m)} \\ (h_\theta (x^{(m)}) - y^{(m)})x_2^{(m)} \end{pmatrix} )$

(5)将每个矩阵中的相同部分抽取出来:

$\Theta := \Theta - \alpha \frac{1}{m} [(h_\theta (x^{(1)}) - y^{(1)}) \begin{pmatrix} x_0^{(1)} \\ x_1^{(1)} \\ x_2^{(1)} \end{pmatrix} + (h_\theta (x^{(2)}) - y^{(2)}) \begin{pmatrix} x_0^{(2)} \\ x_1^{(2)} \\ x_2^{(2)} \end{pmatrix} + ... + (h_\theta (x^{(m)}) - y^{(m)}) \begin{pmatrix} x_0^{(m)} \\ x_1^{(m)} \\ x_2^{(m)} \end{pmatrix} )]$

(6)可以看到,每个x的矩阵都组成了一个向量X:

$\Theta := \Theta - \alpha \frac{1}{m} [(h_\theta (x^{(1)}) - y^{(1)}) X^{(1)} + (h_\theta (x^{(2)}) - y^{(2)}) X^{(2)} + ... + (h_\theta (x^{(m)}) - y^{(m)}) X^{(m)} ]$

(7)再将其表示为$\Sigma$的形式:

$\Theta := \Theta - \alpha \frac{1}{m} \sum_{i=1}^{m} (h_\theta (x^{(i)}) - y^{(i)}) X^{(i)}$

posted @ 2016-12-05 17:14  玄天妙地  Views(1972)  Comments(0Edit  收藏