zoukankan      html  css  js  c++  java
  • 第二周:梯度下降法的向量化推导

    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)}$

  • 相关阅读:
    如何关闭微软反恶意软件客户端
    年轻爸爸家长会上猝死,事前已连续发烧三天
    人猝死前身体发出两个救命信号,一定要清楚,关键时刻救命
    火遍世界的视力恢复法 现在知道还不晚!
    重视工龄工资,食堂一定自己办
    VR行业纷纷倒闭:有硬件没内容
    企业为什么要去美国建厂
    bzoj 1046 : [HAOI2007]上升序列 dp
    bzoj 1857: [Scoi2010]传送带 三分
    bzoj 1045: [HAOI2008] 糖果传递
  • 原文地址:https://www.cnblogs.com/zhongmiaozhimen/p/6134609.html
Copyright © 2011-2022 走看看