注:本文若没特殊声明,所有截图均来自cs229 Machine Learning Lecture notes 1


监督学习中,最常见的是线性回归和分类问题。然而,我们熟知的linear regression和logistic regression这两个机器学习算法其实只是一个更广泛的模型family的特殊特殊情况——广义线性模型(Generalized Linear Models)。本系列分三部分,首先介绍linear regression,再介绍logistic regression,最后点出广义线性模型,并介绍softmax regression。


线性回归中的cost function定义如下(它被称为最小二乘代价):


广义回归网络优化方法 广义线性回归算法_线性回归

 

其中

广义回归网络优化方法 广义线性回归算法_随机梯度下降_02

 


机器学习算法就是要找出一个theta使cost function 最小。下面分别使用两种不同的方法求解这个模型:梯度下降 和 normal equation。


1 梯度下降




使用梯度下降更新模型,先求J对theta的偏倒



广义回归网络优化方法 广义线性回归算法_梯度下降_03

 

于是若只有一个样本时,theta的更新公式为(LMS update rule)


广义回归网络优化方法 广义线性回归算法_线性回归_04

 

其中alpha为学习速率(learning rate)。 如果一次参数更新用到整个训练集,方法则被称为批次梯度下降(batch gradient descent),算法如下:



广义回归网络优化方法 广义线性回归算法_广义回归网络优化方法_05

 

当然也可以一次只使用一个样本更新参数,此时则有个很不错的名字:随机梯度下降(stochastic gradient descent)。算法如下:

广义回归网络优化方法 广义线性回归算法_线性回归_06

 

那上面时候用随机梯度下降SGD,什么时候用随机梯度下降BGD?

1、若cost function是凸函数,则当样本数不多时,BGD是很有效的。而SGD可能会一直在全局最优解旁边打转,却始终取不到它。

2、当样本数很大时,一次gradient descent需要动用整个样本集代价是很大的。因此可以使用SGD。而且使用SGD还会有附加的好处。

3、若cost function是非凸函数,则BGD容易陷入局部最优解。而SGD不容易出现这样的情况。


2 Normal equation




由于该cost function是凸函数,因此可以直接对其求导,令导数等于0,得到的theta即为所求值。过程如下,


广义回归网络优化方法 广义线性回归算法_线性回归_07

 

从而得到theta为,

广义回归网络优化方法 广义线性回归算法_随机梯度下降_08

 

一个很漂亮的公式,但其中涉及到矩阵的求逆。若feature向量为n维,则normal equation的计算复杂度为O(max{n^3,mn^2})。不幸的是上式中求逆的部分不一定是可逆的,一个解决办法是如下改动式子:

广义回归网络优化方法 广义线性回归算法_广义回归网络优化方法_09

 from [2]

其中I为n×n的单位矩阵,其中n为feature个数。因此,严格来讲应该是(n+1)×(n+1)。 有趣的是这个式子刚好对应规则化(regularized)的线性回归,其中delta^2对应规则化参数lambda。




最后,我们可以看到最小二乘其实对应一个很漂亮的概率模型。若假设预测值与真实值间的误差epsilon服从高斯分布N(0,delta^2),则有



广义回归网络优化方法 广义线性回归算法_线性回归_10

 

对似然函数取log并求导得

广义回归网络优化方法 广义线性回归算法_梯度下降_11

 


可以看到最大化 l 即最小化我们的cost function。 


参考文献:

[1] cs229 Machine Learning Lecture notes 1: "Supervised Learning, Discriminative Algorithms"

[2] CPSC340:Ridge regression and regularization