机器学习中的数学原理——梯度下降法(最速下降法)

news2025/1/22 9:20:16

好久没更新了,确实是有点懒了,主要是这两天返乡在隔离(借口)。这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下白话机器学习中的数学——梯度下降法

目录

一、什么是梯度下降法 

二、算法分析 

三、总结


一、什么是梯度下降法 

梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。 


二、算法分析 

在上一篇最小二乘法里面还记得我们的误差公式E(θ)吗?那时候我们说要使E(θ)尽可能小,即修改参数 θ,使这个值变得越来越小。

 但是一边修改 θ 的值,一边 计算 E(θ) 并与之前的值相比较的做法实在是太麻烦了。所以我们使用微分的思想来求θ 的值。微分是计算变化的快慢程度时使用的方法。

首先我们看表达式为 g(x) = (x-1)^2,g(x) = (x-1)^2 的二次函数图像如下所示

 

它的最小值是 g(x) = 0,出现在x = 1 时。这个二次函数的增减表为:

在 x < 1 时,g(x) 的图形 向右下方延伸,反之当 x > 1 时,g(x) 的图形向右上方延伸,换句话说就是从左下方开始延伸的。 x = 3 这一点,为了使 g(x)的值变小,我们需要向左移动x,也就是必须减小 x。如果是在另一侧的 x = −1 这一点,为了使 g(x) 的值变小,我们 需要向右移动 x,也就是必须增加 x。

所以只要向与导数的符号相反的方向移动 x,g(x) 就会自然而然地沿着最小值的方向前进了。也就是自动更新参数

 上面所说的就是最速下降法或者说是梯度下降法,用数学语言表达就是:

 像A := B 这种写法,它的意思是通过 B 来定义 A。上面的意思就是将后面的值来定义前面的值,从而达到更新参数的目的,即用上一个 x 来定义新的 x。

 η是称为学习率的正的常数,读作“伊塔”。根据学习率的大小, 到达最小值的更新次数也会发生变化。换种说法就是收敛速度会 不同。有时候甚至会出现完全无法收敛,一直发散的情况。

 那我们回过头来看一下目标函数 E(θ)。我们再看一下目标函数的表达式:

fθ(x)拥有 θ0 和 θ1 两个参数。 也就是说这个目标函数是拥有 θ0 和 θ1 的双变量函数,所以不能用 普通的微分,而要用偏微分。如此一来,更新表达式就是这样的:

 这里的E是没有 θ0,是因为θ0 在 fθ(x)里面,所以这里可以使用复合函数的微分:

 

是不是特别熟悉,这是 我们大一高数上面的阶梯微分。先从 u 对 v 微分的地方开始计 算:

下面就是 v 对 θ0 进行微分:

合在一起,记得v 替换回fθ(x):

 

同样我们也可以得到 对θ1进行微分:

 

所以参数 θ0 和 θ1 的更新表达式就是这样的:

 

 

只要根据这个表达式来更新 θ0和 θ1,就可以找到正确的一次函数 fθ(x)了!


三、总结

梯度下降是通过迭代搜索一个函数极小值的优化算法。使用梯度下降,寻找一个函数的局部极小值的过程起始于一个随机点,并向该函数在当前点梯度(或近似梯度)的反方向移动。在线性和对数几率回归中,梯度下降可以用于搜索最优参数。至于SVM神经网络,我们之后才考虑。

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

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

相关文章

开放一批PCB资源(二)

这些板卡&#xff0c;都已经停产&#xff0c;现其PCB和原理图对外开放&#xff0c;都是cadence格式。 有需要的加我微信联系。&#xff08;微信&#xff1a;18633364981&#xff09; 这是开放的第二批&#xff0c;后续还有。这一批的价格象征性的收费每个 2000元。 这些板卡…

【操作系统基础】系统接口与系统调用

本文参考MOOC哈工大操作系统课程与课件 主要基于Linux 0.11系统展开 ”Author&#xff1a;Mayiming“ 文章目录一、操作系统接口1. 什么是操作系统接口&#xff1f;2. 操作系统接口体现在哪&#xff1f;3. 命令行是怎么执行代码的&#xff1f;4. 图形界面是怎么执行代码的&…

【Pytorch】Anaconda安装Pytorch详解教程(踩坑经验)

文章目录1、查看本机的CUDA版本2、更新NVIDIA驱动程序3、创建并激活Anaconda虚拟环境4、安装Pytorch5、安装过程中的错误6、检验安装结果未来可期1、查看本机的CUDA版本 cmd命令行输入nvidia-smi 2、更新NVIDIA驱动程序 NVIDIA官网&#xff1a;https://www.nvidia.cn/ 根据…

12、Mybatis搭建流程

Mybatis搭建流程 第一步&#xff1a;引入jar包依赖 第二步&#xff1a;搭建mybatis核心配置文件mybatis-config.xml 一般就四个配置 <properties<typeAliases<Environments<mappers里面内容&#xff1a; mybatis核心配置文件的标签顺序 "(properties?,s…

什么是网站权重?网站权重查询方法有哪些?

什么是网站权重&#xff1f;网站权重查询方法有哪些&#xff1f; 什么是网站权重&#xff1f; 网站权重是搜索引擎给网站赋予的权威值。 网站权重不等于网站排名&#xff0c;但是影响网站排名。 网站权重查询的方法&#xff1a; 方法一&#xff1a;用SEO查询工具。 具体操作如下…

