| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 随机梯度下降、Map-reduce -> 正文阅读 |
|
[人工智能]随机梯度下降、Map-reduce |
目录 1、随机梯度下降??????? 随机梯度下降的过程: ??????? ①随机打乱所有数据,即将所有 m个训练样本重新随机排列。 ????????②依次遍历整个训练集 ?????????随机梯度下降跟批量梯度下降不同之处在于,随机梯度下降不需要对全部m个样本求和来得到梯度项,而是只需要对单个训练样本求出。在这个过程中,已经开始优化参数了,所以不需要对所有 m个训练集都遍历一遍。 ??????? 随机梯度下降算法在每一次计算之后便更新参数 θ ,而不需要首先将所有的训练集求和。在梯度下降算法还没有完成一次迭代时,随机梯度下降算法便已经走出了很远。 ????????但是这样的算法存在的问题是,不是每一步都是朝着”正确”的方向迈出的。因此算法是在某个靠近全局最小值得区域内徘徊,而不是直接逼近全局最小值点并停留在那里,这样的话可能永远也无法找到最小值点,可能只能近似于大小全局最小值,但是我们也能得到一个很好的假设了。对于实际应用目的来说已经足够了。 ????????舍弃了最优路径,从而获得了时间复杂度的减少。 ??????? 图中的洋红色点走过的迭代过程轨迹。 2、Mini-Batch小批量梯度下降????????小批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法,每计算常数 b 次训练样本,便更新一次参数 。(b取值范围为2-100) ??????? 假设b=10,m=1000: ????????小批量梯度下降的一个缺点是存在一个额外的参数 b ,所以需要花费时间调试 b的大小,通常 b 的取值在2-100之间都合理。因此,我们选的 b 的值如果在有一个好的向量化实现条件下,有时它可以比随机梯度下降和批量梯度下降更快。 3、在线学习????????许多大型网站或者许多大型网络公司,使用不同版本的在线学习机制算法,从大批的涌入又离开网站的用户身上进行学习。特别要提及的是,如果我们有一个由连续的用户流引发的连续的数据流进入网站,我们能做的是使用一个在线学习机制,从数据流中学习用户的偏好,然后使用这些信息来优化一些关于网站的决策。 ??????? 使用在线学习,我们能够适应“变化的用户”。比如,在经济比较紧张的情况下,用户可能对价格比较敏感。这时,如果我们还采用之前计算出来的预售价,那么可能销量就不尽人意了。使用了在线学习之后,可以慢慢调试一些参数,更新到最新的用户行为,从而调整价格,达到一个较高的销量。 ????????在线学习算法与随机梯度下降算法有些类似,我们对单一的样本进行学习,而非对一个提前定义的训练集进行循环。 ?????????在线学习算法与随机梯度下降算法唯一的区别是,在线学习算法不用使用一个固定的数据集,而是获取一个用户样本,从那个样本中学习,然后丢弃那个样本。 4、Map-reduce减少映射和数据并行??????? 如果我们需要将算法应用于一个非常大的数据集的情况下,我们需要对训练集函数求和,这时,求和就成为了算法中耗时的主要步骤。如果我们能够将我们的数据集分配给多台计算机,让每一台计算机处理数据集的一个子集,然后我们将计算的结果汇总求和,那么是不是就能降低模型的计算时间呢?这样的方法叫做映射简化(Map-reduce)。 ????????通过将机器学习算法表示为求和的形式,或者是训练数据的求和形式,我们就可以运用映射化简技术来将算法并行化以便处理大规模数据。 ????????例如,我们有400个训练样本,我们可以将批量梯度下降的求和任务分配给4台计算机进行处理,每台计算机只处理100个样本。在每台计算机分别处理完100个样本之后将计算完的数据传给中心服务器,将结果进行汇总。 ????????如果没有网络延时,也不考虑通过网络来回传输数据所消耗的时间,那么就可以有4倍的计算效率。当然实际上因为网络延时,结果汇总也需要额外的时间以及其他因素,实际上速率会小于4倍。但是不管怎样,映射映射化简算法为我们提供了一种方式来处理一台电脑无法处理的大规模数据。 ???????? 在现在,对于多核计算机,我们也可以使用单机来运行Map-reduce。我们可以将数据分别传给多个CPU,在多个CPU计算完成之后,进行结果汇总。在单机处理的时候,我们就可以不用计算网络延迟了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:34:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |