机器学习第4天:模型优化方法—梯度下降

news2024/11/18 1:35:33

文章目录

前言

梯度下降原理简述

介绍

可能的问题

批量梯度下降

随机梯度下降

基本算法

存在的问题

退火算法

代码演示

小批量梯度下降


前言

若没有机器学习基础,建议先阅读同一系列以下文章

机器学习第1天:概念与体系漫游-CSDN博客

机器学习第2天:训练数据的获取与处理-CSDN博客

机器学习第3天:线性回归-CSDN博客

梯度下降原理简述

介绍

在一个多元函数中,某点的梯度方向代表函数增加最快的方向,梯度下降的原理就是,找到损失函数下降最快的方向(与梯度方向相反),然后往这个方向走,最后达到损失函数的最小值,如下图,从高的红色点到达了低的蓝色点,梯度下降就是这样一个过程

我们可以得到一个参数更新公式,把参数设为a, 梯度设为grad,那么

a=a-n*grad

为什么要有个n呢,因为梯度方向只能表示当前位置函数增加最快的方向,对于复杂的函数,当我们改变位置的时候,这个梯度可能一直在变化,所以n代表我们每走一步的距离,我们慢慢的走下去,然后每走一步再找一次方向,这样就能走到最小的位置了

可能的问题

由于算法是往最低的地方走,当走到函数局部最小值的时候,周围都比较高,那么就可能困在这里了,无法达到全局最小值别急,当然,当损失函数是一个凸函数的时候,是没有局部最小值的,只有全局最小值,例如MSE就是一个凸函数


批量梯度下降

批量梯度下降指的是用整个向量经过矩阵运算来计算梯度,容易知道,这样算法会很慢,当训练集很大时,可能要花费很多时间

我们将每个训练集实例比作一个高山上的一个点,批量梯度下降就是算出这些点的整体趋势,然后向下运动,我们将在下面看到一种不同的想法


随机梯度下降

基本算法

与批量梯度下降不同的是,随机梯度下降每次随机选择一个实例来计算梯度,这样大大减小了运行时间,并且,随机梯度下降可以摆脱局部最小值的问题,因为随机挑选,那么即使有一部分在局部最小值中,还有一部分的方向选择可以将困住的部分解救出。


存在的问题

训练集向量中的每一个实例对应于山上的某个点,随机梯度下降就是以某个点来抉择整体的下降趋势,可以预料到,下降的过程将不会那么顺利,但趋势是对的,可以看涨图来理解随机梯度下降与批量梯度下降的区别


退火算法

当随机梯度下降算法的参数越接近最小值的时候,因为随机性,可能永远到达不了最小值,会在这周围运动

这里我们可以减小步长n,让每次变化的幅度小一点,这样我们就能更加靠近全局最小值了,这就被称作退火算法

代码演示(随机梯度下降与退火算法)

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import SGDRegressor

np.random.seed(42)

x = np.random.rand(100, 1)
y = 2 * x + np.random.rand(100, 1)

model = SGDRegressor(max_iter=1000, tol=1e-3, penalty=None, eta0=0.1)
model.fit(x, y)
pre_y = model.predict(x)

plt.scatter(x, y)
plt.plot(x, pre_y, "r-")
plt.show()

max_iter为下降批次,tol为损失函数阈值,penalty为不使用正则化(可自行搜索),eta0为最初的步长(之后会慢慢减小),整体意思就是当模型训练1000次或损失函数比0.001小时停止训练 

可以看到拟合效果也很好


小批量梯度下降

有了上面两种梯度下降的定义,小批量梯度下降应该也好理解了,它兼容二者的优点与缺点

训练快,容易到最小值,但是可能难以辨别局部最小值

当你使用GPU的时候,定义处理批次与GPU相同可以充分利用硬件资源,提高效率

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

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

相关文章

C语言第入门——第十六课

目录 一、分治策略与递归 二、递归 1.求解n的阶乘 2.输入整数、倒序输出 3.输入整数、正序输出 4.计算第n位Fibonacci数列 ​编辑5.无序整数数组打印 6.找到对应数组下标 一、分治策略与递归 在我们遇到大问题的时候,我们的正确做法是将它分解成小问题&a…

3DMAX平铺插件MaxTiles教程

MaxTiles 结合了一组材质和地图插件,任何建筑师或 3D 可视化艺术家都会喜欢。与静态位图纹理不同,MaxTiles 材质可以更改键合图案、替换和混合砖块、更改边缘、随机化颜色、位置、表面等等。MaxTiles 结合了以下功能: 墙壁和瓷砖 – 用于创建…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 5

1、要把下面4张图片重新排列成蜗牛的画像,该如何排列这些图片 A、 B、 C、 D、 答案:A 2、将下图的绳子沿虚线剪开后,绳子被分成了()部分 A、6 B、7 C、8 D、9 答案:C 3、下面的立体图形,沿箭头方向看去&#…

“世亚智博会,世亚软博会”双展联动,3月上海,4月杭州,6月北京

