梯度下降算法(GD)及python代码实现可视化

您所在的位置:网站首页 梯度下降算法代码 梯度下降算法(GD)及python代码实现可视化

梯度下降算法(GD)及python代码实现可视化

2023-10-16 14:00| 来源: 网络整理| 查看: 265

梯度下降算法 什么是梯度?

梯度的公式定义: g r a d f ( x 0 , x 1 , ⋯   , x n ) = ( ∂ f ∂ x 0 , ⋯   , ∂ f ∂ x j , ∂ f ∂ x n ) gradf(x_0,x_1,\cdots,x_n)=(\frac{\partial f}{\partial x_0},\cdots,\frac{\partial f}{\partial x_j},\frac{\partial f}{\partial x_n}) gradf(x0​,x1​,⋯,xn​)=(∂x0​∂f​,⋯,∂xj​∂f​,∂xn​∂f​) 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)(from baidubaike)

在机器学习领域中,大多数的问题都是最优化问题,而这些问题的求解几乎都可以使用梯度下降算法来处理,因为梯度致力于解决这样一个问题:函数沿着哪一个方向下降最快?

注意:

梯度是一个向量梯度的方向是最大方向导数的方向梯度的值是最大方向导数的值 什么是梯度下降算法?

梯度下降算法(gradient descent),又名最速下降算法(steepest descent)是一阶优化算法。根据目标函数在某一点处,沿梯度方向有最大的变化率,沿着这一负梯度方向减小函数值,来搜索局部最小值点

权重更新公式: θ i = θ i − α ∂ ∂ θ i J ( θ ) \theta_i=\theta_i-\alpha\frac{\partial}{\partial\theta_i}J(\theta) θi​=θi​−α∂θi​∂​J(θ) 其中, θ \theta θ为权重, α \alpha α为学习率,J为目标函数

用梯度下降算法求函数的局部最小值并可视化 import numpy as np import matplotlib.pyplot as plt lr = 0.2 precision = 1e-6 x_list = [] y_list = [] count = 0 def y_diff(x): return x * 2 def y(x): return x ** 2 def iter_x(x): if x > precision: print("第%d次迭代结果:"% len(x_list) , x) x_list.append(x) y_list.append(y(x)) plt.scatter(x,y(x)) plt.pause(0.1) return iter_x( x - lr*y_diff(x)) delta = 1/100000 x = np.arange(-1.1, 1.1, delta) plt.ion() plt.plot(x, y(x)) plt.grid(True) iter_x(1.0) plt.ioff() plt.show()

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3