Py学习  »  机器学习算法

学什么?怎么学?机器学习保姆级入门攻略

TalkingData • 4 年前 • 367 次点击  

导读:这是一篇保证你“看得下去”的文章。让你真正搞懂机器学习学什么?怎样学?




00

有关机器学习的三个问题和机器学习“知识栈”的三个层


你对机器学习的直观感受是什么?


也许许多人的回答两个字,科幻。东西是好东西,不过离自己还很遥远。

真是这样吗?


  • 掏出手机,美颜美图用的是机器学习;
  • 走出小区,无人化测量体温用的是机器学习;
  • 走进高铁站赶回奋斗的城市,刷脸进站用的是机器学习。


机器学习已经向我们生活的方方面面渗透,也许很快就有那么一天,机器学习就要和水电煤一样,成为我们生活中再离不了的第四种资源。


你说,上面这段话就跟心灵鸡汤一样,把人说得心里直痒痒,可真的想来品一口时才发现没给勺子。


那好,下面想要分享的正是如何开始学习机器学习。方式有点不同,开始之前,你首先需要做的是问自己三个问题:


  • 第一个问题,我为什么要学?

  • 第二个问题,我需要学什么?

  • 第三个问题,我该怎样去学?


为什么要先问三个问题?这是因为,机器学习背后有一套庞大的知识体系,内容繁多,而且和网络协议栈一样,也是分了层的,姑且就称之为机器学习的“知识栈”吧。这座知识栈共分成三个层。


  • 知识栈的底层是数学,可以管它叫“数学基础层”,它在机器学习中作用正如其名,是支撑上层功能运转的基石。

  • 中间这层的算法,就叫“算法原理层”吧。机器学习的微观层面是算法,不是一种算法,而是很多种算法,而且现在还在不断迭代更新。

  • 最上面的这层是应用层,不妨叫“分域应用层”。为什么叫分域呢?因为机器学习是一套实践之学,是用于解决实际问题的,而现实世界中的问题千千万万,不同领域问题各不相同,因此,机器学习要逐一解决这些各不相同的领域问题,也就延伸出了与之适应的分域应用。


当然,知识栈只是描绘了机器学习知识体系的大致结构,知识栈的每一层,还可以继续划分更多更细的子领域。机器学习的知识体系枝叶繁茂,而人的时间和精力则相对十分有限,正因如此,只有明确了第一个问题,才能回答第二个问题,才能最终决定第三个问题,也就是大家一开始最为关心的问题,机器学习应该怎么上手


不过,这三个问题不好回答。


要回答这几个问题,你首先得对机器学习的三层知识栈有所了解,而你现在最大的问题,不正是对机器学习还缺乏比较全面的了解吗?


正如你第一次走进一座很大很大的游乐园,哪怕你已经听说了大家对这座游乐园评价都很高,你也不会马上就清楚自己首先应该去哪里游玩,甚至游乐园里都有些什么设施,要朝哪个方向走过去,你都很可能并不清楚。这应该是绝大多数第一次来玩的游客都面临的问题。


那么,有经验的游乐园会怎么解决这个问题呢?它会在大门入口处设置一块大地图,名叫游玩导览图,园区里有哪些游乐设施,又分布在哪个方向,甚至还会画上设施的样子,让你一目了然。这是个好办法。


那么,接下来本文会按照机器学习知识栈的三层结构,对机器学习的知识体系梳理出要点和联系。市面上名叫机器学习的各类书籍鱼龙混杂,本文会同时给出推荐的阅读书目供大家参考



01

数学基础层


机器学习的知识栈是自底向上构建的。那么,我们先从知识栈的最底层,也就是数学基础层说起。


一提到数学,大家都苦不堪言。数学很重要,可以说没有数学,就没有计算机科学。可是,数学实在太难学了,这么多年都没学明白,而且刚一毕业,数学就全还给了老师。现在告诉我们学机器学习,先得学习数学,难道还得重修九年义务教育?


这确实是许多人对机器学习望而却步的主要原因之一。不过,要告诉大家一个好消息:机器学习里要学的数学,远比你想象的要少,要简单。


现代数学是一套不断膨胀的公理体系,哪怕是职业的数学家可能也说不清楚数学全貌。不过好在,如果将数学绘制成一张世界地图,那机器学习所要学习的数学知识,只不过是上面的一座小岛屿,主要涉及线性代数和概率统计两个方面。


先说线性代数。机器学习需要用到许多运算,而线性代数正是机器学习里的四则运算,可谓是构成了机器学习的骨架。不过,线性代数作为一条主要的数学分支,内容也很不少,好在机器学习只是使用其中的向量和矩阵运算,在这个部分,推荐《矩阵分析》



这是一本经典的好书,写得很好,不过不用读完,建议仔细读懂什么是向量空间、什么是矩阵、矩阵的基本运算法则,以及正定矩阵和奇异值分解的相关章节,那么机器学习的“四则运算”我们就掌握清楚了。


接下来是概率统计。如果我们说线性代数是机器学习的“骨”,那概率统计应该就算是机器学习的“魂”了。这是因为有一派主流观点认为,机器学习就是个换了个皮的统计学,说机器学习的本质就是“拟合曲线”。


这里不做争论,不过机器学习大量使用概率统计的概念,确实是不争的事实。在这个部分,推荐《概率论基础教程》



这本书的作者是Ross,Ross是统计学界的名家,出的教材都是经典。建议重点阅读《概率论基础教程》中关于概率、条件概率、贝叶斯概率公式、期望等概念相关介绍,以及了解各种概率分布,如什么是正态分布等。


机器学习数学方面的书现在越出越多,读书的跟不上出书的,所以推荐读经典,而上述的两本书都是数学领域的经典教材,读过一定有收获。

