梯度下降|笔记

news2024/11/17 4:55:12

1.梯度下降法的原理

1.1确定一个小目标:预测函数

机器学习中一个常见的任务是通过学习算法,自动发现数据背后的规律,不断改进模型,做出预测。
在这里插入图片描述
上图的坐标系,横轴表示房子面积,纵轴表示房价,图中的点就是给出的数据。

任务是,设计一个算法,让机器能够拟合这些数据,算出直线的参数w
在这里插入图片描述
一个简单的方法是,先随机选一条过原点的直线,然后计算所有样本点和这条直线的偏离程度,再根据误差大小来调整w的值。

1.2 找到差距:代价函数

均方误差,所有点的误差相加求和再求平均值
在这里插入图片描述
e1 e2 …en是每个点的误差值
在这里插入图片描述
把每个点的误差值相加求和再求平均值,合并同类项
在这里插入图片描述
上面这个误差函数代表了学习需要付出的代价,也常被称为代价函数(cost function),

二次项的系数a>0,是一个开口向上的抛物线
在这里插入图片描述
左边的直线绕原点旋转,对应到右边图像上就是取值点(红色)在抛物线上运动,
在这里插入图片描述
左边找到正确的w的值的时候,对应右边图像上取值点应该到最底部,即梯度为0的点

左边是预测函数,右边是代价函数

通过定义预测函数,根据误差公式,推导代价函数,可以成功地将样本点的拟合过程映射到一个函数图像上,

1.3 明确搜索方向:梯度下降

在这里插入图片描述
目标是找到代价函数的最低点,

从当前点的位置,每一步都选择“最陡峭”的方向走,这就是前进的方向 沿着这个方向走,就能最快到达最低点

“陡峭程度”就是梯度,是代价函数的导数,抛物线的曲线斜率

(补充:机器学习、深度学习中很多模型是非常复杂的,不能对整个函数求导,只能在一个函数的一个点上求导)

1.4 迈多大步子:学习率

步子太小,loss值会一直在最低点处震荡,难以收敛

直接使用斜率值做步长,步子太大,取值会左右横跳,loss难以收敛

正确的做法:给斜率值乘上一个很小的数值,也就是乘上学习率α,

调整权重参数w的公式是:
在这里插入图片描述

1.5 不达目的不罢休:循环迭代

1-4步如下图:
在这里插入图片描述
第5步就是重复3、4步,直到找到最低点

整个流程就是梯度下降算法
在这里插入图片描述
实际情况没这么简单,

因为实际情况中,训练样本的分布千奇百怪,代价函数也可能千变万化,不太可能是一条简单的抛物线。
在这里插入图片描述
代价函数的图像是波浪线时,会有多个最低点,要找到全局最优

代价函数还有可能是高维的,十几维、百维,难以可视化;但都可以通过梯度下降法找到最低点。

2. 梯度下降算法的变体

2.1 批量梯度下降

每次用全部训练样本参与计算,梯度下降的非常平稳,

优点:保证算法的精准度,找到全局最优点

缺点:训练搜索过程慢,代价大

2.2 随机梯度下降

每次只用一个样本参与计算,

优点:提升了计算速度,

缺点:牺牲了一定的精准度

2.3 min-batch梯度下降

每次选用小批量样本进行计算

优点:比批量梯度下降快,比随机梯度下降准确

2.4 其它

其它改进的梯度下降算法:

AdaGrad 动态调节学习率,经常更新的参数学习率小一些,不常更新的参数学习率大

RMSProp 优化动态学习率

AdaDelta无需设置学习率

Adam 融合了AdaGrad和RMSProp

补充:

梯度下降是一种用来对模型的参数进行更新的优化算法,在机器学习和深度学习中,模型的目标是通过调整参数来最小化损失函数。梯度下降算法,通过计算损失函数对参数的梯度(即求导),来指导参数的更新方向。通过迭代地沿着梯度的反方向更新参数,梯度下降算法可以逐步地降低损失函数的值,从而使模型更准确地进行预测或分类。


道阻且长,行则将至!


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

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

相关文章

注册资金认缴和实缴的区别

公司注册资本金实缴和认缴的区别有性质不同、意义不同、类型不同、缴纳时限不同、缴纳方式不同、包含范围不同等方面。 具体分析如下: 公司注册资本实缴制是营业执照注册资金有多少,该公司的银行验资账户上就得有相应金额的资金。实缴制需要占用公司的资…

__attribute__中的constructor和destructor--如何让程序退出时调用指定函数

背景 假设你在开发一个基础组件x,然后你设计了一个x_init接口用来初始化这个组件,相应地你设计了一个x_deinit来去初始化。这样其它模块要用到这个组件时,先调一下x_init, 用完了再调一下x_deinit。init和deinit这是一对很常见的接口&#x…

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

网络新闻发稿为何经久不衰?

