【深度】机器学习进化史:从线性模型到神经网络

【深度】机器学习进化史:从线性模型到神经网络

Reza Zadeh是斯坦福大学工程计算和数学研究所顾问教授,也是Databricks公司技术顾问,他主要专注于机器学习理论和应用,分布式计算,以及离散应用数学。近日,他接受了oreilly网站的采访,尝试谈论了人工智能的各方面。

  • 神经网络已卷土重来,并且作为一种新方法,在机器学习中发挥着越来越重要的角色

  • 通过利用已有算法的监督学习解决方案,最伟大成就已经实现

  • Spark是一种特别适合分布式机器学习的环境

说说你在斯坦福的工作吧

在斯坦福大学,我设计并教授分布式算法和优化,此外我还教授一门离散数学和算法的课程。在离散数学课程里,我是完全从理论角度来教算法的,这意味着我所教授的算法完全不依赖于任何编程语言或框架,我们会直接把许多理论和证明写在白板上。

但是如果想要更实际些的话,那就得来我的分布式算法课了,我们会在Spark编程环境下工作,而我几乎会花一半时间在Spark上面。在这个平台上,我所教授的,设计分布式算法和机器学习的理论都可以执行,而且非常具体。

2006年我来到Google负责MapReduce编程模型,实际上之前Hadoop已经广为人知,也非常流行了,但在Google,MapReduce已经十分成熟。当时我只有18岁,也非常看好这个项目。于是,我花了很多时间在MapReduce上构建、思考算法,甚至在离开Google之后的很长一段时间依然持续这么做。后来有了Spark计算框架,它是开源的,大家都可以了解其核心,为其做贡献。我感觉Spark的时代已经到来了,因为对绝大多数分布式计算来说,弹性分布式数据集是非常抽象的。

机器学习的进化

从你在Google工作,到现在Spark计算框架上工作,应该有机会看到机器学习的进化吧,因为它们和分布式计算的联系都非常紧密,你会如何描述这种进化呢?

从上世纪90年代开始,机器学习已经过了一些过渡时期。从1995年到2005年,很多人专注在自然语言,搜索,以及信息检索领域。机器学习工具比如今我们使用的要更加简单,他们包括逻辑回归分析,SVMs(支持向量机),支持向量机内核,网页排名等。利用这些技术,Google获得了巨大成功,比如Google News就非常成功,还有Gmai垃圾邮件分类器,它利用易分布式算法进行排名和文本分类。到了上世纪90年代中期,这些技术已经变得十分成熟了。

大约在2005年左右,神经网络又开始卷土重来。神经网络其实算是上世纪80年代的技术,一些人甚至认为它起源于上世纪60年代,得益于计算机视觉的技术的最新进展,让(卷积)神经网络的使用显得卓有成效。事实上,神经网络已经开始在其他应用上“大展宏图”,包括自然语言处理和机器翻译等领域。

但是有一个问题:在所有提及的机器学习分布式模型中,神经网络可能是最具挑战性的。那些早期模型都已经训练成功被分布。我们不需要太过麻烦,就能使用100台机器,并训练一个逻辑回归或支持向量机,但是开发一个分布式神经网络学习设置却难的多。

那么,猜猜看现在神经网络这块谁做的最成功?到目前为止,唯一的公司就是Google。他们是这一领域里的先驱。现在就像是回到了2005年,当时Google发布了MapReduce,每个人都争相建立同样的基础设施。Google实现了分布神经网络,也得到了更多回报,如今,每个人都希望他们也能像Google一样获得成功,但是好事儿不会发生两次。

为什么一个支持向量机或逻辑回归比神经网络更容易实现分布?

首先,评估一个支持向量机要简单得多。当你学习了一个支持向量机模型或逻辑回归模型(或者任何一个线性模型)之后,实际评估就会非常快。比如说你构建一个垃圾邮件分类器,一个新电子邮件过来后,把它归到垃圾邮件还是非垃圾邮件只需要花很短时间就能完成,因为它只是一个点积(线性代数术语)。

