机器学习 - 梯度下降

场景

上一章学习了代价函数,在机器学习中,代价模型是用于衡量模型预测值与真实值之间的差异的函数。它是优化算法的核心,目标是通过调整模型的参数来最小化代价模型的值,从而使模型的预测结果更接近真实值。常见的代价模型是均方误差(Mean Squared Error,MSE),它衡量了模型预测值与真实值之间的平方差的平均值。上一章曾经简单得用它预测过房价,MSE可以表示为:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0, \theta_1) = \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2
其中, J ( θ 0 , θ 1 ) J(\theta_0, \theta_1) J(θ0,θ1) 是代价模型, h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ(x(i)) 是模型对第 i i i 个样本的预测值, y ( i ) y^{(i)} y(i) 是第 i i i 个样本的真实值, m m m 是训练样本数量。
梯度下降算法是一种优化算法,用于最小化代价模型。它通过迭代的方式,沿着代价函数的负梯度方向更新模型的参数,以逐步接近最优解。在每次迭代中,梯度下降算法计算代价函数对于每个参数的偏导数(即梯度),然后按照一定的学习率更新参数。
具体来说,在线性回归中,梯度下降算法的更新规则可以表示为:

θ 0 : = θ 0 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 0 \theta_0 := \theta_0 - \alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_0} θ0:=θ0αθ0J(θ0,θ1)

θ 1 : = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 1 \theta_1 := \theta_1 - \alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_1} θ1:=θ1αθ1J(θ0,θ1)

其中, α \alpha α 是学习率,控制参数更新的步长。

想象

你可以想象你在黄山上,你要到达上山得最低点,每一次你都会根据你自己现在得位置选择向哪里行动,例如:你现在得位置在这里
在这里插入图片描述
现在往下走,你可以往下迈一小步,也可以迈一大步。
在这里插入图片描述
你往下走了,这无可非议,当你走到这里得时候,
在这里插入图片描述
你认为已经在最下面了,已经找不到哪里才是更下了,这时候变不再走了。

这个过程可以描述为:假设你在一个山谷中寻找最低点,你的目标是找到山谷的最低处。
首先,你选择一个起始点,可以是山谷的任意位置。然后,你观察当前位置的海拔高度,这可以看作是目标函数的值。
接下来,你想找到一个下山的方向,即找到一个使海拔高度下降最快的方向。这个方向可以通过计算当前位置的梯度来确定。梯度是一个向量,指示了在当前位置函数值增长最快的方向。
你会朝着梯度的反方向移动一小步,这样你就能够下山。这个步长可以通过学习率来控制,学习率决定了你每次迈出的步子有多大。
然后,你到达了新的位置,你再次观察海拔高度,并计算新位置的梯度。你会继续朝着梯度的反方向移动,不断重复这个过程,直到达到停止条件。
停止条件可以是达到最大迭代次数、函数值变化小于某个阈值或者梯度的范数(长度)小于某个阈值等。这样,你就能够找到山谷的最低点,也就是目标函数的最小值点。
总结起来,梯度下降算法可以被看作是在山谷中寻找最低点的过程。通过计算函数的梯度,朝着梯度的反方向移动一小步,不断重复这个过程,直到达到停止条件,从而找到目标函数的最小值点。

结束

这都是一些梯度下降算法的概念,其实结合起来比较简单了,首先上一章的代价函数是找一个最接近y的值,这一章梯度算法实际上就是,当然,你可以理解为,我初始化我的两个变量 Y = A + BX
A,B为(0,0),随后你选择步长为0.01,迭代一千次,带入公式反复计算

        for j in range(parameters):term = np.multiply(error, X[:,j])temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))  theta = temp---代价函数 TODO---return theta, cost

θ 0 : = θ 0 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 0 \theta_0 := \theta_0 - \alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_0} θ0:=θ0αθ0J(θ0,θ1)

θ 1 : = θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ 1 \theta_1 := \theta_1 - \alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_1} θ1:=θ1αθ1J(θ0,θ1)

类比:每一个下山的脚步就是步长alpha ,alpha 越大,下降越快,暂时可以这么理解。

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

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

相关文章

【Boost】:searcher的建立(四)

searcher的建立 一.初始化二.搜索功能三.完整源代码 sercher主要分为两部分:初始化和查找。 一.初始化 初始化分为两步:1.创建Index对象;2.建立索引 二.搜索功能 搜索分为四个步骤 分词;触发:根据分词找到对应的文档…

架构设计特训

