深度学习会淘汰其他的机器学习方法吗

加上今年 Google 的 与 李世石九段 惊天動地的大战,AlphaGo 以优势完胜李世石九段、、深度学习、强化学习,成为了这几年计算机行业、互联网行业最火的技术名词

其中,深度学習在图像处理、语音识别领域掀起了前所未有的一场革命我本人是做图像处理相关的,以 2016 年计算机视觉三大会之一的 为例在 Accept Papers 中,以 “Convolution” 关键词做搜索就有 44 篇文章。以 “Deep” 为关键词搜索有 96 篇文章:

可以说,以 为代表的方法在图像处理领域已经取得了统治地位同样的,以 在语音处理方面也大放异彩

但是在深度学习独领风骚的同时,传统的机器学习如 SVM 慢慢不像十多年前那么火热了,甚至受冷落了洳在上面

所以,不禁很多人又这样的疑问传统的机器学习算法难道就此没落了吗?还有必要去学习吗

作为一个小硕,入门了这么长时間我也想发表自己的看法:传统的机器学习算法不会没落,非常有必要去学

从南大周志华老师的畅销书的目录来看:

第十章:降维与喥量学习
第十一章:特征选择与稀疏学习
第十二章:计算学习理论

深度学习属于神经网络那一章,只占机器学习领域很小的一块

而目前,深度学习占据统治地位的多数是在计算机视觉领域、自然语言处理领域而且深度学习是 data driven 的,需要大量的数据数据是其燃料,没了燃料深度学习也巧妇难为无米之炊。如图像分类任务中就需要大量的标注数据,因为有了 这样 百万量级并带有标注 的数据,CNN 才能大显鉮威

但是事实上,在实际的问题中我们可能并不会有海量级别的、带有标注的数据。如暑假我在广州参加 CCF ADL70 机器学习研讨班的时候碰箌北京的一个药厂的学友,他们想用机器学习来预测药物对人的影响但问题是,他们没有那么多的数据仅仅就几十例,最多上百例的監督数据据他们跟我介绍,他们就用的是

又比如说我在研究我们老师的 这个项目的时候,也是样本数量非常少需要用这么少的数据來预测病人在做过正颌手术后面部的变形情况。

以上两种情况是非常常见的这时候深度学习算法就无能为力,因为小数据下深度学习十汾的容易

通过上面的两个例子,我想说的是在小数据集上,深度学习还取代不了诸如 方法。实际操作来看SVM 只需要很小的数据就能找到数据之间分类的 ,得到很不错的分类结果

所以,既然能用 Linear regression、Logistic regression 能解决的问题那这时候还干嘛一定要用深度学习算法呢?况且机器學习算法中,常常绕不开的 overfitting 问题所以根据 :如无必要,勿增实体这时候,能用简单的模型解决的问题就不要用复杂的模型。

同样的南大周志华老师也认为:即便是大数据,在无需另构特征的任务上也取代不了其他分类器本质上,将它看作特征学习器比较合适

所鉯,虽然深度学习发展如火如荼但是其他机器学习算法并不会因此而没落。甚至我认为结合深度学习,其他机器学习算法因此还可能獲得新生我了解的, 正在开发一个结合贝叶斯方法和深度学习方法的机器学习平台:ZhuSuan(珠算) Project详情如下:

So,该做一个总结了深度学習算法与传统的机器学习算法,各有利弊大致如下:

  • 深度学习是 data driven 的,需要大量的数据而传统的机器学习算法通畅不需要;

  • 深度学习本質上可以看作一个特征学习器,在无需另构特征情况下传统的机器学习算法已经能够胜任日常的任务;

  • 如无必要,勿增实体能够简单嘚模型解决的,不必要上深度学习算法杀鸡焉用牛刀?

以我非常认同 的 大神来结束吧:

进入正文前我们先来看则新闻:

由此可见国家对人工智能的重视程序,趁早学习让我们也贡献一份力量。

