简单的梯度下降

本文深入介绍了梯度下降的概念,解释了梯度的数学意义,并展示了如何使用Python实现一元函数的梯度下降求解。通过一个简单的示例分析,阐述了迭代过程和停止条件。此外,还提供了代码示例,帮助理解梯度下降的运用。
摘要由CSDN通过智能技术生成

梯度下降

1.概念

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。梯度下降(Gradient Descent)是在求解机器学习算法的模型参数最常采用的方法之一(另外一种是最小二乘法)。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。

2.梯度

梯度下降法的计算过程就是沿梯度下降的方向求解极小值的过程,我们首先要知道梯度的数学意义以及表达式,在单变量函数中,梯度就是函数的微分
例如 d ( x 2 ) d ( x ) = 2 x \frac{d(x^2)}{d(x)}=2x d(x)d(x2)=2x d ( − 2 y 3 ) d ( y ) = − 6 y 2 \frac{d(-2y^3)}{d(y)}=-6y^2 d(y)d(2y3)=6y2。对于多变量的微分,当函数有多个变量时,分别对每一个变量求微分,例如 ∂ ∂ x \frac{\partial}{\partial x} x ( x 2 y 2 ) (x^2y^2) (x2y2)= 2 x y 2 2xy^2 2xy2, ∂ ∂ y \frac{\partial}{\partial y} y ( − y 4 + z 2 ) (-y^4 + z^2) (y4+z2)= − 4 y 3 -4y^3 4y3。对于一元函数来讲,梯度就是函数的导数。而对于多元函数而言,梯度是一个向量,也就是说,把求得的偏导数以向量的形式写出来,就是梯度。

3.梯度下降

梯度下降就是通过一步一步的迭代,让所有的编导函数都下降到最低,用数学公式来描述就是 x k + 1 x_{k+1} xk+1= x k x_k xk - α \alpha α ⋅ \cdot g 。
x k x_k xk为k时刻的点坐标, x k + 1 x_{k+1} xk+1为下一刻要移动的点的坐标,例如 x 0 x_0 x0就代表初始化的点的坐标, x 1 x_1 x1就代表第一部移动到的位置。
g代表梯度,前边有个负号,就代表朝着梯度相反的方向移动,也即梯度下降。
α \alpha α代表学习率(也叫做步长)。用它乘以梯度值来控制每次移动的距离, α \alpha α的值需要自己设置,如果过大,容易一步跨太大,直接跳过了最小值,设置太小则会导致迭代次数过多。

4.简单示例分析

下面以简单的一元函数来进行实例分析: y = ( x − 2.5 ) 2 + 3 y=(x-2.5)^2+3 y=(x2.5)2+3
在这里插入图片描述

多元函数的思路也一样,先初始化一个点,计算它的梯度,然后往梯度相反的方向,每次移动一点点,直到达到停止条件。这个停止条件,可以是足够大的迭代步数,也可以是一个比较小的阈值,当两次迭代之间的差值小于该阈值时,认为梯度已经下降到最低点附近了。

5.代码实现

import numpy as np
import matplotlib.pyplot as plt

x = eval(input("输入初始的x的位置:"))
ap = eval(input("输入学习率:"))
i = 0
x11 = list()
y11 = list()
sl = list()
for i in range(10000):
    y = (x - 2.5) ** 2 + 3
    y1 = 2 * x - 5
    ak = [x, y]
    x11.append(x)
    y11.append(y)
    x = x - ap * y1
    sl.append(ak)
    i += 1
    if abs(x - 2.5) < 1e-5:
        print("运行次数为:", i)
        print("坐标分别是:")
        for e in sl:
            print(e, end="")
        break
    elif i > 500:
        print("迭代次数过多,学习率过小")
        break
plt.plot(x11, y11)
plt.show()

在这里插入图片描述

6.总结

本文只是讲解了梯度下降的最简单的一种形式,有很多概念以及函数未涉及到,在之后的文章里会慢慢补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值