一、考点分布 软件架构风格(※※※※)层次型软件架构风格(※※※※)面向服务的软件架构风格(※※※※)云原生架构风格(※※※※)质量属性与架构评估(※※※※※&#xff…

Transformer实战-系列教程1:Transformer算法解读1

🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 Transformer实战-系列教程1:Transformer算法解读1 Transformer实战-系列教程2:Transformer算法解读2 现在最火的AI内容,chatGPT、视觉大模…

Golang切片与数组

在Go语言中,切片(Slice)和数组(Array)是两个核心的数据结构,它们在内存管理、灵活性以及性能方面有着显著的区别。接下来将解析Golang中的切片与数组,通过清晰的概念解释、案例代码和实际应用场…

小林Coding_操作系统_读书笔记

一、硬件结构 1. CPU是如何执行的 冯诺依曼模型:中央处理器(CPU)、内存、输入设备、输出设备、总线 CPU中:寄存器(程序计数器、通用暂存器、指令暂存器),控制单元(控制CPU工作&am…

[word] word页面视图放大后,影响打印吗? #笔记#学习方法

word页面视图放大后,影响打印吗? word文档的页面视图又叫普通视图,又叫打印视图,是系统默认的视图,是用户用的最多最常见的视图。 问:怎样打开页面视图? 答:两种方法 方法一、点…

JS 基本语句

函数调用&#xff0c;分支&#xff0c;循环&#xff0c;语句示例。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

【Funny guys】龙年专属测试鼠标寿命小游戏...... 用Python给大家半年了......

目录 【Funny guys】龙年专属测试鼠标寿命小游戏...... 用Python给大家半年了...... 龙年专属测试鼠标寿命小游戏用Python给大家半年了贪吃龙游戏 文章所属专区 码农新闻 欢迎各位编程大佬&#xff0c;技术达人&#xff0c;以及对编程充满热情的朋友们&#xff0c;来到我们的程…

【项目实践03】【布隆过滤器】

文章目录 一、前言二、项目背景三、实现方案1. 谷歌 布隆过滤器2. Redis 布隆过滤器 四、思路延伸1. 布隆过滤器的实现原理2. 布隆过滤器的一些扩展3. 布谷鸟过滤器 五、参考内容 一、前言 本系列用来记录一些在实际项目中的小东西&#xff0c;并记录在过程中想到一些小东西&a…

基于python+控制台的车辆信息管理系统

基于python控制台的车辆信息管理系统 一、系统介绍二、效果展示三、其他系统实现四、获取源码 一、系统介绍 打印功能菜单、添加车辆信息、删除车辆信息、修改车辆信息、显示车辆信息、退出系统&#xff0c;并且需要接收用户的输入&#xff0c;在根据输入内容调用相应函数实现…

Docker部署Grafana+Promethus监控Mysql和服务器

一、Grafana部署所需资源 Grafana 需要最少的系统资源&#xff1a; 建议的最小内存&#xff1a;512 MB建议的最低 CPU&#xff1a;1 官方文档&#xff1a;https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/ 可以看到&#xff0c;我的这台服务…

有了Future为什么还要CompletableFuture?

文章目录 Future 接口理论知识复习Future 接口概述场景描述小结 Future 接口常用实现类 FutureTask 异步任务Future 的作用Futrue 编码测试优缺点分析优点缺点小结 面对一些复杂的任务对于简单的业务场景使用 Future 接口完全 OK回调通知创建异步任务多个任务前后依赖可以组合对…

DFS——连通性和搜索顺序

dfs的搜索是基于栈&#xff0c;但一般可以用用递归实现&#xff0c;实际上用的是系统栈。有内部搜索和外部搜索两种&#xff0c;内部搜索是在图的内部&#xff0c;内部搜索一般基于连通性&#xff0c;从一个点转移到另一个点&#xff0c;或者判断是否连通之类的问题&#xff0c…

[Python] opencv - 什么是直方图?如何绘制图像的直方图?

什么是直方图&#xff1f; 直方图是一种统计图&#xff0c;用于展示数据的分布情况。它将数据按照一定的区间或者组进行划分&#xff0c;然后计算在每个区间或组内的数据频数或频率&#xff08;即数据出现的次数或占比&#xff09;&#xff0c;然后用矩形或者柱形图的形式将这…

C++学习Day03之构造函数和析构函数

目录 一、程序及输出1.1 构造函数1.2 析构函数1.3 构造和析构必须要声明在全局作用域 二、分析与总结 一、程序及输出 1.1 构造函数 构造函数 没有返回值 不用写void 函数名 与 类名相同 可以有参数 &#xff0c;可以发生重载 构造函数 由编译器自动调用一次 无须手动调用 创建…

C语言——Q/编译和链接

目录 一、翻译环境和运⾏环境 二、翻译环境 1、预处理&#xff08;预编译&#xff09; 2、编译 2.2.1 词法分析&#xff1a; 2.2.2 语法分析 2.2.3 语义分析 3、汇编 4、链接 三、运行环境 一、翻译环境和运行环境 在ANSI C 的任何⼀种实现中&#xff0c;存在两个不…

CentOS7局域网内搭建本地yum源

CentOS7.6 局域网内搭建本地yum源 一、背景 客户机房服务器无法直连公网&#xff0c;远程通过堡垒机部署环境&#xff0c;因为机器比较多&#xff0c;最终选择通过安装自定义yum源进行部署。以下为自己部署yum源过程&#xff0c;以备后续使用。 二、准备yum源Packages 网上…

【刷题题解】最长回文子序列

给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列 这道题&#xff0c;一眼动态规划&#xff0c;但是即使动起来也规划…

python_蓝桥杯刷题记录_笔记_全AC代码_入门3

前言 记录我的解法以及笔记思路&#xff0c;谢谢观看。 题单目录 1.P2141 [NOIP2014 普及组] 珠心算测验 2.P1567 统计天数 3.P1055 [NOIP2008 普及组] ISBN 号码 4.P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here 5.P1308 [NOIP2011 普及组] 统计单词数 6.P1047 […

深度学习之循环神经网络进阶

这一讲我们学习如何实现一个循环神经网络的分类器&#xff1a; 我们要解决的问题是名字分类&#xff0c;我们根据名字找到其对应的国家。 上一讲我们介绍了循环神经网络。 我们在处理自然语言的时候我们通常是以上这种方式&#xff0c;我们在处理单词的时候&#xff0c;通常…