查看原文
其他

学深度学习是不是需要先学机器学习?

木羊同学 机器学习算法与Python实战 2021-03-27
↑↑点击上方蓝字,回复机器学习,领取资料


导读:深度学习到底是什么?

 


今天聊三个深度学习入门问题,是在公号后台大家经常提到的。


第一个问题,学深度学习是不是需要先学机器学习?


说实话我有点意外,对于怎样学深度学习,我设想过各种问题,但没想到大家最好奇的会是上面这个问题。不过,了解深度学习,确实应该从了解人工智能、机器学习和深度学习这三者的关系开始。我看过的不少书都喜欢把三者关系画成三个套在一起的大圆圈,最外面的圈是人工智能,里面一点的圈是机器学习,最里面的圈是深度学习。这个图传得很广,三者的关系也确实可以简单理解成人工智能>机器学习>深度学习。不过,这样画图容易让人误认为人工智能的核心是机器学习,而机器学习的核心则是深度学习。这是一种误导。


人工智能听起来好像很高深,在我看来,更像是一个很大的箩筐,无论什么研究,只要能和智能沾上边的,就都敢塞进这个箩筐里面。不难想象,这个箩筐里面肯定是像装满了螃蟹一样“八仙过海,各显神通”。我们的机器学习只是其中的一种,虽然曝光率也算还行吧,不过也不好说它就是妈妈最爱的小儿子。机器学习自己呢,也将头发梳成大人模样,同样是一个箩筐,小一点,但里面同样也装满了八仙过海的各路模型算法。其中有一种模型算法是我们今天的主角,不过还不叫深度学习,在出道之前,它叫“神经网络”。这个神经网络基本可以确定不是妈妈最爱的小儿子,今天刚上热搜明天就被雪藏这种大起大落的刺激,它经历过好几次。


很多书是这么说的,神经网络是深度学习的前身。不过,这个说法总感觉有点见外,听起来神经网络和深度学习像是前浪和后浪的关系。其实吧,深度学习更像是神经网络为了庆祝再一次逆天改命,索性换了个名字。时间是在2012年,沉寂近二十年的神经网络终于又憋出了大招,这一次一举开创了一个伟大的新时代——你以为我要说的是深度学习时代,简称DL时代?不不不,这样完全没有体现这个大招的伟大,是DLCQJ时代,大力出奇迹时代,也称氪金时代。


为什么这么说?时间回到2012年的ImageNet赛场上,你也许是第一次听这到这个比赛,不过光看名字你就能知道,这是个图像识别比赛。以前ImageNet比赛的画风大概是这样:这一次你锤我两下小拳拳,然后你拿了冠军。下一次换我锤你两下小拳拳,然后我拿了冠军,非常的团结友爱。但到了2012年,友爱画风戛然而止。


前面我们说过,神经网络在这一年憋出了一个大招,既然是大招,当然配有姓名,叫AlexNet模型。这个名字可能对不是做深度图像识别的同学有点陌生,但是说CNN,深度卷积网络,想必大家就如雷贯耳了。当然,CNN作为一种框架,不止AlexNet模型,但可以认为CNN是靠AlexNet模型一夜成名。过程非常凶残,简单来说就是AlexNet吊打了所有在场的其他模型。这样说可能不太直观,那就列个数据看看。AlexNet当然拿了当年比赛的第一名,错误率(这个指标数值越低说明模型效果越好)只有15.3%,这么看好像没啥,那当年比赛的第二名错误率是多少呢?高达26.2%,多个10个百分点,差不多就是百米赛跑,第一名都冲线了,第二名才刚跑完一半的意思。所以,这次不是“多锤几下小拳拳”能解决的问题了,是干脆一下就把对手扫进了历史的垃圾堆。


