有监督学习——梯度下降

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.mzph.cn/bicheng/27561.shtml

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

相关文章

大模型企业落地:汽车行业知识大模型应用

前言 在当今这个信息爆炸的时代,知识管理成为了企业提升核心竞争力的关键。特别是在汽车行业这样一个技术密集、信息量庞大的领域,如何高效管理和利用知识资源,成为了每个企业必须面对的挑战。 汽车行业的知识管理痛点 汽车行业作为现代工…

10.错误处理

标题 一、概述二、panic!与不可恢复错误2.1 出错时2.2 示例2.3 panic!的 backtrace 三、Result 与可恢复的错误3.1 引入3.2 错误示例3.3 传播错误1)概念2)传播错误示例3)传播错误的简写:?运算符 一、概述 Rust将错误分…

springboot网上书店管理系统-计算机毕业设计源码03780

摘 要 网上书店管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、站点管理(轮播图)用户管理(管理员、注册用户)内容管理&#x…

深入理解ReentrantLock

深入理解ReentrantLock 在Java并发编程中,锁(Lock)是控制多个线程对共享资源访问的重要工具。虽然Synchronized关键字是实现锁的常用方式,但它在功能上比较有限。ReentrantLock是java.util.concurrent.locks包中提供的一个更加灵…

FreeRTOS移植:STM32L476 nucleo-L476RG 开发板《02》

系列文章 FreeRTOS移植:STM32L476 nucleo-L476RG 开发板《01》 说明 上一篇 FreeRTOS移植:STM32L476 nucleo-L476RG 开发板《01》 主要讲了一下如何快速搭建一个 STM32 裸机工程,其实 STM32CubeMX 可以生成 FreeRTOS 的工程,这就…

Linux host映射 设置主机名并通过主机名找到指定系统

一、windows ping linux 1.windows进入到 C:\Windows\System32\drivers\etc\hosts 内,使用edit with notepad打开hosts文件,在下面添加需要寻找的ip以及其主机名。该ip以及主机名即linux的一致。需要查看linux主机名的在终端使用 hostname进行查看&#…

spring boot3登录开发-邮箱登录/注册接口实现

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 所需依赖 邮箱验证登录/注册实现 1.创建交互对象 2.登录注册业务逻辑实…

JDK17 你的下一个白月光

JDK版本升级的非常快,现在已经到JDK20了。JDK版本虽多,但应用最广泛的还得是JDK8,正所谓“他发任他发,我用Java8”。 但实际情况却不是这样,越来越多的java工程师拥抱 JDK17,于是了解了一下 JDK17新语法&a…

Star-CCM+自动网格执行方法与设置技巧

在Star中进行一个仿真项目时,有时会创建多个自动网格。网格创建结束后需要执行。在Star中,网格执行可以分为三种。分别是:单独执行操作;多个执行操作;全部执行操作。接下来将三种执行操作的方法与步骤进行介绍。 其次,如果不习惯用自定义控制网格,有时在一个项目中就会…

大模型+人工智能:重塑地方志管理的新力量

前言 在科技日新月异的今天,人工智能(AI)正以前所未有的速度渗透到各个领域,改变着我们的工作和生活方式。特别是在地方志管理这一领域,大模型和人工智能的结合正在开启一场深刻的变革。今天,就让我们一起…

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】梯度的反向传播算法

矩阵微积分(Matrix Calculus) 在开始之前,需要先了解矩阵微积分的一些计算规则。 首先,对于矩阵微积分的表示,通常由两种符号约定: 分母布局 标量关于向量的导数为列向量 向量关于标量的导数为行向量 N维…

LDR6500:手机电脑拓展坞转接器方案的卓越之选

随着科技的飞速发展,手机和电脑已成为我们日常生活中不可或缺的工具。然而,它们的接口有限,经常难以满足我们多样化的需求。这时,一款高效、稳定的拓展坞转接器就显得尤为重要。LDR6500,作为乐得瑞科技精心研发的USB P…

【计算机视觉(10)】

基于Python的OpenCV基础入门——图像滤波去噪 图像滤波去噪均值滤波中值滤波高斯滤波双边滤波方框滤波图像滤波去噪代码实现及其效果图 图像滤波去噪 图像滤波去噪是一种图像处理方法,它通过应用滤波器来减少或消除图像中的噪声。噪声是图像中不希望的、无用的、干…

安装sqlserver2022 express

1、下载 SQL Server 下载 | Microsoft 双击sql2022-ssei-expr 2、安装 下载完成以后,将会出现以下对话框 : 点击【全新SQL Server独立安装或向现有安全添加功能】 下一步,下一步: 下一步: 下一步,这里我…

【LeetCode:2779. 数组的最大美丽值 + 排序 + 二分】

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

【docker】如何解决artalk的跨域访问问题

今天折腾halo的时候,发现artalk出现跨域访问报错,内容如下。 Access to fetch at https://artk.musnow.top/api/stat from origin https://halo.musnow.top has been blocked by CORS policy: The Access-Control-Allow-Origin header contains multipl…

Kotlin编程实践-【Java如何调用Kotlin中带默认值参数的函数】

问题 如果你有一个带有默认参数值的 Kotlin 函数,如何从 Java 调用它而无须为每个参数显式指定值? 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法,这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …

企业环保创A标准

在环保日益受到重视的今天,企业如何有效地进行环保管理,提高自身的环保水平,已成为一个不可忽视的议题。而企业环保创A标准,正是为了评估企业的环保水平和环保管理能力而制定的一项重要评价标准。朗观视觉小编将详细解析企业环保创…

XILINX 7系列XDMA使用_IP核介绍以及工程搭建

文章目录 一、XDMA IP核1.1、接口说明1.2、配置页说明 二、XDMA工程搭建2.1、BD搭建2.2 Linux下XDMA驱动安装2.3 Linux下使用XDMA进行数据传输 一、XDMA IP核 1.1、接口说明 sys_clk:主机给PCIE提供的时钟信号,通过原理图查看 sys_rst_n:主机…

【已解决】引入 element 组件无法使用编译错误 ERROR Failed to compile with 1 error

如果大家使用这个vue 配合 element 框架不熟练,当你顺利按照文档安装好 vue 和 element 的时候想要使用element 的组件时候确无法展示出来,甚至报错。不妨看看是不是这个问题, 1.首先使用element 的时候,前提是把必须要的 elemen…