0%

Part1-单参数线性回归

Part1-单参数线性回归

模型描述

如图是房屋价格预测问题,根据不同尺寸的房子对应不同售价组成的数据来画图,然后对新的房屋面积预测对应的价格

符号定义:

m=训练样本的数量

x's=输入变量(输入特征)

y's=输出变量(目标变量)

使用(x,y)来表示一个训练样本

使用\((x^{(i)},y^{(i)})\)表示 第i个训练样本

如何表示"假设"h?

\(h_\theta(x)=\theta_0+\theta_1x\)

代价函数

在线性回归中,有一个训练集如图所示,我们要做的就是得出假设中的\(\theta_0\)\(\theta_1\)两个参数的值,来让假设函数表示的直线尽可能与这些数据点很好的拟合

如图,我们需要选择\(\theta_0\)\(\theta_1\),来使\(h_\theta(x)\)接近对应的训练样本\((x,y)\)中的\(y\)

在线性回归中,我们要解决的是一个最小化问题 \[ minmize_{(\theta_0,\theta_1)} \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 \] 其中\(\frac{1}{2m}\)是为了在后续进行求导时抵消掉平方,便于计算,对于优化的结果并没有影响

改写这个函数,以定义一个代价函数: \[ J(\theta_0,\theta_1)=\frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \] \(J(\theta_0,\theta_1)\)也被称为平方误差函数

损失函数和代价函数的区别?

损失函数(Loss function):针对单个样本

代价函数(Cost function):针对全部样本

总结:

上述问题中

假设:\(h_\theta(x)=\theta_0+\theta_1x\)

参数:\(\theta_0,\theta_1\)

代价函数:\(J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\)

目标:\(minimize_{(\theta_0,\theta_1)} J(\theta_0,\theta_1)\)

梯度下降

梯度下降算法是可能用来使得代价函数J最小化的算法

问题综述:

给定函数:\(J(\theta_0,\theta_1)\),可能是一个线性回归的代价函数,也可能是一个需要最小化的其它函数

目标:\(min_{(\theta_0,\theta_1) J(\theta_0,\theta_1)}\)

梯度下降算法思路:

  • 开始时,给定\(\theta_0\)\(\theta_1\)的初始值,通常设为0

  • 然后不断改变\(\theta_0\)\(\theta_1\)来使\(J(\theta_0,\theta_1)\)变小,直到找到\(J\)的最小值或局部最小值

具体过程如图,可以想象成一个人站在山顶上,需要走到最低点,在梯度下降算法中,我们需要做的就是:查看周围一圈,观察如果要在某个方向上走一小步,来达到尽快下山的目的,需要向哪个方向迈步?然后向对应的方向迈步,在新的位置重复上述操作,直到达到最低点或局部最低点

算法定义:

重复以下过程直到收敛:

\(\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \space (for\ j =0 \ and \ j=1)\)

其中\(:=\)表示赋值\(\alpha\)表示学习率(learning rate),用来控制梯度下降时,迈出多大的步子,\(\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\)表示一个导数项,后面再讨论

对应这个表达式,需要同时更新\(\theta_0\)\(\theta_1\)

\(temp_0 :=\theta_0-\alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)\)

\(temp_1:=\theta_1-\alpha\frac{\partial}{\partial \theta_1}J(\theta_0,\theta_1)\)

\(\theta_0:=temp_0\)

\(\theta_1:=temp_1\)

如果先赋值\(temp_0\)再赋值\(\theta_0\)再赋值\(temp_1\)再赋值\(\theta_1\)就会导致与梯度下降所希望的不同的结果

对于上述表达式中的导数项,以一维为例,对于\(\theta_0 := \theta_0-\alpha\frac{d}{d\theta_0}J(\theta_0)\)

如图,如果当前位置在抛物线右边时,对应位置导数大于0,\(\theta_0\)更新后变小,当前位置在左边时,对应位置导数小于0,\(\theta_0\)更新后变大,对应的\(J(\theta_0)\)总是趋向于最小值

同时对于表达式中的\(\alpha\)而言,如果\(\alpha\)太小,\(\theta\)更新就会很慢,每次更新一点点;而如果\(\alpha\)太大,\(\theta\)就会更新幅度太大,导致更新过程反复横条。

在梯度下降法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是由于在接近局部最低点时,根据定义,在局部最低点时导数等于零,所以当接近局部最低时,导数值会变得越来越小,所以梯度下降会自动采取较小的幅度,所以不需要再另外减小\(\alpha\)

线性回归中的梯度下降

\[ \begin{split} \frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)&=\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 \\ &=\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum_{i=1}^m(\theta_0+\theta_1x^{(i)}-y^{(i)})^2 \end{split} \]

\(\theta_0\ j=0:\)

\(\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1) = \frac{1}{2m} \cdot 2 \cdot \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\cdot 1 =\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\)

\(\theta_1\ j=1:\)

\(\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1) =\frac{1}{2m} \cdot 2 \cdot \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(i)} =\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}\)

批次梯度下降:

之前所说的梯度下降,都是批次梯度下降(Batch Gradient Descent),也就是使用全部的训练样本进行训练,后面会有不用全览整个训练集,而是每次只关注了小子集。