但是当涉及神经网络,你的计算量将会大大增加,即便你已经学习了相关模型,但仍然要搞明白该模型的输出。而且,这还不是最大的问题,通常一个支持向量机应对一百万个参数还游刃有余,但是我所见过一个成功的最小神经网络,涉及的参数就多达600万个,而且这还是最小的。另一个问题是训练算法并没有从最优化理论中获得太多好处。我们所使用的绝大多数线性模型基本上都有数学理论支持,并且可以确定何时完成训练。这种模式可以确保你能发现最好的模型,但是神经网络现有的最优化算法无法支持这样的保证。在你训练了一个神经网络之后,其实无法判断出它是否是最好的模型。一旦这样,你就会不自觉的去想是否还会有更好的模型,因此就会不断训练下去。

当神经网络变得越来越强大,你会不会看到他们越来越多地被归入到过去曾是线性的工作方法类别之中呢?

是的,我是这样认为的。事实上,这种状况现在就正在发生。总有一些线性模型问题,仅能靠线性来辨别。为了让非线性参与,你不得不增加或改变一些功能,因此就会涉及到大量工作。举个例子,计算机视觉科学家花了十年时间开发、调试一种名为SIFT的功能,可以支持图像分类和其他使用线性方法的视觉任务。但之后,神经网络出现了,筛选功能变得不再必要,作为训练的一部分,神经网络的解决方法是让这些功能自动化。

但是我认为,现在说神经网络可以去到所有功能建设技术似乎还为时过早。而且,我也不认为会发生这种情况,线性模型和优秀的人为驱动功能引擎总会有它的一席之地。就像这次参加神经信息处理系统进展大会的研究人员,他们绝大多数已经开始评估自己应用程序的神经网络。大家都在测试他们的应用程序是否能够从神经网络的非线性模式中获益。

这绝不是说我们之前就没有过非线性模式,实际上,我们有许多非线性模式。但问题是,神经网络碰巧出现,而且异常强大,在一些应用程序上,它更奏效,因此才会值得尝试。这也是很多人正在做的事情。目前为止,在语音识别,计算机视觉,以及机器翻译上神经网络的应用都非常成功。它还可以应用在许多难度更大的任务上,因此未来还是十分令人兴奋的。

神经网络的关键是什么?

相对于传统的线性和非线性方法,为什么神经网络会如此强大?

当你有一个线性模型,每一个功能要么对你有帮助,要么对你有伤害,这种假设是线性模型中固有的。因此线性模型要么功能异常强大,用类1表示;要么则毫无用处,用类2表示。所有的解决方案,要么导致该功能获得巨大的价值;要么价值变得微不足道。你永远不会有这么一个状态说,在这个区间,该功能就是代表类1;但是在另一个区间,它代表类2。

线性和非线性方法局限性很大。也就是说,如果你分析图片,举个例子,寻找狗狗的照片,它很可能会进入到一个特定的子集里面,比如只显示有一只狗的照片,或是显示某一像素和其他类型的图片。在线性模式里面,你无法确定复杂的关系集。相比于线性模型,非线性模型可能会显得更强大一些,但是这种模式同样难以训练。我们会再一次进入到所谓最优化理论的问题之中,这也是我们在很长一段时间里认为神经网络还不是足够好的原因之一,因为他们会“过拟合”,通俗的说,就是太过强大。我们无法做预测,也无法确保最优化方案。或许,这可能就是为什么神经网络从当下暂时消失的原因吧。

在神经网络理论中,机器学习有很多分支和方法,你能总结一些关键方法吗?

到目前为止,最成功的方法是监督学习方法,它使用了一个比较老的算法,称为反向传播,构建了一个拥有许多不同输出的神经网络。

让我们看下一个神经网络构建,这个网络已经非常流行了,叫做卷积神经网络。这个理念是机器学习研究人员构建了一个多层架构的模型,每一层都可以用不同的方法处理之前一层的连接。

