深度学习_5_模型拟合_梯度下降原理
需求:
想要找到一条直线,能更好的拟合这一些点
如何确定上述直线就是最优解呢?
由计算机算出所有点与我们拟合直线的误差,常见的是均方误差
例如:P1与直线之间的误差为e1
将P1坐标带入直线并求误差得:
推广到所有点:
整合:
由于xi, yi都为已知点,那么它们就是常数
化简:
这个误差函数就称为代价函数,其中a, b, c为常数,w为直线得斜率
目标:
找到一个斜率w能使这条直线能更好得拟合上述所有点,反应出来的实质就是e最小
简而言之就是找到一个最优解w0使e最小
对于最优解w0,当w > w0时w位置所对应导数(也称斜率或梯度)大于零,w < w0时导数小于零
所以为了更好的迭代出最优解,得出以下迭代公式:
等高线大致可以这样理解:
学习率过大过小都不行,太大了下降过快,太小了太慢
为什么不直接用 w = -b/2*a求解?
要拟合这些点,直线就得是y = k * x + b,这可有两个变量
按照上述理论求代价函数为了防止与常数向量表示重复,我用x = k, y = b
最后得到:
其中a,b,c,d,e,f均为常数
那么此方程就一个三维的了,x = -b/2a也不顶用了
求解过程:
使用梯度下降优化 k 和 b 的基本步骤:1.初始化 k 和 b 的值。2.定义损失函数,常见的选择是均方误差(Mean Squared Error)损失函数。
它可以表示为 loss = (1/N) * sum( (y - (kx + b))^2 ),其中 N 是点的数量,y 是真实的 y 值,x 是对应的 x 值。3.计算损失函数关于 k 和 b 的梯度。这可以通过计算损失函数对 k 和 b 的偏导数来实现。4.使用梯度下降算法更新 k 和 b。梯度下降的更新规则为 k = k - learning_rate * gradient_k,b = b - learning_rate * gradient_b,其中 learning_rate 是学习率,
gradient_k 和 gradient_b 是损失函数关于 k 和 b 的梯度。重复步骤 3 和 4,直到达到停止条件(例如达到一定的迭代次数或损失函数的变化小于某个阈值)。
计算机会不断得通过这个梯度下降的过程找到最优解x, y,这也就是为什么学习次数达到一定量构建出来的模型也更精确
疑惑:
1、为什么损失函数最小对应的损失函数对k的偏导与损失函数对应b的偏导值趋近于零?
当损失函数对模型参数的偏导数趋近于零时,意味着在该参数值附近,损失函数的变化非常小,再进行参数更新可能不会有明显的改进。这时,我们可以认为模型已经接近局部最优解,损失函数的值也趋近于最小值。
具体来说,对于线性回归模型中的参数 k 和 b,损失函数对 k 的偏导数和对 b
的偏导数的趋近于零表示在当前参数值附近,沿着每个参数的变化方向,损失函数的变化非常小。这可以解释为损失函数对参数的梯度几乎为零,即在该点附近的斜率几乎为零,导致参数不会有太大的变化。当参数的梯度趋近于零时,梯度下降算法会收敛,即停止参数更新,认为找到了局部最优解或者接近最优解。这是梯度下降算法的终止条件之一。但需要注意的是,梯度下降可能会停在局部最优解而非全局最优解,因此在实际应用中,可以通过调节学习率等参数来控制梯度下降的迭代过程,以更好地找到最优解。
2、什么是局部最优解和全局最优解?
这也正是为什么利用机器学习产生的模型会产生大的误差
3、怎么能确保这个最小值e是全局最小而不是局部最小
为了确保找到的最小值是全局最小而不是局部最小,我们可以采用以下方法:
1、使用随机初始化参数的方法。通过多次运行算法并随机初始化参数,可以增加找到全局最小的概率。
2、调整学习率。如果学习率过大,可能会导致算法在最小值附近震荡而无法收敛到全局最小;如果学习率过小,则算法可能会陷入局部最小。因此,需要适当调整学习率的大小。
3、使用动量法或自适应学习率法等优化算法。这些算法可以在梯度变化缓慢时加速收敛,而在梯度变化剧烈时减小更新幅度,从而避免陷入局部最小。
4、添加正则化项。正则化项可以限制模型的复杂度,防止模型过度拟合训练数据,从而提高模型的泛化能力。同时,正则化项也可以使损失函数更加平滑,减少陷入局部最小的可能性。
学习渠道:梯度下降 & Chatgdp
相关文章:

