梯度下降初识-求取凸函数极值

本文介绍了梯度下降法的基本概念,它是一种迭代算法,用于找到凸函数的极值点。通过从初始点开始,计算并利用导数及步长更新点的位置,直至达到极小值点附近。

梯度下降初识-求取凸函数极值

梯度下降:梯度下降是迭代法的一种,通过选择一个初始点,然后计算该点的导数,再通过导数和步长推进到下一个点,直到两个点之间的差值很小为止。

# 梯度下降 == 导数值下降
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

#梯度下降算法是一个帮助我们找极值点的方法cost  #凸函数
def targetFunc(x,y):        #目标函数
    return(x-100)**2+y**2
    pass
def gradientFuncX(x):       #求解偏导数
    return 2*x - 200
    pass
def gradientFuncY(y):       #求解偏导数
    return 2*y
listx=[]
listy
梯度下降法是迭代法的一种,可用于求解最小二乘问题,在求解机器学习算法的模型参数等无约束优化问题时较为常用。使用梯度下降法求解凸函数极值的方法如下: ### 确定方向 梯度方向可通过对函数求导得到,梯度下降法沿梯度下降的方向求解极小值,若求极大值则沿梯度上升方向。对于凸函数求极小值,要沿着负梯度方向更新参数。 ### 确定步长 步长(学习率)的确定比较关键,太大可能会使迭代发散,太小则收敛速度过慢。一般由线性搜索算法来确定步长,把下一个点的坐标看做是步长的函数,然后求满足函数值最小的步长。也可以通过学习率 $\lambda$ 控制 $\Delta \bf x$ 的长度,要综合考虑泰勒展开的局部范围以及避免函数找不到局部极值区域和迭代次数的问题 [^1][^2]。 ### 迭代公式 其迭代公式为 $x_{k + 1} = x_k - \alpha \nabla f(x_k)$,其中 $x_{k + 1}$ 是下一次迭代的点,$x_k$ 是当前点,$\alpha$ 是步长,$\nabla f(x_k)$ 是函数 $f(x)$ 在 $x_k$ 处的梯度。在凸函数求极小值的场景下,就是不断按照这个公式更新 $x$ 的值 [^1]。 ### 终止条件 一般情况下,梯度向量为 0 说明到了一个极值点,采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近 0 ,可以设置一个非常小的常数阈值。当梯度向量的幅值小于该阈值时,就认为达到了极值点,停止迭代 [^1]。 以下是一个简单的 Python 代码示例,用于使用梯度下降法求解凸函数 $f(x) = x^2$ 的极小值: ```python import numpy as np # 定义目标函数 def f(x): return x**2 # 定义目标函数的导数 def df(x): return 2 * x # 梯度下降法 def gradient_descent(learning_rate=0.1, max_iterations=1000, tolerance=1e-6): x = 10 # 初始点 for i in range(max_iterations): grad = df(x) if np.linalg.norm(grad) < tolerance: break x = x - learning_rate * grad return x # 运行梯度下降法 result = gradient_descent() print("极小值点 x =", result) print("极小值 f(x) =", f(result)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值