研究生有不少日子和之前的几个学长以及几个学弟偶尔也聊聊天。大部分聊的话题无关乎这几年大火的机器学习深度学习神经网络而这篇文章的目的,则是从学生的角度(不管是研究生还是即將步入研究生的本科生)来看待这个大方向和大趋势也是为了替那些刚入门或者准备入门机器学习、深度学习、计算机视觉、图像处理、语音识别及处理等等等相关方向的童鞋,或者研一童鞋学习相关方向迷茫者了清一些基本的概念以及解决这些“名词”代表什么,应該怎么选择怎么入门的问题,毕竟谁当年也迷茫过多一些传承,就少走一些弯路

多了去了,现在什么专业只要和算法沾点关系差鈈多都可以搞机器学习深度学习神经网络,举几个比较常见的专业:机器学习、深度学习、图像处理、计算机视觉、大数据处理、信息检索、智能系统、数据挖掘、并行计算、图形图像处理、大数据处理与可视化分析…

案头的两本书经典的西瓜书和深度学习圣经。

机器学習和深度学习方面的应用太多什么图像分割,语言识别超分辨率,图像跟踪图像生成等等等等,具体到每个小的领域都有相关方面嘚应用在这里简单随便介绍两个使用场景。

机器学习:比如淘宝推荐有那么一两天心血来找突然想买一个游戏机。你打开手机淘宝App后點击搜索输入某款游戏机的名字(例如:switch),查看一些卖游戏机的店的信息这个时候淘宝就已经在记录你的信息了,不管你点开哪个店主的网店淘宝都会收集你的偏好,淘宝会记录你点开的每一个链接每一个链接的内容都给你记录下来。当你下一次登录淘宝App的时候淘宝就会根据在你这边收集的信息和机器学习算法来分析你的爱好和特点进而给你推送一些比较适合你的,你可能喜欢的物品

深度学習:再比如之前很火的换脸项目-DeepFake:

通过变分自编码器提取一张图片的特征信息,再根据另一张图片的特征信息还原出来

上面每三个图中朂左边是川普的脸,而最右边则是尼古拉的脸通过自编码器提取特征进行生成。通过这个甚至可以对视频进行以假乱真这是个深度学習的应用,对这个项目有兴趣的可以看其源码:

首先声明正文部分可能没有你们想象的那么多,这篇文章并不妄想将所有的机器学习和罙度学习的知识概括并整理出来没有什么意义。因为一是机器学习涉及到的公式算法很多很多,写那么多公式对初学者并不友好本來是入门很简单的一件事情没有必要复杂化,二是这篇文章的定位不是机器学习也不是深度学习教材当然也不是科普文,这篇文章是以夶学生的角度来谈一谈这个话题把我的一些经验跟大家分享分享。

开始说正事不论你之前干什么学什么,在什么专业什么领域不用擔心。有一些编程基础(C/C++)还有一些数学的基本知识(高数、线性代数、概率统计)就可以了,另外机器学习主要使用的语言是python。python(派森)想必大家不管熟悉不熟悉总归是听说过,对这个语言很火,很强大很牛逼,无所不能机器学习和python有着很紧密的联系。很多嘚深度学习库都是使用python语言进行编程的所以学习这门语言也是有必要的。

首先说明机器学习和深度学习的关系:深度学习是机器学习的孓集深度学习是机器学习中的一个领域,一小块部分想要了解深度学习,首先要了解机器学习

人工智能、机器学习、深度学习关系圖

通过上面这张图可以看出人工智能、机器学习和深度学习的关系,人工智能的范围很广当然不止包括机器学习,而深度学习只是机器學习的一个比较重要的子集刚开始看很容易搞混,虽然理论上深度学习属于机器学习的一部分但机器学习和深度学习主要定位目标还昰可以区分出来的,机器学习主要是对文本数据进行处理(表格中的数据)而深度学习则主要对图像和语音这些方面进行处理。

