【机器学习】(2):梯度下降算法

举报
技术火炬手 发表于 2019/02/21 15:23:39 2019/02/21
【摘要】 上一章中我们简单介绍了机器学习的大概情况,今天我们开始循序渐进地学习机器学习中相关的算法。在接触经典算法之前,我们先来了解下“梯度下降”算法。

上一章中我们简单介绍了机器学习的大概情况,今天我们开始循序渐进地学习机器学习中相关的算法。在接触经典算法之前,我们先来了解下“梯度下降”算法。

一、算法背景

    作为一个算法演示的背景,我们还是采用上一章中提到的房屋价格和房屋大小的关系问题,不同大小的房屋对应不同的房价,我们要通过分析已有的数据样本,来预 测一个新样本的房价。这里其实是监督式学习中回归问题的简单应用,如果所有的特性因变量都是一次的关系,那么就称之为一个线性回归问题。下面就是我们解决 问题的基本思路:

    首先从训练集中使用学习算法,得到一个关于问题的假设(实质是H(X)=Y的映射),然后选取一个新的房屋,由其大小预测其价格。解决这个问题还需要规定一些符号便于后面的说明,如:

1. M:样本集,表示所有的训练集;

2. X:输入变量,也叫做feature,这个例子里就是房屋大小;

3. Y:输出变量,也叫做targeted variable,这个例子里就是房屋价格;

4. (X,Y):表示一个训练样本实例;

5. 第i个样本实例:;

二、梯度下降

    对于上面房屋价格和房屋大小的这个例子,如果我们仅仅考虑线性关系,那么Y应当都是X的线性关系。作为演示的例子,我们不妨设房屋大小、房间数量是房屋价 格的两个线性因变量,那么我们的假设H(X)其实可以写作关于X的函数,为了方便,我们将后面所用到的公式和结果一并写在下面:

(1)式中表示的是当考虑房屋大小和房间数量两个因变量时的线性函数,其中X0的值为1,X1表示房屋大小,X2表示房间数量;

(2)式中的J函数,就是我们的目标函数,即如果存在一个函数可以最好的拟合现有的训练数据集M,那么所有样本在该函数上的方差一定最小,前面乘以1/2是为了后面运算化简的方便,不必细究;

(3)式就是我们所说的梯度下降算法的更新公式,将现有训练集的所有样本考虑在内,那么变量成为了两个系数,因此我们不断变化系数以寻求使得H函数达到最小值的值,这里的是一个常变量,表示的是每次下降的步长,如果该值过小,导致算法收敛时间太长,如果该值过大,则有可能会越过最小值点;

(4)式是仅仅考虑只有一个样本的时候得到的关于梯度下降的公式;

(5)式是考虑有m个样本的时候的梯度下降公式;

(6)式是随机梯度下降公式;

    注意!梯度下降的思想其实很简单,如果将所有的样本值绘成等高线图,那么好比一个人站在其中一点,每当要迈步的时候都要考虑哪个方向迈一步可以最快下山。这里其选择的最快下山方向其实是该点的偏导数。具体如图:

    同理,我们也可以看等高线图:

    从上面的(5)式中我们可以看出,每次更新一次系数的时候,都需要遍历所有的样本集合进行运算,因此称为“批梯度算法”,但是如果遇到非常大的样本集合, 这样无疑是十分低效的。因此我们又有了“随机梯度算法”,其思想就是每次只使用一个样本来更新所有的参数值,但是需要更新m*n次(m是样本大小,n是因 变量个数),伪代码就是:

Repeat {

    For j = 1 to m {

        (6)式  (for all i)

    }

}

    随机梯度算法的收敛速度要比批梯度要快,但是最后收敛的未必有批梯度那么准确,也许会围绕最小值点来回摆动。由于梯度算法的核心是减去了偏导数,因此梯度算法一定会有收敛值,而且对于线性问题来说,所得的局部最小值往往就是全局最小值。

--------------------------------------

本文转自windhawk博客51CTO博客

如需转载,请联系作者授权

原文链接:https://blog.51cto.com/windhawk/1632860

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。