计算机在数值计算的时候主要是使用梯度下降法来计算函数极值的,之前一直认为这个过程需要用matlab或者python,c等语言编程来做,不成想在一本书上发现使用Excel就可以简单的演示梯度下降法的过程,而且由于不用写代码,每一步操作都需要人工设定,对梯度下降法的整个过程理解的也会比较细腻.

下面以求函数

极小值为例,来演示这个过程。

Excel表格如下,excel支持基础的数学计算和常用函数操作,这里面的数据并非是手动输入的,每除了初始值之外,每一个数据都是利用excel内建的公式驱动的.

我们以第一行为例:

No 位置 梯度 位移向量 函数值
i xi yi ∂z/∂x ∂z/∂y ⊿x ⊿y z
0 3.00  2.00  6.00  4.00  -0.06  -0.04  13.00 

开始梯度下降计算的初始位置坐标是(3.00,2.00),这是整个表中为数不多的几个不是公式驱动的数据,其它的还有学习率以及函数本身。

计算逻辑上,首先根据上图第0行的xi,yi,计算偏导得到梯度6,4,然后再乘以负学习率,得到下一行xi,yi的变化量。这里分别为-0.04和-0.04.

递推公式如下:

根据公式,第二行为:

1 2.94  1.96  5.88  3.92  -0.06  -0.04  12.49 

由此迭代计算,得到整个表格,通过图标来表达整个过程如下:

可以看到函数值逐渐变小,但是貌似收敛有些慢,到最后一次(31次)迭代,仍然没有收敛到极小值坐标(0,0),仅仅到坐标(1.64,1.09)

我们调整学习率到0.1看是否会改善,得到的每次数据如下所示:

这里再次强调以下,虽然上面两张表格数据看起来完全不同,但从第一张表格到第二章表格,我只改变了学习率,其它的变化都是excel背后的公式驱动的。可以看到在第29行的时候,已经得到了极小值点,这里对应的梯度很小很小(0.01,0.01,之所以没有达到零,怀疑是精度导致,也就是xi/yi实际的值并不为0,显示在excel上是舍入后的值).

这是的收敛情况可以从下图中看出,调整学习率后,改善很多。

附,三维二次函数的图像和梯度分布:


结束!

用Excel体验梯度下降法计算函数极值相关推荐

  1. 【深度学习的数学】2-11 用Excel体验梯度下降法(用python实现)

    梯度下降法是神经网络计算的基础,下面我们用python编程来体验它! 代码 # -*- coding: utf-8 -*- """ @File : 梯度下降法求函数最小值 ...

  2. 数值计算之 梯度下降法与函数极值

    数值计算之 梯度下降法与函数极值 前言 微积分基础 一元函数的极值,导数与泰勒展开 多元函数的泰勒展开 梯度下降法 梯度方向 终止条件 代码举例 后记 前言 本篇将开始介绍优化算法.首先是梯度下降法, ...

  3. 梯度下降法计算二次函数极值、拟合一次曲线、拟合二次曲线

    梯度 在单变量函数中,梯度其实就是函数的微分形式,代表着在某点处,函数的切线的斜率: 在多变量函数中,梯度是一个向量,(向量具有方向,有该点指向上升最快的方向): 梯度的方向:函数中某切点上升最快的方 ...

  4. Excel 和 python 使用梯度下降法分别求【极小值点】【线性回归问题】

    目录 一.梯度下降法求解 1.1 基本概念 1.2 梯度下降法手工求解 1.3 Excel 实现梯度下降法求解 二.线性回归问题求解 2.1 最小二乘法 2.2 梯度下降法 三.总结 四.参考资料 一 ...

  5. [数值计算-10]:一元非线性函数求最小值 - 导数与梯度下降法Python法代码示例

    作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...

  6. 求解函数最值的几种算法,梯度下降法python实现

    原理就不做过多介绍了,直接上代码.其中的一维线搜索写了三种方法(黄金分割法,Armijo线搜索,Wolfe-Powell线搜索),可以稍微对比以下. 一.黄金分割法 黄金分割法计算步骤 import ...

  7. Excel和Python实现梯度下降法

    文章目录 一.梯度下降法是什么 二.概念理解 1. 微分理解 2. 梯度理解 3. 梯度下降法的数学解释 三.梯度下降法手工求解 四.Excel演示梯度下降法的数据变化 五.Python 编程实现 六 ...

  8. 人工智能与机器学习-梯度下降法

    人工智能与机器学习-梯度下降法 一.梯度下降法概述 梯度下降法(Gradient descent)是一个一阶最优化算法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近 ...

  9. 优化:梯度下降法、牛顿法、共轭梯度法

    1.基本概念 1.1 方向导数 1.2 梯度的概念 如果考虑z=f(x,y)描绘的是一座在点(x,y)的高度为f(x,y)的山.那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到 ...

  10. 数学优化入门:梯度下降法、牛顿法、共轭梯度法

    1.基本概念 1.1 方向导数 1.2 梯度的概念 因此,对于一元函数,即y=f(x),其梯度的方向总是指向x轴正方向或反方向,而大小即该点的导数. 如果考虑z=f(x,y)描绘的是一座在点(x,y) ...

最新文章

  1. 生信分析-PS修改坐标
  2. mysql 一键安装 linux_linux下mysql8 shell脚本一键安装
  3. Cxf + Spring3.0 入门开发WebService
  4. HTML特殊字符编码对照表
  5. 图像处理之边缘检测概述
  6. ITK:观察过滤器Watch A Filter
  7. mysql杨辉三角_实现杨辉三角
  8. ES9新特性_ES9扩展运算符与rest参数---JavaScript_ECMAScript_ES6-ES11新特性工作笔记053
  9. LeetCode(832)——翻转图像(JavaScript)
  10. 虚拟机危险!一个存在11年的缓冲区溢出漏洞--毒液
  11. Android 生态消息推送平台介绍
  12. 最大子数组问题,分治策略基础,百度面试题
  13. office, pdf, cad 等在线预览
  14. 《自己动手写网络爬虫》笔记4-带偏好的网络爬虫
  15. 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
  16. 计算机中存储单位的认识与理解
  17. commitizen和cz-customizable配置git commit message
  18. adaptive chosen ciphertext attack 和 non-malleability
  19. 从0开始学AI-DAY1
  20. 土气和洋气的方法不用π求圆的面积

热门文章

  1. android端播放器框架,Android通用播放器解码框架Vitamio的介绍和使用
  2. linux查看本机IP掩码,linux下 取得本机ip、掩码、网关
  3. [VP] 拉普拉斯算子 Laplacian Filter
  4. 迷之Konigsberg七桥问题
  5. 实现socket监听所有网络命名空间
  6. 计算机体系结构多处理器性能评价指标——加速比
  7. html5游戏 搭积木,搭积木游戏,搭积木游戏创意名字
  8. OAuth2授权方式
  9. 网店营销成为运营商营销的重要平台
  10. Redis一主二从Sentinel监控配置