随机梯度下降的学习

news2024/9/24 21:48:50

梯度下降(Gradient-Descent)

在机器学习的旅途中,不可避免需要与它打交道,那么该如何初步理解它的用途呢?

好的,想象你在一个山谷中,想要找到最低点(山谷的底部)。你现在在某个地方,但不确定如何到达最低点。这个过程就像是梯度下降。
在这里插入图片描述

寻找方向:你看看四周,发现周围的地势向下倾斜的方向是你应该走的方向。这个“倾斜”就对应于梯度。
在这里插入图片描述

一步一步前进:你每次只走一小步,朝着那个倾斜的方向前进。每走一步,你再次查看周围的地形,找到新的倾斜方向,并继续向前走。

直到达到最低点:你重复这个过程,直到不再有明显的倾斜方向,或者再走一步几乎没有下降,这时候你就到达了山谷的底部,也就是你的目标——最低点。

那么在机器学习中,损失函数就像地形,模型参数就是你的位置,而梯度就是指向最低点的方向。通过不断调整参数,梯度下降帮助我们找到最佳的模型设置。
这个过程就像在不断探索和调整,直到找到最优解。

再回到通用的概念中来:梯度下降是一种优化算法,用于最小化损失函数,从而提高模型的性能。

在机器学习中,它的主要用途是调整模型参数,使得预测值更接近实际值。通过计算损失函数相对于参数的梯度,梯度下降能指引我们朝着减少损失的方向更新参数,最终找到最佳的参数设置。简而言之,它帮助我们优化模型,使其在训练数据上表现更好。Gradient-Descent(全世界最通俗易懂的梯度下降法详解-优化函数大法)

损失函数(loss function)

ok,现在在简单讲解一下损失函数。同样,我们可以用一个生动的例子来理解:

想象你在打保龄球,目标是把球滚向瓶子,尽量击倒所有瓶子。损失函数就像是你每次投球后的“得分”。
在这里插入图片描述

得分计算:如果你把球准确地滚到瓶子前,得分很高;如果偏离目标,得分就低。得分的高低反映了你与理想结果的距离。

最小化损失:你的目标是尽量提高得分,降低失误。在机器学习中,损失函数就是计算你预测值与实际值之间的差距,越小越好。

优化过程:每次投球后,你会分析一下哪种姿势或力量最有效,以便下一次投得更好。这个调整过程就是优化模型参数,以减少损失。

因此,损失函数帮助我们评估模型的表现,指导我们进行调整,最终达到更好的预测效果。

简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失(当然损失值越小证明模型越是成功),我们知道有许多不同种类的损失函数,这些函数本质上就是计算预测值和真实值的差距的一类型函数,然后经过库(如pytorch,tensorflow等)的封装形成了有具体名字的函数。

损失函数(lossfunction)的全面介绍(简单易懂版)

随机梯度下降

有了前面的一点基础知识,再来学习理解随机梯度下降便会容易些。
随机梯度下降(SGD)是一种改进的梯度下降方法。
放上一张李沐大大的图,介绍它的运作机制,引入名词:mini-batch,意味小批量
在这里插入图片描述
主要优点如下:

1.效率:每次只用一小部分数据(一个样本或小批量),比使用整个数据集更新参数要快得多。这在处理大规模数据集时尤为重要。

2.更快的收敛:由于随机性,SGD可以在损失函数的复杂面上“跳跃”,避免陷入局部最优,可能更快找到全局最优解。

3.更强的泛化能力:随机更新引入了噪声,有助于避免过拟合,使模型在新数据上表现更好。

而这些优点结合实际的例子就是,
假设你在拼图,你采取的拼图方法是每次只拿一小部分拼图块来试拼,而这样就会导致

更快:你不用等整个拼图完成,就能快速尝试和调整。

更灵活:偶尔拼错的块可能让你发现新的组合,帮助你找到更好的拼图方式。

更容易找到整体效果:通过随机选择不同的块,你能更好地应对整个拼图,而不是只依赖一种方式。
简单python代码实现

import numpy as np
import matplotlib.pyplot as plt

# 生成一些示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)  # 100个随机点
y = 4 + 3 * X + np.random.randn(100, 1)  # 线性关系加上一些噪声

# 初始化参数
theta = np.random.randn(2, 1)  # 权重和偏置
learning_rate = 0.01
n_epochs = 50
m = len(X)

# 增加偏置项
X_b = np.c_[np.ones((m, 1)), X]  # 在X的第一列加上偏置项1

# 随机梯度下降
for epoch in range(n_epochs):
    for i in range(m):
        random_index = np.random.randint(m)  # 随机选择一个样本
        Xi = X_b[random_index:random_index + 1]  # 取出这个样本
        yi = y[random_index:random_index + 1]
        
        # 计算预测
        gradient = 2 * Xi.T.dot(Xi.dot(theta) - yi)  # 计算梯度
        theta -= learning_rate * gradient  # 更新参数

# 打印最终参数
print("Learned parameters:", theta)

# 可视化结果
plt.scatter(X, y, color='blue', label='Data')
plt.plot(X, X_b.dot(theta), color='red', label='Linear regression')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Linear Regression with SGD')
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A50期指

A50期指是什么? A50期指一般指的是中国A股市场的富时中国A50指数期货。富时中国A50指数(FTSE China A50 Index)是由富时罗素公司编制的一个权益指数,包含了中国A股市场中市值最大的50只股票,代表了中国A股市场的核心企业。 富时中国A50指数期货是基于富时中国A50指数的衍…

系统滴答定时器

