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

上一章中我们简单介绍了机器学习的大概情况,今天我们开始循序渐进地学习机器学习中相关的算法。在接触经典算法之前,我们先来了解下“梯度下降”算法。
一、算法背景
   
作为一个算法演示的背景,我们还是采用上一章中提到的房屋价格和房屋大小的关系问题,不同大小的房屋对应不同的房价,我们要通过分析已有的数据样本,来预
测一个新样本的房价。这里其实是监督式学习中回归问题的简单应用,如果所有的特性因变量都是一次的关系,那么就称之为一个线性回归问题。下面就是我们解决
问题的基本思路:

    首先从训练集中使用学习算法,得到一个关于问题的假设(实质是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)
    }
}
    随机梯度算法的收敛速度要比批梯度要快,但是最后收敛的未必有批梯度那么准确,也许会围绕最小值点来回摆动。由于梯度算法的核心是减去了偏导数,因此梯度算法一定会有收敛值,而且对于线性问题来说,所得的局部最小值往往就是全局最小值。

时间: 2024-09-28 19:15:28

【机器学习】(2):梯度下降算法的相关文章

机器学习:梯度下降算法原理讲解

背景 学习机器学习时作为基础概念. 转载自: <梯度下降算法原理讲解--机器学习> 1. 概述 梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值. 本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度下降算法的原理,解释为什么要用梯度,最后实现一个简单的梯度下降算法的实例! 2. 梯度下降算法 2.1 场景假设 梯度下降法的基本思想可以类比为

斯坦福CS229机器学习课程笔记一:线性回归与梯度下降算法

应该是去年的这个时候,我开始接触机器学习的相关知识,当时的入门书籍是<数据挖掘导论>.囫囵吞枣般看完了各个知名的分类器:决策树.朴素贝叶斯.SVM.神经网络.随机森林等等:另外较为认真地复习了统计学,学习了线性回归,也得以通过orange.spss.R做一些分类预测工作.可是对外说自己是搞机器学习的还是不太自信,毕竟和科班出身的各位大牛相比自己对这些模型.算法的理解只能算是“知其然而不知其所以然”,用起来总感觉哪里不对劲. 因此,去年早早地就把网易公开课上Andrew大神的斯坦福CS229课程

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

Hulu机器学习问题与解答系列 | 十七:随机梯度下降算法之经典变种

这是本周第二篇机器学习,也是Hulu面试题系列的第十七篇了~ 之前的所有内容都可以在菜单栏的"机器学习"中找到,愿你温故,知新. 今天的内容是 [随机梯度下降算法之经典变种] 场景描述 提到Deep Learning中的优化方法,人们都会想到Stochastic Gradient Descent (SGD),但是SGD并不是理想的万金油,反而有时会成为一个坑.当你设计出一个deep neural network时,如果只知道用SGD来训练,不少情况下你得到一个很差的训练结果,于是你放弃

机器学习(一)梯度下降算法的实现及过程分析

机器学习(一)梯度下降算法 因为算法最好能应用到实际问题中才会让读者感到它的真实的用处,因此首先我来描述一个实际问题(梯度下降算法用以帮助解决该问题):给定一个指定的数据集,比如由若干某一地区的房屋面积和房屋价格这样的数据对(area, price)组成的集合(吴恩达老师的课程是启蒙课程所以举该例子),我的目标是通过一个学习算法得到一个预测房价和房屋面积之间的函数,然后给定一个新的房屋面积,用这个函数来预测房价.如下图所示: 我的解决思路大致如下: 1.我找了一个很小的数据集,有两个特征X1,X

【机器学习】对梯度下降算法的进一步理解

单一变量的线性回归 让我们依然以房屋为例,如果输入的样本特征是房子的尺寸,我们需要研究房屋尺寸和房屋价格之间的关系,假设我们的回归模型训练集如下 其中我们用 m表示训练集实例中的实例数量, x代表特征(输入)变量, y代表目标变量 (x,y)代表实例 根据线性回归模型hΘ(x) = Θ0+Θ1*x1       (Θ是模型参数) 需要找出Θ0,Θ1,使得平均误差最小.J(Θ0,Θ1)称为代价函数. 根据不同的特征值,我们按照如下步骤进行迭代更新,以此来得到不同的Θ: 执行过程中,同步更新Θ0,Θ

机器学习(Andrew Ng)笔记(二):线性回归模型 &amp; 梯度下降算法

线性回归模型 回忆一下第一节课提出的预测房屋每平方单位价格的例子.在这个例子中,我们可以画一条直线,尽量符合数据点的分布趋势.我们已经知道这是一个回归问题,即预测连续值的输出.实际上,这是一个典型的线性回归模型.之所以这样定义,大概是因为回归方程可以用一个线性函数来表示. 我们可以假设这个线性函数为: 这是一个关于x的一元一次方程.其中两个参数的值我们还不知道,要根据训练集中的数据求解出来.这里要定义几个概念,我们已经有的数据,即房屋面积与单价的对应数据对,被称作训练集.x作为房屋面积,称作输入

简单多元线性回归(梯度下降算法与矩阵法)

多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做出预测. 对应的模型如下: n: 特征数量. 一般选取残差平方和最小化作为损失函数,对应为: M:训练样本数量. 通过最小化代价损失函数,来求得 值,一般优化的方法有两种,第一是梯度下降算法(Gradient Descent),第二种是矩阵法(The normal equations). 梯度下降算法

梯度下降算法的一点认识

昨天开始看Ng教授的机器学习课,发现果然是不错的课程,一口气看到第二课. 第一课 没有什么新知识,就是机器学习的概况吧. 第二课 出现了一些听不太懂的概念.其实这堂课主要就讲了一个算法,梯度下降算法.到了教授推导公式的时候感觉有点蒙,不过后来仔细想想,也大概理解了,这个算法并没有想象的晦涩.在这堂课中,梯度下降算法是为了解决线性回归问题的.视频中的例子是给你一堆训练数据,(房子面积和对应房价),如果此时给你一个没有出现过的房子面积数据,您能否给出正确的房价?解决思路是首先要看出来房子面积跟房价之