02

算法原理层


底层就这两样,接着该说算法原理层。


这是机器学习的核心层。机器学习大热,讲机器学习算法的书也多不胜数,不过,现在市面上的这类书,内容大致可以分为两类,一类是往下靠,也就是往数学基础层靠,更像是一本数学教材;另一类是往上靠,也就是往分域应用层上靠,写成了一本教编程的书。


虽然说机器学习毕竟是一门实践科学,除了学各种数学公式,最终还要写成代码运行才能真正解决问题,不过如果只懂调用算法API而不去了解内在原理,用得再多也只是手熟的调包侠。


能够兼顾数学和应用这上下两层,同时从初学者的角度出发,使用比较通俗直白的语言来撰写的书是更好的选择。这里推荐《机器学习算法的数学解析与Python实现》



经过一天拼尽全力的工作,晚上回家还要克服刷视频的冲动,放下手机转为去读一本又有数学又有算法的艰涩的专业书,对很多人来说都非常难。


数学教材之所以难读,是因为数学太多抽象的概念,而让人更难坚持的是数学概念之间嵌套引用,要清楚明白一个数学概念,往往需要额外再学一大串数学概念,而其中往往又包含有嵌套引用,不知道哪里才是头,所以很容易给人一团乱麻、无从下手的感觉。


在《机器学习算法的数学解析与Python实现》这本书中,作者尝试改变这一现状,只对反复使用、必须了解的数学概念用最直白最“讲人话”的语言进行介绍,同时摒弃背后一大串错综复杂的概念,改为结合直观形象的例子进行说明。


本书在比较容易阅读的同时,也能比较完整地呈现一幅机器学习的全景图,成为连接机器学习知识栈最上层和最下层的“粘合剂”,帮助第一次接触机器学习的初学者,做到心里有数。


03

分域应用层


最后,我们介绍知识栈的最上层,也就是分域应用层。前面我们已经说过,机器学习是一门实践科学,最终需要编写代码才能运行。在这个方面,目前主流的做法是使用Python高级编程语言,调用Scikit-Learn库来实现。


Scikit-Learn是当前最为知名的Python机器学习算法库,提供了几乎所有的主流算法。在这方面,推荐《机器学习实战:基于Scikit-Learn和TensorFlow》



这本书基本是业内公认介绍Scikit-Learn最为清楚的书,同时还介绍了另一款知名的深度学习框架TensorFlow。


和软件开发项目有生命周期一样,机器学习的项目也有生命周期,大致可以分为收集数据、清洗数据、分析数据、选择模型、训练模型和输出预测。也许很多初学者认为最费时间的是选择模型和训练模型。


其实,最花时间的反而是对数据的清洗和分析,往往是在生命周期中占了最大一部分。业界通常选择使用一款名叫Pandas的Python库完成这项工作,这方面的书推荐《利用Python进行数据分析(原书第2版)》



这本书非常好,作者就是Pandas的作者本人,权威性无可挑剔。而且内容非常详实,由浅入深每一步都写得十分清楚,覆盖又全,特别适合新手阅读。


上面提到数据处理占据了机器学习生命周期的最大一部分,而另一大部分是调参,也就是为模型选择最合适的参数。调参是机器学习算法在应用方面的重点也是难点,很需要经验。


因此,现在业界的一大发展前沿,就是自动调参,在这方面推荐《深入理解AutoML和AutoDL 》,对这部分发展做了全面清楚的介绍:



04

深度学习


说完机器学习,说另一大热门深度学习。目前深度学习有两套最热门的框架,一套是前面《机器学习实战》这本书介绍的Tensorflow,另一套叫Pytorch。


Tensorflow是Google出品,牌子老用户多,但普遍认为语法槽点很多,而由Facebook出品的Pytorch,因为“更有Python味”现在风头大热,颇有取而代替TensorFlow之势。这方面推荐《Python深度学习:基于PyTorch》



Pytorch的书不少,不过由于Pytorch发展很快,早期0.X版本的很多语法已经不再适用,而这本书使用1.X版本的Pytorch,不会出现这一问题,而且结合了时下热门的深度学习应用场景,具有很好的实践参考作用。深度学习是借着图像处理声名鹊起的,这方面推荐《深度学习与图像识别:原理与实践》



这本书对深度学习在图像识别方面的应用作了比较全面的介绍,不但介绍了热门模型,还逐一介绍了目前学术界在图像处理方面的热门研究方向,如GAN、图像识别和分割等。比较有意思的是,本书还介绍了KNN算法,算是对图像处理算法作了一个比较全面的回顾了。

05

无人驾驶


最后,介绍一个经常上新闻、科幻感最强、同时也是了解的人最少、最有神秘感的机器学习分域应用:无人驾驶。这几年关于无人驾驶的讨论不少,但更热衷讨论的话题是无人驾驶衍生的社会问题和伦理问题,譬如电车难题,而对技术本身的讨论反而少的让人意外。


这也许是因为机器学习是交叉学科,而无人驾驶更是交叉学科的交叉学科,涉及机器人学、车辆工程等等复杂学科,领域性太强,一般人难窥究竟。这方面推荐《无人驾驶:原理和实践》



无人驾驶涉及的学科方向比较杂,而这本书把ROS、点云匹配、图像识别、传感器等构成无人驾驶的几个重要方面都涵盖在内,相当于给无人驾驶做了一次全景式展示。


作者:莫凡

转自:华章计算机

推荐阅读:

成为卓越数据科学家必备的 13 项技能

你的机器学习和数据科学入门可能没那么难,听听5个建议

如何0基础自学入门数据科学?这些网站值得收藏!

我知道你在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56433
 
367 次点击