第一个机器学习算法:线性回归与梯度降低

第一个机器学习算法:线性回归与梯度降低

符号解释

  • \(x^{(i)}\),\(y^{(i)}\):某个训练样本
  • \(m\):样本总数量
  • \(h_{\theta}\):假设函数

Linear regression(线性回归)

如何得到一个线性回归模型?

  • 训练数据放入学习算法,算法经过计算获得一个假设函数
  • \(x\) (须要预测的数据),经过\(h_\theta\) (假设函数)后,获得\(y\) (估计值)。

线性回归的假设函数(hypothesis)的表现形式

\[ h_\theta(x)=\theta_0+\theta_1x \]算法

很显然这是一个一次函数,使用一次函数是为了方便学习。为了简便,咱们一般简写成:
\[ h(x)=\theta_0+\theta_1x \]机器学习

\(\theta_0\)\(\theta_1\)这两个参数表明的意义

学过一次函数的都知道表明的是什么。\(\theta_0\)在这里表明的是截距,\(\theta_1\)表明斜率。在这里咱们将会不断调整截距和斜率,尽可能获得一个合适的假设函数。咱们须要尽可能减小真实数据和假设函数的输出之间的平方差。函数

平方差函数

  • 方差学习

    • 表达式\(\frac{1}{m}\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\)
    • 还记得距离公式吗?\(x^2+y^2=d^2\),由于咱们是根据训练数据得出的假设函数,因此x的值实际上是相同的。
    • 方差越小,说明假设函数的数据与训练数据越贴合,越贴近,假设函数就越准确。
  • 平方差函数(代价函数)
    \[ J(\theta_0,\theta_1)=\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
    而咱们的目标是:
    \[ \mathop{minisize}\limits_{\theta_0\theta_1}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
    就是但愿找到一对\(\theta_0\theta_1\)使得方差函数是最小的。spa

Gradient descent 梯度降低

在上面咱们明确了咱们的目标:
\[ \mathop{minisize}\limits_{\theta_0\theta_1}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \]
咱们须要一种高效的方法,去寻找方差最小时的解。数学

梯度降低的形象描述

想像一下你在一座大山上,在梯度降低算法中咱们要作的就是旋转360度,看看咱们的周围,并问本身我要在某个方向上用小碎步尽快下山。若是咱们站在山坡上的这一点,你看一下周围你会发现最佳的下山方向,如今你在山上的新起点上 ,你再看看周围,而后再一次想一想 ,我应该从什么方向迈着小碎步下山? 而后你按照本身的判断又迈出一步 ,往那个方向走了一步,而后重复上面的步骤 ,从这个新的点,你环顾四周,并决定从什么方向将会最快下山 ,而后又迈进了一小步,又是一小步,并依此类推,直到你接近局部最低点的位置。it

梯度降低的数学表达

梯度降低是一种不断且同时更新的。咱们采用一次函数来学习,所以只须要更新两个值:
\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \]
其中\(\alpha\)是成长速率,就是每一次更新的步长。io

其中要注意的是,\(\theta\)是先计算出来再赋值。也就是说,全部\(\theta\)的更新不会由于别的\(\theta\)先更新了而被影响。class

\(\alpha\)的大小对梯度降低的影响

  • \(\alpha\)过小,会致使更新迭代速率慢,要好久才能找局部最优解。
  • \(\alpha\)太大,会致使没法靠近代价函数的底部,会致使算法是往上走而不是往下走。

所以,\(\alpha\)要控制好大小,可是直观点看是宁愿偏小也不要过大。方法

为何梯度降低找到的是局部最优解而不是全局最优解

  • 代价函数不必定是只有一个谷底的,可能有几个谷底。

  • 若是只有一个谷底,那么梯度降低找到的必定是全局最优解。

  • 而不止一个谷底的时候,咱们观察一下表达式:
    \[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) \]
    当到达某个谷谷底,但该谷底不是最优的。那么此使后面的微积分项表明的是函数的斜率,此时必定为0。那就说明,只要达到谷底,函数就会中止迭代,不会继续去寻找真正的全局最优解。

  • 所以咱们能够得出一个结论:一开始选的起始点会影响最后解的结果,迭代出来的不必定是全局最优解。

二者结合,获得第一个简单的机器学习算法

这里是使用一次函数作例子,若是不是一次函数那推广便可。

推导

\[ J(\theta_0,\theta_1)=\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \tag{1} \]

\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\tag{2} \]

将(1)代入(2):

\[ \theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}\frac{1}{2m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 \tag{3} \]

将1和0分别代入\(\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\),可得

\[ j=0:\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})\tag{4} \]

\[ j=1:\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})·x^{(i)}\tag{5} \]

将(4),(5)代入(2),得:
\[ \theta_0=\theta_0-\alpha\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)}) \]

\[ \theta_1=\theta_1-\alpha\frac{1}{m}\sum\limits^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})·x^{(i)} \]

至此,咱们就获得了两个参数的迭代公式。

相关文章
相关标签/搜索