Files
CategoryResourceRepost/极客时间专栏/左耳听风/程序员练级攻略/86 | 程序员练级攻略:机器学习和人工智能.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

24 KiB
Raw Blame History

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

基本原理简介

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

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

  • **监督式学习Supervised Learning**。所谓监督式学习,也就是说,我们需要提供一组学习样本,包括相关的特征数据和相应的标签。我们的程序可以通过这组样本来学习相关的规律或是模式,然后通过得到的规律或模式来判断没有被打过标签的数据是什么样的数据。 举个例子假设需要识别一些手写的数字我们要找到尽可能多的手写体数字的图像样本然后人工或是通过某种算法来明确地标注上什么是这些手写体的图片谁是1谁是2谁是3…… 这组数据叫样本数据又叫训练数据training data。然后通过机器学习的算法找到每个数字在不同手写体下的特征找到规律和模式。通过得到的规律或模式来识别那些没有被打过标签的手写数据以此完成识别手写体数字的目的。
  • **非监督式学习Unsupervised Learning**。对于非监督式学习,也就是说,数据是没有被标注过的,所以相关的机器学习算法需要找到这些数据中的共性。因为大量的数据是没被被标识过的,所以这种学习方式可以让大量的未标识的数据能够更有价值。而且,非监督式学习,可以为我们找到人类很难发现的数据里的规律或模型,所以也有人称这种学习为“特征点学习”,其可以让我们自动地为数据进行分类,并找到分类的模型。 一般来说,非监督式学习会应用在一些交易型的数据中。比如,你有一堆堆的用户购买数据,但是对于人类来说,我们很难找到用户属性和购买商品类型之间的关系。所以,非监督式学习算法可以帮助我们找到它们之间的关系。比如,一个在某年龄段的女性购买了某种肥皂,有可能说明这个女性在怀孕期,或是某人购买儿童用品,有可能说明这个人的关系链中有孩子,等等。于是,这些信息会被用作一些所谓的精准市场营销活动,从而可以增加商品销量。
  • 我们这么来说吧,监督式学习是在被告诉过了正确的答案后的学习,而非监督式学习是在没有被告诉正确答案时的学习。所以,非监督式学习是在大量的非常乱的数据中找寻一些潜在的关系,这个成本也比较高。非监督式学习经常被用来检测一些不正常的事情发生,比如信用卡的诈骗或是盗刷。也被用在推荐系统,比如买了这个商品的人又买了别的什么商品,或是如果某个人喜欢某篇文章、某个音乐、某个餐馆,那么他可能会喜欢某个车、某个明星或某个地方。

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

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

    相关课程

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

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

  • [UC Berkeleys Data 8: The Foundations of Data Science](http://data8.org/) 和电子书 [Computational and Inferential Thinking](https://www.inferentialthinking.com/) 会讲述数据科学方面非常关键的概念,会教你在数据中找到数据的关联、预测和相关的推断。
  • [Learn Data Science](https://github.com/nborwankar/LearnDataScience) 这是GitHub上的一本电子书主要是一些数据挖掘的算法比如线性回归、逻辑回归、随机森林、K-Means聚类的数据分析。然后[donnemartin/data-science-ipython-notebooks](https://github.com/donnemartin/data-science-ipython-notebooks#scikit-learn) 这个代码仓库中用TensorFlow、scikit-learn、Pandas、NumPy、Spark等把这些经典的例子实现了个遍。
  • [Data Science Resources List](https://www.datascienceweekly.org/data-science-resources/the-big-list-of-data-science-resources) ,这个网站上有一个非常长的和数据科学相关的资源列表,你可以从中得到很多你想要的东西。
  • 之后,有下面几门不错的在线机器学习的课程供你入门,也是非常不错。

  • 吴恩达教授Andrew Ng在 [Coursera 上的免费机器学习课程](https://www.coursera.org/learn/machine-learning) 非常棒。我强烈建议从此入手。对于任何拥有计算机或科学学位的人,或是还能记住一点点数学知识的人来说,都应该非常容易入门。这个斯坦福大学的课程请尽量拿满分。可以在 [网易公开课](http://open.163.com/special/opencourse/machinelearning.html) 中找到这一课程。除此之外,吴恩达教授还有一组新的和深度学习相关的课程,现在可以在网易公开课上免费学习——[Deep Learning Specialization](https://mooc.study.163.com/smartSpec/detail/1001319001.htm)。
  • [Deep Learning by Google](https://www.udacity.com/course/deep-learning--ud730) Google的一个关于深度学习的在线免费课程其支持中英文。这门课会教授你如何训练和优化基本神经网络、卷积神经网络和长短期记忆网络。你将通过项目和任务接触完整的机器学习系统TensorFlow。
  • 卡内基梅隆大学汤姆·米切尔Tom Mitchell的机器学习 [英文原版视频与课件PDF](http://www.cs.cmu.edu/%7Etom/10701_sp11/lectures.shtml) 。
  • 2013年加利福尼亚理工学院亚瑟·阿布-穆斯塔法Yaser Abu-Mostafa的Learning from Data [课程视频及课件PDF](http://work.caltech.edu/lectures.html),内容更适合进阶。
  • 关于神经网络方面YouTube上有一个非常火的课程视频由宾夕法尼亚大学的雨果·拉罗歇尔Hugo Larochelle出品的教学课程 - [Neural networks class - Université de Sherbrooke ](https://www.youtube.com/playlist?list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH)。
  • 除此之外,还有很多的在线大学课程可以供你学习。比如:

  • 斯坦福大学的《[统计学学习](https://lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015/about)》、《[机器学习](http://cs229.stanford.edu/)》、《[卷积神经网络](http://cs231n.stanford.edu/)》、《[深度学习之自然语言处理](http://cs224d.stanford.edu/)》等。
  • 麻省理工大学的《[神经网络介绍](http://ocw.mit.edu/courses/brain-and-cognitive-sciences/9-641j-introduction-to-neural-networks-spring-2005/index.htm) 》、《[机器学习](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-867-machine-learning-fall-2006/)》、《[预测](http://ocw.mit.edu/courses/sloan-school-of-management/15-097-prediction-machine-learning-and-statistics-spring-2012/index.htm)》等。
  • 更多的列表,请参看——Awesome Machine Learning Courses

    相关图书

  • 《[Pattern Recognition and Machine Learning](https://book.douban.com/subject/2061116/)》这本书是机器学习领域的圣经之作。该书也是众多高校机器学习研究生课程的教科书Google上有[PDF版的下载](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)。这本书很经典但并不适合入门来看。GitHub上有这本中的 [Matlab 实现](https://github.com/PRML/PRMLT)。
  • 下面这两本电子书也是比较经典的,其中讲了很多机器学习的知识,可以当做手册或字典。