在第一层,你有一个窗口,上面会给图像分配权值,它也变成了该层的输入。由于权值“卷积”,该层也被称为卷积层,它会自我重叠。接着后面会有若干个不同类型的层,每层都有不同的属性,绝大多数都是非线性的。

最后一层会有1万个潜在神经元输入,那些激活的神经输出,每一个都对应了一个特殊的标签,可以用来识别图像。第一类可能是一只猫,第二类可能是一辆车,以此推到所有一万个类,这样一张“图像网”就出来了。如果第一个神经元(一只猫)与1万个神经元中绝大多数都匹配,那么这张图像就能被识别出来,是一张猫的图像。

这种监督学习方法的缺点是,在训练的时候,你必须要在图像上应用标签,这是一辆车,这是一个动物园等。

没错,那么无监督学习方法呢?

无监督学习方法还不是那么受欢迎,它涉及到“自编码器”。这种神经网络不会用来分类图像,但是可以压缩图像。同我刚才提及的方法来读取图像,识别一个权值,并在一个卷积层内用像素填满。其他若干层也这样,包括相比于其它层小的多的中间层。这样做的话,相关的神经元会变得很少,基本上,你读取图像时会进入到一个瓶颈,之后从另一边走出来,并尝试重新构建该图像。

在无监督学习训练下,不需要打标签,因为你所做的就是把图像放入到神经网络的两端,然后训练网络适应图像,特别是训练中间层。一旦你这么做了,那么就拥有了一个知道如何压缩图像的神经网络。无监督学习方法可以给你提供能应用在其他分类器的功能,因此如果你有哪怕一点点标签训练数据,没问题,它一样可以为你提供大量图像。你可以把这些图像看做是无标签训练数据,并使用这些图像构建一个“自编辑器”,然后从这个自编辑器中导出一些功能,这些功能适合使用一些训练数据,以此找到对特殊模型敏感的自动编码神经网络中的神经元。

是什么让你投身Spark?你觉得它是领先的技术集合吗?

之前我就认识Spark的创造者Matei Zaharia,我们都是滑铁卢大学的校友。实际上,我们还是Google的同届实习生,他当时负责开发者生产力工具,与大数据一点儿关系都没有。Matei Zaharia在Google工作期间根本没有接触过MapReduce,那是我专注的领域,但最后由他负责收尾的确让人觉得有趣。

之后Matei跳槽去了Facebook,在那里他负责Hadoop,并获得了成功。在那段时间里,我不断思考分布式机器学习,但什么计算框架都没有想出来,包括Hadoop在内,而此时Spark计算框架映入了我的眼帘,我感到非常兴奋。

能跟我们谈谈Spark究竟是什么吗?它是如何运作的,为什么对分布式机器学习来说,Spark非常有用?

Spark是一种集群计算环境,可以为你提供分布式矢量,这种矢量与我们在独立机器上编程所使用的矢量非常相似。在常规矢量下,有很多事情是做不到的,举个例子,仅通过目录,你无法做到随机访问,但是如果有两个矢量交集就能做到这一点,你可以并集,也可以分类,还可以做很多常规矢量无法做到的事情。

Spark让机器学习变得简单,其中一个原因是它可以尽可能多的在内存中保存数据的重要部分,而且无需写入磁盘。在一个分布式环境下,获取故障恢复的常规方法是进行磁盘写入,在网络中使用分布式文件系统对一个磁盘复制三次。

Spark之所以非常适合机器学习,是因为数据进入到内存之后,就可以保存其中。如果它不适合内存,也没关系,有需要时它就会离开磁盘。但关键是,它能够适应内存,对于任何一个需要处理多次数据的进程来说,比如机器学习,都非常棒。几乎每个机器学习算法都需要处理海量数据,而且是十倍,百倍的数据。

你觉得Spark和MapReduce比较呢?是否有一处可以让它们两者能够处理不同的工作负荷或职责?

我必须要明确表达一下,在很长一段时间里,Hadoop都是作为一个生态系统在茁壮成长。我不认为Hadoop生态系统的MapReduce组件也会这样。

