深度学习(2):梯度下降

文章目录

  • 梯度下降
    • 梯度是什么
    • 常见梯度下降算法
  • 代码实现
    • 批量梯度下降

梯度下降

梯度是什么

类似y = ax + b这种单变量的函数来说,导数就是它的斜率,这种情况下可以说梯度就是导数。
但在多变量函数中,梯度是一个向量,其分量是各个单一变量的偏导数。这个向量指向函数增长最快的方向,其向量的模(大小)表示在那个方向上的最大变化率。

所以我们沿着梯度的反方向走,这就是下降最快的方向,这样就能够使得损失函数最快的下降了

常见梯度下降算法

  1. 批量梯度下降(Batch Gradient Descent)

    • 原理:在每次迭代中,使用整个训练集计算损失函数的梯度,然后更新参数。
    • 优点
      • 全局最优:每次更新都基于全数据,方向稳定。
      • 收敛稳定:梯度的方向一致,易于收敛。
    • 缺点
      • 计算开销大:对于大型数据集,计算梯度耗时长。
      • 缺乏在线学习能力:无法实时更新模型。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD)

    • 原理:在每次迭代中,只使用一个样本计算梯度并更新参数。
    • 优点
      • 计算效率高:每次更新只需计算一个样本的梯度。
      • 在线学习:适合流式数据处理。
    • 缺点
      • 收敛不稳定:梯度受单个样本影响,可能产生较大波动。
      • 可能陷入局部最优:由于更新方向不稳定。
  3. 小批量梯度下降(Mini-batch Gradient Descent)

    • 原理:在每次迭代中,使用一小批样本(如32、64、128个)计算梯度并更新参数。
    • 优点
      • 权衡计算效率和稳定性:比批量方法快,比随机方法稳。
      • 利用矩阵运算:可充分利用GPU等硬件加速。
    • 缺点
      • 需要选择合适的批量大小:批量过小或过大会影响性能。
  4. 动量法(Momentum)

    • 原理:在参数更新中引入动量项,累计之前梯度的指数加权平均,公式为:

在这里插入图片描述

  • 优势
    • 加速收敛:在一致的梯度方向上加速移动。
    • 减少振荡:在梯度变化方向上抑制波动。
  1. Nesterov加速梯度(Nesterov Accelerated Gradient, NAG)

    • 原理:在动量法的基础上,先对参数进行一步预估,然后计算预估位置的梯度,公式为:
      在这里插入图片描述

    • 优势

      • 提前感知:对未来位置的梯度进行评估,提高了更新的准确性。
      • 更快收敛:比标准动量法具有更好的收敛速度。
  2. AdaGrad(Adaptive Gradient)

    • 原理:为每个参数适应性地调整学习率,累积梯度的平方和,公式为:

在这里插入图片描述

  • 优势

    • 自适应学习率:对频繁更新的参数降低学习率,稀疏参数仍保持较大学习率。
    • 适合稀疏数据:在自然语言处理等领域表现良好。
  • 缺点

    • 学习率单调递减:可能导致后期学习过慢或停止。
  1. RMSProp

    • 原理:对AdaGrad进行改进,采用梯度平方的指数加权移动平均,公式为:

在这里插入图片描述

  • 优势
    • 防止学习率过快下降:保持学习率在较为稳定的范围内。
    • 适合非平稳目标:在处理递归神经网络等问题时表现良好。
  1. Adam(Adaptive Moment Estimation)

    • 原理:结合Momentum和RMSProp,同时计算梯度的一阶和二阶矩的估计,公式为:

在这里插入图片描述

  • 优势
    • 自适应学习率:对每个参数进行动态调整。
    • 快速收敛:在实践中表现出优秀的性能和稳定性。
    • 广泛适用:已成为深度学习中最常用的优化算法之一。

代码实现

批量梯度下降

