【MindSpore:跟着小Mi机器学习】大规模机器学习

2024-01-07 16:32

本文主要是介绍【MindSpore:跟着小Mi机器学习】大规模机器学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一周未见,甚是想念,今天小Mi带大家学习大规模机器学习(Large Scale Machine Learning)!废话不多说,我们开始吧~

1 大规模数据集的必要性

如果有一个低方差模型,增加数据集的规模可以帮助获得更好的结果。我们应该怎样应对一个有100万条记录的训练集?

以线性回归模型为例,每一次梯度下降迭代都需要计算训练集的误差平方和,通常20次迭代就已经是非常大的计算量了。

当然啦,从逻辑上来说,我们首先需要确认一个这么大规模的训练集是否真的有必要,也许只用1000个训练集同样也能获得较好的效果,这时候绘制学习曲线就会起到很大的作用来帮助判断。

2 随机梯度下降

如果上节中已经确认必须使用大规模的训练集了,那么应该怎么处理呢?这时候就可以尝试使用随机梯度下降法来代替批量梯度下降法。

在随机梯度下降法中,定义代价函数为一个单一训练实例的代价:

随机梯度下降算法:

首先对训练集随机“洗牌”,

然后:

随机梯度下降算法在每一次计算之后便更新参数

,而不是先将所有的训练集求和,在梯度下降算法还没有完成一次迭代时,随机梯度下降算法便运行了很多步骤了。当然啦,every coin has two sides,这样的算法关键的问题是,并非每步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法到达最小值的那一点,只会在最小值点附近徘徊。

3 小批量梯度下降

小批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法,每计算

次训练实例,便更新一次参数

 

通常令

的数值在2-100之间。这样可以用向量化的方式来循环

个训练实例,如果用的线性代数函数库比较好,能够支持平行处理,那么算法的总体表现将不受影响(与随机梯度下降相同)。

4 随机梯度下降收敛

而随机梯度下降算法又该如何调试并选取习率

呢?

在批量梯度下降中,令代价函数

为迭代次数的函数,绘制图表,根据图表来判断梯度下降是否收敛。但是在大规模训练集的情况下,这是非常不现实的,因为计算代价太大了。

在随机梯度下降中,我们在每一次更新

之前都计算一次代价,然后每

次迭代后,求出这

次对训练实例计算代价的平均值,然后绘制这些平均值与

次迭代的次数之间的函数图表。

当绘制这图表时,可能会得到一个颠簸不平但是不会明显减少的函数图像(如上面左下图中蓝线所示)。可以增加

来使得函数更加平缓,也许便能看出下降的趋势了(如上面左下图中红线所示);或者可能函数图表仍然是颠簸不平且不下降的(如粉红色线所示),那么模型本身可能就存在一些错误。

如果得到的曲线如上面右下方所示,不断地上升,那么就需要选择一个较小的学习率

当然也可以令学习率随着迭代次数的增加而减小,例如:

 

随着不断地靠近全局最小值,通过减小学习率,使得算法收敛而不是在最小值附近徘徊。不过绝大多数情况下是并不需要这样做便已经能有非常好的效果了,对

进行调整所耗费的计算通常没必要啦。

也就是说,小Mi给大家介绍了一种方法:近似地监测出随机梯度下降算法在最优化代价函数中的表现,不需要定时地扫描整个训练集来算出整个样本集的代价函数,而是只需要每次对最后1000个,或者多少个样本求下平均值。应用这种方法,既可以保证随机梯度下降法在正常运转和收敛,也可以用它来调整学习速率

的大小。

5 在线学习

现在有一种新的大规模的机器学习机制,叫做在线学习机制。在线学习机制让我们可以模型化问题。

许多大型网站使用不同版本的在线学习机制算法,从大批的涌入又离开网站的用户身上进行学习。如果有一个由连续的用户流引发的连续数据流进入网站,那么就可以从数据流中学习用户的偏好,然后使用这些信息来优化一些关于网站的决策。

在线学习算法指的是对数据流而非离线的静态数据集的学习。许多在线网站都有持续不断的用户流,对于每一个用户,网站希望能在不将数据存储到数据库中便顺利地进行算法学习。

假定某物流运输公司,用户们在该公司网站上查询把包裹从A地运到B地的服务,然后网站便会开出运输包裹的**。比如,PLAN.C计划收取50RMB,PLAN.D计划收取20RMB,然后根据开给用户的价格,用户有时会接受这个运输服务,那么这就是个正样本,有时他们会走掉,拒绝购买该公司的运输服务,这就是一个负样本。因此,我们可以通过一个学习算法来帮助该公司合理科学地进行运输服务的定价。

假使每当一个用户询问从地点A至地点B的费用时,给用户一个报价,该用户可能选择接受

或不接受

现在,构建一个模型来预测用户接受报价使用该公司物流服务的可能性。因此报价是其中一个特征,其他特征比如距离,起始地点,目标地点以及特定的用户数据。模型的输出是:

在线学习的算法与随机梯度下降算法有些类似,对单一的实例进行学习,而非对一个提前定义的训练集进行循环。

一旦对一个数据的学习完成了,便可以丢弃该数据并不再进行存储。这种方式的好处在于,算法可以很好地适应用户的倾向性,针对用户的当前行为不断地更新模型以适应该用户。

同时,每次交互事件并不只产生一个数据集,例如,一次性给用户提供3个物流选项,用户选择2项,实际上获得的是3个新的训练实例,从而算法可以对这3个实例进行学习并不断更新模型。

这些问题中的任何一个都可以被归类到标准的,拥有一个固定的样本集的机器学习问题中。当然也可以保存数据集,然后对其运行一个学习算法。但是更多更庞大的数据保存的代价就更大,真的没有必要来保存一个固定的数据集,取而代之的是可以使用在线学习算法来连续地学习,从这些用户不断产生的数据中来学习,这就是在线学习机制。该算法与随机梯度下降算法非常类似,唯一的区别的是不会使用一个固定的数据集,取而代之的是获取一个用户样本,从那个样本中学习,然后丢弃那个样本并继续下去。当然,在线学习还有一个优点就是,如果有一个变化的用户群,又或者网站在尝试预测的事情正在缓慢变化,在线学习算法就可以慢慢地调试学习到的假设,将其调节更新为最新的用户行为。

6 映射化简

映射化简对于大规模机器学习问题而言是非常重要的概念。如果用批量梯度下降算法来求解大规模数据集的最优解,需要对整个训练集进行循环,计算偏导数和代价,再求和,这样一来计算量将会非常大。如果能够将数据集分配给多台计算机,让每一台计算机处理数据集的一个子集,然后将计算的结果汇总再求和,这样的方法叫做映射简化。

具体而言,如果任何学习算法能够表达为,对训练集的函数的求和,那么便能将这个任务分配给多台计算机(或者同一台计算机的不同CPU 核心),以达到加速处理的目的。

例如,有400个训练实例,可以将批量梯度下降的求和任务分配给4台计算机进行处理:

很多高级的线性代数函数库已经能够利用多核CPU的多个核心来并行地处理矩阵运算,这也是算法的向量化实现如此重要的缘故(比调用循环快)。

以上便是小Mi给大家带来的关于大规模机器学习的介绍,下周小Mi带大家进行一个动手实践,然后我们的机器学习系列也就要跟大家说再见啦,不过不用担心呦,小Mi的新系列也会随之上线!

我们,下周再见呦(挥手十分钟!)

这篇关于【MindSpore:跟着小Mi机器学习】大规模机器学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580550

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件