如果要回答你的问题的话,我的答案是不,我不认为他们能够处理不同的工作负荷或职责。老实说,我认为如果你启动一项新工作,除非你已经有了需要维护的代码群,否则使用MapReduce一点儿意义都没有。如果现在还用MapReduce的话,似乎显得有点二了,换而言之,如果你能写C++代码,写集合代码是毫无意义的。

Spark未来会朝何处发展?

RZ:目前来说,Spark本身是非常稳定的。目前,或许也是未来几年可能会发生的最大变化,或者说最大提升吧,就是Spark的代码库。机器学习代码库,图像处理代码库,SQL代码库,以及流媒体代码库,所有这些都在快速发展,至少在未来两年内,它每一个变化都令人兴奋。Spark所有的功能都是我想要的,而且很高兴看到它执行起来也非常便捷。同时,对于社区驱动的贡献我也感到由衷的高兴,如今在网站上开发者社区对Spark进行支持,这样对长尾用户来说是非常有帮助的。

随着时间的沟渠,我认为Spark会成为一个真正的分布式引擎,帮助我们大规模构建机器学习算法。

via radar

本文转载请注明来源:http://www.leiphone.com/news/201505/t3T1XQy2g3spCUdd.html
原文地址:

转载于:https://www.cnblogs.com/yymn/p/4482878.html

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

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

相关文章

微软MS10-046漏洞的利用

微软MS10-046漏洞的利用 0x00 前言0x01 环境1. 目标机环境2. 攻击机环境3. 拓扑结构 0x02 过程1. 相互ping通2. 启动Metasploit3. 查找和MS10-046相关的模块4. 加载模块5. 设置所使用的payload6. 设置文件共享服务器的地址,应为BackTrack虚拟机的地址7. 设置目标主…

使用七牛云对网站进行加速基本配置

看了很多给网站加速的教程,大同小异,觉得还是使用免费的七牛云进行CDN加速,去年使用这个平台给APP加速,效果还不错。 1.打开七牛云存储注册链接:七牛云 注册帐号并且完成系统要求的实名认证要求。一般不需要充钱,冲着免费去的,既可以获得免费的10G流量,一般的小型网站…

kail利用msf工具对ms10-087漏洞入侵渗透WinXP

1.实验环境: Kali2020:10.20.29.129 Windows 2003:10.20.29.137 两台虚拟机能够相互ping通 2.实验步骤 1, 启动Metasploit 2,查找和MS10-087相关的模块search ms10_087 3,使用exploit/windows/fileformat/ms10_087_rtf_pfragments_bof模…

2020年前端招聘技术概览(包含常见的打包工具,框架及前端技术简介)

学习当下前端技术最好的方法就是从求职网站上找出前端的招聘要求,因为前端技术每年变化都很快,每个阶段都会不一样,这里简单从网站招聘要求罗列,仅供参考。更有针对性的是针对每个公司的招聘要求写简历,学习相关技术(除非那个公司特别好) 1.熟悉html,javaScript,css,aja…

DVWA通关教程(下)

XSS(DOM) XSS(DOM)是一种基于DOM树的一种代码注入攻击方式,可以是反射型的,也可以是存储型的,所以它一直被划分第三种XSS 与前两种XSS相比,它最大的特点就是不与后台服务器交互,只是通过浏览器…

前端工程师必备谷歌浏览器F12下的调试知识点

chrome浏览器版本(所有的操作都是基于我电脑上目前这个版本。) 进入开发者工具的方式:F12 (所有浏览器都可以用F12进入开发者工具),ChromeDev(开发者工具简称)按照类别可以分为下面几种 审查元素 ctrl+shift+c 在页面上选择一个HTML元素并审查它 切换浏览设备 ctrl+…

Kali利用msf对MS10_061漏洞进行渗透测试

注意事项: kail首次打开metasploit,会初始化数据,可能会有点慢,请耐心等待!本文仅供学习漏洞渗透测试,不得用于其他非法用途,否则造成的任何后果自负!!! 1.…

