在神经网络中,广泛的使用反向传播和梯度下降算法调整神经网络中参数的取值。

梯度下降和学习率:

  假设用 θ 来表示神经网络中的参数, J(θ) 表示在给定参数下训练数据集上损失函数的大小。

  那么整个优化过程就是寻找一个参数θ, 使得J(θ) 的值最小, 也就是求J(θ) 的最小值

  

  损失函数J(θ)的梯度 = ∂ J(θ) / ∂ θ

  此时定义一个学习率 η

  梯度下降法更新参数的公式为: θn+1 = θ- η ( ∂ J(θn) / ∂ θn )

  将这个公式循环的重复下去,θ的值就从高处逐渐向最低处一小步一小步的移动

举个例子:

  使用梯度下降 使得损失函数函数 J(x) = x的值尽量小,  由二次函数图像开口向上可以知道,二次函数最小值为0,

  梯度 ▽ = ∂ J(x) / ∂ x = 2x

  假设初始值为 x= 5, 设置学习率为0.3

  使用梯度下降更新x的值 步骤如下:

  轮数      当前参数x      梯度 * 学习率      更新后参数

  1        5           2*5*0.3 = 3      5-3=2

  2        2          2*2*0.3 = 1.2      2-1.2 = 0.8

  3        0.8         2*0.8*0.3 = 0.48    0.8-0.48 = 0.32

  4        0.32        2*0.32*0.3 = 0.192    0.32-0.192=0.128

  5        0.128          2*0.128*0.3=0.0768   0.128-0.0768=0.0512

  经过五次迭代x从5变成了0.0512, 已经和0非常接近了。

但是梯度下降并不能每次都能获得全局最优解。

  如果学习率过小,可能会导致陷入局部最优解的情况。如图:

  如果学习率过大,很可能在最优解两侧来回回荡,永远也到不了最低点。

    

举个例子:

  使用梯度下降 使得损失函数函数 J(x) = x的值尽量小,  由二次函数图像开口向上可以知道,二次函数最小值为0,

  梯度 ▽ = ∂ J(x) / ∂ x = 2x

  假设初始值为 x= 5, 设置学习率为 1

  使用梯度下降更新x的值 步骤如下:

  轮数      当前参数x      梯度 * 学习率      更新后参数

  1        5           2*5*1= 10      5-10 = -5

  2        -5          2*-5*1 =-10     -5+10 = 5

继续下去他仍会来回摆荡,永远无法收敛

可见, 学习率过大或者过小都不好。

tensorflow为我们提供了一种灵活的学习率设置方式----指数衰减: tf.train.exponential_decy函数

  每一轮的学习率 = 学习率 * 衰减系数^(global_steps/decay_steps)

  随着步数的增加,学习率在变小,并且步数越多,变小的速度越慢

  learning_rate = tf.train.exponential_decay(学习率, global_step, decay_step, 衰减系数,staircase=True)

    global_step 是当前已经执行多少步了

    decay_step 是下降速度,指的是 每隔多少步,学习率指数增长一个

  例如:

     tf.train.exponential_decay(0.1, global_step, 100, 0.96,staircase=True)

    初始学习率0.1 每隔100步 学习率乘以0.96

    stairecase 为true的时候,以阶梯方式下降,  为False时候 以平滑曲线下降

  

机器学习之路: 深度学习 tensorflow 神经网络优化算法 学习率的设置的更多相关文章

  1. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  2. 深度学习---tensorflow简介

    个core可以有不同的代码路径.对于反向传播算法来说,基本计算就是矩阵向量乘法,对一个向量应用激活函数这样的向量化指令,而不像在传统的代码里会有很多if-else这样的逻辑判断,所以使用GPU加速非常 ...

  3. 吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TENSORFLOW框架的图像分类与目标跟踪报告(续四)

    2. 神经网络的搭建以及迁移学习的测试 7.项目总结 通过本次水果图片卷积池化全连接试验分类项目的实践,我对卷积.池化.全连接等相关的理论的理解更加全面和清晰了.试验主要采用python高级编程语言的 ...

  4. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  5. AI学习---深度学习&TensorFlow安装

    深度学习   深度学习学习目标: 1. TensorFlow框架的使用 2. 数据读取(解决大数据下的IO操作) + 神经网络基础 3. 卷积神经网络的学习 + 验证码识别的案例   机器学习与深度学 ...

  6. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  7. 深度学习Tensorflow相关书籍推荐和PDF下载

    深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...

  8. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  9. 神经网络优化算法:梯度下降法、Momentum、RMSprop和Adam

    最近回顾神经网络的知识,简单做一些整理,归档一下神经网络优化算法的知识.关于神经网络的优化,吴恩达的深度学习课程讲解得非常通俗易懂,有需要的可以去学习一下,本人只是对课程知识点做一个总结.吴恩达的深度 ...

随机推荐

  1. POJ 1185 炮兵阵地 (状态压缩DP)

    题目链接 Description 司令部的将军们打算在NM的网格地图上部署他们的炮兵部队.一个NM的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用& ...

  2. summernote 文本编辑器使用时,选择上传图片、链接、录像时,弹出的对话框被遮挡住

    更多内容推荐微信公众号,欢迎关注: 即问题如下链接内的情况: http://bbs.csdn.net/topics/392004332 这个一般属于CSS中样式出现了问题,可以在点开的时候,F12查看 ...

  3. fonts.googleapis.com 字体报错问题解决。

    更多内容推荐微信公众号,欢迎关注: 无法加载这些字体是因为,google的网站在国内无法访问造成的.在AdminLTE.css 和AdminLte.less中有如下内容: @import url(ht ...

  4. v4l2API无法执行VIDIOC_DQBUF的问题

    一.PC虚拟机下ubuntu14.04.1环境下 源文件:show.c  USB摄像头格式yuyv: 申请缓冲帧数2,分辨率640*480  阻塞无法执行 申请缓冲帧数4,分辨率640*480  阻塞 ...

  5. App测试需注意

    APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1安装和卸载 ●应用是否可以在iOS不同系统版本或Android不同系统版本 ...

  6. imperva 默认策略添加例外

    创建违规访问 检查违规的告警类型 假如客户的这个目录下真的有这个文件,而且客户非常明确这是一个正常且安全的东西怎么办?我该如何的将它添加到例外? 添加例外的步骤: 再次构造违规的请求: 默认策略添加例 ...

  7. Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.

    在设置请求头的时候报这个Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPE ...

  8. MongoDB安全:创建第1个、第2个、第3个用户

    Windows 10家庭中文版,MongoDB3.6.3, 前言 使用mongod命令基于某个空白文件夹(存放数据)启动MongoDB服务器时,要是没有使用--auth选项,启动后,任何客户端是可以无 ...

  9. python 写入execl记录

    记录代码中关于写execl的操作 # 创建execl workbook = xlwt.Workbook(encoding='utf8') # 创建样式实例 style = xlwt.XFStyle() ...

  10. 使用DOS访问数据库详解

    今天突发奇想,想是否可以用DOS命令来操作本地数据库或者连接其他外地数据库,网上搜了很多教程比较繁琐,自己想写一篇文章详细叙述一下,也为以后复习做点备份. 工具: 电脑 win7 64bit MySQ ...