86 | 程序员练级攻略:机器学习和人工智能

你好,我是陈皓,网名左耳朵耗子。

我之前写过一篇机器学习的入门文章,因为我也是在入门和在学习的人,所以,那篇文章和这篇机器学习和人工智能方向的文章可能都会有点太肤浅。如果你有更好的学习方式或资料,欢迎补充。

基本原理简介

我们先来介绍一下机器学习的基本原理。

机器学习主要有两种方式,一种是监督式学习(Supervised Learning),另一种是非监督式学习(Unsupervised Learning)。下面简单地说一下这两者的不同。

  • 监督式学习(Supervised Learning)。所谓监督式学习,也就是说,我们需要提供一组学习样本,包括相关的特征数据和相应的标签。我们的程序可以通过这组样本来学习相关的规律或是模式,然后通过得到的规律或模式来判断没有被打过标签的数据是什么样的数据。

    举个例子,假设需要识别一些手写的数字,我们要找到尽可能多的手写体数字的图像样本,然后人工或是通过某种算法来明确地标注上什么是这些手写体的图片,谁是1,谁是2,谁是3…… 这组数据叫样本数据,又叫训练数据(training data)。然后通过机器学习的算法,找到每个数字在不同手写体下的特征,找到规律和模式。通过得到的规律或模式来识别那些没有被打过标签的手写数据,以此完成识别手写体数字的目的。

  • 非监督式学习(Unsupervised Learning)。对于非监督式学习,也就是说,数据是没有被标注过的,所以相关的机器学习算法需要找到这些数据中的共性。因为大量的数据是没被被标识过的,所以这种学习方式可以让大量的未标识的数据能够更有价值。而且,非监督式学习,可以为我们找到人类很难发现的数据里的规律或模型,所以也有人称这种学习为“特征点学习”,其可以让我们自动地为数据进行分类,并找到分类的模型。

    一般来说,非监督式学习会应用在一些交易型的数据中。比如,你有一堆堆的用户购买数据,但是对于人类来说,我们很难找到用户属性和购买商品类型之间的关系。所以,非监督式学习算法可以帮助我们找到它们之间的关系。比如,一个在某年龄段的女性购买了某种肥皂,有可能说明这个女性在怀孕期,或是某人购买儿童用品,有可能说明这个人的关系链中有孩子,等等。于是,这些信息会被用作一些所谓的精准市场营销活动,从而可以增加商品销量。

我们这么来说吧,监督式学习是在被告诉过了正确的答案后的学习,而非监督式学习是在没有被告诉正确答案时的学习。所以,非监督式学习是在大量的非常乱的数据中找寻一些潜在的关系,这个成本也比较高。非监督式学习经常被用来检测一些不正常的事情发生,比如信用卡的诈骗或是盗刷。也被用在推荐系统,比如买了这个商品的人又买了别的什么商品,或是如果某个人喜欢某篇文章、某个音乐、某个餐馆,那么他可能会喜欢某个车、某个明星或某个地方。

在监督式学习算法下,我们可以用一组“狗”的照片来确定某个照片中的物体是不是狗。而在非监督式学习算法下,我们可以通过一个照片来找到其中有与其相似的事物的照片。这两种学习方式都有些有用的场景。

关于机器学习,你可以读一读 Machine Learning is Fun! ,这篇文章(中文翻译版)恐怕是全世界最简单的入门资料了。

相关课程

接下来,我们需要比较专业地学习一下机器学习了。

在学习机器学习之前,我们需要学习数据分析,所以,我们得先学一些大数据相关的东西,也就是Data Science相关的内容。下面是两个不错的和数据科学相关的教程以及一个资源列表。

