机器学习和深度学习中的梯度下降及其类型

本文介绍了梯度下降在机器学习和深度学习中的作用,详细讲解了批量梯度下降、随机梯度下降和小批量梯度下降的原理、优缺点及代码实现。讨论了学习率对算法的影响,并指出小批量梯度下降通常是最佳选择,因为它平衡了计算效率和模型收敛速度。

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

介绍

梯度下降算法是一种最常用于机器学习和深度学习的优化算法。梯度下降调整参数以将特定函数最小化到局部最小值。在线性回归中,它找到权重和偏差,深度学习反向传播使用该方法。
该算法的目标是识别模型参数,如权重和偏差,以减少训练数据上的模型误差。
在本文中,我们将探索不同类型的梯度下降。因此,让我们开始阅读这篇文章吧!

什么是梯度?

在这里插入图片描述

  1. 如果稍微改变输入,梯度会测量函数输出的变化量。
  2. 在机器学习中,梯度是具有多个输入变量的函数的导数。在数学术语中称为函数的斜率,梯度只是衡量关于误差变化的所有权重的变化。

学习率:

算法设计者可以设置学习率。如果我们使用的学习率太小,会导致我们更新非常慢,需要更多的迭代才能得到更好的解决方案。

梯度下降的类型

三种流行类型的主要区别在于它们使用的数据量:
在这里插入图片描述

1、批量梯度下降

批量梯度下降,也称为普通梯度下降,计算训练数据集中每个样本的误差。尽管如此,在对每个训练样本进行评估之前,模型都不会改变。整个过程称为一个周期和一个训练时期。批处理的一些好处是它的计算效率,它产生稳定的误差梯度和稳定的收敛。一些缺点是稳定的误差梯度有时会导致收敛状态不是模型所能达到的最佳状态。它还要求整个训练数据集都在内存中并且可供算法使用。

代码实现

class GDRegressor:
    
    def __init__(self,learning_rate=0.01,epochs=100):
        
        self.coef_ = None
        self.intercept_ = None
        self.lr = learning_rate
        self.epochs = epochs
        
    def fit(self,X_train,y_train):
        # init your coefs
        self.intercept_ = 0
        self.coef_ = np.ones(X_train.shape[1])
        
        for i in range(self.epochs):
            # update all the coef and the intercept
            y_hat = np.dot(X_train,self.coef_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

vcsir

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

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

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

打赏作者

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

抵扣说明:

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

余额充值