定时器 目录 定时器 回顾GPIO、中断 定时器的分类 一、系统滴答定时器 应用:非阻塞轮询思想 回顾GPIO、中断 理论: GPIO:八种模式概念,能够根据电路的实际情况,去分析该使用哪一种模式。 上拉 下拉 浮空 模拟 推…

【2024W32】肖恩技术周刊(第 10 期):太阳神鸟

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

uboot无法使用nfs下载文件的问题

一、系统环境 见这篇博客。 二、问题描述 uboot使用nfs下载文件出现 “T T T”,一直无法下载 三、解决方法 编辑/etc/nfs.conf文件: sudo xed /etc/nfs.conf开启udp: udpy之后重启nfs服务器: sudo /etc/init.d/nfs-kernel-server re…

(学习记录)使用HAL库 STM32CubeMX——GPIO引脚输入配置

STM32F103C8T6的GPIO引脚输入配置 时钟配置 (学习记录)使用 STM32CubeMX——配置时钟(入门)https://blog.csdn.net/Wang2869902214/article/details/142423522 GPIO 引脚输出配置 (学习记录)使用 STM32…

优青博导团队指导-组蛋白甲基化修饰、实验设计、实验结果分析、测序分析及SCI论文辅助,精准高效,为农医学科研保驾护航!

组蛋白甲基化修饰工具(H3K4me3 ChIP-seq) 组蛋白甲基化类型也有很多种,包括赖氨酸甲基化位点H3K4、H3K9、H3K27、H3K36、H3K79和H4K20等。组蛋白H3第4位赖氨酸的甲基化修饰(H3K4)在进化上高度保守,是被研究最多的组蛋白修饰之一。

相亲交友网站为不同年龄层提供的服务差异

随着互联网技术的飞速发展,相亲交友网站已经成为现代人寻找伴侣的重要途径之一。无论是年轻人还是中老年人,都可以通过相亲交友网站找到自己的另一半。然而,不同年龄层的人在使用相亲交友网站时的需求和服务体验上存在显著差异。本文将探讨这…

【视频讲解】非参数重采样bootstrap的逻辑回归Logistic应用及模型差异Python实现

全文链接:https://tecdat.cn/?p37759 原文出处:拓端数据部落公众号 分析师:Anting Li 本文将深入探讨逻辑回归在心脏病预测中的应用与优化。通过对加州大学欧文分校提供的心脏病数据集进行分析,我们将揭示逻辑回归模型的原…

思维可视化:2024年四大创新思维导图软件排行榜!

在快节奏的现代生活中,如何提高工作效率、整理繁杂信息成为许多人关注的焦点。思维导图作为一种高效的信息梳理工具,越来越受到职场人士的喜爱。今天,就为大家推荐几款优秀的思维导图软件,助您轻松应对各种工作场景。 福昕思维导…

《程序猿之设计模式实战 · 适配器模式》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

C++(学习)2024.9.24

目录 容器 1.标准模板库STL 2.概念 3.顺序容器 (1)array数组 (2)vector向量 (3)list列表 (4)deque 队列 4.关联容器 5.迭代器 面向对象核心 继承 概念 构造函数 1.派生…

软件需求规格说明书编制模板参考(Doc原件)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需…

项目实战总结-Kafka实战应用核心要点

Kafka实战应用核心要点 一、前言二、Kafka避免重复消费2.1 消费者组机制2.2 幂等生产者2.3 事务性生产者/消费者2.4 手动提交偏移量2.5 外部存储管理偏移量2.6 去重逻辑2.7 幂等消息处理逻辑2.8 小结 三、Kafka持久化策略3.1 持久化文件3.2 segment 分段策略3.3 数据文件刷盘策…

Leetcode面试经典150题-39.组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如…

加固与脱壳01 - 环境搭建

虚拟机 VMWare 多平台可用,而且可以直接激活,需要先注册一个账号 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro KALI 类Ubuntu系统,官方提供了 vmware 版本,直接下载就可以使用。…

【Python机器学习】NLP信息提取——提取人物/事物关系

目录 词性标注 实体名称标准化 实体关系标准化和提取 单词模式 文本分割 断句 断句的方式 使用正则表达式进行断句 词性标注 词性(POS)标注可以使用语言模型来完成,这个语言模型包含词及其所有可能词性组成的字典。然后,该…

三子棋小游戏

使用C语言编写代码,实现一个简单小游戏---三子棋 这里创建1个game.h文件,用来声明函数、宏的文件,一个game.c文件用来实现函数game(),一个play.h文件用来作为该游戏的源文件。 具体代码如下: …

利用大型语言模型轻松打造浪漫时刻

当情人节年年如约而至,每每都需费尽心思为对方营造一场令人难忘的仪式,却因缺乏创意与思路而倍感困扰。今天,我决定让大型语言模型为我们提供一些灵感和建议,让我们能够轻松实现这一目标。让我们开始行动吧!此前&#…

问卷是否要做信效度分析,5类信度与4类效度常用指标及评价标准

论文问卷进行分析时,大家是否有这样的疑惑—— 我收集的问卷是否需要进行信效度分析呢? 下面一文给大家梳理问卷信效度分析的相关内容,包括什么样的题目需要进行信效度分析、5类信度分析与4类效度分析常用指标及评价标准。 一、问卷是否需…

JW01二氧化碳传感器(串行通信 STM32)

目录 一、介绍 二、传感器原理 1.工作原理介绍 2.串口数据流格式 三、程序设计 main.c文件 usart3.h文件 usart3.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 JW01-CO2检测模块是一种用于检测空气中二氧化碳浓度的传感器模块。它可以广泛应用于室内空气质量…