之后,有下面几门不错的在线机器学习的课程供你入门,也是非常不错。

  • 吴恩达教授(Andrew Ng)在 Coursera 上的免费机器学习课程 非常棒。我强烈建议从此入手。对于任何拥有计算机或科学学位的人,或是还能记住一点点数学知识的人来说,都应该非常容易入门。这个斯坦福大学的课程请尽量拿满分。可以在 网易公开课 中找到这一课程。除此之外,吴恩达教授还有一组新的和深度学习相关的课程,现在可以在网易公开课上免费学习——Deep Learning Specialization

  • Deep Learning by Google ,Google的一个关于深度学习的在线免费课程,其支持中英文。这门课会教授你如何训练和优化基本神经网络、卷积神经网络和长短期记忆网络。你将通过项目和任务接触完整的机器学习系统TensorFlow。

  • 卡内基梅隆大学汤姆·米切尔(Tom Mitchell)的机器学习 英文原版视频与课件PDF

  • 2013年加利福尼亚理工学院亚瑟·阿布-穆斯塔法(Yaser Abu-Mostafa)的Learning from Data 课程视频及课件PDF,内容更适合进阶。

  • 关于神经网络方面,YouTube上有一个非常火的课程视频,由宾夕法尼亚大学的雨果·拉罗歇尔(Hugo Larochelle)出品的教学课程 - Neural networks class - Université de Sherbrooke

除此之外,还有很多的在线大学课程可以供你学习。比如:

更多的列表,请参看——Awesome Machine Learning Courses

相关图书

相关文章

除了上述的那些课程和图书外,下面这些文章也很不错。

下面是一些和神经网络相关的不错的文章。

相关算法

下面是10个非常经典的机器学习的算法。

如果你想了解更全的机器学习的算法列表,你可以看一下Wikipedia上的 List of Machine Learning Algorithms

A Tour of Machine Learning Algorithms ,这篇文章带你概览了一些机器学习算法,其中还有一个"脑图"可以下载,并还有一些How-To的文章供你参考。

对于这些算法,SciKit-Learn有一些文档供你学习。

相关资源

小结

总结一下今天的内容。我首先介绍了机器学习的基本原理:监督式学习和非监督式学习,然后给出了全世界最简单的入门资料 Machine Learning is Fun!。随后给出了与机器学习密切相关的数据分析方面的内容和资料,然后推荐了深入学习机器学习知识的在线课程、图书和文章等,尤其列举了神经网络方面的学习资料。最后描述了机器学习的十大经典算法及相关的学习资料。

在机器学习和人工智能领域,我也在学习,也处于入门阶段,所以本文中推荐的内容,可能在你看来会有些浅。如果你有更好的信息和资料,欢迎补充。目前文章中给出来的是,我在学习过程中认为很不错的内容,我从中受益良多,所以希望它们也能为你的学习提供帮助。

从下篇文章开始,我们将进入前端知识的学习,包括基础和底层原理、性能优化、前端框架、UI/UX设计等内容。敬请期待。

下面是《程序员练级攻略》系列文章的目录。

