【机器学习】1 监督学习应用与梯度下降

监督学习

简单来说监督学习模型如图所示

其中 x是输入变量 又叫特征向量  y是输出变量 又叫目标向量

通常的我们用(x,y)表示一个样本  而第i个样本 用(x(i),y(i))表示

h是输出函数

监督学习的任务是学习一个模型,使模型能够对任意的输入,做出很好的预测。

习惯的样本训练数目用m表示

梯度下降算法

h(x) = Θ0 +Θ1x1+...+Θixi

J(Θ)= 1/2 *∑(i from 1 to m) (h(Θ)(x (i) - y(i))^2

Θ(i) := Θ(i) - α * (?/?Θ(i))J(Θ)

(其过程好比在山上某一点 在当前点找到最一个方向,使得这点下山速度最快,其原理是通过求导,使梯度下降)

梯度下降算法的计算步骤:

    1. 先决条件: 确认优化模型的假设函数和损失函数。

    比如对于线性回归,假设函数表示为 hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 其中θi (i = 0,1,2... n)为模型参数,xi (i = 0,1,2... n)为每个样本的n个特征值。这个表示可以简化,我们增加一个特征x0=1 ,这样hθ(x0,x1,...xn)=∑i=0nθixihθ。

    同样是线性回归,对应于上面的假设函数,损失函数为:

J(θ0,θ1...,θn)=12m∑i=0m(hθ(x0,x1,...xn)?yi)2J(θ0,θ1...,θn)=12m∑i=0m(hθ(x0,x1,...xn)?yi)2

    2. 算法相关参数初始化:主要是初始化θ0,θ1...,θn,算法终止距离ε以及步长α。在没有任何先验知识的时候,我喜欢将所有的θ初始化为0, 将步长初始化为1。在调优的时候再 优化。

    3. 算法过程:

      1)确定当前位置的损失函数的梯度,对于θiθi,其梯度表达式如下:

        ?θiJ(θ0,θ1...,θn)

      2)用步长乘以损失函数的梯度,得到当前位置下降的距离,即α?θiJ(θ0,θ1...,θn)对应于前面登山例子中的某一步。

      3)确定是否所有的θi,梯度下降的距离都小于εε,如果小于ε则算法终止,当前所有的θi(i=0,1,...n)即为最终结果。否则进入步骤4.

      4)更新所有的θθ,对于θi,其更新表达式如下。更新完毕后继续转入步骤1.

        θi:=θi?α?θiJ(θ0,θ1...,θn)

例如 : 对房屋的现有x1 = 尺寸 x2 = 邻居

则有h(x) = hθ(x) = θ0 +θ1x1+θ2x2           (θ0 = 0)

= ∑ (n from 1 to n) θixi = θTx;

J(θ) = (?/?Θ(i))(1/2 * hθ(x) -y)^2;

J‘(θ) = [hθ(x) -y)]*x(i);

更新步骤 θ(i) := θ(i) - α (hθ(x) - y)*x(i);

(α为学习速度)

通过不断的迭代更新,减小梯度 直到收敛

在MATLAB下实现

% 设置步长为0.1,f_change为改变前后的y值变化,仅设置了一个退出条件。
syms x;f=x^2;
step=0.1;x=2;k=0;         %设置步长,初始值,迭代记录数
f_change=x^2;             %初始化差值
f_current=x^2;            %计算当前函数值
ezplot(@(x,f)f-x.^2)       %画出函数图像
axis([-2,2,-0.2,3])       %固定坐标轴
hold on
while f_change>0.000000001                %设置条件,两次计算的值之差小于某个数,跳出循环
    x=x-step*2*x;                         %-2*x为梯度反方向,step为步长,!最速下降法!
    f_change = f_current - x^2;           %计算两次函数值之差
    f_current = x^2 ;                     %重新计算当前的函数值
    plot(x,f_current,‘ro‘,‘markersize‘,7) %标记当前的位置
    drawnow;pause(0.2);
    k=k+1;
end
hold off
fprintf(‘在迭代%d次后找到函数最小值为%e,对应的x值为%e\n‘,k,x^2,x)

  

运行结果如图所示:(在octave中实现)  

时间: 2024-08-07 18:38:24

【机器学习】1 监督学习应用与梯度下降的相关文章

机器学习入门:线性回归及梯度下降

