跳转至

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

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

基本原理简介

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

机器学习主要有两种方式,一种是监督式学习(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

相关图书

全书内容包括3部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。这本书的官网为 “deeplearningbook.org”,在GitHub上也有中文翻译 - 《Deep Learning 中文翻译》。 - 《Neural Networks and Deep Learning》(中文翻译版),这是一本非常不错的神经网络的入门书,在豆瓣上评分9.5分,从理论讲到了代码。虽然有很多数学公式,但是有代码相助,就不难理解了。其中讲了很多如激活函数、代价函数、随机梯度下降、反向传播、过度拟合和规范化、权重初始化、超参数优化、卷积网络的局部感受野、混合层、特征映射的东西。 - 《Introduction to Machine Learning with Python》,算是本不错的入门书,也是本比较易读的英文书。其是以Scikit-Learn框架来讲述的。如果你用过Scikit这个框架,那么你学这本书还是很不错的。 - 《Hands-On Machine Learning with Scikit-Learn and TensorFlow 》,这是一门以TensorFlow为工具的入门书,其用丰富的例子从实站的角度来让你学习。这本书对于无基础的人也是适合的,对于小白来说虽然略难但是受益匪浅。

相关文章

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

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

相关算法

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

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

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

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

相关资源

小结

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

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

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

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

精选留言(15)
  • Alan 👍(28) 💬(1)

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

    2018-07-27

  • 9527 👍(1) 💬(1)

    计算机的东西太广了,像前端的东西我一直没做过,也不准备看了,实在学不过来 人工智能,机器学习,是很大一块 目前从事的工作内容跟这些都没关系是该继续深入工作相关的内容,还是抽点时间看看机器学习呢 耗子哥对学习内容取舍方面有什么建议吗?

    2018-07-27

  • 斯盖丸 👍(75) 💬(2)

    网上资料虽多,但质量良莠不齐。靠自己找实在费时费力。左老师帮我们辛辛苦苦挑选出来有什么不好呢?里面照样凝结了作者思路的精华呀。 还是希望左老师可以做自己,不用理会一些个杂音。

    2018-07-26

  • songyy 👍(41) 💬(0)

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

    2018-07-26

  • knull 👍(16) 💬(0)

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

    2018-07-26

  • Geek_vi4asb 👍(11) 💬(1)

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

    2018-07-26

  • 理帆 👍(7) 💬(0)

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

    2020-04-18

  • super 👍(7) 💬(3)

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

    2018-09-07

  • Wayne 👍(5) 💬(0)

    资料太多了,根本不知道怎么选。

    2018-11-19

  • 北极点 👍(4) 💬(0)

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

    2018-07-30

  • 空白格 👍(4) 💬(0)

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

    2018-07-27

  • 程序员Artist 👍(3) 💬(0)

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

    2020-04-24

  • neilyoyoyoyo 👍(3) 💬(0)

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

    2019-07-03

  • 怀特 👍(3) 💬(0)

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

    2018-12-20

  • 云学 👍(3) 💬(0)

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

    2018-07-27