精选留言

  • 斯盖丸

    2018-07-26 21:17:15

    网上资料虽多,但质量良莠不齐。靠自己找实在费时费力。左老师帮我们辛辛苦苦挑选出来有什么不好呢?里面照样凝结了作者思路的精华呀。

    还是希望左老师可以做自己,不用理会一些个杂音。
  • songyy

    2018-07-26 13:00:48

    期待练级系列尽快到尾声 每篇都是链接的罗列,内容太多需要慢慢消化。但作为读者,总觉得这种优质网上资源可以自己找到,我更希望看到作者自己的东西呀。

    因为作者自己的东西,才是网上找不到的,是花钱买专栏的目的
  • Alan

    2018-07-27 20:11:29

    老师,课程有点高大上,能不能接地气点? 绝大多数人都是码农。
    作者回复

    上6000元的北大青鸟?

    2018-08-01 22:13:09

  • knull

    2018-07-26 20:44:57

    最近耗子总贴链接,感觉在交任务。许多人这样想,我也是这许多人中一个。后来,看到耗子哥的回复,我想通了。网上的确都有,而且好多好多,但是耗子哥帮我们筛选了。(百度,Google存在价值不就是网上大量数据中找有用信息么)。所以,谁给的知识不重要,重要的是的确好,的确对我们有用。那就够了。买这课程是学东西,不是来听专场的。
  • Geek_vi4asb

    2018-07-26 17:18:30

    感谢皓哥的程序员练级攻略,提供了一条由浅入深的学习路径。省去了新手在浩瀚的资料中寻找有用资料的痛苦。真的是压箱底的宝贝,够我学习10年了
  • 理帆

    2020-04-18 07:31:53

    看左耳课程最大收获是拉近了和顶尖牛人间的距离,知道了解这些顶尖思想的方式。优秀和平庸的程序员之间最大的差距是品味的高低,很认同这句话。品味决定了你的眼界、目标,最终也就影响了你努力的方向、最终的高度,以及成长过程中你的心态。
  • super

    2018-09-07 09:19:48

    耗子哥,说实在的您列的资料太多了。这里面只需要把2-3本书读会了就可以了,ng的,bishop的。即使80%算法岗位的人都没能好好学习这两个人的课程。不列出重点等于白说,这些资料网上都能找到,会误导初学者的。
  • Wayne

    2018-11-19 07:46:06

    资料太多了,根本不知道怎么选。
  • 北极点

    2018-07-30 07:20:59

    学习的有个时间成本就是寻找有用的信息!大神能帮我们整理这些,很赞!
  • 空白格

    2018-07-27 12:48:17

    作者的内容整理,包括推荐学习资料的由浅入深是很好的,但看到最近的几篇文章都是这样的,就不太好了。机器学习,或者大数据这些想学习的可以去看其他更专业的栏目,希望老师把自己的擅长的内容先整理出来
  • 程序员Artist

    2020-04-24 08:46:50

    授人以鱼不如授人以渔,这么简单的道理咋不明白。学习牛人不是去学他会什么,要学习他怎么变成牛人的,也就是学习方法。别再质疑敷衍交作业了,耗子叔很有心了,真心感谢。
  • neilyoyoyoyo

    2019-07-03 16:17:26

    如果是图像与视觉相关领域的话,斯坦福的cs231n即可帮助绝大多数人入门。
  • 怀特

    2018-12-20 12:27:56

    感觉这些东西,可以写到wiki上,作为百科知识的一种。
    一个人看这些东西,看完就老头子了吧。
  • 云学

    2018-07-27 09:28:57

    谢谢作者能够把自己看过的认为好的内容分享出来,在信息量爆炸的时代,寻找好的且适合每个学习阶段的资料要花很多时间,真是感谢
  • caohuan

    2018-10-26 16:29:52

    耗子哥 给的资料太全了,我要的 入门、进阶的视频、书籍 以及数据 全都有,我只需要拿来这个地图,去寻找,省去大量搜索,想问下 耗子哥 怎么做到 拥有这么全的资料库,这得耗费多少的精力、还有怎么做到消化掉它们,牛人的世界 我只能仰望了。

    入门阶段 我选择 Machine Learning is fun 和练习8个有趣的项目。
  • 多米

    2018-07-26 08:22:19

    要做到术业有专攻的好。
  • 与你一起学算法

    2020-04-26 22:09:16

    现在关于机器学习和人工智能的资料太多了,很多资料的质量不是很好,听了这个专栏,觉得整理的真是太详细了。剩下的就是坚持深耕了。
  • 天使也有爱

    2019-11-01 15:22:40

    我觉得耗子哥写的文章的整个架构和知识体系是针对架构师的,目的是怎么去培养架构师思维;如果不是很熟悉的领域我觉得大概看一遍,有个印象,了解大概就可以了,这个领域涉及什么用到什么技术,重要是我们挑感兴趣或者我们觉得对我们发展和目前工作有用的东西再深入
  • 2019-01-11 08:54:55

    哈哈,有人不亦乐乎,有人疲于奔命,我突然想起来孙悟空学艺的情景了。七十二变还是三十六变,看好奇心啦?
  • gaodai001

    2018-08-07 21:31:47

    没想到11年前大学毕业论文聚类分析,尽然可以用在无监督机器学习上啊,当时就是用DBSCAN,去除噪点,岩层分析,用matlab做各种入参的效果图示分析