在过去的两年时间里,我多次迷恋于学习机器学习。 正如你学习大多数的东西一样,每当我决定尝试新事物的时候,我不得不重新学习某些概念和课程。 所以,我编辑了一份包括概念、定义、资源以及工具的知识合集,这对于在这个复杂领域从事工作的我来说非常有用。 希望这些东西对于即将进入机器学习这个精彩(有时是令人沮丧)世界的朋友来说也会起到一定的帮助作用。
如何最有效率地学习机器学习_开发_课课家
如何最有效率地学习机器学习
老实说,每个人都有适合自己的学习方法。对我个人而言,最好的方法就是反复把在项目中学到的东西应用到其他地方,直到把它彻底弄明白弄熟练为止。如果你不打算使用它的话,为什么要学习它呢?而且多巴胺会让你在看到学习成果的时候进一步促进你学习的动力。
在刚开始学习机器学习的时候很容易不知所措。有很多东西要学,即使是对于同一个知识点也有太多的资源可供挑选来学习,而且这些资源可能完全不同,甚至很混乱。学习这种内容繁多并且发展迅速的东西非常困难。在理想情况下,一旦你感觉自己在机器学习方面入了门,就会清楚自己到底想要研究哪些具体的领域。
我将尝试用足够的篇幅来介绍这些松散的知识,使之适合于任何人阅读。如有疑问,请自行谷歌……
什么是机器学习(Machine Learning, ML)?
它是人工智能的一个子领域,它让计算机自己学习,而不需要被明确地编程。机器学习基本的目的是理解大量输入数据中的模式,然后根据其生成的模型来预测输出。
机器学习的工作流程
什么是机器学习算法?从本质上讲,机器学习采用了可以从数据中学习和预测数据的算法。这些算法通常来自于统计学,从简单的回归算法到决策树等等。
想要了解不同机器学习算法及其使用方法方面的内容,可以阅读这篇文章:机器学习算法要点。
什么是机器学习模型?一般来说,它是指在训练机器学习算法后创建的模型构件。一旦有了一个经过训练的机器学习模型,你就可以用它来根据新的输入进行预测。机器学习的目的是正确训练机器学习算法来创建这样的模型。当我在这篇文章中提到“模型”时,我一般就是指的这个定义。
但是,机器学习社区中的“模型”这个术语并没有一个统一的定义。这个术语被大量提及,并且可以代表机器学习中使用的统计模型或数据模型中的任何内容。比如列、数据类型和数据源,甚至是神经网络规范。当你在技术或数学读物上学习有关机器学习的文章的时候,需要注意这一点。
流行的机器学习算法
机器学习算法有很多,每个人都有一套适合自己的案例。你可以根据学习的种类或相似性对机器学习算法进行分类。下图是通过相似性对目前流行的算法进行的概括。在本文中,我根据学习种类的不同将算法分为:监督学习和无监督学习。
监督学习
这是一种使用样例来进行训练的机器学习算法。训练数据被标上了已知的标签,该算法将基于这些数据来建立模型。一旦模型被训练出来,该算法将能够确定从未见过的实例的标签。
用监督学习解决的问题可以进一步分解为分类和回归问题。
无监督学习
与监督学习相反,无监督学习使用未标记的训练数据进行学习。这意味着该算法能够自己确定如何使用这些数据(识别数据的模式)。
无监督学习可以分为聚类和关联问题。
半监督学习
这是上述两种方法的混合体,即只有部分输入数据做了标记。
监督学习的线性回归
这其实是机器学习的“Hello World”教程。线性回归可用于理解输入(x)和输出(y)变量之间的关系。当只有一个输入变量(x)时,称为简单线性回归。你可能已经在简单统计中看到过这种技术的应用。
训练线性回归方程最常用的技术是普通最小二乘法。所以,当我们用这个过程训练机器学习中的模型时,通常被称为普通最小二乘线性回归。
输入(x)和输出(y)的简单回归模型可以被建模为:
y = B0 + B1*x
系数B1(β)是回归斜率的估计,附加系数B0是回归截距的估计,它给出了直线的附加自由度。
请阅读本教程来学习用于线性回归模型的四种技术:简单线性回归、普通最小二乘法、梯度下降和正则化。
你很快就会注意到,很多的机器学习算法只是使用了基本统计学的不同的曲线拟合方法。机器学习(至少在我看来)只有在深度学习领域中才会让人兴奋。
深度学习
这是机器学习的一个子领域,近年来表现出了很大的潜力。它涉及到大脑中神经元结构和功能的算法。
Andrew Ng版权所有,保留所有权利。
深度学习中最令人激动的特性之一是它在特征学习上的表现。该算法在从原始数据中检测特征方面表现地特别好。有一个很好的例子,就是通过深度学习技术来识别汽车图片中的车轮。下图说明了典型机器学习与深度学习之间的区别:
深度学习通常由多个层组成。它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。这是深度学习随着数据量的增加而优于其他学习算法的主要原因之一。
想进一步了解深度学习方面的知识,请阅读The Deep Learning Book,你可以在麻省理工学院的网站上免费获取。
TensorFlow简介
TensorFlow是专门为机器学习而设计的快速数值计算Python库。它由谷歌开源,旨在让世界各地更多的研究人员和开发人员掌握深度学习。
它的官方教程可能对初学者来说有些杂乱,我建议大家从本系列开始,首先学习Tensflow的相关介绍。
如何使用TensorFlow
TensorFlow安装好之后,你就可以用它提供的多个API来训练机器学习模型了。建立在TensorFlow Core(最好控制最底层的API)之上的更高级别的API是最容易学习的,你应该从这里开始学习。
本文不可能包含完整的TensorFlow教程,网上有数不清的学习资源,首先从官方资源开始吧:
TensorFlow入门
TensorFlow简介
Hello World - 机器学习系列教程之一
TensorFlow教程 (Sherry Moore, Google Brain)
虽然TensorFlow是最受欢迎的机器学习库,不过也有其他几个很棒的选择,如Torch(Facebook使用)、Caffe(出自Berkeley AI研究所的深度学习框架)等等。
这篇文章缺少什么
很多。本文的目标是为你提供有关机器学习的基础知识,以避免你晕头转向。但是这个话题包含的内容实在太多了,无法全部写下来。
接下来做什么?
一旦对基础知识有了一定的了解,你应该知道自己对机器学习的哪些方面比较感兴趣,你想在应用程序中使用机器学习,还是想研究机器学习。
你可以根据自己的兴趣来阅读本文中嵌入的链接,或通过谷歌来搜索挖掘一些你需要的内容,从而更深入地研究某个领域。
在学习机器学习的过程中,最困难的部分就是打下一个扎实的基础。紧接着,就是弄清楚你自己想要做什么。
结语
“整个世界就是一个大数据问题” - Andrew McAfee
掌握机器学习就像是驯服一头野兽。但是,如果你已经吃透它,那么它就是你身边一个非常有价值的资源。