注:本文若没特殊声明,所有截图均来自cs229 Machine Learning Lecture notes 1
监督学习中,最常见的是线性回归和分类问题。然而,我们熟知的linear regression和logistic regression这两个机器学习算法其实只是一个更广泛的模型family的特殊特殊情况——广义线性模型(Generalized Linear Models)。本系列分三部分,首先介绍linear regression,再介绍logistic regression,最后点出广义线性模型,并介绍softmax regression。
线性回归中的cost function定义如下(它被称为最小二乘代价):
其中
机器学习算法就是要找出一个theta使cost function 最小。下面分别使用两种不同的方法求解这个模型:梯度下降 和 normal equation。
1 梯度下降
使用梯度下降更新模型,先求J对theta的偏倒
于是若只有一个样本时,theta的更新公式为(LMS update rule)
其中alpha为学习速率(learning rate)。 如果一次参数更新用到整个训练集,方法则被称为批次梯度下降(batch gradient descent),算法如下:
当然也可以一次只使用一个样本更新参数,此时则有个很不错的名字:随机梯度下降(stochastic gradient descent)。算法如下:
那上面时候用随机梯度下降SGD,什么时候用随机梯度下降BGD?
1、若cost function是凸函数,则当样本数不多时,BGD是很有效的。而SGD可能会一直在全局最优解旁边打转,却始终取不到它。
2、当样本数很大时,一次gradient descent需要动用整个样本集代价是很大的。因此可以使用SGD。而且使用SGD还会有附加的好处。
3、若cost function是非凸函数,则BGD容易陷入局部最优解。而SGD不容易出现这样的情况。
2 Normal equation
由于该cost function是凸函数,因此可以直接对其求导,令导数等于0,得到的theta即为所求值。过程如下,
从而得到theta为,
一个很漂亮的公式,但其中涉及到矩阵的求逆。若feature向量为n维,则normal equation的计算复杂度为O(max{n^3,mn^2})。不幸的是上式中求逆的部分不一定是可逆的,一个解决办法是如下改动式子:
from [2]
其中I为n×n的单位矩阵,其中n为feature个数。因此,严格来讲应该是(n+1)×(n+1)。 有趣的是这个式子刚好对应规则化(regularized)的线性回归,其中delta^2对应规则化参数lambda。
最后,我们可以看到最小二乘其实对应一个很漂亮的概率模型。若假设预测值与真实值间的误差epsilon服从高斯分布N(0,delta^2),则有
对似然函数取log并求导得
可以看到最大化 l 即最小化我们的cost function。
参考文献:
[1] cs229 Machine Learning Lecture notes 1: "Supervised Learning, Discriminative Algorithms"
[2] CPSC340:Ridge regression and regularization