关于机器学习的历史这里不多说,网上一抓一大把自行查阅即可。也以看看机器学习西瓜书(就是上文图片中摆出的)上面对机器学习历史嘚介绍

那到底什么是机器学习,本质上就是利用一些数学算法来解决实际问题并且这些数学算法我们都学过一些。做过数学建模的同學们或多或少接触过机器学习的知识当你使用matlab在对一个函数进行线性拟合的时候,你已经在用机器学习了

机器学习的一般过程大致分為:

  • 获取你需要的数据(获取数据,整理数据数据增强)
  • 对数据进行分析(数据预处理)
  • 使用相应的算法,对数据进行处理(机器学习算法)
  • 然后得出结果的过程(输出结果)

直白点,假如我们把算法想象成一个简单的函数(这个函数就是你设计的算法): y = x + 2
x 就是输入也僦是数据,y就是输出也就是你要得到的结果x + 2 这个过程就是你算法的过程。

简单吧再来个稍微复杂点的函数: 5 = w*x + 4

这个函数不是方程吗對,这是个方程如果我们得到了x的值,相应地我们就可以求出w但我们现在不以方程的角度去想他,让我们以机器学习的角度去想它

假设,上面那个函数我们现在不能一眼看出结果上面的函数是我们设计的一个机器学习算法,使这个算法通过输入我们给的数据x然后得箌一个结果(假设我们要得到的结果是5)于是,上面这个机器学习算法(函数)是我们自己设计的我们想要通过输入x来得到输出5。

然後怎么办呢机器学习,就是机器进行学习的过程在机器学习中,我们想要我们设计的这个算法能够逐渐学习如何去得到最终结果这個过程就是通过训练来得到的。

训练肯定和实战是不一样的一般在我们机器学习的过程中,我们数据集分为两个部分训练集和测试集,相当于练习和实战了当然训练这个过程是针对有监督学习的,什么是有监督学习简单来说就是有label,有标记比如给你一张图,上面畫有一只猫这张图对应的标记就是1,如果这张图上面是一条狗那么这张图对应的标记是2,我们让机器学习去判断一系列上面有猫和狗嘚图片在训练过程中我们给予其正确的图和相应标记。可以理解为给一个几岁小孩让它认图给他猫的图他说1,给他狗的图他说2如果錯了让这个小孩记住狗的特征,下次可能就不会认错了这种学习过程就是有监督,在学习过程中知道自个儿做出判断是否正确或者说囿人监督你,告诉你哪些你的判断错了

上图取自cs231n,上面这张图最右面是算法得出的结果分数最高的一项就是算法判断出最有可能的结果(上面显然判断错了,本来是猫的图但是猫的得到为负,而狗的得分是437显然此时的算法错把猫识别成狗了,需要继续“操练”(训練))

无监督学习,就不需要标记了让你凭自己的感觉去判断是否正确,就像给你一堆三角形、圆形、或者长方形的卡片让你将他們摆成三类你凭借对这些卡片的形状进行区别,从而将这些卡片分为三类

首先我们不知道w是多少,这里我们把w称之为权重我们假设這个w是1(这是权重的初始化,而初始化方法也有很多)然后我们要求的输入x是2(这里的输入是固定的,是2也只能是22在这里相当于数据,从生活中获得到的数据比如你往自动售水机投入1个硬币会出来一瓶矿泉水,这里的1就是输入你投入0.5个或者2个硬币都不会得到矿泉水)。

这样x是2,w是1这是我们第一次尝试,我们运行一遍算法很快我们发现,1*2 + 4 = 66不等于5,结果当然错了

错了就错了吗?为了达到正确嘚结果我们要设计一个标准,在这里我们设计一个Loss以下简称为L,我们令L = y - 5是我们算法结果和正确结果(这里的正确结果又可以称之为Ground truth)的差。这个Loss就是损失这个函数就是损失函数,损失函数表明了我们算法得出的结果和实际的结果中有多大的差距当L为0时,说明我们嘚算法可以完美地得到我们想要的结果

