曾经学习machine learning,在regression这一节,对求解最优化问题的梯度下降方法,理解总是处于字面意义上的生吞活剥。

对梯度的概念感觉费解?到底是标量还是矢量?为什么沿着负梯度方向函数下降最快?想清楚的回答这些问题。还真须要点探究精神。

我查阅了一些经典的资料(包含wiki百科),另一些个人的博客,比方

p=2573">http://www.codelast.com/?p=2573,http://blog.csdn.net/xmu_jupiter/article/details/22220987,都对梯度下降概念有个大概的直观解释,參照这些资料中的内容,再结合个人的体会,姑且谈谈.

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]梯度下降方法的一些理解的更多相关文章

  1. 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)

    https://blog.csdn.net/u012328159/article/details/80252012 我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种 ...

  2. batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)

    批量梯度下降是一种对参数的update进行累积,然后批量更新的一种方式.用于在已知整个训练集时的一种训练方式,但对于大规模数据并不合适. 随机梯度下降是一种对参数随着样本训练,一个一个的及时updat ...

  3. [Hinton] Neural Networks for Machine Learning - Basic

    Link: Neural Networks for Machine Learning - 多伦多大学 Link: Hinton的CSC321课程笔记1 Link: Hinton的CSC321课程笔记2 ...

  4. [Hinton] Neural Networks for Machine Learning - RNN

    Link: Neural Networks for Machine Learning - 多伦多大学 Link: Hinton的CSC321课程笔记 补充: 参见cs231n 2017版本,ppt写得 ...

  5. Machine Learning in Action(4) Logistic Regression

    从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为它开始要建立价值函数(cost function),接着优化价值函数求出权重,然后测试验证.这整套的流程是机器学习必经环节.今天要学习的话题 ...

  6. Federated Machine Learning: Concept and Applications

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Qiang Yang, Yang Liu, Tianjian Chen, and Yongxin Tong. 2019. Federate ...

  7. Machine Learning - 第5周(Neural Networks: Learning)

    The Neural Network is one of the most powerful learning algorithms (when a linear classifier doesn't ...

  8. 采用梯度下降优化器(Gradient Descent optimizer)结合禁忌搜索(Tabu Search)求解矩阵的全部特征值和特征向量

    [前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征 ...

  9. 今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)

    转载请注明出处:http://www.cnblogs.com/xbinworld/p/4265530.html 这一篇是整个第五章的精华了,会重点介绍一下Neural Networks的训练方法——反 ...

随机推荐

  1. mkfs

    mkfs 命令  linux格式化磁盘命令 指令:mkfs 使用权限 : 超级使用者 使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks ...

  2. 如何用NAnt管理单文件程序仓库

    因为学习C#各种特性和使用方法的需要,常常会编写和收集一些例子代码.一段时间之后,这种代码的数量就增加到无法通过简单粗暴的方式进行管理了.采用NAnt进行管理是一个不错的选择,虽然部分特性只有MSBu ...

  3. T-SQL语句2

    一.修改表 1.alter table 语句 alter table database_name,table_name,column_name,type_name//database_name指数据库 ...

  4. ddmlib问题总结——同步获取设备信息

    通过IDevice.getProperty(String name)得到响应的设备属性.在实际的使用过程中发现,我的manufacturer总是获取不到,为null(获取代码如下),而剩下的属性都可以 ...

  5. Spring AOP实现原理-动态代理

    目录 代理模式 静态代理 动态代理 代理模式 我们知道,Spring AOP的主要作用就是不通过修改源代码的方式.将非核心功能代码织入来实现对方法的增强.那么Spring AOP的底层如何实现对方法的 ...

  6. RocketMQ 部署

    1. 下载 下载RocketMQwget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3 ...

  7. ref:spring配置数据库方式

    ref:https://blog.csdn.net/alsyuan/article/details/73239240 1.使用org.springframework.jdbc.datasource.D ...

  8. 001.VNC介绍

    一 VNC介绍 VNC 服务是一个自由开源软件,采用RFB通信协议.RFB ("remote 帧缓存 ") 是一个远程图形用户的简单协议,因为它工作在帧缓存级别上,所以它可以应用于 ...

  9. Linux设备驱动之USB

    Linux驱动框架分析(一)        事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的 ...

  10. react初始化阶段

    初始化阶段可以使用的函数:getDefaultProps:只调用一次,实例之间共享引用.只有在组件的第一个实例被初始化的时候,才会调用他,然后react会把这个函数的返回结果保存起来,从第二个实例开始 ...