梯度下降算法在最小化目标函数F的搜索轨迹

本文通过一元二次函数实例,详细介绍了如何使用梯度下降算法寻找函数最小值的过程。包括梯度计算、迭代更新参数的具体步骤,并展示了不同初始值下算法的收敛路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

考虑一元目标函数F(w)=w2-w+1 :
(1)写出目标函数F的
(2)初始值w=0, 请画出梯度下降算法在最小化目标函数F的搜索轨迹。初始值w=2 呢?

二、实验目的

1.学会运用梯度下降算法解决问题。
2.理解梯度下降算法的含义。

三、实验内容

(1)求解目标函数F的梯度

从数学的角度上看,该目标函数F的梯度是:d(w2-w+1)/dw=2w-1

(2)梯度下降的优化公式

在这里插入图片描述
其中w是待求的参数,是学习速率,F(w)是目标函数。

(3)算法描述

1、给定待优化连续可微分的函数F(w),学习率或步长a,以及一组初始值(真实值)。
2、计算待优化函数梯度。
3、更新迭代。
4、再次计算新的梯度。
5、计算向量的模来判断是否需要终止循环。

(4)主要代码:


import numpy as np
import matplotlib.pyplot as plt

def F(w):
    return w*w-w+1

X, y = [], []
eta, epsilon = 0.1, 0.01
w = 0
while abs(2*w-1) > epsilon:
    X.append(w)
    y.append(F(w))
    w = w - eta *( 2*w-1)

W = np.linspace(0, 2, 100).reshape(100, 1)
U = F(W)
plt.plot(W, U)
plt.scatter(X, y, s=15)
plt.show()

eta, epsilon = 0.1, 0.01
w = 2
while abs(2*w-1) > epsilon:
    w = w - eta *( 2 * w - 1)
print("w的值为:",w)

四、实验结果及分析

(1)初始值w=0,梯度下降算法在最小化目标函数F的搜索轨迹如下图所示:
在这里插入图片描述

得到的参数值为:
在这里插入图片描述

(2)初始值w=2,梯度下降算法在最小化目标函数F的搜索轨迹如下图所示:
在这里插入图片描述

得到的参数值为:
在这里插入图片描述

分析:
如果要使得目标函数最小,梯度的反方向就是函数减小的速度最快方向。一开始,目标函数的数值很大,我们要优化目标函数,使其变小,而使目标函数减小就得改变需要优化的参数w,我们求出目标函数在参数w上的梯度,往函数减小的最大方向(梯度的反方向)移动一步,这一步就是学习率。

五、遇到的问题和解决方法

初始值w的值不一样时,得到的w参数的值不一样。

#(w=0)w的值为: 0.49538831398157257
#(w=2)w的值为: 0.5045334718235549

但是,容易看出,当w=0.5时,F达到其最小值,运行结果后,w的值还是十分接近最优解的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小辉在线

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

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

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

打赏作者

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

抵扣说明:

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

余额充值