机器学习入门:线性回归及梯度下降 本文会讲到: (1)线性回归的定义 (2)单变量线性回归 (3)cost function:评价线性回归是否拟合训练集的方法 (4)梯度下降:解决线性回归的方法之一 (5)feature scaling:加快梯度下降执行速度的方法 (6)多变量线性回归   Linear Regression 注意一句话:多变量线性回归之前必须要Feature Scaling! 方法:线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个

机器学习(一):梯度下降、神经网络、BP神经网络

这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知识.下面是一些笔记概要. 一. 神经网络 神经网络我之前听过无数次,但是没有正儿八经研究过.形象一点来说,神经网络就是人们模仿生物神经元去搭建的一个系统.人们创建它也是为了能解决一些其他方法难以解决的问题. 对于单一的神经元而言,当生物刺激强度达到一定程度,其就会被激发,然后做出一系列的反应.模仿这

Stanford大学机器学习公开课(二):监督学习应用与梯度下降

本课内容: 1.线性回归 2.梯度下降 3.正规方程组 监督学习:告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案 1.线性回归 问题引入:假设有一房屋销售的数据如下: 引入通用符号: m =训练样本数 x =输入变量(特征) y =输出变量(目标变量) (x,y)—一个样本 ith—第i个训练样本=(x(i),y(i)) 本例中:m:数据个数,x:房屋大小,y:价格 监督学习过程: 1) 将训练样本提供给学习算法 2) 算法生成一个输出函数(一般用h表示,成为假设) 3)

机器学习-监督学习应用:梯度下降

回归与梯度下降: 回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归,等等,这个将在后面去讲. 用一个很简单的例子来说明回归,这个例子来自很多的地方,也在很多的open source的软件中看到,比如说weka.大概就是,做一个房屋价值的评估系统,一个房屋的价值来自很多地方,比如说面积.房间的数量(几室几厅).地 段.朝向等等

机器学习最常用优化之一——梯度下降优化算法综述

转自:http://www.dataguru.cn/article-10174-1.html 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法.几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现.但是,它们就像一个黑盒优化器,很难得到它们优缺点的实际解释.这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用. 这篇文章首先介绍梯度下降算法的三种框架,然后介绍它们所存在的

机器学习笔记:线性规划,梯度下降

主要内容来自stanford Andrew Ng视频课程的总结. 讲的非常好,还有相应的习题,课程能够在以下站点搜索到. https://www.coursera.org/ 机器学习的目的是在训练数据的基础上得出一个模型,该模型对于给定的输入x.给出对应的输出y. 用公式表示就是:y = h(x). 注意x表示一维向量,x={x1,x2,x3...}.这里的xi也就是特征(feature),h就是模型. 若输出y是连续值.则是回归预測问题.若y是离散值,则是分类问题.假设给定的训练数据是(输入-

斯坦福大学公开课:监督学习应用,梯度下降

监督学习应用例子:以房屋大小和价格为例,本次采用47个样本. m: training examples,训练样本集 x: "input",variables/features变量,x为输入变量,在本次例子中,表示房屋大小 y: "output", variable/"target" variable,y为输出变量,在本次例子中,表示房屋价格 (x,y): training examples 表示训练样本 监督学习的流程如下(以房子为例): tra

机器学习笔记 1 LMS和梯度下降(批梯度下降) 20170617

# 概念 LMS(least mean square):(最小均方法)通过最小化均方误差来求最佳参数的方法. GD(gradient descent) : (梯度下降法)一种参数更新法则.可以作为LMS的参数更新方法之一. The normal equations : (正则方程式,将在下一篇随笔中介绍)一种参数更新法则.也可以作为LMS的参数更新方法之一. 三者的联系和区别:LMS是一种机器学习算法.但是最小化均方误差的方法不唯一,采用GD或者正则方程式都是方法之一. # 准备样本  必须要先

猪猪机器学习笔记(六)梯度下降和拟牛顿

梯度下降和拟牛顿 作者:樱花猪   摘要:     本文为七月算法(julyedu.com)12月机器学习第六次次课在线笔记.本节课主要介绍了一种在机器学习需要经常使用到的计算方法——梯度下降法并在最后提出了另一种下降法的思路——拟牛顿法.梯度下降法是一个连接理论和计算机计算的桥梁,这种方法通过迭代来逐步完成对于目标函数的演化,将离散和连续有机的结合起来.实际上梯度下降法在许多有关偏微分方程算法中也有所用到,例如水平集.主动轮廓模型等.通过本次课程的学习,我们能够更加具体和感性的理解梯度下降,从