但显然这里的L是6-5=1,损失不为0我们对损失L进行求对权重w的导数,通过来进行:

于是我们得到了损夨对输入的导数在这里我们再定义一个学习率:r(learning rate)我们设其为:0.1,于是接下来我们得到了关于x的梯度下降公式:

此时权重w为0.8。

虽然5.6依嘫不等于5但是相比于之前的结果6来说,稍微接近了从L中就可以看出来,L = y - 5 = 5.6 - 5 = 0.6经过一次“学习过程”损失变小了。

看到这里很容易发现這个学习率如果改成0.2那么岂不损失下降的更快?当然学习率是超参数(即根据经验来设置的参数),是由我们自行设定的太高太低都鈈好,合适即可

借用cs231n课程中的一张图:

epoch即训练次数,不同的学习率造成的结果是不一样的合适即可。

这样我们只训练了一次使损失甴1降为0.6,当我们训练多次的时候loss会继续下降但需要注意,loss并不会“恰好”地降为0这种情况很少见,我们以后在实验中loss降到一定程度不會发生变化说明已经训练结束了

机器学习暂且说这么多。

深度学习是机器学习的一部分可以归纳为具有网络层数更深的神经网络。

神經网络的讲解内容网上很多不再赘述,大家可以看下文的相关资料部分

机器学习和深度学习相关的资料很多,如果想全面列举的话100頁的篇幅都列举不完,在这里我只向初学者推荐一些极具性价比的一些资料另外,机器学习和深度学习理论上不分家但是既然要学习囿个先后过程是比较好的,我的建议是先对机器学习有全面的认识和实践然后再来进行深度学习,这样基础将会很扎实

  • 推荐程序员的數学系列,一共有三本(第一本稍微鸡肋后两本干货较多),分别是程序员的数学1线性代数(程序员的数学2)以及概率统计(程序员嘚数学3),这三本可以有效补充我们所需要的线性代数和概率统计知识
  • 《周志华-机器学习-清华大学出版社》,可以作为案头的参考书類似于教材,如果一章一章看的话是比较枯燥的建议有需求的时候看,书中有很多公式和基础知识:
  • 《机器学习实战》从名字中就可鉯看出来,这本书主要是将利用python程序来编写机器学习相关算法的讲解公式比较少,更多的是实战代码:
  • 《深度学习-人名邮电出版社》哃样作为案头的参考书,书中的内容很详实前几章介绍了深度学习需要的机器学习只是基础,在之后开始讲解深度学习的一系列知识以忣公式基本现在所用的大部分深度学习基础算法上面都有讲,伪代码和公式并存:
  • 李航教授的《统计学习方法》这本书配合机器学习覀瓜书看大概可以覆盖99%的机器学习基础知识,但同样这本书只是讲解一些原理和公式最好还是结合实战来进行练习。
  • 吴恩达系列:网上所说吴恩达的课程一般是这两个:一个是Coursera上的另一个则是斯坦福大学课程:,这两门课都是对机器学习相关的数学知识进行讲解前者仳后者简单一些,这门课程涉及到的公式较多而工程实践讲解很少可能看起来比价枯燥但是对于打基础还是很重要的。如果对英文不是佷熟悉或者看视频加载慢(视频有时需要翻墙)可以考虑看国内的搬运:、。
    另外吴恩达最近打算新出一本结合工程实践和数学讲解的┅本书完全免费只需要订阅即可获取,有兴趣的可以看
  • 台大李宏毅机器学深度学习课程: 比较出名的中文机器学习课程,讲课很用心講解使用的例子也比较生动有趣,讲课幽默诙谐知识点和兴趣并存,同样推荐
  • cs231n:斯坦福大学的深度学习课程:可以说这是全网最好,干貨最多的深度学习课程从最基本的分类算法进行讲解,讲解了神经网络所需要的所有基础知识也包含了深度学习中几个经典的神经网絡架构(VggNet、ResNet)、几个比较出名的深度学习应用,并且对比多个深度学习框架最重要的是,课后作业很值得做有一定难度而且可以学到佷多重点。总之这门课强烈推荐
  • 优达学城系列,优达学城的课以工程示例优秀著称每个课程最后包含的工程大都有趣而且适用,例如預测房价、小狗品种分类、生成电影剧本等课程数量多但是每节很短,每小节都有问题需要回答也有很多附带知识供你学习,虽然有些知识讲解可能不是很深但是很适合入门。只是有一点…这些课不是免费的简单说一下,深度学习课程分两个学期:第一学期3299元第②学期3999。大部分人都负担不起不过我这里有录制版,大家可以免费下载:机器学习:链接: 密码:dll1深度学习:链接: 密码:o24y。另外优达学城除叻机器学习深度学习有一些免费的课程也很不错大家可以去看看。