Metaspliot 控制终端利用Samba漏洞渗透

Samba简介 Samba是linux和unix系统上实现smb协议的一个免费软件,由服务器及客户端程序构成,Samba是面向Linux和Unix环境的Windows互操作性套件。它适用于在可能包括Linux、Unix、Windows、macOS及其他操作系统的异构环境下工作的那些人。Samba使用服务器…

群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!

今日周末,改了个表单验证然后无所事事了,然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还是觉得有点欢乐的 现在最热门的前端框架,毫无疑问是 Re…

Metasploit入门用法(主动攻击)

–作者:CV 本文主要讲metasploit的入门用法,还有一些渗透细节和思路,有不足的,欢迎互相学习研究。本人区别于书籍的特点是:书籍以模块为划分,我是以连续的步骤进行书写,更突出一次渗透的思路&a…

java 计时器_Java多线程并发容器之并发倒计时器

从火箭发场景来学习Java多线程并发闭锁对象倒计时器场景在我们开发过程中,有时候会使用到倒计时计数器。最简单的是:int size 5; 执行后,size—这种方式来实现。但是在多线程并发的情况下,这种操作会不安全的。举个现实中最典型的…

通过Spring将AWS SQS用作JMS提供程序

最近AWS公布了新的客户端库,它实现了JMS 1.1规范 ,并使用他们的简单队列服务 (SQS)作为JMS提供者 (见杰夫巴尔的帖子在这里 )。 在我的文章中,我将向您展示如何设置Maven项目以使用Spring Frame…

netbeans7.4_带有NetBeans 7.1 RC 2的快速入门WebLogic 12c

netbeans7.4WebLogic服务器12c停运了几天。 它适用于“裸”的Java开发人员-精美的Fusion Middleware东西将继续沿线升至12c。 因此,这基本上是我要运行的版本。 今天,我为您提供一个最新的NetBeans 7.1(RC 2)和WebLogic的快速入门…

burpsuite全套使用教程

burpsuite 实验环境安装教程浏览器配置篇使用方法Target模块(目标模块)Proxy模块(代理模块)Spider模块(蜘蛛爬行)Scanner模块(漏洞扫描)Intruder模块decoder模块(编码模块)Comparer模块(比较器)RepeaterSequencer 实验环境 burpsuite1.733 win10 dvwa firefox 安装教程 第…

致我们曾经白嫖的网站

十分好用的在线工具网站,珍藏版,分享给你们 1.奶牛快传:用户体验更好的网盘工具。 最近开始使用的一款网盘工具,和百度网盘类似,不过没有下载速度的限制,并且可以支持自定义分享文件的下载次数(需要开会员)。 还有一点让我觉得比较舒服的是,你给别人分享文件,别人无…

java word模版填充_[转载]java向word模板中填充数据(总结)

使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区域(DataRegion),另一个叫做数据标签(DataTag)。一、 概念数据区域:是…

是时候抛弃Java 7 – JBoss EAP 6.4了!

这一周真是太棒了。 JBoss EAP 6.4已发布,并且在大量技术增强和新功能中 ,最大的是:Java 8已添加到受支持的配置列表中。 其中包括Oracle JDK和IBM JDK。 Java SE 7公开更新结束通知 2015年4月之后,Oracle将不再将Java SE 7的更新…

bzoj 3668 数位DP

收获: 1、如果有很多位操作,并且不包含-/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP。 1 /**************************…

常用的视频下载网站

视频已经成为生活中不可缺少的一部分,不搬运视频怎么在此基础上创新。 小视频下载 V视频助手 硕鼠视频下载 维棠视频下载 Apowersoft视频下载王 Video Grabber Eagleget视频下载 喜欢的朋友可以收藏一下,万一以后想用找不到就不能二次创新了!…

漏洞工具:nmap和nessus

NMAP NMAP(Network Mapper)是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题.Nmap以新颖的方式使用原始IP报文来发现网络上有一些主机,那些主机提供什么服务&…