深度学习_5_模型拟合_梯度下降原理
需求: 想要找到一条直线,能更好的拟合这一些点 如何确定上述直线就是最优解呢? 由计算机算出所有点与我们拟合直线的误差,常见的是均方误差 例如:P1与直线之间的误差为e1 将P1坐标带入直线并求误差得: 推广到所有点&a…...

大模型时代,AI如何成为数实融合的驱动力?
10月25日,百度APP、百家号联合中兴通讯举办的“时代的增量“主题沙龙第二期在北京顺利召开。本期沙龙围绕“数实融合新视角”邀请学界、业界、媒体从业者等领域专家出席,以产学研相结合的视角深入探讨数实融合的最新技术趋势,并围绕数实融合在…...

MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)
目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表,具体参数的含义是什么呢? 0.2 目标检测领域常用的公开数据集 PASCAL …...

css实现鼠标多样化
cursor pointer: 手型default: 箭头text: 文本输入光标move: …...

21.2 Python 使用Scapy实现端口探测
Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提…...

Qt设计一个自定义的登录框窗口
今天写了一个Qt登录、注册的小demo,后续完善会连接MySQL使用,过几天写完我会放在github上。 主要页面: 动态演示: 写完这个界面后,我终于知道了Qt为什么几乎没什么好看的窗口设计了,随便写一个简单大方的登…...

05 MIT线性代数-转置,置换,向量空间Transposes, permutations, spaces
1. Permutations P: execute row exchanges becomes PA LU for any invertible A Permutations P identity matrix with reordered rows mn (n-1) ... (3) (2) (1) counts recordings, counts all nxn permuations 对于nxn矩阵存在着n!个置换矩阵 , 2. Transpose: 2.…...

