写在最前面的几句话,我们下面所有的问题的符号规约如下:
代表训练集中实例的数量
代表输入变量
代表目标变量
代表训练集中的实例
代表第
个实例
表示第
个变量
代表学习算法的解决方案或函数,也成为假设(hypothesis)
是代价函数
1、单变量线性回归
单变量的线性回归比较简单,一般表达式为,现在我们来求代价函数。我们一般用平方差损失函数,即
,因为我们求的是平均损失,而所有的样本个数为m,那么
,后面为了方便计算,在
旁边乘了个2,所以,原公式变为
,我们的目标是让损失函数最小。
一个经典的优化方法是梯度下降法(Gradient Descent)。从公式可以看出,我们需要找到一个参数和
使得损失函数最小。现在所有的
和
是已知的,所以
是关于
和
的函数(搞清楚这点很重要)。
现在我们考虑一个简单的情况,假设为0。那么损失函数变为
,如果我们对和
取任意的值,最后可以组成如下图所示的图形

可以看出当 是关于
的函数时,我们需要取到一个
使得
最小。如果加上
,对
任意取值,最后可以形成如图所示的图形

横轴为,数轴为
。所谓的梯度下降就是不断迭代
使得损失函数最小。当然,一般的函数图像不会像这样的,一般都是这样像丘壑一样高低不平

梯度下降法(Gradient Descent)如下:首先我们需要对随机初始一个值,对应上图就是随机从图像的一点出发,然后不断更新
。如图:

梯度下降这事怎么解释呢?首先我们很疑惑的是,为什么要减去导数?其实,我们只不过是沿着梯度的方向变化而已,而梯度的方向就是函数对各个变量偏导数的方向,我们需要这个方向,所以导数保留了,然后我们为什么乘,就是因为我们可以任意变换在梯度方向的变化量。总而言之最重要的一点是,梯度的方向!!!方向!!!
我们还是以最简单的情况来看,即,

我们每次都求导,那么沿着这个方向,我们不断变化然后取到最小值。
关于单变量的线性回归,我们可以求出他们需要更新值是:

推导很简单,直接将展开成
,然后求偏导即可。
2、多变量线性回归
讲完了单变量线性回归,多变量就好讲了。多变量只不过多了很多的变量,它的目标函数变成了
。但是为了公式简洁(数学家就是强迫症),我们假设
,则公式转化为
,然后代价函数是
,梯度下降算法为:

即:

求导之后得到(是第
个变量):

例如(其他的就不写了,这只是举个栗子):

3、一些基础杂点
3.1特征缩放
为什么需要特征缩放。因为在多维问题中,如果每一个变量的取值范围都差不多,那么梯度下降很快。但是如果一个变量的取值为0-5,另一个为0-2000,那么分别以这两个参数为横坐标,绘制损失函数的等高线图,可以看出图像很扁,梯度下降需要很多次迭代才能收敛。

如果将所有特征缩放到-1到1之间(很多缩放方法,比如最大最小缩放之类的)

可以看出图像并没有那么扁,梯度下降很好收敛。
3.2正规方程(最小二乘法)
损失函数的另一种解法是正规方程,它能一步得到解。这种解法是很直观的数学解法,但是在特征维度很多的时候,在工程上没有任何优势,所以现在都是用梯度下降。

这是代数形式的正规方程,当时吴恩达老师说如果求每个的偏导会很麻烦,所以用了矩阵的形式表示,然后解出
:
,这里
都是向量。这种解法作为了解了,毕竟现在都是梯度下降的天下了。
网友评论