2024世亚智博会与世亚软博会双展联动,3月上海,4月杭州,6月北京,历经多年沉淀与打磨,随着扩张速度的不断加快,参展企业的数量也水涨船高,引领行业前沿趋势,已成为智能产业和软件行业的…

【uniapp】Google Maps

话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …

windows安装wsl2以及ubuntu

查看自己系统的版本 必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令 在设置,系统里面就能看到 开启windows功能 直接winQ搜 开启hyber-V、使用于Linux的Windows子系统、虚拟机平…

让资产权利归于建设者:Kiosk使过程变得更简单

区块链凭借着其将人的权利地位置于平台之上的能力,可以重塑互联网,而自托管为个人提供了控制和管理其资产和数据的能力。链上交易支持建设者和客户之间的点对点交易。这些特质联合起来,可以将数字世界从基于价值提取的模式转变为基于价值创造…

机器学习第7天:逻辑回归

文章目录 介绍 概率计算 逻辑回归的损失函数 单个实例的成本函数 整个训练集的成本函数 鸢尾花数据集上的逻辑回归 Softmax回归 Softmax回归数学公式 Softmax回归损失函数 调用代码 参数说明 结语 介绍 作用:使用回归算法进行分类任务 思想:…

MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器

系列文章目录 文章目录 系列文章目录前言一、使用 MPC Designer 设计控制器1.1 CSTR 模型1.2 导入被控对象并定义 MPC 结构1.3 定义输入和输出通道属性1.4 配置仿真场景1.5 配置控制器水平线1.6 定义输入约束条件1.7 指定控制器调整权重1.8 消除输出超调1.9 测试控制器抗干扰能…

15项基本SCADA技术技能

1. 人机界面 人机界面是将操作员连接到设备、系统或机器的仪表板或用户界面。 以下是 hmi 在 scada 技术人员简历中的使用方式: 完成了查尔斯湖废水处理厂和提升站的完整 HMI 图形界面。对加油系统、加油车、PLC、HMI、触摸屏进行故障排除和维修。对 Horner HMI …

吴恩达《机器学习》8-7:多元分类

在机器学习领域,经常会遇到不止两个类别的分类问题。这时,需要使用多类分类技术。本文将深入探讨多类分类,并结合学习内容中的示例,了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下,新建文件夹themes文件夹,用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…

达芬奇DaVinci Resolve Studio 18.6.3 for Mac

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件,适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能,包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点: - 提供了全面的视…

IDEA中安装Docker插件实现远程访问Docker

开启远程Docker访问 #修改Docker服务文件,需要先切换到root用户 vim /lib/systemd/system/docker.service #注释掉"ExecStart"这一行,并添加下面这一行信息 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock…

【SpringBoot】 环境准备

一.SpringBoot准备 1.下载idea 社区版 2021.1 - 2022.1.4 专业版 无要求 2.Maven 是一个工具,和Java没有关系 . 主要功能是项目构建和依赖管理. 项目构建 上述对应的都是maven命令 . 依赖管理 添加坐标之后,点击刷新,右侧就会载入依赖. Maven还有依赖传递和依赖排除功…

Simulink 自动代码生成电机控制:模型预测控制(MPC)模块使用总结(1)

目录 前言 MPC模块使用步骤和参数设计 电机控制系统验证 MPC参数调整 MPC和PI控制器比较 总结 前言 前面尝试了基于电机DQ轴电流环的传递函数设计PI控制器的参数,最近尝试了下模型预测控制(MPC)对电流环进行控制,这里总结一下…

智能井盖传感器能不能监测井盖位移

智能井盖传感器能够精准监测井盖的位移。这些传感器运用了前沿科技对井盖状态进行实时监测。一旦井盖出现异常移动传感器会立即捕捉到信号,并通过与互联网相连接的智能系统发出警报或记录数据。这种智能监测仪为城市或相关部门的井盖管理提供了实时数据支持&#xf…

Acer宏碁Predator掠夺者笔记本PH315-51原装出厂Windows10系统工厂模式ISO镜像文件

下载链接:https://pan.baidu.com/s/1GGRKYLQzl6SxdtCXbnzhrA?pwdrel7 提取码:rel7 宏基原厂Win10系统自带重置功能、带所有驱动、PredatorSense风扇键盘控制中心、Office办公软件、出厂主题壁纸、系统属性Acer宏基专属的LOGO标志、 Acer Care Center…

C#,数值计算——插值和外推,双线性插值(Bilin_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 双线性插值 /// interpolation routines for two dimensions /// Object for bilinear interpolation on a matrix. /// Construct with a vector of x1. /// value…

Vue3-watchEffect函数

Vue3-watchEffect函数 功能&#xff1a;watchEffect 函数在一开始时就会执行一次&#xff0c;而当中的回调函数的属性发生变化&#xff0c;那么watchEffect 就会再执行一次&#xff0c;主要作用还是在于监视回调函数每次的变化。 // App.vue <template><h2>计数…