import matplotlib.pyplot as plt# 准备数据集,线性关系
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]# 随机的初始化权重 
w = 1.0# 找线性模型
def forward(x):return x * w# 损失函数MSE
def loss(xs, ys):cost = 0 # 储存loss ^ 2的和for x, y in zip(xs, ys):y_pred = forward(x)cost += (y_pred - y) ** 2return cost / len(xs) # MSE# 批量梯度下降:选取所有的样本做梯度下降
# 获取当前的梯度是多少
def gradient(xs, ys):grad = 0for x, y in zip(xs, ys):grad += 2 * x * (x * w - y)return grad / len(xs)epoch_list = []
loss_list = []
print('predict (before training)', 4, forward(4))
for epoch in range(100):cost_val = loss(x_data, y_data)grad_val = gradient(x_data, y_data)w -= 0.01 * grad_val  # 0.01 学习率print('epoch:', epoch, 'w=', w, 'loss=', cost_val)epoch_list.append(epoch)loss_list.append(cost_val)print('predict (after training)', 4, forward(4))
plt.plot(epoch_list, loss_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

frp内网穿透服务器+客户端详细配置

当我们拥有一台云服务器时,可以将局域网服务器的服务通过内网穿透发布到公网上。frp是一个主流的内网穿透软件,本文讲解frp内网穿透服务器客户端详细配置。 一、需要准备的内容: 腾讯云服务器:https://curl.qcloud.com/Sjy0zKjy 2…

安卓13修改设置设备型号和设备名称分析与更改-android13设置设备型号和设备名称更改

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 用户要定制一些系统显示的设备型号和设备名称,这就需要我们分析设置里面的相关信息来找到对应的位置进行修改了。 2.问题分析 像这种信息要么是config.xml里面写死了,要…

开源 AI 智能名片与 S2B2C 商城小程序:嫁接权威实现信任与增长

摘要:本文探讨了嫁接权威在产品营销中的重要性,并结合开源 AI 智能名片与 S2B2C 商城小程序,阐述了如何通过与权威关联来建立客户信任,提升产品竞争力。强调了在当今商业环境中,巧妙运用嫁接权威的方法,能够…

Kafka系列之:安装使用kafka_exporter详细步骤

Kafka系列之:安装使用kafka_exporter详细步骤 一、kafka_exporter二、下载kafka_exporter三、理解Topic Metrics指标四、理解Consumer Groups Metrics指标五、启动kafka_exporter六、查看页面七、systemctl托管服务一、kafka_exporter kafka_exporter源码kafka_exporter下载页…

JVM的基本组成

一、JDK\JRE\JVM JDK: 全称 "Java Development Kit" ,Java 开发工具包,提供 javac 编译器、jheap、jconsole 等监控工具;JRE: 全称"Java Runtime Environment",Java 运行环境,提供Class Library 核心类库 JV…

典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式

先看代码与实现&#xff1a; 文件结构 triangle_area4.jsp <% page contentType"text/html;charsetUTF-8" pageEncoding"UTF-8" %> <html> <body> <%--<jsp:useBean>&#xff1a;用于在JSP中实例化JavaBean。在这里&#xff0c…

C++ —— 关于list

目录 链接 前言 1. 迭代器浅解 2. 接口 2.1 构造函数 2.2 push_back 2.3 emplace_back 2.4 insert 2.5 erase 2.6 reverse 2.7 sort 2.8 merge 2.9 unique 2.10 splice 链接 cplusplus.com/reference/list/list/?kwlisthttps://cplusplus.com/reference/list/list…

公安局软件管理平台建设方案和必要性,论文-———未来之窗行业应用跨平台架构

一、平台方略 由于csdn拦截关键信息&#xff0c;我发发布方案&#xff0c;请留意后面文章

云服务器(华为云)安装java环境。

这篇文章主要是介绍如何搭建华为云服务器中的java环境&#xff0c;也就是jdk的安装。 这里华为云服务器使用的是liunx系统。 uname -a Linux操作系统的版本信息。具体来说&#xff0c;它表明使用的是Ubuntu系统&#xff0c;内核版本是5.15.0&#xff0c;构建于2023年1月20日&a…

16年408-数据结构

第一题&#xff1a; 解析&#xff1a; 经过查表可知&#xff1a;a的链接地址是1010H&#xff0c;而1010H正是表中e所在的位置。 由题可知f存放的位置是1014H&#xff0c; 要将f链接在a和e的中间&#xff0c;则a后面要链接f&#xff0c;f后面要链接e&#xff0c;e的链接地址不变…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…

LeetCode 257. 二叉树的所有路径,dfs

LeetCode 257. 二叉树的所有路径 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 目录 LeetCode 257. 二叉树的所有路径算法选择数据结构解题步骤算法流程算法代码算法分析易错点和注意事项相似题目 算法选择 深度优…

Excel 冻结多行多列

背景 版本&#xff1a;office 2021 专业版 无法像下图内某些版本一样&#xff0c;识别选中框选的多行多列。 如下选中后毫无反应&#xff0c;点击【视图】->【冻结窗口】->【冻结窗格】后自动设置为冻结第一列。 操作 如下&#xff0c;要把前两排冻结起来。 选择 C1&a…

2-102基于matlab的蒙特卡洛仿真

基于matlab的蒙特卡洛仿真&#xff0c;对64QAM和BPSK进行蒙特卡洛仿真&#xff0c;并绘出误码率曲线。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-102基于matlab的蒙特卡洛仿真

详解机器学习经典模型(原理及应用)——支持向量机

一、什么是支持向量机 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的机器学习算法&#xff0c;可用于解决数据分类&#xff08;二分类&#xff09;和回归问题。在分类问题上&#xff0c;SVM的核心思想是在特征空间中找到一个最优的超平面&#x…

jupyter安装与使用——Ubuntu服务器

jupyter安装与使用——Ubuntu服务器 一、安装miniconda3/anaconda31. 下载miniconda32. 安装miniconda33. 切换到bin文件夹4. 输入pwd获取路径5. 打开用户环境编辑页面6. 重新加载用户环境变量7. 初始化conda8.验证是否安装成功9.conda配置 二、安装jupyter2.1 conda安装2.2 配…

视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?

视频汇聚/视频存储/安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 EasyCVR安防监控视频综合管理平台采用先进的网络传输技术&#xff0…

PHP探索校园新生态校园帮小程序系统小程序源码

探索校园新生态 —— 校园帮小程序系统&#xff0c;让生活更精彩&#xff01; &#x1f331;【开篇&#xff1a;走进未来校园&#xff0c;遇见新生态】&#x1f331; 你是否厌倦了传统校园的繁琐与单调&#xff1f;是否渴望在校园里也能享受到便捷、智能的生活体验&#xff1…

MySQL基础篇(黑马程序员2022-01-18)

1 MySQL数据库概述 1.1 MySQL数据库的下载,安装,启动停止 1.2 数据模型 (1)关系型数据库(RDBMS) 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; A. 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护。…

Windows版本下Redis安装与使用---详解

目录 1、下载Redis压缩包 2、解压到文件夹 3、启动Redis服务 4、打开Redis客户端进行连接 5、使用一些基础操作来测试 6、Redis常用的服务指令 7、C#项目使用redis 8、C#中使用StackExchange.Redis库操作Redis 9、执行 Redis 命令 10、常见报错和相关指令 1、下载Redi…