【从零开始认识AI】梯度下降法

目录

1. 原理介绍

2. 代码实现


1. 原理介绍

梯度下降法(Gradient Descent)是一种用于优化函数的迭代算法,广泛应用于机器学习和深度学习中,用来最小化一个目标函数。该目标函数通常代表模型误差或损失。

基本思想是从一个初始点出发,通过不断沿着目标函数的负梯度方向更新参数,逐步逼近函数的局部最小值(或者全局最小值)。梯度是目标函数相对于参数的导数,因此,负梯度方向是函数值下降最快的方向。

具体步骤如下:

1. **初始化参数**:随机选择模型初始参数 \( \theta_0 \)。

2. **计算梯度**:计算目标函数关于当前参数的梯度 \( \nabla J(\theta) \),这里 \( J(\theta) \) 是目标函数。

3. **更新参数**:根据梯度和学习率 \( \alpha \) 更新参数:

\[

\theta := \theta - \alpha \nabla J(\theta)

\]

其中,学习率 \( \alpha \) 是一个预先设置的超参数,决定了每一步更新的大小。

4. **重复**:重复步骤 2 和 3 直到收敛,即参数不再发生显著变化或者达到预设的迭代次数。

  • 变种

梯度下降法有几种常见变种:

1. **批量梯度下降(Batch Gradient Descent)**:每一步更新使用整个训练数据集计算梯度。这对于大规模数据集可能会非常耗时。

2. **随机梯度下降(Stochastic Gradient Descent, SGD)**:每一步更新使用单个样本计算梯度,通过不断地用单个样本更新,效率较高但引入了较大的波动。

3. **小批量梯度下降(Mini-batch Gradient Descent)**:每一步更新使用一个小批量的样本来计算梯度,结合了批量梯度下降和随机梯度下降的优点。

  • 优化

为了提高梯度下降的效率和效果,可以结合一些优化方法,如:

- **动量法**:在每一步更新中添加动量,帮助跳出局部最小值。

- **AdaGrad**、**RMSprop**、**Adam**:这些算法通过自适应调整学习率,以适应不同参数和不同迭代阶段。

梯度下降法是机器学习和深度学习中的关键技术之一,通过梯度下降可以有效地训练模型并优化目标函数。

2. 代码实现

以下用梯度下降法求解函数的最小值:

import numpy as np
import matplotlib.pyplot as plt


def f(x):
    return x ** 2 + 5 * np.sin(x)


def df(x):
    return 2 * x + 5 * np.cos(x)


# initialize parameter and learning rate
x = 4
lr = 0.1

epochs = 1000
history = [x]
for _ in range(epochs):
    x = x - lr * df(x)
    history.append(x)
    

xs = np.linspace(-5, 5, 200)
ys = f(xs)

plt.plot(xs, ys, label="f(x)")
plt.xlabel("x")
plt.ylabel("f(x)")

plt.scatter(history, f(np.array(history)), c="g", alpha=0.5, label="Gradient Descent Point")
plt.scatter(history[-1], f(history[-1]), c="r", label="Minimal Point")
plt.legend()

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/739923.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Nest系列 - 3. 掌握常见Nest 装饰器,奠定坚实基础!!!!!!》

nest 一个核心就是依赖注入,而中的大部分功能都是通过装饰器来实现的,那什么是装饰器呢? 就是一个 xxx ,诸如 Module,controller, Get, Post 那这样有什么好处呢? 可以把他理解成一个方法,在不改…

【干货】客户裂变实战:策略与案例分享

在当今竞争激烈的市场环境中,客户裂变成为了许多企业快速增长的关键策略。客户裂变,即利用现有客户的社交网络和影响力,吸引更多潜在客户,从而实现客户数量的快速增长。本文将分享一些客户裂变的实战策略及成功案例。 一、客户裂…

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024)

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024) 2024 International Conference on Image, Geological Surveying and Remote Sensing Technology(ICIGSRST 2024) ▶会议简介 2024年图像、地质…

第二届“讯方杯”全国大学生信息技术应用及创新大赛圆满落幕!

6月21日-23日,2023-2024“讯方杯”全国大学生信息技术应用及创新大赛全国总决赛在广东科技学院松山湖校区圆满举办。本届全国总决赛由深圳市讯方技术股份有限公司主办,广东科技学院承办,深圳市职前通教育有限责任公司协办。 广东科技学院副校…

艺术家电gorenje x 设计上海丨用设计诠释“生活的艺术”

