深度学习-梯度下降(gradient descent)算法概念

76人阅读 评论(0) 收藏 举报
分类:

学习彭亮《深度学习进阶:算法与应用》课程


背景

Mnist dataset:THE MNIST DATABASE of handwritten digits
中包含60000张28*28的手写数字图片作为训练集,10000张图片作为测试集。
这里写图片描述
x: 训练输入, 28*28 = 784d向量, 每个值代表一个灰度图片中的一个像素值
y=y(x): 10d向量

假设输入的某个图片是数字6,则理想输出: y(x)=(0,0,0,0,0,0,1,0,0,0)T


梯度下降算法思想

为了便于理解,下面简化为只有一个变量:

一个变量的情况
那么梯度下降如何找到合适的x使得y达到最低呢?
思路:假设一开始X在曲线点Xp处
(1)对方程上的点Xp求导,即该点切线的斜率。
(2)再让Xp减去它的斜率,此时斜率是正的,Xp-斜率会使Xp减小,即Xp往左边走,此时J(x)会变小
(3)再次求导,Xp-斜率,不断更新Xp,一直循环,直至找到最低点

假设有两个变量:
这里写图片描述
.假设刚开始在最高点,需要走一步(步长为n)=>对两个变量求偏导

梯度下降法的更新方程

这里写图片描述
wk=wk-C对wk求偏导*学习率
偏向也类似,这样不断更新,找到最合适的w、b

注意

  • 可能会陷入局部最优,而非全局最优
  • 前提是目标函数要是凸函数Convex
  • Learning rate自动会减小

实现

分析:
已知:训练集60000张图片信息
目标:训练出神经网络的每一个连接的权值w和偏向b,最终对测试集的图片进行识别

建立目标函数:Cost function (其他叫法:loss function, objective function)
这里写图片描述
其中:
- C: cost 及目标函数
- w: weight 权重
- b: bias 偏向
- n: 训练数据集实例个数,这里有60000张训练集图片,所以n为60000
- x: 输入,这里 28*28=784的列向量
- a: 计算出的输出值 (当x是输入时)
- ||v||: 向量的length function

**注:**C(w,b) 越小越好,输出的预测值和真实值差别越小

目标: 最小化C(w,b),找到最好的w和b

最小化问题可以用梯度下降解决(gradient descent)

抽象为:C(v) v有两个变量v1, v2(即此处的权值和偏向)
这里写图片描述
C有两个变量轴v1,v2高度表示C的值 => 转化为找到这个曲面的最小值
此处只包含两个变量,可以用微积分解决(求导,找出最小值点),但如果v包含的变量过多,则无法用微积分解决,就需要通过梯度下降算法解决。

定义C的变化量(可推广到更多维):
这里写图片描述

建立一个表示方法,用v表示(v1,v2)T
这里写图片描述

目标函数的梯度向量(gradient vector):
这里写图片描述

以上三个公式推出:
这里写图片描述(*)
设定:
这里写图片描述(n为学习率)
带入公式(*)得:
这里写图片描述 <=0
这里写图片描述<=0所以C不断的减小
这里写图片描述

回顾目标函数:
这里写图片描述,这里是一个平均的cost,即60000张图片计算后累加再除于2n
更新方程:
这里写图片描述

这样就有一个问题:对于每个训练实例X,都要计算梯度向量(gradient vector),如果训练集过大,会花费很长时间来学习。

所以,一种变种为:随机梯度下降算法


随机梯度下降算法 (stochastic gradient descent)

基本思想:

从所有训练实例中取一个小的采样(sample): X1,X2,…,Xm (mini-batch)来估计 ∇C, 大大提高学习速度

举例:选举调查

如果样本够大,还是能得到一个比较近似的值:假设取了m个(共n个样本)
这里写图片描述
这里写图片描述
带入更新方程:
这里写图片描述
然后,重新选择一个mini-batch用来训练,直到用完所有的训练实例,一轮(epoch)完成,在循环往复,对w和b进行更新。


查看评论

深度学习—加快梯度下降收敛速度(一):mini-batch、Stochastic gradient descent

在深层神经网络那篇博客中讲了,深层神经网络的局部最优解问题,深层神经网络中存在局部极小点的可能性比较小,大部分是鞍点。因为鞍面上的梯度接近于0,在鞍面上行走是非常缓慢的。因此,必须想办法加速收敛速度,...
  • hdg34jk
  • hdg34jk
  • 2017-12-21 15:14:17
  • 453

深度学习优化函数详解(1)-- Gradient Descent 梯度下降法

深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随...
  • tsyccnh
  • tsyccnh
  • 2017-07-23 20:27:37
  • 2615

机器学习入门系列04,Gradient Descent(梯度下降法)

什么是梯度下降法?学习速率的引入;如何调整学习速率;Adagrad算法介绍;用泰勒展开式对梯度下降法进行数学理论支持...
  • zyq522376829
  • zyq522376829
  • 2017-03-27 00:35:45
  • 8568

梯度下降(Gradient Descent)简析及matlab实现

给定训练集,方便起见,我们用二维点表示我们的训练数据集         上图中的每一横行代表一对儿平面上的点,我们要找到一条线,来最好的拟合这些点的趋向。 假设这条线的形式为y = w0+w1*x1...
  • zsfcg
  • zsfcg
  • 2014-03-21 20:51:06
  • 8362

[机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

本文介绍机器学习中重要的概念:梯度和梯度下降法,这是我们在学习MachineLearning算法时的核心概念之一,其实也就是我们在大学本科高等数学中的基础概念。...
  • walilk
  • walilk
  • 2016-03-25 13:34:35
  • 23019

(2017 ICML)Learning to learn without gradient descent by gradient descent笔记

无需梯度下降的梯度下降,学会一个会学习的模型 论文作者:Yutian Chen, Matthew Hoffman, Sergio Gomez, Misha Denil, Timothy Li...
  • alva_bobo
  • alva_bobo
  • 2017-11-16 16:28:33
  • 200

深度学习【10】利用LSTM学习梯度下降法等优化方法:Learning to learn by gradient descent by gradient descent

  • linmingan
  • linmingan
  • 2016-07-04 14:48:00
  • 5403

梯度下降法(Gradient Descent)

第一次写博客,好激动啊,哈哈。之前看了许多东西但经常是当时花了好大功夫懂了,但过一阵子却又忘了。现在终于决定追随大牛们的脚步,试着把学到的东西总结出来,一方面梳理思路,另一方面也作为备忘。接触机器学习...
  • isMarvellous
  • isMarvellous
  • 2016-04-08 18:20:09
  • 6505

数字图像处理中的gradient descent (梯度下降算法)应用浅谈

最近在学习神经元追踪这一个课题,在追踪中涉及到一个重要的算法就是这个梯度下降算法。 其实,梯度下降算法数学本质上是一个求解最优解的一个方法,但应用到数学图像处理中的话就有了他的物理意义,即从起始点到...
  • HNU_wang_chao
  • HNU_wang_chao
  • 2017-09-04 08:28:47
  • 387

可扩展机器学习——梯度下降(Gradient Descent)

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误...
  • google19890102
  • google19890102
  • 2015-12-12 17:58:03
  • 3735
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 30万+
    积分: 4331
    排名: 8698
    联系方式

    博文主要参考网上资料,视频笔记,结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。


    博客专栏
    最新评论