很多介绍深度学习和AlexNet模型的文章,写到这里就停住了。不过,我要多说一点:AlexNet模型效果很好只是起点。前面我说,它开创了一个伟大的新时代,因为这款模型使用了一种当时还很陌生,但现在我们都很熟悉的开挂技术——GPU。AlexNet模型像是一个伟大的先知,它的成功引领机器学习走上了一条未曾设想的道路:更深的神经网络,更多的GPU,就有更好的效果——这就是深度学习。深度学习的快速崛起,和硬件技术的发展是息息相关的。不是前人太蠢,在这么长的时间里都没有想到通过加深神经网络来取得更好的效果,而是深度一旦上去了,算力就立马跪下去了——这是时代的局限性。而随着GPU的加入,算力不再是瓶颈,深度学习也就真的成了那句话所说的:“你们有幸,遇见这样的时代,但时代更有幸,遇见这样的你们”。从此,机器学习也就从烧脑的玩意,变成了烧钱的玩意。



说了这么多,我们的问题还没有回答呢。不过,我想从第二个问题讲起:深度学习难学吗?


不难学,“氪金”就好了。当然,这是玩笑话,现实自然没有“自从买了GPU,妈妈不用担心我的学习了”这么理想。深度学习正处于高速发展期,每年甚至更短的时间,都会发展出新的技术来,现在已经形成了自己的一套体量庞大、内容独特的理论体系,而且这套体系还在不断开疆拓土,发展壮大。不过,前面我们反复说,深度学习是从神经网络发展起来的,而神经网络只是机器学习众多模型算法中的一种,从这一点看,深度学习相比反而要更容易学一点,毕竟一棵树无论再怎么枝繁叶茂,也不会比一片森林要更盘根错杂。


那么,还是回答最初的问题:学深度学习,该不该先学机器学习呢?本文不是专讲机器学习的文章,这里简要分析一下机器学习到底要学什么。三样东西,问题,方法和流程。机器学习要解决的问题,主要分为有监督学习无监督学习两个大类,目前有监督学习是研究和应用的热门方向,但无监督学习也一直在“怒刷”存在感,最近搞了个混血的半监督学习,说这才是未来的发展方向。这个话题口水战太多,就先不展开了。而这两个大类下面又有子问题,比如有监督学习下面有“回归问题”和“分类问题”,都是十分贴近工业应用需要的问题。在这一点上,机器学习也好,深度学习也好,研究的问题都是相通的,深度学习并没有为了证明自己已经到了叛逆期非要另搞一套问题。正因如此,机器学习模型和深度学习模型才能同台竞技。


确定了问题之后,接下来就要研究解决问题的方法,这就到了各路大神开脑洞的环节,用中学数学老师的话说,叫一题多解,不同的解法,就形成了不同的模型算法。不同的解法,当然是有不太相同的解题思路,对于同样的分类问题,神经网络、决策树和支持向量机就给出了三种不同的解题思路,如果你只打算了解深度学习,那在方法这一步,可以选择重点了解神经网络的解题思路。


最后就是流程了。机器学习不只有各种理论和模型,要在实际工作中使用,还需要学习工作流程:包括数据收集、数据清洗、特征工程、模型选择、参数调优等等……这和软件开发有一套长长的生命周期,而不是只有敲代码是一样的。在机器学习的这套流程里面,特征工程一般公认是十分重要的一环,特征选取的好坏,能不能提取得到重要特征,可能会对模型最终的效果产生显著影响。但在这一点上,深度学习不太一样。深度学习经常有一种提法,叫端到端学习。什么意思呢?就是把原始的数据不经过特征工程处理,直接就喂给模型,然后就能吐出想要的结果。让模型自己提取特征,没有了特征工程作为中间商赚差价,叫端到端学习。这是深度学习很重要的一个卖点。


最后的问题,当然就是“深度学习该怎么学”这个问题。


前面我们一再说,深度学习好学,相比起各种流派混战厮杀的机器学习,深度学习不过就是拿了神经网络的底子,再添上两个眼睛一个鼻子。但是,弱水三千只取一瓢饮也有自己的难处,深度学习这几年发展得很迅速,应用发展甚至超过了理论建设,我读过不少封面印着《深度学习》的书,内容都是拿着机器学习的教材改出来的,区别只在于给神经网络那部分多增加一点内容,再东一块西一块塞几个新的深度学习模型完事。这样的书读起来自然感觉跳跃很大,有时候干脆前后衔接不上,读完一头雾水。如果你最近读过深度学习的书,读完以后感觉解锁了很多奇怪的姿势,但还是不太明白深度学习究竟是做什么的,大概就是这个原因。