2024年6月19日—22日,艺术家电gorenje亮相“设计上海”2024,以“gorenje是家电更是艺术品”为题,为人们带来融入日常的艺术之美。设计上海2024不但汇集了国内外卓越设计品牌和杰出独立设计师的家具设计作品,还联合国内外多名设计师…

国内Mac安装Homebrew方法

文章目录 前言步骤 参考:https://blog.csdn.net/itwangyang520/article/details/134125435 前言 今天尝试下载git,官方给的建议是使用Homebrew下载,但发现新电脑里没有,于是尝试Homebrew下载,但发现Homebrew不存在&am…

NAPI篇【4】——NAPI应用点亮一个LED

OpenHarmony的NAPI功能为开发者提供了JS与C/C不同语言模块之间的相互访问,交互的能力,使得开发者使用C或者C语言实现应用的关键功能。如操作开发板中某个GPIO节点的状态(OpenHarmony并没有提供直接操作GPIO口状态的API)&#xff0…

QGIS在VS2019开发

QGIS二次开发(1)—加载矢量、栅格图层(QGIS 2.14.16 && Qt-4.8.6 && VS2010 )_qgis开发教程-CSDN博客 VS2019QT5.15.2QGIS二次开发环境搭建(非源码方式)_qt qgis-CSDN博客 也许面向对象课…

diffusion model(十八):diffusion model中negative prompt的工作机制

info个人博客主页http://myhz0606.com/article/ncsn 前置阅读: DDPM: http://myhz0606.com/article/ddpm classifier-guided:http://myhz0606.com/article/guided classifier-free guided:http://myhz0606.com/article/classi…

技术干货 | AI驱动工程仿真和设计创新

在当今快速发展的技术领域,人工智能(AI)、机器学习和深度学习等技术已经成为推动工程仿真和设计创新的关键力量。Altair技术经理张晨在Altair “AI FOR ENGINEERS”线下研讨会上发表了相关精彩演讲,本文摘自演讲内容,与…

倒F天线参数

倒F天线是依据天线形状命名的。 天线的谐振点及输入阻抗余S、H和L的关系如下: 倒F天线一般用于单频点设计,使用1/4波长原理(利用镜像原理,实际相当于半波长的偶极子天线)。也就是说L的长度是谐振点对应波长的1/4&#…

mybatis动态传参pgsql日期Interval

在navicat16中,标准写法 SELECT * FROM business_status_info WHERE create_time > (NOW() - INTERVAL 5 minutes) 在mybatis中,错误写法 SELECT * FROM business_status_info WHERE create_time > (NOW() - INTERVAL #{monitorTimeInterval,jdbc…

ViT:3 Compact Architecture

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

浏览器提升编译速度小技巧(一)- 防病毒排除

1.引言 在Chrome开发过程中,编译速度是影响开发效率的关键因素之一。编译一个大型项目如Chrome,往往需要处理大量的代码文件和依赖库,这个过程既复杂又耗时。因此,任何能够提升编译速度的技巧,都能显著提高开发效率&a…

AI风险管理新利器:SAIF CHECK利用Meta Llama 3保障合规与安全

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

react-native在IOS上集成百度地图详解

export default class BaiDuMapTest extends Component { render() { return ( ); } } const styles StyleSheet.create({ container: { flex: 1, justifyContent: ‘center’, alignItems: ‘center’, backgroundColor: ‘#F5FCFF’, }, welcome: { fontSize:…

电子设备抗震等级与电子设备震动实验

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139923445 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

RK3588上手踩坑之启动卡死2

同事开发了一块RK3588Q,记录下上手的踩坑过程。 RK3588上手踩坑实录_-CSDN博客https://blog.csdn.net/huntenganwei/article/details/135213035?spm1001.2014.3001.5501 按照之前的搞法,一通操作。 上电 莫名其妙的duang了 各种检查,核对…

2024年国内顶尖的在线文档协作工具大对比

近几年国内主流使用的9款在线文档协作工具对比:PingCode 知识库、WPS Office 云协作、腾讯文档、语雀、Filez 企业网盘、360亿方云、石墨文档、Confluence、Notion。 在线文档协作工具因其能够提供实时编辑、共享和管理文档的能力,成为了很多团队提升工作…

制造业工厂急需一套erp系统帮他降本增效

随着全球制造业竞争的日益激烈,制造业工厂面临着越来越多的挑战,包括成本控制、生产效率、市场响应速度等方面。在这样的背景下,一套高效的ERP(企业资源规划)系统成为了制造业工厂降本增效的必备工具。本文将探讨ERP系…