曾经学习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. 关于oracle分组排序取值的问题

    按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FE ...

  2. TPCC-MySQL安装、使用及结果解读

    tpcc-mysql用于MySQL基准测试,percona基于TPC-C(下面简写成TPCC)衍生出来的产品.下面对tpcc-mysql进行安装然后使用,最后结果解读,安装very easy,let ...

  3. MVC底层原理

    窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时 ...

  4. forEach的坑

    使用js里的forEach来遍历数组的时候需要注意的是:break,return语句不能使其中断,它还是会继续遍历完数组的每一个元素 错误代码: function nameExit(name){ da ...

  5. Ubuntu 18.04 上设置桌面程序开机自启动

    需求 在新安装的 Ubuntu 18.04 系统上,将有些不可描述的程序开机之后自动启动 Startup Applications Preferences 打开 Startup Application ...

  6. sqlite读写

    #coding=utf-8 import sqlite3 import os #创建数据库和游标 if os.path.exists(' test.db'): conn=sqlite3.connect ...

  7. 硬盘 不属于Rom RAM

    是外置存储器, 不是ROM也不算RAM,rom是固化系统基本程序,如电脑的bios,ram是电脑的内存,平常说几个G内存就是指的RAM

  8. 每日踩坑 2018-11-26 MVC Razor ActionLink 生成的URL中多生成了一个参数 ?length=n

    RouteConfig 的路由注册如下: routes.MapRoute( name: "Default", url: "{controller}/{action}&qu ...

  9. BZOJ.5248.[九省联考2018]一双木棋chess(对抗搜索 记忆化)

    BZOJ 洛谷P4363 [Update] 19.2.9 重做了遍,感觉之前写的有点扯= = 首先棋子的放置情况是阶梯状的. 其次,无论已经放棋子的格子上哪些是黑棋子哪些是白棋子,之前得分如何,两人在 ...

  10. Gunicorn设计部分的翻译

    Design 关于Gunicorn架构的简要描述. Server Model Gunicorn是基于pre-fork(预启动,提前fork)的工作模式.这就意味着Gunicorn是由一个主进程来管理这 ...