梯度下降法和随机梯度下降法

1. 梯度

  在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。

  那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

2.梯度下降法

       什么是梯度下降法呢/

举个例子,我们在下山的时候,如果山中浓雾太大,而且我们有不清楚路线,那我们可以以当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。

梯度下降法的过程与这个例子很相似,一个函数可微分。这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数之变化最快的方向,所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。

什么是梯度:

        一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。

 

梯度下降法详解:

       对于一个多元函数j(x),在x点处做线性逼近(求一阶导数)

        j(x+x0)=j(x)+Δ'(x)*øj(x0)+o(无穷小),其中øj(x0)为j(x0)的倒数;

对于一个函数做了线性逼近,可以判断在x这个点的增加方向和减小方向;虽然做线线逼近不能告诉我们这个函数的极值点在什么地方,但能告诉我们极值点在什么方向,因此我们可以根据这个方向(即下山的方向)选取一个较小的步长(学习率)来沿着这个方向走下去,找到极值点。

      J是关于x的一个函数,我们当前所处的位置为x0点,要从这个点走到J的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是α,走完这个段步长,就到达了x1这个点!

为什么要加一个负号, 
梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号
梯度下降法的难点:
(1)梯度的计算
在机器学习中目标函数经常是求和函数的形式,因此求和函数的求导很费时(样本数量多)
(2)学习率的选择
学习率过大,会出现震荡不收敛(找不到极值点),过小,收敛速度较慢。

几种梯度下降法介绍

批量梯度下降法(Batch Gradient Descent)

    批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,这个方法对应于前面3.3.1的线性回归的梯度下降算法,也就是说3.3.1的梯度下降算法就是批量梯度下降法。  

 

    由于我们有m个样本,这里求梯度的时候就用了所有m个样本的梯度数据。

随机梯度下降法(Stochastic Gradient Descent)

    随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:

   

 

    随机梯度下降法,和4.1的批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

    那么,有没有一个中庸的办法能够结合两种方法的优点呢?有!这就是4.3的小批量梯度下降法。

小批量梯度下降法(Mini-batch Gradient Descent)

  小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。对应的更新公式是:

   

下面谈谈随机梯度下降法;

        这种方法主要是解决梯度计算的问题,上面谈到梯度计算很困难就是因为样本大那随机梯度下降法只计算一个样本;

简要谈一谈鞍点,如图

 

鞍点(saddle point)这个词来自 z=x^2-y^2的图形,在x轴方向向上曲,在y轴方向向下曲,像马鞍,鞍点为(0,0)。

拥有两个以上参数的函数。它的曲面在鞍点好像一个马鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高线图里,一般来说,当两个等高线圈圈相交叉的地点,就是鞍点。

由于只是初学,简要了解一下什么是梯度下降法;以后在有机会再深入探讨;

本文参考:

1.  鞍点参考原文:https://blog.csdn.net/baidu_27643275/article/details/79250537 

2.梯度下降参考原文:https://www.cnblogs.com/pinard/p/5970503.html

转载于:https://www.cnblogs.com/fcfc940503/p/10959775.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一张图看程序媛阿源的2021个人年度流水账

大家好&#xff0c;我是若川。持续组织了5个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。本文来自读者阿源小…

案例研究:设计与方法_如何进行1小时的重新设计(案例研究)

案例研究:设计与方法速度设计简介 (Intro to Speed Designing) I’ve been an advocate of speed redesigning technique for a while. The idea is simple — decrease the hand-eye lag and make super quick decisions, seemingly without thinking. The logic behind it is…

图文并茂重新认识下递归

大家好&#xff0c;我是若川。持续组织了5个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。对于大部分前端(包…

《C和指针》读书笔记

看过了经典的K&R C&#xff0c;又看了这本Pointers on C&#xff0c;温习了C语言的基本语法。 在重温过程中&#xff0c;感觉需要重点把握的知识是指针、结构和动态内存分配。 这对今后的算法和操作系统方面的研究学习很有帮助。 3.2.3 声明指针int* b, c, d;本以为这条语句…

FPGA设计者的5项基本功

记得《佟林传》里&#xff0c;佟林练的基本功是“绕大树、解皮绳”&#xff0c;然后才练成了什么“鬼影随行、柳叶绵丝掌”。 在我看来&#xff0c;成为一名说得过去的FPGA设计者&#xff0c;需要练好5项基本功&#xff1a;仿真、综合、时序分析、调试、验证。 需要强调的一点是…

unity 全息交互ui_UI向3D投影全息界面的连续发展

unity 全息交互uiThe user interface has been natural in its evolution and strategically heading towards the 3D-projection holographic interface (3D-PHI) era.用户界面在其发展过程中一直很自然&#xff0c;并且在战略上正朝着3D投影全息界面( 3D-PHI )时代迈进。 Si…

