热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习_ng机器学习视频笔记(十五)——大数据机器学习(随机梯度下降与mapreduce)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ng机器学习视频笔记(十五) ——大数据机器学习(随机梯度下降与map reduce)相关的知识,希望对你有一定的参考价值。 ng机器学习视频笔记(

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ng机器学习视频笔记(十五) ——大数据机器学习(随机梯度下降与map reduce)相关的知识,希望对你有一定的参考价值。



ng机器学习视频笔记(十五)

——大数据机器学习(随机梯度下降与map reduce)

 

(转载请附上本文链接——linhxx)

 

一、概述

1、存在问题

         当样本集非常大的时候,例如m=1亿,此时如果使用原来的梯度下降算法(也成为批量梯度下降算法(batch gradient descent),下同),则速度会非常慢,因为其每次遍历整个数据集,才完成1次的梯度下降的优化。即计算机执行1亿次的计算,仅仅完成1次的优化,因此速度非常慢。

2、数据量考虑

         在使用全量数据,而不是摘取一部分数据来做机器学习,首先需要考虑的是算法的学习曲线,如果学习曲线中训练代价函数和cv代价函数差距很大,未收敛,则可以考虑加大样本容量的使用。否则应该先考虑优化算法,加大数据量未必一定有用。

         下图左边是可以加大数据量解决的问题,右边是加大数据量也无法解决的问题。

 

 

3、说明

         本文下面用到的方法,都是在当数据量非常大(如1亿以上)的时候,才会考虑的方法,当数据量不大时,使用批量梯度下降最好,用下面的方法反而会有问题。

 

二、随机梯度下降

         为了解决批量梯度下降收敛速度慢的问题,有了随机梯度下降算法(stochastic gradient descent)。

1、公式

         随机梯度下降,本质上就是把批量梯度下降中,不是把整个数据集都计算完取平均值后,再调整对应的θ,而是对于每个样本,计算完该样本后,就直接更新θ。

         如下图所示:

 

 

         这里的重复次数,实际上数据量很大的时候,1次遍历整个数据集即可。如果想要多次优化,理论上1~10次即可,不需要太多次。

         另外,随机梯度下降算法,使用之前,要打散整个数据集,这样效果更好。

2、原理

         对于每个样本,计算出来的θ,实际上是一个小范围内的最优梯度。所以用这个来更新,不会直接逼近最优值,而是逼近区域的最优值,因此可能会非常的波动,蜿蜒曲折的靠近最优值,就像上图的粉色的线那样。如上图粉色的线。

         而批量梯度下降,由于每次都是用整个样本最优值的均值,因此确保了样本能够直接朝着全局最优值的范围优化。如上图红色的线。

 

三、随机梯度下降的优化

         随机梯度下降,也需要考虑到α,以及考虑算法是否正确执行。随机梯度算法正确的衡量,通常是每1000次优化,取一次误差的均值,进而画出均值-优化次数图,通过图像是否往0方向收敛,来判断算法是否正确。

         之前学过,α越小,其相当于往梯度迈进的步子越小,即优化的更精确,但是收敛速度会比较慢,如下面的左上方的图。

         由于随机梯度,每次的优化是局部的优化,因而会有抖动,如果把1000换成5000,图像会更平缓,但是这样算法的改变在图上表现的也不那么明显,因为是5000次的均值。如下面右上方的图。

         如果发现图像一直上下波动,没有收敛也没有发散,可能是因为均值的基数太小,此时用5000来做均值,有可能会解决此问题。但是也有可能本身算法问题,或者数据等的问题导致的,这样的就无法解决。如下图左下角的图。

         另外,如果α取的太大,图像发散,需要减小α,如下图右下角的图。

 

 

         动态α:

         为了保证抖动更少,还可以通过动态取α的值来做到,令α=C/(D+迭代次数),C、D是两个常数。这样随着迭代的深入,α越来越小,则会越来越精确,而尽量避免越过最低值导致波动的现象。

         但是,这样带来的问题,就是原来需要一个α作为参数,现在需要C、D两个参数,这样需要设置的参数更多,算法更加复杂。

 

四、微型批量梯度下降

         有一种梯度下降,介于批量梯度下降和随机梯度下降之间,叫做微型梯度下降(Mini batch gradient descent),其做法是,既不像批量梯度下降那样要遍历整个样本才做一次优化更新,也不像随机梯度下降那样每个样本更新一次,而是设定一个参数b,每遍历b个样本做一次优化更新。b通常取2~100。如下图所示:

 

 

五、在线学习

1、过程

         当无法一次性获取整个数据集,或者需要不断的优化时,则要用到在线学习(online learning)技术。

         在线学习,实际上就是拥有无限输入的随机梯度下降。随机梯度下降是遍历整个数据集,对于每个样本进行一次计算和优化;而在线学习没有指定的样本集,是每次来一个新的样本,就做一次优化。

         这里输入的是样本的特征,并将是否被用户选择作为输出,可以用logistic回归的方式来进行学习。

         如下:

 

 

2、主要业务场景

         例如新闻网站,需要根据用户的点击,在用户下次登陆时展示不同的信息。这样就可以将展示出来的新闻作为样本,用户点击的话则判断为1,不点击则判断为0。对于被判断为1的新闻,拥有这种类型的特征的新闻,下次展示的概率都会更大。

 

六、Map-reduce

         当数据量非常大,而且有多台电脑,或者计算机集群时,可以并行的来解决问题,运用map-reduce的思想来处理。

         map-reduce,实际上是将一个庞大的数据集,根据当前情况进行分片,把不同的片分给不同的处理器处理,每片再把处理结果都传给同一个中央处理器,进行汇总计算。

         例如现在有400个数据(这里为了举例说明,实际上400个数据用不到map-reduce,而4亿的数据则可以考虑用map-reduce),4台计算机,要进行线性回归的机器学习,采用批量梯度下降的方式进行优化。

         批量梯度下降每次优化,需要累加所有的样本的求偏导的计算结果,则可以把400个数据分成4个100个的数据集,同时给4台机器处理。每台机器处理完,都将结果传给一个中央处理器。中央处理器在把这些结果求和,求均值,乘以α,做减法,触发下一次的优化。

         这样,当不考虑网络延迟等问题时,可以达到原来速度的4倍。

         如下图所示:

 

 

         机器如下图所示:

 

 

         另外,现在的很多计算机是多核的,如果一个计算机有四核,则也可以进行map-reduce,而且这样还省去了网络延时,效果更好。

 

 

         另外,有的函数库,会自动的去调用计算机的多核来处理,则就不需要考虑map-reduce了。

 

七、总结

         这一章主要提到大数据情况下的处理方式,数据量非常大时,很多平时很好用的算法会慢慢无法适应,这也是上面提到的一些改版的梯度下降的起源。对于数据量小时,如果使用随机梯度下降或者微型梯度下降,反而无法很好的收敛,因为数据量不足会导致训练次数不够。

         另外,对于map-reduce,实际上是用到并行的思想来处理问题,要使用这个,首先要确定数据量足够大,有必要使用;此外,也要保证对应的机器学习算法,里面的优化过程(或部分子过程)可以拆成几个部分给各个机器同时处理,而且是耗时的部分进行拆解处理,这样才能最大的提示计算机是效用。

 

——written by linhxx

 

更多最新文章,欢迎关注微信公众号“决胜机器学习”,或扫描右边二维码。



推荐阅读
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了优化算法改进的侏儒猫鼬优化算法(IDMO)及其Matlab源码分享。文章首先介绍了获取代码的两种方式,包括付费下载和付费订阅付费专栏。然后详细解释了侏儒猫鼬优化算法的原理和特点,以及其在集体觅食、侦察和保姆交换等方面的应用。最后提供了CSDN资源下载链接,供读者下载相关代码。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文详细介绍了商汤科技面试中涉及的CV算法面经内容,包括CornerNet的介绍与CornerPooling的解决方案、Mimic知识蒸馏的实现方式、MobileNet的特点、普通卷积和DW PW卷积的计算量推导、Residual结构的来源等。同时还讨论了在人脸关键点和检测中的mimic实现方式、pose对人脸关键点的提升作用、目标检测中可能遇到的问题以及处理检测类别冲突的方法。此外,还涉及了对机器学习的了解程度和相似度分析的问题。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 美团0.99元充10元话费,秒到账,超简单!领券充值教程
    本文介绍了美团活动中,新用户可以领取9元话费券,0.99元充值10元话费的方法,同时提供了老用户领取5元话费券的可能性。通过扫描二维码参加活动,用户可以在美团app中查看并立即使用红包卡券充值话费。此外,文章还提到了话费充值秒到账的特点,以及美团活动中的满30减15外卖券优惠。对于新用户和老用户来说,这是一个简单且划算的充值方式。 ... [详细]
author-avatar
fjy69
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有