【吴恩达机器学习笔记】十五、大规模机器学习

news2024/11/15 11:09:03

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。
📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记,方便大家参考学习。
💡专栏地址:https://blog.csdn.net/Newin2020/article/details/128125806
📝视频地址:吴恩达机器学习系列课程
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

十五、大规模机器学习

1. 学习大数据

在开始这一章内容之前,我们先回顾一下之前学的高偏差和高方差问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAB0HHzH-1670460299993)(吴恩达机器学习.assets/image-20211121101547868.png)]

如果目前处于高方差问题,即出现上面左图情况,那么增加训练集数量是可以有效减少误差的。但如果处于高偏差问题,即出现上面右图情况,那么增加训练集数量并不能很好减少误差,所以这时就要通过增加特征量等方法去改善。

2. 随机梯度下降

我们之前讲到的梯度下降算法,其实并不能很好用在数据量十分大的情况下,因为它每次都要去遍历一遍数据集。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OKj2e0sN-1670460299998)(吴恩达机器学习.assets/image-20211121102959424.png)]

我们称之前用到梯度下降算法为批量梯度下降(Batch gradient descent),而接下来我们要介绍的就是随机梯度下降(Stochastic gradient descent)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wXidvGOb-1670460300000)(吴恩达机器学习.assets/image-20211121103421475.png)]

随机梯度下降和批量梯度下降不同的地方就是,它每次拟合只使用一个数据,就修改一点点参数,对这个数据进行一次拟合,而不是将所有数据都遍历一遍再进行参数拟合。所以,这需要我们在一开始的时候就要对数据集进行一次打乱,并且得到的图像可能不会像批量梯度下降一样直接到达全局最小值,而是在一个范围内反复震荡最终接近于全局最小值。

3. Mini-Batch梯度下降

这节课我们来将学习大数据的另一种算法Mini-Batch梯度下降,它有时候会比随机梯度下降算法还要快。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAojxNpT-1670460300002)(吴恩达机器学习.assets/image-20211121104114334.png)]

这个算法就是前面两个算法的折中,我们每次参数拟合既不将所有数据都遍历,也不仅仅只使用一个数据,而是使用b个数据,而这个数一般在2-100之间,要根据实际数据量进行调整。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-041dMJdw-1670460300008)(吴恩达机器学习.assets/image-20211121104734694.png)]

从上面的具体步骤来看,这要比随机梯度下降算法更快,但是如果效果要比它更好的话,一般是要在有优秀的向量化方法下进行,这个算法的还有一个缺点就是要取b值,这可能也要花费一些时间。

4. 随机梯度下降收敛

上面讲完随机梯度下降算法后,我们还要考虑的是该如何判断训练是否已经达到收敛。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAq5zyHP-1670460300011)(吴恩达机器学习.assets/image-20211121105523021.png)]

比起批量算法每次都要遍历所有数据集算出代价函数来判断是否收敛,随机梯度则是只用在每次更新θ之前计算一次cost函数值,然后每进行1000次迭代,就对这1000次的cost函数值取一次平均值,最后画出图像来判断是否收敛。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JSo1Lbec-1670460300013)(吴恩达机器学习.assets/image-20211121110205155.png)]

如果你用的学习速率更小,可能会收敛到一个更低的位置,但是下降的会更缓慢一些,例如上图中红线代表学习速率更低的那条曲线。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LgicEBQT-1670460300015)(吴恩达机器学习.assets/image-20211121110352809.png)]

如果你选择的b更大的话,你就会得到一个更平滑的曲线,上图蓝线b为1000,红线b为5000。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mHa2ZSm-1670460300017)(吴恩达机器学习.assets/image-20211121110606406.png)]

有时候你可能会遇到上图蓝线的情况,这时候你可以增大b值即从1000变为5000,你可能就会得到红线,表明收敛还是在继续的,只是b太小的时候不图像并不明显,但是也有可能当你b调整为5000时会得到上面的紫线,并没有收敛,这时候你可能要考虑的就是要调整学习速率或调整特征或者其他东西了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2R8WQ9Y9-1670460300019)(吴恩达机器学习.assets/image-20211121110843028.png)]

如果得到了上面这个发散的图像,你要考虑的就是使用更小的学习速率。最后,再来讲一下学习速率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5J5IHKZ5-1670460300021)(吴恩达机器学习.assets/image-20211121111524614.png)]

我们一般会让学习速率为一个常数,但是少数情况下有人也会使用让学习速率随时间的增加减少的方法,例如让一个常数除以迭代次数与另一个常数的和,这虽然最终会更接近最小值甚至找到最小值,但是会使算法变得更加复杂,因为要去选取合适的常数去计算,所以我们一般不会用这些方法,只要接近最小值就达到我们要求了。

5. 在线学习

接下来,我们来学习一个新的学习机制叫做在线学习机制,这当我们遇到有不断连续流入的数据的情况下可以使用。接下来,我们来看一个例子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKhxccGI-1670460300023)(吴恩达机器学习.assets/image-20211121112604554.png)]

我们通过提取不断流入的数据进行学习,通过人们在什么价格下会选取我们的服务,来调整运费价格,从而可以满足新用户的期望。这种算法每用一次数据就会将其丢弃,因为这有大量连续的数据输入,不愁没有数据学习,并且这样还有一个好处就是可以跟上时代的步伐,适应不同时代人们的期望。下面来看关于在线学习的另一个例子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ae3z1M0o-1670460300024)(吴恩达机器学习.assets/image-20211121113417934.png)]

在产品搜索中也可以用到在线学习,例如我们希望能通过用户输入的收集关键信息给他提供可能感兴趣的十部手机。这就需要我们通过学习其他用户的信息,通过不断学习训练判断用户输入的关键字中和我们手机匹配程度如何,通过他们在搜索结果中对产品的**点击率(CTR)**来不断改变我们的参数,更接近于用户的需求。

当然还有其他的应用,例如向用户展示什么样的特别优惠、在网站上给不同用户展示不同的新闻、商品推荐等等。

6. 减少映射与数据并行

如果你遇到了一些规模很大,随机梯度下降算法无法解决的问题,就可以用到接下来我们讲的Map-reduce方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G7K7jjGR-1670460300025)(吴恩达机器学习.assets/image-20211121124705557.png)]

我们先来看看上面这个例子,假设我们用的是批量梯度下降算法并且有400个数据集,我们可以将它求和的部分分成四个部分然后发给四个不同的服务器计算,最终再将四个服务器的结果整合在一个中心服务器中,得到最终的结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMF779oi-1670460300027)(吴恩达机器学习.assets/image-20211121124948436.png)]

所以Map_reduce可以看做是将数据集划分成相同的模块发送给不同服务器让他们并发运行,得到加倍的效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1z1GWa3s-1670460300028)(吴恩达机器学习.assets/image-20211121125301893.png)]

故只要算法中包含求和的项,就可以使用Map_reduce对数据集进行划分处理,例如上面的另一个应用逻辑回归。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7enYvYe-1670460300029)(吴恩达机器学习.assets/image-20211121125556538.png)]

当然,如果你有一台多核心的机器,你就可以将你划分出来的数据集分发给机器内的不同核心,这样就可以避免网络延迟的问题了。

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

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

相关文章

低代码开发平台——体验系统的重要性

什么是优秀的体验? 简而言之,优质的体验意味着可以随时随地根据客户的需求提供服务,这在数字化的世界中,意味着真正的多重体验。Gartner早在2018年就定义了MXDP(多体验开发平台),以应对我们日常…

游戏开发38课 unity 模板测试

ShaderLab 命令:模板 配置与 GPU 上的模板缓冲区相关的设置。 模板缓冲区为帧缓冲区中的每个像素存储一个 8 位整数值。为给定像素执行片元着色器之前,GPU 可以将模板缓冲区中的当前值与给定参考值进行比较。这称为模板测试。如果模板测试通过&#xff…

liunx如何重启mysql

Linux如何重启MySQL Linux中重启MySQL可以使用service mysql restart命令和脚本启动方式/etc/inint.d/mysql restart。 推荐:MySQL教程 其他命令如下: 一、 启动 1、使用 service 启动:service mysql start 2、使用 mysqld 脚本启动&am…

使用redis做分布式锁

思路步骤 获取锁, 使用 SETNX 命令设置一个key.如果没获取到,从新拿锁,返回步骤1 ; 从新拿锁可以设置等待时间;也可以记录拿锁次数为了做“避免死循环”.如果获取到,使用 EXPIRE 给锁加存活时间;接步骤3,执行业务&…

微机----------------中断控制器8259A(可编程的中断控制器)

目录 功能8259A的引脚8259A的工作方式中断响应顺序8259A的中断优先级管理8259A中断屏蔽管理⭐8259A的中断结束管理功能 ①单片825能管理8级中断,并且可级联管理64级 ②可对任一级中断单独屏蔽或允许 ③中断被响应后,可直接提供中断类型号 ④可通过编程选择其工作方式 IRR中断…

C++入门篇

