斯坦福大学 Andrew Ng老师的课程笔记。
假设我们得到一些房价的数据。
这里的房价与两个参数有关,一个是房子的面积与房子中卧室的数量。
所以我们设置学习函数h如下:
θ表示要学习的参数(权重),x为提取的数据特征。这里x1就表示房子的面积,x2表示房子中的卧室数量。其中人为规定x0为1。
为了后面推导方便,这里简化公式。
将数据特征x带入h函数中即可得到预测值y’。但是我们如何学习θ,如何让预测值y’尽可能接近真实房价?
这里需要定义一个损失函数(cost function)J(θ)。
我们现在的目标是找到最优的θ值去最小化J(θ)。
使用最小均方算法(Least Mean Square)来更新θ的值。更新公式如下:
有点像梯度下降法,简单介绍一下梯度下降法,类似于下山。人身处于山上的一个随机位置,环顾四周后,选择坡度最陡的地方下山,每走一步就环顾一下四周,走下一步。每一步的步长就是α(学习率)。
梯度为,因为是下山所以应该是负号,再加上原来的θ值。
下面是梯度公式的推导过程。
其中xj为数据的第j个特征,对应第j个权重θ。
所以θ最终的更新公式为:
我其实并太不清楚LMS算法与GD算法之间的区别。。。
梯度下降法(Gradient Descent,GD)
梯度下降法不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
批梯度下降(Batch Gradient Descent,BGD):
m为样本总量,BGD能最快的收敛到全局最优处,但是收敛时间太长,而且有些时候,我们只需要收敛在全局最优处就行,这样的结果泛化程度比较好。
为了缩短训练的时间,于是有了下面这一种梯度下降法。
随机梯度下降(Stochastic Gradient Descent,SGD):
每次更新权重,只选取样本数据中的一条。可以随机选取,也可以顺序选取。
虽然收敛的速度比较慢,甚至还会出现向高处收敛的情况,但是训练次数足够,也能收敛到全局最优处附近。
小批量梯度下降(Mini-Batch Gradient Descent, MBGD)
与第一种批量梯度下降法公式可以说相同,只不过m的取值可以自己定义,不需要每次都遍历完所有的样本数据。这样不仅可以加快收敛速度,也不产生太大误差。