本文有关多元linear Regression的损失函数从极大似然估计的角度的推导以及梯度下降算法。纯手打,^^
损失函数
我们的模型为
$$
h_{\theta}(x) = \theta_0 + \theta_1x + \theta_2 x^2 … = \theta ^ TX
$$
似然函数为:
$$y^i = \theta ^ T x^i + \epsilon ^ i$$
,残差用$\epsilon$表示,对于每一个样本点的残差$\epsilon^i$,(注意以下标号中上标i表示第i个样本点),有:
$$
\epsilon^i = y^i - h_{\theta}(x^i) = y^i - \theta ^ T x^i
$$
那么我们有假设所有的残差根据中心极限定理,其密度函数$p(\epsilon^i)$符合均值为0,方差为$\sigma^2$的高斯分布,即
$$
p(\epsilon^i) = \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(\epsilon^i)^2}{2 \sigma ^2}) \
= \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})
$$
那么,似然函数就是所有样本点的出现的概率乘积,即
$$
L(\theta) = \prod_{i=1}^{m} p(\epsilon^i) \
$$
$$
= \prod_{i=1}^{m} \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})
$$
我们最终是求$\theta$的最优解,于是对似然函数取对数,
$$
l(\theta) = \log \left(\prod_{i=1}^{m} \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})\right) \
$$
$$
= m \log \frac{1}{\sqrt {2\pi} \sigma} - \frac{1}{2 \sigma ^2} \sum _{i=1}^{m} (y^i - \theta ^ T x^i)^2
$$
扔掉常数项,就得到了线性回归的目标函数或error function,
$$
J(\theta) = \frac{1}{2} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) ^ 2
$$
最小二乘法
以上可以把目标函数写成这样的形式:
$$
J(\theta) = \frac{1}{2} (X \theta - y)^T (X \theta - y)
$$
对向量$\theta$求导,
$$
\frac{\partial J(\theta)}{\partial \theta} = X^T(X \theta - y)
$$
直接令上式为零,得到
$$
\theta = (X^TX)^{-1} X^Ty
$$
最小二乘法解线性回归理论很漂亮,但是因为复杂度的原因实际上不常用。因为矩阵求逆的复杂度为$O(n^3)$,很慢。另外一种解释是通常X不是满秩的,譬如生物学科里面的数据,特征有成千上万个,数据却少得可怜,这种通常是解不出特定的解的。
梯度下降算法
常用的还是梯度下降法。以上得到了损失函数为
$$
J(\theta) = \frac{1}{2} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) ^ 2
$$
那么,通过对$\theta$的各分量$\theta_i$根据梯度更新其值即可
$$
\theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}
$$
而上式中
$$
\frac {\partial J(\theta)}{\partial \theta_i} =
$$
$$
\frac{1}{2m} \sum_{i=1}^m \frac{\partial(h_{\theta}(x^i) - y^i) ^ 2}{\partial \theta_j}
$$
$$
= \frac{2}{2m} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) \frac{\partial h_{\theta}(x^i)}{\partial \theta_j}
$$
又上式中
$$
\frac{\partial h_{\theta}(x^i)}{\partial \theta_j} =
\frac{\partial (\theta_0 x_0^i + \theta_1 x_1^i + \cdots+ \theta_j x_j^i + \cdots)}{\partial \theta_j} \
= \frac{\partial ( \theta_j x_j^i )}{\partial \theta_j}
= x_j^i
$$
一步步代上去可得
$$
\theta_j = \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m {(h_{\theta}(x^i) - y^i)} x_j^i
$$
这就是梯度下降法更新多元线性回归的公式啦!^_^
PS:有细心的同学可能发现上面的式子中添加了$\frac{1}{m}$,可能有疑惑,想问有什么区别。回答:其实是一样的,因为在机器学习中,我们并不关心最优化的时候,目标函数的极值是多少,而我们只关注,目标函数取极值的时候,参数的值是多少。所以因为这个原因,我们经常为了式子简便而对目标函数做缩放,比如上面的取对数,对数的底是e还是2根本没有区别。