梯度下降法

前提:固定学习率,两个函数和三个变量组成

函数1:待优化函数f(x);

函数2:待优化函数f(x)的导数g(x);

变量x:函数中的变量,优化过程中会不断变化,直到它找到最小值;

变量grad:变量x点处的梯度值;

变量step:表示沿着梯度下降方法行进的步长,也被称为学习率(LearningRate),优化过程中固定不变。

梯度下降(Gradient Descent)代码:

 1 #coding:utf-8
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 #定义梯度下降法
 5 def gd(x_start,step,g):
 6     x=x_start
 7     for i in range(20):
 8         grad=g(x)
 9         x-=grad*step  #x=x-grad*step
10         print('[epoch {0} ] grad={1}, x={2}'.format(i,grad, x))
11         if abs(grad) < 1e-6:
12             break;
13     return x
14         #解释
15 #定义待优化函数
16 def f(x):
17     return x*x-2*x+1
18 #定义待优化函数的导数
19 def g(x):
20     return 2*x-2
21 #可视化待优化函数
22 x=np.linspace(-5,7,100)
23 y=f(x)
24 plt.plot(x,y)
25 plt.show()
26 #实现梯度下降法
27 gd(5,0.1,g)
28
29 #print('{0} {1} {2}'.format('epoch', 'grad','x'))
30 #epoch grad x

运行结果:

分析:从抛物线看出当x=1是函数的最小值点。

[epoch 0 ] grad=8, x=4.2    #epoch0, grad=2*5-2=8, x=5-grad*0.1=4.2
[epoch 1 ] grad=6.4, x=3.56   #epoch1, grad=2*4.2-2=6.4, x=4.2-grad*0.1=3.56
[epoch 2 ] grad=5.12, x=3.048
[epoch 3 ] grad=4.096, x=2.6384
[epoch 4 ] grad=3.2767999999999997, x=2.31072
[epoch 5 ] grad=2.6214399999999998, x=2.0485759999999997
[epoch 6 ] grad=2.0971519999999995, x=1.8388607999999997
[epoch 7 ] grad=1.6777215999999995, x=1.6710886399999998
[epoch 8 ] grad=1.3421772799999996, x=1.536870912
[epoch 9 ] grad=1.0737418239999998, x=1.4294967295999998
[epoch 10 ] grad=0.8589934591999997, x=1.34359738368
[epoch 11 ] grad=0.6871947673599998, x=1.274877906944
[epoch 12 ] grad=0.5497558138879999, x=1.2199023255552
[epoch 13 ] grad=0.4398046511103999, x=1.17592186044416
[epoch 14 ] grad=0.35184372088831983, x=1.1407374883553278
[epoch 15 ] grad=0.2814749767106557, x=1.1125899906842622
[epoch 16 ] grad=0.22517998136852446, x=1.0900719925474098
[epoch 17 ] grad=0.18014398509481966, x=1.0720575940379278
[epoch 18 ] grad=0.14411518807585555, x=1.0576460752303423
[epoch 19 ] grad=0.11529215046068453, x=1.0461168601842739

分析:可以看到,初始值x从5出发,梯度值在不断下降,经过20轮迭代,x虽然没有完全等于1,但是在迭代中它不断地逼近最优值x=1。

《深度学习轻松学》-第8章优化与训练相关推荐

  1. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 109 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCogn

    实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 标签: 109 编辑 删除 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 ...

  2. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

    翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...

  3. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  4. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  5. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

  6. 《Python深度学习从零开始学》简介

    #好书推荐##好书奇遇季#深度学习入门书<Python深度学习从零开始学>,京东当当天猫都有发售.从模型和实验入手,快速掌握深度学习技术. 业内大咖强力推荐!!!武汉大学信息管理学院教授 ...

  7. 深度学习要学什么内容?

    深度学习是一门涉及多个学科领域的复杂学科,需要学习多个相关的内容,以下是深度学习的一些核心内容: 深度学习要学什么内容? 线性代数:矩阵.向量.矩阵运算等基本概念,以及线性代数的相关计算和应用. 微积 ...

  8. 深度学习经典教程:深度学习+动手学深度学习

    作者:[美] Ian,Goodfellow(伊恩·古德费洛),[加] Yoshua,Bengio(约书亚·本吉奥)等 出版社:人民邮电出版社 品牌:异步图书 出版时间:2019-06-01 深度学习经 ...

  9. 想知道深度学习卷积在GPU上如何优化吗?“大神”赵开勇带你深入浅出

    想知道深度学习卷积在GPU上如何优化吗?"大神"赵开勇带你深入浅出 2016-08-19 11:54 转载 陈杨英杰 0条评论 雷锋网(搜索"雷锋网"公众号关注 ...

  10. 系列笔记 | 深度学习连载(5):优化技巧(下)

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 深度学习中我们总结出 5 大技巧: 本节继续从第三个开始讲起. 3. Early stoppi ...

最新文章

  1. php-cgi占用cpu资源过高的解决方法
  2. php和python web开发-初入Web开发,php、python和ruby应该学哪个?
  3. 电气:需求响应:初始化一个调度周期的可转入转出负荷(python实现)
  4. C和汇编混合编程--------函数调用后ebp、esp值问题
  5. 微型计算机2014年9月下,2014年9月计算机应用基础》网络教育统考真题.doc
  6. 想为自己设置的软件加一个属于自己的图标吗?使用AWT_Swing_图标解决你的问题(源码解析)
  7. linux无网络环境pcre安装,Linux下无网络安装Nginx
  8. [渝粤教育] 西南科技大学 理论力学 在线考试复习资料(1)
  9. rz安装 xshell_在Linux系统中安装rzsz工具
  10. linux 创建软连接_linux删除原理
  11. Apache Prefork、Worker和Event三种工作模式分析
  12. 软件工程经济学结课报告——兰花智慧大棚监控系统可行性研究报告
  13. java读取linux配置文件_Java读取配置文件的几种方法
  14. 数据库 使用 笛卡尔积两表联查 查询sql语句
  15. SEO分析关键词策略
  16. (送票)2020广州敏捷之旅暨第11届广州DevOps社区Meetup火热报名中!
  17. (HGNN) Hypergraph Neural Networks
  18. Android帧率测试
  19. 瑞康医药与亚马逊云科技达成战略合作,全国上百家子公司业务上云
  20. 顶级配置+散热黑科技+炫酷外观,红魔6S Pro不愧年度游戏旗舰

热门文章

  1. 《自动化技术中的进给电气传动》1.1节和1.2节读书笔记
  2. 使用Crash工具查看一个TCP listen sock内存布局实例
  3. ASP连接sql server实例解析
  4. HDU2094(产生冠军)题解
  5. C#调用大漠插件,发送QQ和微信消息
  6. 重读《从菜鸟到测试架构师》--构建测试
  7. SQL拼接自己需要的字符串
  8. HDU1176:免费馅饼(dp,数字三角形的应用)
  9. 【原创】SSAS-引用维度与多数据源、多数据源视图引发分区错误
  10. Naive Bayes text classification