用Excel体验梯度下降法计算函数极值
计算机在数值计算的时候主要是使用梯度下降法来计算函数极值的,之前一直认为这个过程需要用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体验梯度下降法计算函数极值相关推荐
- 【深度学习的数学】2-11 用Excel体验梯度下降法(用python实现)
梯度下降法是神经网络计算的基础,下面我们用python编程来体验它! 代码 # -*- coding: utf-8 -*- """ @File : 梯度下降法求函数最小值 ...
- 数值计算之 梯度下降法与函数极值
数值计算之 梯度下降法与函数极值 前言 微积分基础 一元函数的极值,导数与泰勒展开 多元函数的泰勒展开 梯度下降法 梯度方向 终止条件 代码举例 后记 前言 本篇将开始介绍优化算法.首先是梯度下降法, ...
- 梯度下降法计算二次函数极值、拟合一次曲线、拟合二次曲线
梯度 在单变量函数中,梯度其实就是函数的微分形式,代表着在某点处,函数的切线的斜率: 在多变量函数中,梯度是一个向量,(向量具有方向,有该点指向上升最快的方向): 梯度的方向:函数中某切点上升最快的方 ...
- Excel 和 python 使用梯度下降法分别求【极小值点】【线性回归问题】
目录 一.梯度下降法求解 1.1 基本概念 1.2 梯度下降法手工求解 1.3 Excel 实现梯度下降法求解 二.线性回归问题求解 2.1 最小二乘法 2.2 梯度下降法 三.总结 四.参考资料 一 ...
- [数值计算-10]:一元非线性函数求最小值 - 导数与梯度下降法Python法代码示例
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...
- 求解函数最值的几种算法,梯度下降法python实现
原理就不做过多介绍了,直接上代码.其中的一维线搜索写了三种方法(黄金分割法,Armijo线搜索,Wolfe-Powell线搜索),可以稍微对比以下. 一.黄金分割法 黄金分割法计算步骤 import ...
- Excel和Python实现梯度下降法
文章目录 一.梯度下降法是什么 二.概念理解 1. 微分理解 2. 梯度理解 3. 梯度下降法的数学解释 三.梯度下降法手工求解 四.Excel演示梯度下降法的数据变化 五.Python 编程实现 六 ...
- 人工智能与机器学习-梯度下降法
人工智能与机器学习-梯度下降法 一.梯度下降法概述 梯度下降法(Gradient descent)是一个一阶最优化算法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近 ...
- 优化:梯度下降法、牛顿法、共轭梯度法
1.基本概念 1.1 方向导数 1.2 梯度的概念 如果考虑z=f(x,y)描绘的是一座在点(x,y)的高度为f(x,y)的山.那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到 ...
- 数学优化入门:梯度下降法、牛顿法、共轭梯度法
1.基本概念 1.1 方向导数 1.2 梯度的概念 因此,对于一元函数,即y=f(x),其梯度的方向总是指向x轴正方向或反方向,而大小即该点的导数. 如果考虑z=f(x,y)描绘的是一座在点(x,y) ...
最新文章
- 生信分析-PS修改坐标
- mysql 一键安装 linux_linux下mysql8 shell脚本一键安装
- Cxf + Spring3.0 入门开发WebService
- HTML特殊字符编码对照表
- 图像处理之边缘检测概述
- ITK:观察过滤器Watch A Filter
- mysql杨辉三角_实现杨辉三角
- ES9新特性_ES9扩展运算符与rest参数---JavaScript_ECMAScript_ES6-ES11新特性工作笔记053
- LeetCode(832)——翻转图像(JavaScript)
- 虚拟机危险!一个存在11年的缓冲区溢出漏洞--毒液
- Android 生态消息推送平台介绍
- 最大子数组问题,分治策略基础,百度面试题
- office, pdf, cad 等在线预览
- 《自己动手写网络爬虫》笔记4-带偏好的网络爬虫
- 【服务器风扇静音】确定风扇线序定义的通用方法——以IBM SystemX 3630 M4为例
- 计算机中存储单位的认识与理解
- commitizen和cz-customizable配置git commit message
- adaptive chosen ciphertext attack 和 non-malleability
- 从0开始学AI-DAY1
- 土气和洋气的方法不用π求圆的面积