那怎么办?最好的办法,应该是你首先建立对深度学习的基本概念,然后再重头读,感觉应该能好一点。就好比看《冰与火之歌》,剧情复杂人物又多,光那一堆头衔念出来都让人心烦。但如果你知道主角是谁主要做什么,剩下的就好办多了。不过,这也很为难,我不就是不知道深度学习是个啥才读书嘛,那怎样才能建立这个“首先”呢?


这里,我分享一个诀窍:深度学习也是有一个主角的,方方面面的内容看着很多,但都是围绕着主角为它服务。这个主角是谁呢?是权重(weight)。整个深度学习的知识体系,都是围绕着权重从方方面面做文章。譬如说BP,神经网络和深度学习有一个灵魂级的重要知识点,叫后向传播机制,简称BP。BP是干什么的呢,就是更新权重。怎么更新呢?梯度下降。收敛太慢了怎办呢?随机梯度下降。梯度弥散了怎办呢?更换激活函数,或者残差连接。过拟合了呢?要么L1-norm要么L2-norm,要么干脆dropout,一了百了。总之,玩法很多,但对象只有一个,那就是权重。抓紧权重这条主线,就可以把深度学习的众多知识点拉出一条清晰的脉络。这部分内容很多,大家如果感兴趣我们找机会再说。


看到这里,是不是已经跃跃欲试,想知道应该找哪本深度学习的教材上手呢?不过,前面说深度学习现在还在全力飙车,这就会给深度学习的教材带来一些坑。譬如说花书。花书很经典,全明星阵容,可惜是2016年出的,在2017年掀起风潮的各种GAN、在2018年掀起风潮的Self-Attention,在2019年掀起风潮的GNN,花书都不可能找得到相关内容。更让我遗憾的是,花书有一位作者叫Goodfellow,我老在心里译成“好家伙”,他是大名鼎鼎的GAN之父,我差不多是冲着他的名声去掏钱的。可是,花书出得实在太早,就算是GAN之父亲自写的书,GAN在书里面也只有很小的篇幅,很多在GAN的发展历程上起了里程碑作用的模块也没来得及收录,哪怕你只是想全面地了解GAN,花书也有心无力。


深度学习的教材确实不容易挑选,新的太偏,全的太老,那现在看哪一本入门好呢?我推荐复旦大学邱锡鹏老师新出的《神经网络与深度学习》,这本书在出实体书之前,我一直在Github上追着看,拿到实体书后,趁着五一又翻了一遍,真是一本好书,称之为国产版的花书并不过誉。


《神经网络与深度学习》是新鲜出炉的,所以新就不必说了,里面连GNN都有,其他还有两个感觉,一个是够深,Attention甚至专门设了一章来讲。一个是够全,从神经网络的最早版本感知机写起,一直写到深度学习经过几年发展出来的庞大体系,而且有面到点,连W-GAN、深度Q网络这些细分领域里的模型都囊括进去了,读起来不会有跳跃感。对于深度学习的整个发展脉络,以及当前发展出来的庞大体系,读完这本书应该就能心中有底。“蒲公英书”值得反复研读,每次翻都有新的心得,如果大家愿意看,我再专写一篇读书攻略。

豆瓣评分9.5!复旦大学邱锡鹏教授力作,周志华、李航联袂推荐,深受好评的深度学习讲义“蒲公英书”正式版!


系统整理深度学习的知识体系,由浅入深地阐述深度学习的原理、模型以及方法。更适合中文读者自学与入门的深度学习图书!使你掌握神经网络与深度学习技术的基本原理,知其然也知其所以然。上市不到一周即荣登京东和当当新书榜榜首!


关于作者:

莫凡,娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

    一张图真正理解支持向量机

    XGBoost你真的懂吗?我不信.....

    入机器学习大坑,需要什么样的数学水平?

    基于 Python 的 11 种经典数据降维算法

    为什么“晚上9点钟洗澡的大学生成绩更好”?


加入机器学习、Python微信群

请后台回复【入群】

欢迎三连 在看留言分享至朋友圈↓↓↓



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存