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