用Excel体验梯度下降法计算函数极值

147 篇文章 19 订阅
103 篇文章 8 订阅

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

下面以求函数

f(x,y)=x^2+y^2

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

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

我们以第一行为例:

No位置梯度位移向量函数值
ixiyi∂z/∂x∂z/∂y⊿x⊿yz
03.00 2.00 6.00 4.00 -0.06 -0.04 13.00 

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

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

 递推公式如下:

\begin{bmatrix} x_{i+1}\\ y_{i+1} \end{bmatrix}=\begin{bmatrix} x_{i}\\ y_{i} \end{bmatrix}-\eta\begin{bmatrix} \Delta x_i\\ \Delta y_i \end{bmatrix}

根据公式,第二行为:

12.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上是舍入后的值).

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

附,三维二次函数z=x^2+y^2的图像和梯度分布:


结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值