入门C命名空间命名空间定义命名空间的使用C输入,输出缺省参数缺省参数概念缺省参数分类函数重载函数重载概念C支持函数重载的原因引用引用概念引用特性具体应用const修饰的常量进行引用(常引用)传值,传引用的效率引用和指针的区别…

【无标题】3 GENERIC语句 和 INTEGER类型

【VHDL】【作业】3 GENERIC语句 和 INTEGER类型 文章目录【VHDL】【作业】3 GENERIC语句 和 INTEGER类型前言什么是GENERIC语句?32位加法器仿真波形总结每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。前…

SpringBoot:概述

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 ~ 本篇内容包括:Spring Boo…

[选型] 实时数仓之技术选型

数仓技术路线选型 对于已有的hive数据仓,怎样改造成实时数仓的要求呢? 2.关于实时数仓的选型 如果选择hbase,建议选择kudu 如果选择kudu, 还可以选择doris 如果选择doris,建议选择iceberg 以上三种选择,要配合具体…

C++实现身份证号码过滤与排序

1.描述 警察办案里检索到一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序,如果是错误的身份证号,则从排序列表中删除(仅需判断前两位省级地区编码是否在下面的…

知识图谱-KGE-语义匹配-双线性模型-2016:NAM

【paper】 Probabilistic Reasoning via Deep Learning: Neural Association Models【简介】 本文是中科大和科大讯飞联合发表在 IJCAI 2016 上的工作,本文提出了 NAM(Neural Association Model)用于概率推理,并具体化为 DNN&…

十二月7号

一、uboot概念 1.1 uboot和bootloader关系 1.bootloader:是一系列引导加载程序的统称 boot:引导 loader:加载 2.uboot是引导加载程序中的一种 1.2 uboot特点 1.uboot是由德国DNEX小组进行维护的 2.uboot是一个开源分布式系统 3.uboot支持多种硬件架构平台(ARM/X8…

Blazor 部署 pdf.js 不能正确显示中文资源解决办法

原文链接 [https://www.cnblogs.com/densen2014/p/16964858.html] 在Blazor项目嵌入 pdf.js 时不能正确显示中文,浏览器F12显示如下错误 错误 l10n.js /web/locale/locale.properties not found. 我找到了解决方案。它不仅消除了上面提到的错误(即 404 - locale.p…

nextjs13 webpack5 使用wasm报错

问题描述: 在next 13, webpack 5, react 18的项目中使用Rust编写的wasm报错: ./node_modules/image-map-path/image_map_path_bg.wasm Module parse failed: Unexpected character (1:0) The module seem to be a WebAssembly module, but module is n…

freemarker

文章目录创建项目引入依赖创建配置文件创建启动类和测试类语法listMapif运算符处理空值使用??指定缺失变量默认值内建函数集合长度数据类型布尔值时间类型数值类型字符串类型sequence序列类型hash类型常见指令assign自定义变量指令json转成对象实例list通过下标取值map取值通…

「Redis数据结构」集合对象(Set)

「Redis数据结构」集合对象(Set) 文章目录「Redis数据结构」集合对象(Set)一、概述二、结构三、编码转换四、小结一、概述 Set是Redis中的单列集合,其特点为不保证有序性、保证元素唯一、可以求交集、并集、差集。 从…

Python入门自学进阶-Web框架——28、DjangoAdmin项目应用-只读字段与后端表单验证

有时候,记录的某些字段在生成后就不允许再修改了,这时前端只能显示,不能修改。这时,可在AdminClass中进行设置:readonly_fields[字段名,字段名,。。。],前端格式就显示成只显示不能修…

联想电脑怎么录屏?这3个方法,轻松解决

录屏是现在最常见的办公功能之一,最近有朋友问联想电脑怎么录屏。联想电脑是使用Windows系统的。如果想用联想电脑录屏,可以使用Windows系统自带了的录屏软件进行录屏。下面小编将详细的介绍3个方法,解决联想电脑怎么录屏的问题,感…

8086寻址方式图解

目录 1:立即寻址 2:寄存器寻址 3:直接寻址(存储器直接寻址) 4:寄存器间接寻址(重点) 5:基址寻址(相对寻址) 6:变址寻址 &#x…

后端程序员必备的Linux基础知识+常见命令(2023年最新版教程)

文章目录[1. 从认识操作系统开始](https://link.juejin.cn?targethttps%3A%2F%2Fsnailclimb.gitee.io%2Fjavaguide%2F%23%2Fdocs%2Foperating-system%2Flinux%3Fid%3D_1-%E4%BB%8E%E8%AE%A4%E8%AF%86%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%A7%8B)[1.1. 操作系统简…