梯度下降算法

本文详细介绍了梯度下降法的目的,即寻找函数极小值点和最小化损失函数。通过形象化的下山过程解释了算法原理,并给出了数学解释和核心公式。还展示了在一元函数上的梯度下降实例,并提供了Python代码实现,最终输出了运行结果。
摘要由CSDN通过智能技术生成

目录

一、梯度下降的目的

1、求函数的极小值点

2、最小化损失函数

二、形象化理解

三、梯度下降基本过程

1、梯度

 2、数学解释

1、核心公式

2、基本步骤

3、实例 

3、代码实现及运行结果


一、梯度下降的目的

1、求函数的极小值点

最小化损失函数以及线性回归学习都要用到。

2、最小化损失函数

尽可能降低损失函数的值,提高机器学习模型的精确度。

二、形象化理解

将梯度下降的过程看作下山的过程:

首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。

三、梯度下降基本过程

首先,我们有一个可导函数,目标就是找到这个函数的最小值,那么我们就需要找到函数中给定点的梯度,然后沿着梯度相反的方向,就能让函数下降最快,因为梯度的方向就是函数变化最快的方向。

1、梯度

一阶函数的梯度就是表示某一函数在该点导数值。多元函数就是对每一个变量求偏导,梯度就是一个向量,向量就应该有方向,梯度的方向就是函数给定点上升最快的方向。那么梯度的反方向就是下降最快的方向,这也是为什么我们要去求梯度。

 2、数学解释

1、核心公式

 公式的意义:f就是一个关于\theta的一个函数,\theta 0是当前的点,从这点求出函数的最小值,首先确定前进的方向,即梯度的方向,然后再确定步长,就是\eta。下面介绍一下\eta。其实是步长,也叫做学习率,这个比较关键,不能太大也不能太小。还有要注意,负梯度,因为是下降,所以要给梯度加上符号,而梯度上升算法则不需要。

2、基本步骤

3、实例 

一元函数梯度下降

 

3、代码实现及运行结果

#f(x)=x^2 
import numpy as np 
#定义原函数f(x)=x^2 
def f(x):
    return np.power(x, 2) 
#定义函数求导公式1
def d_f_1(x): 
    return 2.0 * x 
#定义函数求导公式2 
def d_f_2(f, x, delta=1e-4): 
    return (f(x+delta) - f(x-delta)) / (2 * delta)
xs = np.arange(-10, 11)# 限制自变量x的范围 
plt.plot(xs, f(xs))#绘图 
plt.show() 
learning_rate = 0.1# 学习率(步长) 
max_loop = 30# 迭代次数 
x_init = 10.0# x初始值 
x = x_init 
lr = 0.01# ε值,不过我们下面用的是迭代次数限制 
for i in range(max_loop): 
    # d_f_x = d_f_1(x) 
    d_f_x = d_f_2(f, x) 
    x = x - learning_rate * d_f_x
    print(x)
print('initial x =', x_init) 
print('arg min f(x) of x =', x)
print('f(x) =', f(x))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值