【stanford】梯度、梯度下降,随机梯度下降

转载 2013年12月02日 17:11:45

本文原地址:http://www.cnblogs.com/549294286/archive/2012/12/13/2817204.html


一、梯度gradient

http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6

在标量场f中的一点处存在一个矢量G,该矢量方向为f在该点处变化率最大的方向,其模也等于这个最大变化率的数值,则矢量G称为标量场f的梯度。

向量微积分中,标量场的梯度是一个向量场

标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。

更严格的说,从欧氏空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似。在这个意义上,梯度是雅戈比矩阵的一个特殊情况。

在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率

梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。

一个标量函数\varphi的梯度记为:\nabla \varphi 或 \rm grad \varphi, 其中\nablanabla)表示矢量微分算子

 

二、梯度下降法

http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95

梯度下降法,基于这样的观察:

如果实值函数 F(\mathbf{x}) 在点 \mathbf{a} 处可微且有定义,那么函数 F(\mathbf{x})在 \mathbf{a} 点沿着梯度相反的方向 -\nabla F(\mathbf{a}) 下降最快。因而,如果

\mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

对于 \gamma>0 为一个够小数值时成立,那么 F(\mathbf{a})\geq F(\mathbf{b})

\mathbf{a} 是向量。

考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 \mathbf{x}_0 出发,并考虑如下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得

\mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

因此可得到

F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

如果顺利的话序列 (\mathbf{x}_n) 收敛到期望的极值。注意每次迭代步长 \gamma 可以改变。

 

梯度下降法的缺点是:

  • 靠近极小值时速度减慢。
  • 直线搜索可能会产生一些问题。
  • 可能会'之字型'地下降。

 

三、随机梯度下降法stochastic gradient descent,也叫增量梯度下降

由于梯度下降法收敛速度慢,而随机梯度下降法会快很多

–根据某个单独样例的误差增量计算权值更新,得到近似的梯度下降搜索(随机取一个样例)

–可以看作为每个单独的训练样例定义不同的误差函数

–在迭代所有训练样例时,这些权值更新的序列给出了对于原来误差函数的梯度下降的一个合理近似

–通过使下降速率的值足够小,可以使随机梯度下降以任意程度接近于真实梯度下降

•标准梯度下降和随机梯度下降之间的关键区别

–标准梯度下降是在权值更新前对所有样例汇总误差,而随机梯度下降的权值是通过考查某个训练样例来更新的

–在标准梯度下降中,权值更新的每一步对多个样例求和,需要更多的计算

–标准梯度下降,由于使用真正的梯度,标准梯度下降对于每一次权值更新经常使用比随机梯度下降大的步长

–如果标准误差曲面有多个局部极小值,随机梯度下降有时可能避免陷入这些局部极小值中

Machine Learning(Stanford)| 斯坦福大学机器学习笔记--第一周(5.线性回归的梯度下降)

本博客内容来自Coursera上Andrew Ng老师的机器学习课程的。其实一开始在上课的时候我就在本子上做过一遍笔记,这次在博客上再做一遍是对课程的复习巩固,加深印象。--这篇博客的主要内容是介绍了...
  • m399498400
  • m399498400
  • 2016年09月13日 19:41
  • 1535

Stanford UFLDL教程 梯度检验与高级优化

梯度检验与高级优化 众所周知,反向传播算法很难调试得到正确结果,尤其是当实现程序存在很多难于发现的bug时。举例来说,索引的缺位错误(off-by-one error)会导致只有部分层的权重得到训练...
  • GarfieldEr007
  • GarfieldEr007
  • 2015年12月05日 18:53
  • 395

【stanford C++】——2.C++中函数

1. main()函数 C++程序从main()函数开始执行: int main() { /* ... code to execute ... */ } 按照约定,main函数应该返回...
  • wuxiaoer717
  • wuxiaoer717
  • 2013年07月01日 22:30
  • 1164

Stanford Parser的使用——进行词法语法分析

http://blog.csdn.net/pipisorry/article/details/42976457 stanford-parser的使用 1、到斯坦福官方网站http://nlp...
  • pipisorry
  • pipisorry
  • 2015年01月21日 20:44
  • 11883

Stanford CoreNLP开源项目的3种编译和运行方式[1]

Stanford CoreNLP开源项目的3种编译和运行方式 1.     Stanford CoreNLP简介 Stanford CoreNLP, integrating our NER...
  • jdbc
  • jdbc
  • 2016年01月11日 00:08
  • 1466

[NLP]1.StanfordNLP的安装和初探

简介Stanford CoreNLP提供了一系列自然语言分析工具。它能够给出基本的词形,词性,不管是公司名还是人名等,格式化的日期,时间,量词,并且能够标记句子的结构,语法形式和字词依赖,指明那些名字...
  • android_ruben
  • android_ruben
  • 2017年01月18日 14:10
  • 1710

尝试在PYTHON中调用StanfordNLP,具体代码如下

#from nltk.parse import stanford import os from nltk.parse import stanford #添加stanford环境变量,此处需要手动修改...
  • duskwaitor
  • duskwaitor
  • 2016年02月25日 09:42
  • 3092

Stanford Parser中文句法分析器的使用

Contents 一、使用时注意两点 二、stanford parser 命令行使用 1  处理一个中文的句子 2  词性标注 和 生成 依存关系 3  图形工具界面 三、句法分析树...
  • lihaitao000
  • lihaitao000
  • 2016年06月01日 16:29
  • 5087

中文语料下Stanford CoreNLP开发环境配置和各组件使用例子

********开发环境和组件使用例子************* 1. IntelliJ IDEA中建立maven工程。 2. pom.xml内容: ---------          xm...
  • huxuanlai
  • huxuanlai
  • 2017年03月16日 15:38
  • 2366

用Stanford NER训练自己的NER分类器

官方FAQ世界观:关于训练自己的分类器的文档官方没有~~, 但可以看java doc啊, So总是有办法的; 比如至少可以看看CRFClassifier和NERFeatureFactory这两个类.训...
  • yihuikang
  • yihuikang
  • 2016年11月01日 22:03
  • 2172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【stanford】梯度、梯度下降,随机梯度下降
举报原因:
原因补充:

(最多只允许输入30个字)