有监督学习——梯度下降

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%免费

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

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

相关文章

themleaf 页面弹层取值

themleaf 页面弹层取值 创作背景themleaf页面事件onbluronclick 页面参数提交 创作背景 个人在日常开发中,遇到了一个需求页面,页面交互较多,用到的事件也很丰富,特此记录,方便后续查找也方便有需要的开发者采用&…

软件测试期末复习

软件测试期末复习 Author 雨 2024年6月18日 1. 什么是软件测试 从一个通常为无限的执行域中选取合适的有限的测试用例,对程序所期望的行为进行动态验证的活动过程。 2. 软件测试的目的 尽早地发现软件的缺陷 3.什么是测试什么是缺陷 从软件内部看:软件开…

SpringCloudStream原理和深入使用

简单概述 Spring Cloud Stream是一个用于构建与共享消息传递系统连接的高度可扩展的事件驱动型微服务的框架。 应用程序通过inputs或outputs来与Spring Cloud Stream中binder对象交互,binder对象负责与消息中间件交互。也就是说:Spring Cloud Stream能…

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术,它允许开发者创建可复用、封装良好的自定义HTML元素,并直接在浏览器中运行,无需依赖外部库。通过组合HTML模…

多尺度特征提取:原理、应用与挑战

多尺度 多尺度特征提取:原理、应用与挑战**原理****应用****挑战****总结** 多尺度特征提取:原理、应用与挑战 在计算机视觉、自然语言处理和信号处理等领域,有效地捕捉和解析数据的多种尺度特性是至关重要的。多尺度特征提取是一种技术&…

【机器学习】智能创意工厂:机器学习驱动的AIGC,打造未来内容新生态

🚀时空传送门 🔍机器学习在AIGC中的核心技术📕深度学习🎈生成对抗网络(GANs) 🚀机器学习在AIGC中的具体应用🍀图像生成与编辑⭐文本生成与对话系统🌠音频生成与语音合成 …

SpringMVC01-初始SpringMVC

SpringMVC 回顾MVC 什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模…

高通Android 12 右边导航栏改成底部显示

最近同事说需要修改右边导航栏到底部,问怎么搞?然后看下源码尝试下。 1、Android 12修改代码路径 frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java a/frameworks/base/services/core/java/com/android/server/wm/Display…

【LeetCode:2786. 访问数组中的位置使分数最大 + 递归 + 记忆化缓存 + dp】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

电感的本质是什么

什么是电感? 电感器件一般是指螺线圈,由导线圈一圈靠一圈地绕在绝缘管上,绝缘管可以是空心的,也可以包含铁芯或磁粉芯。 为什么把’线’绕成’圈’就是电感? 电感的工作原理非常抽象,为了解释什么是电感…

IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照(snapshot)JAR 包

IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照(snapshot)JAR 包 目录 IntelliJ IDEA 使用 Maven 时不加载本地私服的最新版本快照(snapshot)JAR 包1. 检查 settings.xml2. IDEA Maven 配置3. 强制更新 Snapshot4. 使用…

使用 C# 学习面向对象编程:第 8 部分

抽象方法 亲爱的读者,本文是 OOP 的第四大支柱,也是最后一大支柱。对于 OOP 初学者来说,这很容易让人困惑。因此,我们用非常简单的语言提供了一个示例。 “抽象用于管理复杂性。无法创建抽象类的对象。抽象类用于继承。” 例如…

端口映射工具下载?

天联是一款强大的端口映射工具,它能够帮助用户实现远程数据采集管理、异地统一管理、随时随地协同办公等多种场景的应用。无论您是医药、餐饮、商超等零售行业的企业,还是需要使用OA、CRM、ERP、财务进销存等系统的企业,甚至是使用视频监控设…

Python自动化测试面试题精选(一)

今天大家介绍一些Python自动化测试中常见的面试题,涵盖了Python基础、测试框架、测试工具、测试方法等方面的内容,希望能够帮助你提升自己的水平和信心。 项目相关 什么项目适合做自动化测试? 答:一般来说,适合做自…

前端菜鸡流水账日记 -- git管理工具(多版本)

哈喽哇,我又又又来了,其实之前就挺想进行一篇关于git管理工具的分享的,但是一直都没有来的及,直到今天,在学习的时候,,一个朋友新发现了一个vscode中的小插件,所以我就决定一起来分享…

Github入门教程,适合新手学习(非常详细)

前言:本篇博客为手把手教学的 Github 代码管理教程,属于新手入门级别的难度。教程简单易操作,能够基本满足读者朋友日常项目寄托于 Github 平台上进行代码管理的需求。Git 与 Github 是一名合格程序员 coder 必定会接触到的工具与平台&#x…

React+TS前台项目实战(十)-- 全局常用组件CopyText封装

文章目录 前言CopyText组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲项目常用复制文本组件封装,这个组件是一个用于拷贝文本的 React 组件,它提供了拷贝,国际化和消息提示的功能 CopyText组件 1. 功能分…

linux远程访问及控制

补充: 终端:接收用户的指令 TTY终端 虚拟终端 ssh:22端口号,加密。 telnet:23端口号,不加密。 解释器:shell SSH 远程管理 SSH(Secure Shell)是一种安全通道协议&#xff0c…

012.指纹浏览器编译-修改canvas指纹(高级)

指纹浏览器编译-修改canvas指纹(高级) 一、canvas指纹是什么 之前介绍过canvas指纹和常见网站绕过canvas指纹,插眼: https://blog.csdn.net/w1101662433/article/details/137959179 二、为啥有更高级的canvas指纹 众所周知,creepjs和brow…

利用CUDA加速卷积计算:原理、实践与示例代码

利用CUDA加速卷积计算:原理、实践与示例代码 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)是目前最流行和有效的模型之一。然而,随着模型复杂度的增加,卷积计算的计算量也随之增加,这使得在CPU上进行卷积计算变得非常耗时。因此,利用CUDA加速卷积…