[数据结构】二叉树
1.概念 一棵二叉树是结点的一个有限集合,该集合: 1. 或者为空 2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成 从上图我们可以发现: 1.二叉树不存在大于2 的度 2.二叉树的子树有左右之分,次序不能颠倒。是有…...

idea 中配置 maven
前文叙述: 配置 maven 一共要设置两个地方:1、为当前项目设置2、为新项目设置maven 的下载和安装可参考我之前写过的文章,具体的配置文章中也都有讲解。1、为当前项目进行 maven 配置 配置 VM Options: -DarchetypeCataloginternal2、为新项…...

Python---for循环嵌套
for循环嵌套,就是一个for循环里面嵌套另外一个for循环的写法。 当循环结构相互嵌套时,位于外层的循环结构常简称为外层循环或外循环,位于内层的循环结构常简称为内层循环或内循环。 基本语法: # 外层循环 for i in 序列1:# 内层…...

189. 轮转数组 --力扣 --JAVA
题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 解题思路 通过位移后位置对数组长度的取余来判断元素变换后的位置 代码展示 class Solution {public void rotate(int[] nums, int k) {int size nums.length;int[]…...

C# 使用waveIn实现声音采集
文章目录 前言一、需要的对象及方法二、整体流程三、关键实现1、使用Thread开启线程2、TaskCompletionSource实现异步3、将指针封装为Stream 四、完整代码1.接口2.具体实现 五、使用示例方式一方式二 总结 前言 之前实现了《C 使用waveIn实现声音采集》,后来C#项目…...

长连接的原理
Apollo的长连接实现是 Spring的DeferredResult来实现的,先看怎么用 import ...RestController RequestMapping("deferredResult") public class DeferredResultController {private Map<String, Consumer<DeferredResultResponse>> taskMap new HashMa…...

软考系列(系统架构师)- 2015年系统架构师软考案例分析考点
试题一 软件架构(质量属性效用树、架构风险、依够点、权衡点) 【问题1】(12分) 在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的…...

小程序开发——小程序的视图与渲染
1.视图与渲染过程 基本概念: 视图层由WXML页面文件和样式文件WXSS共同组成。事件是视图层和逻辑层沟通的纽带,用户操作触发事件后可通过同名的事件处理函数执行相应的逻辑,处理完成后,更新的数据又将再次渲染到页面上。 WXML页面…...

用python实现操作mongodb的插入和查找操作
用python实现操作mongodb的插入和查找操作 import pymongoclient pymongo.MongoClient("mongo://localhost:27017") db client["app"] col db["C1"]# 插入一条数据 #user { # "name": "Sam", # "age":…...

代码审计及示例
简介: 代码安全测试是从安全的角度对代码进行的安全测试评估。 结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安全风险降到最低。 方法&#x…...

【Kotlin精简】第6章 反射
1 反射简介 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性。 1.1 Kotlin反射 我们对比Kotlin和Java的反射类图。 1.1.1 Kotlin反射常用的数据结…...

基于FPGA的电风扇控制器verilog,视频/代码
名称:基于FPGA的电风扇控制器verilog 软件:QuartusII 语言:Verilog 代码功能: 基于FPGA的电风扇控制器 运用 EDA SOPO实验开发系统设计一个基于FPGA的电风扇定时开关控制器,能实现手动和自动模式之间的切换。要求: (1)KI为电…...

【MySQL】区分:等值连接/自连接/自然连接/外连接 以及ON和Where使用
区分:等值连接/自连接/自然连接/外连接 以及ON和Where使用 一、等值连接二、自连接三、自然连接四、外连接1.左外连接2.右外连接3.全外连接 五、using 和 on六、JOIN 关联表中 ON、WHERE 后面跟条件的区别 一、等值连接 等值连接:它是基于两个表之间的相…...

Windows环境下Apache安装部署说明及常见问题解决
一、软件准备 1.1 Python的下载与安装 见博客 链接: Python下载安装 1.2 Pycharm的下载与安装 见博客 链接: pycharm安装 1.3 Mysql的下载与安装 见博客 链接: MySQL安装 1.4 Navicat的下载与安装 可参考软件安装管家。 解释说明:Pycharm是Python的集成编译环境,Nav…...

Linux-安装docker-compose
前言:本文建立在服务器中已经存在docker环境的基础上,总结了安装docker-compose过程,以及安装过程中遇到的问题和解决方案。 一、下载docker-compose 在网上找了两种,一种是github官方的,一种是国内的镜像 gitbub官…...

机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)
KNN-手写数字数据集: 使用sklearn中的KNN算法工具包( KNeighborsClassifier)替换实现分类器的构建,注意使用的是汉明距离; 分段解释代码: import os import pandas as pd from Levenshtein import hamming导入所需的库,包括os用于文件操作,pandas用于数据处理,以及hamm…...

Java零基础入门-赋值运算符
前言 Java是一门广泛被应用的编程语言,它被用于开发各种类型的应用程序,从桌面应用程序到企业级后端系统。对于零基础的人来说,学习Java可能会感到有些困难。本文将帮助那些没有编程经验的人了解Java的赋值运算符。 摘要 本文将介绍Java中…...

xshell+xming显示jmeter的gui页面
1.下载和安装xming,下载地址:https://sourceforge.net/projects/xming/ 2.配置xming 记住这个端口,一会要用到 修改进入xming安装目录修改host文件 此处是远程服务器的ip 3.服务器执行vi /etc/ssh/sshd_config,修改成如图所示…...

el-tree业务
<el-form-item label"选择节点" prop"node_ids"><el-checkboxv-if"regionList.length"v-model"selectAll":disabled"selectDisabled":indeterminate"isIndeterminate":show-checkbox"!selectDisabl…...

警惕Mallox勒索病毒的最新变种malloxx,您需要知道的预防和恢复方法。
导言: 恶意软件的威胁不断进化,其中之一是.malloxx勒索病毒。这种病毒可以加密您的文件,并要求您支付赎金以解锁它们。本文91数据恢复将详细介绍.malloxx勒索病毒,包括如何恢复被加密的数据文件以及如何预防这种威胁。如果受感染…...

linux中断下文之tasklet(中断二)
在申请 GPIO 中断时使用 request_irq,但是request_irq绑定的中断服务程序指的是中断上文。在 Linux 内核中,tasklet 是一种特殊的软中断机制,被广泛用于处理中断下文相关的任务。它是一种常见且有效的方法,在多核处理系统上可以避免并发问题。…...

Mysql事务+redo日志+锁分类+隔离级别+mvcc
事务: 是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)&a…...

Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
一、Kafka消费者提交Offset的策略 Kafka消费者提交Offset的策略有 自动提交Offset: 消费者将消息拉取下来以后未被消费者消费前,直接自动提交offset。自动提交可能丢失数据,比如消息在被消费者消费前已经提交了offset,有可能消息…...