有监督学习——梯度下降

1. 梯度下降

梯度下降(Gradient Descent)是计算机计算能力有限的条件下启用的逐步逼近、迭代求解方法,在理论上不保证下降求得最优解。

e.g. 假设有三维曲面表达函数空间,长(x)、宽(y)轴为子变量,高(z)是因变量,若使用梯度下降法求解因变量最低点的步骤如下:

  1. 任取一点作为起始点。
  2. 查看当前点向哪个方向移动得到最小的z值,并向该方向移动。
  3. 重复上述步骤,直到无法找到更小的z值,此时认为达到最低点。

受起始点和目标函数的约束,有时该法无法找到全局最优点,但有着比OLS更快的求解速度,因此被广泛应用。

根据原理介绍几个梯度下降求解算法概念:

  • 步长(learning rate):每一步梯度下降时向目标方向前行的长度。
  • 假设函数(hypothesis function):由特征产生目标变量的函数,常用\(h()\)表示。
  • 损失函数(loss function):评估任意参数组合的函数,常用\(J()\)表示。

损失函数判断向周围哪个方向移动的原理是计算损失函数的偏导数向量该向量就是损失函数增长最快的方向,而其反方向则是以最小化损失函数为目标时需要前进的方向。

2. 随机梯度下降

随机梯度下降(Stochastic Gradient Descent, SGD),在损失函数计算时不便利所有样本,只采用单一或小批量样本的方差和作为损失值。因此,每次迭代计算速度非常快,通过每次随机选用不同的样本进行迭代达到对整体数据的拟合。

对比普通梯度下降,随机梯度下降的主要区别在于:

  • 迭代次数明显增加,但由于每次计算样本少,总体时间缩短。
  • 由于样本数据存在噪声,每次迭代方向不一定是“正确的”,但由于迭代次数的增加,总体的移动期望任朝着正确方向前进。
  • 能因为“不一定正确”的方向越过高点,从而找到最优解。

3. Python中的SGDRegression和SGDClassifier

scikit-learn中提供了随机梯度下降的线性回归器SGDRegressor和线性分类器SGDClassifier,使用它们可学习超大规模样本(样本数>\(105\)且特征维度>\(105\))。

Python中使用两者

from sklearn.linear_model import SGDRegressor, SGDClassifier
X = [[0, 0], [2, 1], [5, 4]]    # 样本特征
y = [0, 2, 2]                   # 样本目标分类
reg = SGDRegressor(penalty='l2', max_iter=10000)
reg.fit(X, y)
reg.predict([[4,3]])
# array([1.85046249])

reg.coef_       # 查看回归参数
# array([0.30716325, 0.16212611])

reg.intercept_  # 查看截距
# array([0.13543114])

clf = SGDClassifier(penalty='l2', max_iter=100) # 初始化分类器
clf.fit(X, y)
clf.predict([[4, 3]])   # 预测
# array([2])

两者最大的不同在于predict()函数的预测结果,SGDClassifier预测的结果一定是训练数据的目标值之一,SGDRegressor预测值是假设函数直接的计算结果。

而两者的对象初始化参数类似:

AttributeIntroduce
penalty损失函数惩罚项,取值none l1 l2elasticnet,"elasticnet"是"l1"和"l2"的综合
loss损失函数类型,影响训练速度,取值squared_loss huber epsilon_insensitivesquared_epsilon_insensitive
tol损失函数变化小于tol时认为获得最优解
max_iter最大迭代次数,当迭代陷入抖动,无法满足tol时只能利用max_iter作为停止迭代条件
shuffle完成一轮所有样本迭代后是否洗牌
n_jobs训练中可利用的CPU数量
learning_rate步长类型,取值constant optimalinvscaling,前者为固定步长。后两者为动态步长有利于在训练初期跳出局部解,同时后期避免抖动。
eta0learning_rate 为 constant 或 invscaling 时的初始步长
fit_intercept是否有截距,取值TrueFalse

3. 增量学习

增量学习(Incremental Learning)是指一种可以边读数据边训练的拟合方法。

在scikit-Learn中提供了partial_fit()函数接口,所有支持增量学习的模型都实现了该函数。SGD的增量学习调用方法举例:

from random import randint
import numpy as np
reg2 = SGDRegressor(loss="squared_error", penalty="l1", tol=1e-15)
X = np.linspace(0, 1, 50)  # 50个x值
Y = X/2 + 0.3 + np.random.normal(0, 0.15, len(X))   # 用y=x/2+0.3加随机数生成样本
X = X.reshape(-1, 1)

for i in range(10000):
    idx = randint(0, len(Y)-1)  # 随机选择一个样本索引
    reg2.partial_fit(X[idx: idx+10], Y[idx: idx+10])  # 用partial_fit()训练

print(reg2.coef_)   # 查看回归参数
# [0.56874507]
print(reg2.intercept_)  # 查看截距
# [0.2769033]

查看模型参数,当前模型应为:

y=0.56874507x+0.2769033

与生成样本时的公式相近。

最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

五、面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

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

相关文章

机器学习笔记 - LoRA:大型语言模型的低秩适应

一、简述 1、模型微调 随着大型语言模型 (LLM) 的规模增加到数千亿,对这些模型进行微调成为一项挑战。传统上,要微调模型,我们需要更新所有模型参数。这也称为完全微调 (FFT) 。下图详细概述了此方法的工作原理。 完全微调FFT 的计算成本和资源需求很大,因为更新每…