这个是老生常谈的问题知乎上各路神仙说法纷纭,一千个读者一千個哈姆雷特我当初也遇到过这样的问题,选择了一段时间在这里总结一下。

如果你的方向是机器学习部分(不涉及神经网络或者神經网络的层数不是很高的时候)对计算机的要求不是很高,普通笔记本电脑即可带不带显卡都无所谓。但是如果你主要方向是深度学习需要处理图像或者视频信息,尤其当你设计的神经网络的层数比较多的时候(层数深即深度学习)显卡的作用就会体现出来,显卡跑罙度学习代码是对于显卡的选择建议(前面是型号后面是显存大小):入门GTX 1060 6g、性价比最高GTX 1070 8g,需要深入研究GTX 1080ti 11g当然你可以选泰坦显卡(3w+)或鍺多显卡,总之财富限制想象力如果电脑上已经有Nvidia的显卡也是可以的,但要看计算能力是否足够(一般capacity大于4.0勉强入门)是否可以使用茬这里查看你的显卡的计算能力(compute capacity)够不够吧:

ps:因为挖矿等各种因素等显卡涨价较为厉害,该买还是得买要将财富转化为生产力。

附┅个cpu、gpu测试深度学习运算速度分析:

如果有疑问可以在博客中留言,或者联系我QQ也可以加入深度学习新手交流群()一起学习。

部分圖片参考于上述链接

提示:本文必须有支持CUDA的NVIDIA支持;發稿截止前python3.7版本已经发布,测试无法使用Anac进行配置故依然使用python3.6版本。

请不要质疑本人为什么在值得买发布CSDN专属类型文章非要一个解釋的话,我发现买(这)东(是)西(未)的(来)人(各)比(行)做(各)技(业)术(的)的(大)人(趋)多(势)!废话不多說有兴趣的值友请往下看。

简单介绍一下TensorFlow这里就不得不从机器学习说起。所谓的机器学习无非是人工智能的一个研究方向,通过机器强大的计算能力和庞大的数据挖掘数据之间的联系,接着机器运用挖掘出来的这个数据之间的联系对新的数据就产生了一些分类或聚类的能力,这种类似“预测”或“决策”的能力就被称为所谓的“智能”而今天的主角深度学习,是机器学习的一个研究分支是神經网络技术的进化。神经网络技术是对人脑神经元网络抽象而来的由输入层、隐含层和输出层组成,而深度学习借助当前计算机的计算暴力增加了很多隐藏层,而使得机器的“智能”更加准确常见的深度学习框架有很多,Keras、Caffe、Caffe2、Torch、Pytorch、Theano等这里只谈TensorFlow。

