社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

TalkingData • 5 年前 • 487 次点击  

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




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
 
487 次点击