开发工具 快捷键整理

快捷键大全 JAVA 开发工具 MyEclipse -------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类…

前端构建新世代,Esbuild 原来还能这么玩!

大家好&#xff0c;我是若川。持续组织了5个月源码共读活动&#xff0c;感兴趣的可以点此加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。今天分享一篇esbui…

大三下学期十四周总结

在小组的学习方面&#xff0c;这周主要是对微信小程序的学习。对JSON格式请求在Spring boot与小程序之间的交互有了一些了解。对微信的接口wx.request、wx.uploadFile、wx.chooseImage的接口的使用。微信开发后台传过来的响应数据如果不是标准的json格式&#xff0c;需要在小程…

平面设计师和ui设计师_平面设计师为什么要享受所有乐趣?

平面设计师和ui设计师Graphic designers are pretty cool. We have to admit that. Be it their dressing style, their attitude and most importantly their enviable gadgets. Large Mac monitor, wacom tablet, drawing sets, swatchbooks , iPad pro with pencil, humungo…

转:Xcode下的GDB调试命令

Xcode的调试器为用户提供了一个GDB的图形化界面&#xff0c;GDB是GNU组织的开放源代码调试器。您可以在Xcode的图形界面里做任何事情&#xff1b;但是&#xff0c;如果您需要您可以在命令行里使用GDB的命令&#xff0c;且gdb可以在终端运行&#xff0c;也可以在Xcode下的控制台…

web表单设计:点石成金_设计复杂的用户表单:12个UX最佳实践

web表单设计:点石成金It’s been a few years that I’ve been taking interest in designing complex user forms, where a lot of information is requested from users. Here are a few industries where you regularly find such flows:几年来&#xff0c;我一直对设计复杂…

跨平台开发框架到底哪家强?5款主流框架横向对比!

跨平台开发框架到底哪家强&#xff1f;目前市场上有多个专业做跨平台开发的框架&#xff0c;那么对开发者来说究竟哪一个框架更符合自己的需求呢&#xff1f;笔者特地总结对比了一下不同框架的特性。国内外笔者选择了一共5个主流的测评对象&#xff0c;分别是RN&#xff0c;Flu…

【一句日历】2019年6月

【2019年6月1日儿童节星期六】 人们在协商&#xff0c;解决和处理各种状况时&#xff0c;若要获得圆满的结果&#xff0c;平静的心和自我控制能力必不可少。任何人都明白。如果我们不能很好地控制自我&#xff0c;反而让焦躁和嗔怒干扰了我们&#xff0c;那么我们的工作不再具有…

Android学习摘要一之Android历史

Google与你998年9月7日创立&#xff0c;经过十几年在搜索引擎方面的精耕细作&#xff0c;成为全球互联网巨头&#xff0c;尤其在地图搜索的应用更是引人注目。Google与2007年11月5日宣布基于Linux平台的开源手机操作系统&#xff0c;名称为Android&#xff0c;中文译为“机器人…

c#创建web应用程序_创建Web应用程序图标集的6个步骤

c#创建web应用程序I am not great at creating logos or icons, mainly because of the lack of practice. So when I was tasked to create an unique icon set for our web app, I wasn’t confident that things will turn out right. After researching effective and rele…

基于pnpm + lerna + typescript的最佳项目实践 - 理论篇

本文来自作者金虹桥程序员 投稿原文链接&#xff1a;https://juejin.cn/post/7043998041786810398本系列文章分为两篇&#xff1a;理论篇和实践篇 理论篇&#xff1a;介绍pnpm&#xff08;pnpm的特点、解决的问题等&#xff09;、lerna&#xff08;lerna的常用命令&#xff09;…

nginx 多进程 + io多路复用 实现高并发

一、nginx 高并发原理 简单介绍&#xff1a;nginx 采用的是多进程&#xff08;单线程&#xff09; io多路复用(epoll)模型 实现高并发 二、nginx 多进程 启动nginx解析初始化配置文件后会 创建&#xff08;fork&#xff09;一个master进程 之后 这个进程会退出 master 进程会…

转载:程序员从初级到中级10个秘诀

Justin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate developer》&#xff0c;为我们分享如何才能完成程序员从初级到中级的蜕变&#xff0c;现将中文译文转载于此&#xff0c;供大家借鉴。 在一封与TechRepublic会员交流的邮件当中&…

ux设计工具_UX设计中的工具和实用主义

ux设计工具There’s a zillion tools for User Experience and User Interface Design. Don’t take my word for it: a simple Google search for “what are the best tools for wireframing” (to take just one aspect of UX) leads you to endless pages of “The 20 best…