机器学习入门(四)之----线性回归(正规方程)
再谈最小平方问题
有了矩阵求导工具后,我们可以寻找最小化损失函数的参数值的闭式解(closed-form solution)。首先我们先把这个损失函数表达成向量的形式。
把每个训练样本放在矩阵一行,可以得到一个\(m \times n\) 设计矩阵\(X\) (design matrix) ,即
\[X=\left[
\begin{array}{c}{
-\left(x^{(1)}\right)^{T}-} \\
{-\left(x^{(2)}\right)^{T}-} \\
{\vdots} \\
{-\left(x^{(m)}\right)^{T}-}
\end{array}
\right]
\]
$\vec{y} $ 是一个$m $ 维的列向量,包含对应的标签,
\[\vec{y}=\left[\begin{array}{c}{y^{(1)}} \\ {\vdots} \\ {y^{(m)}}\end{array}\right]
\]
因此,有,
\[\begin{aligned} X \theta-\vec{y} &=
\left[\begin{array}{c}{\left(x^{(1)}\right)^{T} \theta} \\ {\vdots} \\ {\left(x^{(m)}\right)^{T} \theta}\end{array}\right]-\left[\begin{array}{c}{y^{(1)}} \\ {\vdots} \\ {y^{(m)}}\end{array}\right] \\
&=\left[\begin{array}{c}{h_{\theta}\left(x^{(1)}\right)-y^{(1)}} \\ {\vdots} \\ {h_{\theta}\left(x^{(m)}\right)-y^{(m)}}\end{array}\right] \end{aligned}
\]
我们先把均方误差损失函数\(J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}\) 表达成向量的形式,有,
\[\begin{aligned} \frac{1}{2}(X \theta-\vec{y})^{T}(X \theta-\vec{y}) &=\frac{1}{2} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} \\ &=
J(\theta)
\end{aligned}
\]
可以看到这个损失函数其实是关于向量参数\(\theta\) 的矩阵函数。利用之前矩阵求导的两条性质,
\[\begin{equation}
\begin{aligned}
\nabla_{A^{T}} f(A) &=\left(\nabla_{A} f(A)\right)^{T} \\
\nabla_{A} \operatorname{tr}A B A^{T} C &=C A B+C^{T} A B^{T} \\
\end{aligned}
\end{equation}
\]
我们可以有,
\[\begin{equation}
\begin{aligned}
\nabla_{A^{T}} \operatorname{tr}A B A^{T} C &= B^{T}A^{T}C^{T}+BA^{T}C \\ \end{aligned}\end{equation}
\]
接下来对损失函数关于参数向量\(\theta\) 求导我们有,
\[\begin{aligned}
\nabla_{\theta} J(\theta) &=\nabla_{\theta} \frac{1}{2}(X \theta-\vec{y})^{T}(X \theta-\vec{y}) \\
&=\frac{1}{2} \nabla_{\theta}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} \vec{y}-\vec{y}^{T} X \theta+\vec{y}^{T} \vec{y}\right) \\
&=\frac{1}{2} \nabla_{\theta} \operatorname{tr}\left(\theta^{T} X^{T} X \theta-\theta^{T} X^{T} \vec{y}-\vec{y}^{T} X \theta+\vec{y}^{T} \vec{y}\right) \\
&=\frac{1}{2} \nabla_{\theta}\left(\operatorname{tr} \theta^{T} (X^{T} X) \theta I-2 \operatorname{tr} \vec{y}^{T} X \theta\right) \\ &=\frac{1}{2}\left(X^{T} X \theta+X^{T} X \theta-2 X^{T} \vec{y}\right) \\
&=X^{T} X \theta-X^{T} \vec{y}
\end{aligned}
\]
第三个等式用到一个标量的迹就是它本身。第五个等式前半部分用到了上面的性质$\nabla_{A^{T}} \operatorname{tr}A B A^{T} C = B{T}AC{T}+BAC $ ,而后半部分用到$\nabla_{A}\operatorname{tr}A B =B^{T} $ 。
我们令这个导数等于零,就得到正规方程(normal equations),
\[\begin{equation}\begin{aligned}
X^{T} X \theta=X^{T} \vec{y}
\end{aligned}\end{equation}
\]
最后可以得到参数的闭式解,
\[\begin{equation}\begin{aligned}
\theta=(X^{T} X)^{-1}X^{T} \vec{y}
\end{aligned}\end{equation}
\]
打完,收工。