进程通信(1) ----- 无名管道和有名管道

文章目录一、实验目的二、实验内容三、实验要求四、实验步骤及操作五、程序源码1. 普通管道 piperw.c2. 无名管道 wrfifo.c3. 有名管道 rdfifo.c一、实验目的 1.了解操作系统中的无名管道和有名管道 2.掌握进程通信中的管道编程模型 二、实验内容 管道是一种进程间通信的方式…

day13_面向对象的三大特征之一(封装)

封装概述 为什么需要封装&#xff1f; 现实生活中&#xff0c;每一个个体与个体之间是有边界的&#xff0c;每一个团体与团体之间是有边界的&#xff0c;而同一个个体、团体内部的信息是互通的&#xff0c;只是对外有所隐瞒。例如&#xff1a;我们使用的电脑&#xff0c;内部…

Java框架篇(来自硅谷的面试题)

目录 一 简单的谈一下SpringMVC的工作流程&#xff1f; 二 说出Spring或者SpringMVC中常用的5个注解&#xff0c;并解释含义 三 简述SpringMVC中如何返回JSON数据&#xff08;北京&#xff09; 四 谈谈你对Spring的理解 五 Spring中常用的设计模式 六 Spring循环…

IDA安装使用

最近学逆向&#xff0c;先备一套工具吧&#xff0c;IDA名声在外&#xff0c;首当其冲&#xff01;&#xff01; 内容主要整理自别的博客&#xff0c; Linux下安装IDA 链接: https://pan.baidu.com/s/1p9elz1a34872LsY1WLJmlA?pwdis2u 这个ida版本为32bit Linux系统准备的&…

Linux生产者消费者与信号量

目录 一.生产者消费者概念 二.模拟实现基于阻塞队列的生产消费模型 2.1概念 2.2构造阻塞队列 三.信号量 3.1原理 3.2信号量函数 3.3信号量模拟互斥功能 一.生产者消费者概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。 生产者和消费者彼此之间…

【C语言】十六进制转换为十进制

目录 题目描述 补充知识&#xff1a; 算法分析 优化算法 写在最后 题目描述 输入一个十六进制数字串&#xff0c;将其转换成为对应的整数并输出转换结果&#xff0c;遇到非十六进制数字或字符串结束符&#xff08;\0&#xff09;结束转换。 注意&#xff1a; 输入的字符…

【Java多线程】初识线程及三种创建方式

➤ Java多线程编程【一文全解】 文章目录线程简介进程的创建> 继承 Thread 类> 实现 Runnable 接口> 实现 Callable 接口线程简介 普通的程序中&#xff0c;方法的调用是执行到方法的时候&#xff0c;程序跳转到方法体中进行&#xff0c;是按照顺序进行的&#xff0c;…

说说未来趋势 「元宇宙」是什么?

最近「元宇宙」概念大火&#xff0c;连星爷等各行各业的各路大佬都可以传出消息布局进入这一个领域&#xff0c;那么这是不是意味这IT信息化时代的下一个风口&#xff0c;就是元宇宙呢&#xff1f;按小郭说呀&#xff0c;这目前来看&#xff0c;这个趋势是必然的&#xff0c;就…

Spirng 痛苦源码学习(一)——总起spring(一)

文章目录前言一、总览Spring的bean1&#xff09;bean的过程【先了解具体的生命周期后面弄】2&#xff09;hello spring 简单bean操作二、总览AOP- 1、test coding- 2、- debug- 3、- 总结debug三、总览事务- 1、- test coding- 2、 debugging- 3、 事务失效- 4、事务总结前言 …

cpu设计和实现(流水线暂停)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;数字电路里面流水线的引入&#xff0c;主要是为了提高数据的处理效率。那么&#xff0c;鉴于此&#xff0c;为什么又要对…

ssm宠物商城管理系统源码

在 Internet飞速开展的今天&#xff0c;互联网成为人们快速获取、发布和传 递信息的重要渠道&#xff0c;它在人们学习、工作、生活等各个方面发挥着重要的作用。 因此建立在 Internet应用上的地位显而易见&#xff0c;它已成为政府、企事业单位信息化 建立中的重要组成局部&am…

[附源码]SSM计算机毕业设计网上书店管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【kafka】十五、kafka消费者API

kafka消费者API Consumer消费数据时的可靠性是很容易保证的&#xff0c;因为数据在kafka中是持久化的&#xff0c;故不用担心数据丢失的问题。 由于consumer在消费过程中可能会出现断电宕机的等故障&#xff0c;consumer恢复后&#xff0c;需要从故障前的位置继续消费&#xf…

visual studio 2019 + Qt 开发,使用visual leak detector检测内存泄漏

选择了在vs2019上开发Qt, 遇到了内存泄露问题。还好vs上有方便的visual leak detector&#xff08;vld&#xff09;检测工具。 虽然官网上只支持到vs2015, 但vs2019上也能用。 具体参考这位博主的文章&#xff1a;https://blog.csdn.net/qq_22108657/article/details/1208843…

Redis数据库安装(Windows)

目录 一、下载Windows安装包 二、启动Redis 1.在终端中启动 2.使用start.bat文件启动 3.添加服务启动 三、安装Redis可视化管理工具 1.安装Redis图形客户端 2.连接数据库 一、下载Windows安装包 下载地址&#xff1a;Releases tporadowski/redis GitHub 选择下载相…