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

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

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

公式1:

$ heta_0 := heta_0 - alpha frac{1}{m}sum_{i=1}^{m}(h_ heta (x^{(i)}) - y^{(i)})x^{(i)}_0$

$ heta_1 := heta_1 - alpha frac{1}{m}sum_{i=1}^{m}(h_ heta (x^{(i)}) - y^{(i)})x^{(i)}_1$

$ heta_2 := heta_2 - alpha frac{1}{m}sum_{i=1}^{m}(h_ heta (x^{(i)}) - y^{(i)})x^{(i)}_2$

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

公式2:

$Theta := Theta - alpha delta$

公式3:

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

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

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

$egin{pmatrix} heta _0 \   heta_1 \ heta_2 end{pmatrix} := egin{pmatrix} heta_0 - alpha frac{1}{m} sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_0^{(i)} \ heta_1 - alpha frac{1}{m} sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_1^{(i)} \ heta_2 - alpha frac{1}{m} sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_2^{(i)} end{pmatrix}$

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

$egin{pmatrix} heta _0 \   heta_1 \ heta_2 end{pmatrix} := egin{pmatrix} heta_0 \ heta_1 \  heta_2  end{pmatrix} - alpha frac{1}{m} egin{pmatrix} sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_0^{(i)} \ sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_1^{(i)} \ sum_{i=1}^{m} (h_ heta (x^{(i)}) - y^{(i)})x_2^{(i)} end{pmatrix}$

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

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

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/zhongmiaozhimen/p/6134609.html