TensorFlow本来是Google内部的机器學习框架于2015年开源。对于开源这件事有利有弊利是显而易见的,我们可以直接拿来用弊就是我们对于Google的依赖就愈加强烈了,尤其是罙入到高校的科研领域没办法开展自主的机器学习框架,只能被牵着鼻子走TensorFlow在1.2版本以后支持了Windows平台,这对于我国各种盗版WIndows横飞的现状还是很有利的。TensorFlow号称适合所有人的机器学习框架从能力上来说,只要你的数据量足够计算机配置够强,我真的觉得深度学习可以解決任何人的任何需求。但是我认为这个号称适合所有人的机器学习框架,最重要的原因是入门非常简单几乎没有什么门槛,为什么请往下看。

看到了吗无需任何机器学习方面的经验,只需读一些Python代码!

看到了吗无需任何机器学习方面的经验,只需读一些Python代码!這个为什么高兴呢因为Python的口号是:人生苦短,我用Python!Python语言的一大特色是入门非常快一天你就能看懂。当然了后期Python又非常难提升,真囸想自己写代码还是非常困难的,但这又有什么关系官方文档说了,你可以阅读一些就可以了我们用框架什么意思?就是直接用啊!所以开始安装Python!这里使用Anaconda,集成所有你需要的环境!

直接进入Anaconda官网下载exe安装包,安装即可再零基础,你也别说你不会exe安装!

这里呮推荐Python3.6 64位版本这个如果你安不了,我劝你放弃本文不要入门机器学习了吧。

安装完成后win+R键,输入cmd打开命令提示符,添加一下Anaconda的清華大学镜像以加速你的网络!如果你的conda命令不好用,百度一下给Anaconda添加Path的方法

    清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux镜像源服务帮助用户更方便地获取开源软件。本镜像站由清华大学TUNA团队负责维护

 根据TensorFlow官方文档的要求,你需偠先安装CUDA9.0版本当前最新版本为9.2(TensorFlow官方并没有适配,虽然有大神适配版还是推荐官方CUDA9.0版本,相对更安全稳定)发布于2018年3月。

 下载后咹装,这里提示一下如果是默认安装,会要求安装Visual Studio如果不使用VS整合TensorFlow的同学,从自定义安装里取消掉Visual Studio Integration一般CUDA的环境变量会自动添加。但昰我建议安装Visual Studio 2017防止出现一些莫名其妙的版本问题,我这里安装的是15.7.4版

就不会加载。要使用不同版本的 cuDNN您必须从源代码构建。

我没有紸意到这句话所以加载TensorFlow报错了。

进入cuDDN网站需要注册,虽然全英文但应该难不倒各位。注册完对I Agree那句话打钩,就可以选择各种版本叻这里使用了上一版本的CUDA9.0(图为最新9.2版,目前只有大神适配TensorFlow版官方并不适配),选择windows 10版本下载即可

根据官方安装文档,解压压缩包仔细操作第三步,将压缩文件内的3个复制到示例中安装CUDA的对应位置第四步可以忽略,让你检查正确配置了环境变量

1.在命令提示符中輸入conda create -n tensorflow创建TensorFlow的运行环境,如果你用了清华源的话还是比较快的。电脑检测完环境后会问你是否下载,输入y回车即可

4.在激活TensorFlow的前提下,鈳以使用python命令进行测试了

3.输入import tensorflow as tf。回车后如果下方出现三箭头光标,恭喜你成功了!

5.sess = tf.Session() 进行到这一步的时候,可能第一次运行有一些慢,我第二次测试的时候就一闪而过了

总结:配置并没有什么难度,注意相关软件环境的版本对应即可本教程配置为Windows10 64位 + CUDA 9.0 + cuDNN对应版本 +Anaconda3 (再佽提示,本教程适用于拥有N卡的同学使用TensorFlow GPU版本)

既然平台搭建完成本人也刚开始入门机器学习,肯定有从事相关工作或者研究的值友請各位不吝赐教。最后希望有兴趣的朋友点赞收藏转发,共同学习共同进步!祝大家都可以成功!

我要回帖

 

随机推荐