有的老板可能看不到新闻营销的直接回报,一直不乐意在此方面投入,但是却看到竞争对手一直在搞新闻营销,也就安排个PR做做新闻公关。小马识途营销顾问观察,自互联网诞生以来,新闻营销一直是网络营销工作中的一个重点。 如…

JS中的元编程

ES6(ECMAScript 2015)新增了对 Reflect 和 Proxy 对象的支持,使得我们能够便捷地进行元编程。让我们通过示例来学习它们的用法。 1、什么是元编程 元编程 无异于 编程中的魔法!如果编写一个“能够读取、修改、分析、甚至生成新程…

提高小程序SEO 排名,9招优化技巧!

在当今移动互联网时代,小程序已经成为企业必不可少的一种营销手段,而如何让用户能够更容易地找到自己的小程序,就需要进行SEO优化,提升小程序的排名,本文将 为大家介绍9个小程序SEO优化技巧,帮助您的小程序…

黑客技术(网络安全)——如何高效学习

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…

OPENCV 闭运算实验示例代码morphologyEx()函数

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string imAddr "c:/Users/actorsun/Pictures/";string imAddr1 imAddr"rice.png";Mat relax, positive;relax imread(imAddr1…

Linux的基础常用指令

常用指令汇及其功能 ls 列出当前文件夹有哪些文件 ls -a显示所有文件,包含隐藏的文件和文件夹pwd显示当前是在哪个文件夹下mkdirmkdir名字→创建文件夹cdcd名字→进入某个指定文件夹cd .. 退回上层文件夹(cd后有空格) Tab键自动补全:文件或文件名太长&a…

信息系统项目管理师教程 第四版【第8章-项目整合管理-思维导图】

信息系统项目管理师教程 第四版【第8章-项目整合管理-思维导图】 课本里章节里所有蓝色字体的思维导图

【设计模式】第11节:结构型模式之“装饰器模式”

一、简介 装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要的依据。除此之外,装饰器模式还有一个特点,那就是可以对原始类嵌套使用多个装饰器。…

LeetCode169——多数元素(众数)

LeetCode169——多数元素(众数) 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 Result01&#xff08…

顺序表的模拟

前言: 数据结构无论是以后就业还是考研,对于计算机方向的同学来说都是必修的一门课,所以,深入理解各种数据结构是一名合格程序员的基本素养。这里我就先带大家了解最简单的数据结构--顺序表吧。 1.什么是顺序表 顺序表是一种线性…

菜单管理中icon图标回显

<el-table-column prop"icon" label"图标" show-overflow-tooltip algin"center"><template v-slot"{ row }"><el-icon :class"row.icon"></el-icon></template></el-table-column>

Xilinx 7 系列 1.8V LVDS 和 2.5V LVDS 信号之间的 LVDS 兼容性

如果通过LVDS进行接口&#xff0c;可以按照以程图中的步骤操作&#xff0c;以确保满足正确使用LVDS的所有要求。 40191 - 7 系列 - 1.8V LVDS 和 2.5V LVDS 信号之间的 LVDS 兼容性 与LVDS兼容驱动器和接收器连接时&#xff0c;7系列LVDS和LVDS_25输入和输出应该不存在兼容性问…

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 仿钉钉的开源项目网上也不少&#xff0c;而且很多功能已经也比较完善了&#xff0c;但大部分都不是MIT协议…

Ubuntu系统HUSTOJ 用 vim 修改php.ini 重启PHP服务

cd / sudo find -name php.ini 输出&#xff1a; ./etc/php/7.4/cli/php.ini ./etc/php/7.4/fpm/php.ini sudo vim /etc/php/7.4/cli/php.ini sudo vim /etc/php/7.4/fpm/php.ini 知识准备&#xff1a; vim的搜索与替换 在正常模式下键入 / &#xff0c;即可进入搜索模式…

计数排序(秒懂版)

public class CountingSort {int[] sort() {int N 10000;int M 100;//假设A中最大值为100int A[] new int[N];//1~k,原数组int B[] new int[N];//1~k,Stores incompletely sorted numbersint C[] new int[M 1];//0~n,辅助排序数组for (int i 0; i < M; i) {C[i] 0;}…

案例分析真题-信息安全

案例分析真题-信息安全 2009年真题 【问题1】 【问题2】 【问题3】 2010年真题 【问题1】 【问题2】 【问题3】 2011 年真题 【问题1】 【问题2】 【问题3】 骚戴理解&#xff1a;这个破题目完全考的知识储备&#xff0c;不知道的连手都动不了&#xff0c;没法分析 2013年真题…

Linux基础指令[下]

文章目录 0.英语单词3.Linux的重要指令[下]1. 输入/输出重定向1.1echo和输出重定向1.2cat和输入重定向1.3Linux文件理念 2.长文本逐行查看2.1more的介绍2.2建议使用less2.3more/less的选项 3.head&&tail显示头尾对head&&tail的认识练习head和tail 4.时间指令4.…