机器学习 - 梯度下降算法推导

news2024/11/17 11:56:19

要逐步推导多变量线性回归的梯度计算过程,我们首先需要明确模型和损失函数的形式,然后逐步求解每个参数的偏导数。这是梯度下降算法核心部分,因为这些偏导数将指导我们如何更新每个参数以最小化损失函数。

模型和损失函数

考虑一个多变量线性回归模型,模型预测可以表示为:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_{\theta}(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n hθ(x)=θ0+θ1x1+θ2x2++θnxn
其中 x = [ x 1 , x 2 , … , x n ] x = [x_1, x_2, \dots, x_n] x=[x1,x2,,xn] 是输入特征, θ = [ θ 0 , θ 1 , … , θ n ] \theta = [\theta_0, \theta_1, \dots, \theta_n] θ=[θ0,θ1,,θn] 是模型参数。

我们使用均方误差作为损失函数,对于所有训练数据:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^m \left( h_{\theta}(x^{(i)}) - y^{(i)} \right)^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2
在这里插入图片描述

计算梯度

为了使用梯度下降算法,我们需要计算损失函数 J ( θ ) J(\theta) J(θ) 关于每个参数 θ j \theta_j θj 的偏导数。假设 j 代表特定的参数索引,包括 0,即截距项 θ 0 \theta_0 θ0

  1. 扩展损失函数
    J ( θ ) = 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x 1 ( i ) + ⋯ + θ n x n ( i ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^m \left( \theta_0 + \theta_1 x_1^{(i)} + \dots + \theta_n x_n^{(i)} - y^{(i)} \right)^2 J(θ)=2m1i=1m(θ0+θ1x1(i)++θnxn(i)y(i))2

  2. 对 ( \theta_j ) 求偏导数
    为了求 ∂ J ∂ θ j \frac{\partial J}{\partial \theta_j} θjJ我们需要应用链式法则:
    ∂ J ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∂ ∂ θ j ( h θ ( x ( i ) ) ) \frac{\partial J}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_{\theta}(x^{(i)}) - y^{(i)} \right) \frac{\partial}{\partial \theta_j} \left( h_{\theta}(x^{(i)}) \right) θjJ=m1i=1m(hθ(x(i))y(i))θj(hθ(x(i)))

  3. 推导 ∂ ∂ θ j h θ ( x ( i ) ) \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) θjhθ(x(i))
    因为 h θ ( x ( i ) ) = θ 0 + θ 1 x 1 ( i ) + ⋯ + θ n x n ( i ) h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x_1^{(i)} + \dots + \theta_n x_n^{(i)} hθ(x(i))=θ0+θ1x1(i)++θnxn(i)所以
    ∂ ∂ θ j h θ ( x ( i ) ) = x j ( i ) \frac{\partial}{\partial \theta_j} h_{\theta}(x^{(i)}) = x_j^{(i)} θjhθ(x(i))=xj(i)
    这里 x j ( i ) x_j^{(i)} xj(i) 是第 i 个样本的第 j 个特征。

  4. 将导数放回梯度公式
    ∂ J ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_{\theta}(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θjJ=m1i=1m(hθ(x(i))y(i))xj(i)

参数更新规则

在梯度下降算法中,使用上面计算的梯度来更新每个参数:
θ j : = θ j − α ∂ J ∂ θ j \theta_j := \theta_j - \alpha \frac{\partial J}{\partial \theta_j} θj:=θjαθjJ
这里的 α 是学习率,控制参数更新的步长。

通过这个过程,每一次迭代更新参数,直到算法收敛(即梯度接近零或者达到预设的迭代次数)。

这就是多变量梯度下降中梯度的计算过程,它使我们能够有效地最小化损失函数,并逐步

优化模型参数。

更多问题咨询

Cos机器人

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

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

相关文章

Linux:进程通信(三)信号的捕捉

目录 一、信号捕捉函数 1、signal函数 2、sigaction函数 二、用户态与内核态 1、用户态 2、内核态 用户态与内核态转换 三、volatile关键字 四、SIGCHLD信号 一、信号捕捉函数 1、signal函数 signal函数是C语言标准库中的一个函数,用于处理Unix/Linux系…

web自动化系列-selenium执行js脚本|截图|识别验证码(十五)

1.执行脚本 如果你定位的元素通过各种方法都无法完成页面操作,最后的方法就是通过操作js脚本来完成 。 在selenium中提供了一个方法 ,这个可以方法可以自行JS的脚本 。具体为: execute_script(js脚本) : js脚本代表要执行的脚本…

OC类与对象(下)

OC类与对象(下) 文章目录 OC类与对象(下)不是包装类的NSValue 和NSNumber处理对象打印对象和description方法 和 isEqual方法 类别类别语法部分利用类别进行模块化设计使用类别来调用私有方法 类的扩展协议与委托规范,…

BLIP和BLIP2 论文讲解

文章目录 BLIPIntroductionMethod模型架构预训练目标字幕和过滤(Capfilt) BLIP2IntroductionMethod模型结构Q-Former预训练第一阶段Q-Former预训练第二阶段 BLIP 论文: 《BLIP: Bootstrapping Language-Image Pre-training for Unified Visio…

Unity打开安卓设备不同的设置面板

1,打开安卓设备不同的设置面板,我还贴心的把Android官网的链接放下面了 2,使用也很方便:unity按钮事件上拖这个脚本,注册MyOpenAndroidSettings方法,参数 填 和枚举值相应的数字 // 功能:打开…

【c++】线程池的原理及实现

💻文章目录 📄前言线程池的原理概念工作原理 线程池的实现线程池的基础结构任务队列的实现工作线程的实现 线程池的应用与拓展线程池的拓展 📓总结 📄前言 不知道各位是否有试过点进限时抽奖网站、抢票网站呢?你是否好…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require文件名的token数组 接着回到main.php中,此时…

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功能选择。 二…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术,包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果,但几乎所有方法的最终结果都是等效的。所有人都会赞同,平均和小信号线性化是PWM变换器建模的关键步…

厚德提问大佬答4:AI绘画生成的心得

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

Element-plus修改input的placeholder文字颜色

需求 代码 .el-input__inner::placeholder {color: #666f8d !important; }

图像处理--空域滤波增强(原理)

一、均值滤波 线性滤波算法,采用的主要是邻域平均法。基本思想是使用几个像素灰度的某种平均值来代替一个原来像素的灰度值。可以新建一个MN的窗口以为中心,这个窗口S就是的邻域。假设新的新的像素灰度值为,则计算公式为 1.1 简单平均法 就是…

堆的应用2——TOPK问题

TOPK问题 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题,能想到的最简单直接的方式就…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品,具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色,反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时,理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询,文档及框架比较稳定半天时间加入测试使用 迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构(每一位的具体电路结构) 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了:nums.length>1的题给条件。所以每次递归都要判断是否size()>1,不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

JSpdf,前端下载大量表格数据pdf文件,不创建dom

数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…

[附源码+视频教程]暗黑纪元H5手游_架设搭建_畅玩三网全通西方3D世界_带GM

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 暗黑纪…

Android 查看CUP占用率

查看每个进程CUP占用率的几种方式,由于自己充电界面老是导致整机温度过高,后面发现自己的线程一直在跑,相当于死循环,后面加上sleep才得以改善;先看看几种查询方式吧。 1、adb shell top 2、adb shell busybox top 3、adb shell …