基于软件在环的飞控机建模仿真

安全关键系统(Safety-Critical System,SCS)是指由于某些行为或组合行为能够引发整体系统失效,继而导致财物损失、人员受伤等严重影响的系统,诸多安全关键领域如航空航天、核电系统、医疗设备、交通运输等领域的系统都属…

ansible安装wordpress

1.回顾 yum安装wordpress 查看别名 [rootlocalhost ~]# type ll ll 是 ls -l --colorauto 的别名设置别名 aliasyum install -y alias ymyum install -y# 使用别名 ym nginx# 取消别名 unalias ym# 基于LNMP做一个wordpressnginx mysql 5.7 PHP 7.4#1、初始化过程 修改主机名…

mathematical-expression-cpp | C++ 数学表达式解析库

数学表达式-cpp Switch to English Document 介绍 本框架是一种针对数学公式解析的有效工具,能够通过C的API解析包含嵌套函数,包含函数,数列步长累加等数学公式,返回值是一个数值的结果对象,同时也可以进行比较运算…

Python学习从0开始——Kaggle深度学习002

Python学习从0开始——Kaggle深度学习002 一、单个神经元1.深度学习2.线性单元示例 - 线性单元作为模型多个输入 3.Keras中的线性单元 二、深度神经网络1.层多种类型的层 2.激活函数3.堆叠密集层4.构建Sequential模型 三、随机梯度下降1.介绍2.损失函数3.梯度下降法1.梯度下降法…

只登录不发微博ip地址会变吗?探索其中的奥秘

在数字化时代,网络IP地址如同我们的数字身份证,记录着我们在网络世界中的每一次活动。对于微博这一社交平台的用户而言,IP地址的变动或许是他们未曾注意过的细节。那么,当用户仅登录微博而不发微博时,其IP地址是否会发…

仰望U8三大黑科技,重新定义智能汽车

文 | 智能相对论 作者 | 雷歌 是时候重新定义中国的“智能汽车”了。 在仰望U8出来以前,普通人对知道的智能汽车的配置认识,智能汽车是智能驾驶智能座舱,硬件上大概是这几样:毫米波雷达激光雷达智驾芯片。 仰望U8出来以后&…

Spring Boot集成 Spring Retry 实现容错重试机制并附源码

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

LDO重要参数 – 芯片热阻

原文出自微信公众号【小小的电子之路】 最近画了一块电路板,板子上的芯片采用LDO供电,测试过程中发现LDO发热极其严重,最终不得不重新画板,加入散热设计。提到芯片发热,不得不说的一个参数就是芯片热阻,LDO…

PyTorch -- Visdom 快速实践

安装:pip install visdom 注:如果安装后启动报错可能是 visdom 版本选择问题 启动:python -m visdom.server 之后打开出现的链接 http://localhost:8097Checking for scripts. Its Alive! INFO:root:Application Started INFO:root:Working…

安装前端依赖node-sass报错

文章目录 问题1:node-sass报错问题2:node-gyp报错问题3:node-sass再次报错问题4:node-sass三次报错 问题1:node-sass报错 问题描述:经常会碰到一个新的项目安装依赖时,会报node-sass版本的问题…

寄件管理系统操作教程

步入信息化时代,企业之间的经济活动开始向线上转移,对公邮寄的管理问题,也开始进入管理者的视线内。为什么这么说呢? 很简单,早前想要谈妥一单生意,需要会面拜访等等线下活动,随着互联网的发展&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发(Java 是基础,有些源码是 Java 写…

无线MODBUS通讯模块在供水系统中的应用

一、项目背景 我国是人口大国、农业大国,同时也是贫水大国。由于大量工业废水污染了部分河流、地表的浅层水资源,并且有逐年加重的趋势,再加上农业、绿化等灌溉对水资源的大量消耗,这些因素综合作用进一步加剧了我国水资源紧缺的…

Seate分布式锁

XA模式 在第一阶段资源协调者(TC)会向资源管理者(RM)发出一个准备的请求,RM开始处理自身的业务,处理完成后不提交事务,而是向TC响应一个执行结果,表明自己成功还是失败,如…

解析Facebook对当代文化传播的影响力

Facebook作为全球最大的社交媒体平台之一,承载着巨大的文化传播功能,对当代文化产生了深远的影响。从社会交流、价值观念到艺术创作和政治动态,Facebook已经成为了人们获取信息、表达观点和交流想法的重要平台。本文将深入解析Facebook对当代…

watcher学习小结

架构 主要是watcher-api,watcher-applier,watcher-decision-engine watcher-applier watcher-decision-engine 将DecisionEngineManager和DecisionEngineSchedulingService封装到oslo_service,然后调service的launch_service,实…

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析)

Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析) 介绍Unity手柄小知识PC端和编辑器上的摇杆事件和滑动事件PS5手柄Xbox手柄北通手柄 安卓环境下(安卓手机或者安卓模拟器)PS5手柄Xbox手柄北通手柄 总结 介绍 最近…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中,有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流,一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱,还能确保重要邮件不会错过,同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

【Java】解决Java报错:FileNotFoundException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 文件路径错误2.2 文件名拼写错误2.3 文件权限问题2.4 文件路径未正确拼接 3. 解决方案3.1 检查文件路径3.2 使用相对路径和类路径3.3 检查文件权限3.4 使用文件选择器 4. 预防措施4.1 使用配置文件4.2 使用日志记录4.3 使用单元测…