[LNU.Machine Learning.Question.1]梯度下降方法的一些理解
曾经学习machine learning,在regression这一节,对求解最优化问题的梯度下降方法,理解总是处于字面意义上的生吞活剥。
对梯度的概念感觉费解?到底是标量还是矢量?为什么沿着负梯度方向函数下降最快?想清楚的回答这些问题。还真须要点探究精神。
我查阅了一些经典的资料(包含wiki百科),另一些个人的博客,比方 p=2573">http://www.codelast.com/?p=2573
1.为什么在多元函数自变量的研究中引入方向?
在自变量为一维的情况下,也就是自变量能够视为一个标量,此时,一个实数就能够代表它了。这个时候,假设要改变自变量的值,则其要么减小,要么添加。也就是“非左即右“。
所以,说到“自变量在某个方向上移动”这个概念的时候,它并非十分明显;而在自变量为n(n≥2)维的情况下。这个概念就实用了起来:假设自变量X为3维的,即每个X是(x1, x2, x3)这种一个点,当中x1,x2和x3各自是一个实数,即标量。
那么,假设要改变X。即将一个点移动到还有一个点,你怎么移动?能够选择的方法太多了,比如。我们能够令x1。x2不变,仅使x3改变,也能够令x1,x3不变。仅使x2改变。等等。这些做法也就使得我们有了”方向“的概念。由于在3维空间中,一个点移动到还有一个点,并非像一维情况下那样“非左即右”的。而是有“方向”的。在这种情况下,找到一个合适的”方向“,使得从一个点移动到还有一个点的时候。函数值的改变最符合我们预定的要求(比如。函数值要减小到什么程度),就变得十分有必要了。
2.为什么是梯度下降(Gradient Descent)
依据维基百科的定义,假设实值函数
在点
处可微且有定义,那么函数
在
点沿着梯度相反(什么是梯度?这也要问?)的方向
下降最快。因而我们在回归所导出的优化问题中採用梯度下降的方法来寻找最长处问题
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1NnRvdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3.那么。为什么方向
下降最快?
爱问为什么的学生死得快(
).解释这一问题,还须要用到Taylor展开,回顾:
在梯度的概念下。这个式子能够进一步化为:
(a)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1NnRvdA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">:代表第k个点的自变量(一个向量)。
d:单位方向(一个向量)。即 |d|=1。
:步长(一个实数)。
:目标函数在Xk这一点的梯度(一个向量)。
:α的高阶无穷小。
在(a)式中,能够忽略不计。
所谓最速下降,即意味着
也就是说希望(a)式取最小,即觉得最小,而
是向量内积的形式(如果向量d与负梯度
的夹角为θ):
(b)
(b)式取最小当且仅当\theta=0,此时方向向量d(自变量的变化方向)取负梯度方向,这个方向就是梯度变化最大的方向(负变化最小,始终要求方向的概念在脑海中)。
4.几何解释
以下图片演示样例了这一过程,这里如果 F 定义在平面上,而且函数图像是一个碗形。
蓝色的曲线是等高线(水平集)。即函数 F 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。
沿着梯度下降方向,将终于到达碗底,即函数 F 值最小的点
![]()
梯度下降法几何解释:
因为我们的任务是求得经验损失函数的最小值。所以上图的过程实际上是一个“下坡”的过程。
在每个点上。我们希望往下走一步(如果一步为固定值0.5米),使得下降的高度最大,那么我们就要选择坡度变化率最大的方向往下走。这个方向就是经验损失函数在这一点梯度的反方向。
每走一步,我们都要又一次计算函数在当前点的梯度,然后选择梯度的反方向作为走下去的方向。随着每一步迭代,梯度不断地减小,到最后减小为零。
这就是为什么叫“梯度下降法”。
先讲到这里。敲符号、磊代码太累......
在此,向Orange先生、learnhard、wiki表示由衷的感谢
[LNU.Machine Learning.Question.1]梯度下降方法的一些理解的更多相关文章
- 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)
https://blog.csdn.net/u012328159/article/details/80252012 我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种 ...
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
批量梯度下降是一种对参数的update进行累积,然后批量更新的一种方式.用于在已知整个训练集时的一种训练方式,但对于大规模数据并不合适. 随机梯度下降是一种对参数随着样本训练,一个一个的及时updat ...
- [Hinton] Neural Networks for Machine Learning - Basic
Link: Neural Networks for Machine Learning - 多伦多大学 Link: Hinton的CSC321课程笔记1 Link: Hinton的CSC321课程笔记2 ...
- [Hinton] Neural Networks for Machine Learning - RNN
Link: Neural Networks for Machine Learning - 多伦多大学 Link: Hinton的CSC321课程笔记 补充: 参见cs231n 2017版本,ppt写得 ...
- Machine Learning in Action(4) Logistic Regression
从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为它开始要建立价值函数(cost function),接着优化价值函数求出权重,然后测试验证.这整套的流程是机器学习必经环节.今天要学习的话题 ...
- Federated Machine Learning: Concept and Applications
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Qiang Yang, Yang Liu, Tianjian Chen, and Yongxin Tong. 2019. Federate ...
- Machine Learning - 第5周(Neural Networks: Learning)
The Neural Network is one of the most powerful learning algorithms (when a linear classifier doesn't ...
- 采用梯度下降优化器(Gradient Descent optimizer)结合禁忌搜索(Tabu Search)求解矩阵的全部特征值和特征向量
[前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征 ...
- 今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)
转载请注明出处:http://www.cnblogs.com/xbinworld/p/4265530.html 这一篇是整个第五章的精华了,会重点介绍一下Neural Networks的训练方法——反 ...
随机推荐
- express中间件代理实现跨域
前端代码 var xhr = new XMLHttpRequest(); xhr.open('post', 'http://localhost:3000', true); xhr.onreadysta ...
- JS模块化编程(二):require.js基本用法
require.config() 接受一个配置对象 常用属性: paths: shim: 配置不兼容的模块 baseUrl: 引用模块的文件基目录
- .NetCore 下使用多个DbContext
一个项目中使用多个DbContext 或者种数据库的多个DbContext 业务需要 单个DbContext使用不需要给出说明 1.dotnet ef migrations add migration ...
- hdu 1213 求连通分量(并查集模板题)
求连通分量 Sample Input2 //T5 3 //n m1 2// u v2 34 5 5 12 5 Sample Output24 # include <iostream> # ...
- CentOS7.x使用overlay文件系统
https://www.cnblogs.com/yufeng218/p/8370670.html http://www.cnblogs.com/lehuoxiong/p/9908118.html ht ...
- JMS(Java消息服务)
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM:指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来 ...
- php 会话控制(禁用cookie后session为什么会失效?)
首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...
- sorted()排序详解
sorted()排序详解 http://wiki.python.org/moin/HowTo/Sorting?highlight=%28howto%29#The_Old_Way_Using_t ...
- 019.Zabbix的Trigger及相关函数
一 告警简介 告警指将达到某一个阀值事件的消息发送给用户,让用户在事件发生的时候即可知道监控项处于不正常状态,从而采取相应的措施.在Zabbix中,高进是由一系列的流程组成,首先是触发器达到阀值,接下 ...
- linux下mysql操作命令集合
转载:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/18/2216279.html 1.linux下启动mysql的命令:mysq ...