1.3 学习策略
经过数十年的发展,机器学习已先后衍生出百余种算法,几乎每种算法又有若干分支。这些算法根据动机和适用场景可分为三大类型:有监督学习、无监督学习、强化学习。如图1-7所示是机器学习分类图。
图1-7 机器学习分类图
在图1-7中第三行是对学习策略的进一步分类,第四行是典型应用场景举例。除了这三大经典策略,还有一些模型综合了有监督学习和无监督学习的特点,本书不再细分。
1.3.1 有监督学习
有监督学习(Supervised Learning)是指这样的一种场景:
有一组数量较多的历史样本集,其中每个样本有一组特征(Feature)和一个或几个表示其自身的类型或数值的标签(Label);对历史样本进行学习得到模型后,可以用新样本的特征预测其对应的标签。
1.场景
在有监督学习中,可以将每条数据看成一条由特征到标签的映射,训练的目的是找出映射的规律。根据标签的类型可以将有监督学习再分为两个子类。
◎ 分类(Classification):标签是可数的离散类型,比如疾病诊断(疾病的类型有限)、图像文字识别(文字的总量有限)。
◎ 回归(Regression):标签是不可数的连续类型,有大小关系,比如房价预测(值无法枚举)。
如图1-8所示是一个胸科诊断的分类案例。
图1-8 胸科诊断的分类案例
图1-8中的年龄、血液pH值、是否吸烟就是模型的特征,诊断结果(肺气肿/正常)是学习的标签。
注意:图1-8中分类问题的特征变量也可以是连续类型的(年龄、pH值)。
2.算法
有监督学习是机器学习中最易理解、发展最成熟的一个领域,其应用最广泛,算法可以分成以下几类。
◎ 线性分析法(Linear Analysis):来源于统计学,其中众所周知的最小二乘法(Ordinary Least Square,OLS)是优化目标最易理解的回归学习算法,通过对优化目标的调整还衍生了Ridge Regression、Lasso Regression等算法。此外还包括线性判别分析(Linear Discriminant Analysis)。
◎ 梯度下降法(Gradient Descent):用于寻找函数最小值或最大值。主要包括3个分支,批量梯度下降法BGD、随机梯度下降法SGD、小批量梯度下降法MBGD。
◎ 朴素贝叶斯(Naive Bayes):基于概率论的分类方法。在贝叶斯理论中,该方法要求所有特征之间相互独立,但在2004年Harry Zhang的论文The Optimality of Naive Bayes中阐述了当特征之间有比较平和的关联时朴素贝叶斯也能达到很好的效果。
◎ 决策树(Decision Tree):源自风险管理的辅助决策系统,是一个利用树状模型的决策支持工具,根据其建分支的策略不同派生了很多子算法,如ID3、C4.5、CART等。其优点是学习结果易于人类理解,缺点是当数据集变化时决策图变化较大。
◎ 支持向量机(Support Vector Machine,SVM):20世纪60年代就被提出,直到1992年由Bernhard E.Boser等人改进为可以应用于非线性问题后被广泛应用,在21世纪初期的很长时间里被认为是最好的分类器。
◎ 神经网络(Neutral Network,NN):由名称可知源于生物神经学,具有较长历史,可以处理复杂的非线性问题。传统神经网络的研究曾一度停滞,但随着计算机计算能力的提升和卷积网络结构的提出,由其发展而来的深度学习(Deep Learning)已经成为当前机器学习中非常强大的工具。
◎ 集成学习(Ensemble Learning):是一种利用若干个基础分类器共同执行决策的方法。此方法近来被广泛应用,其中的随机森林(Random Forrest)正在逐步取代SVM的地位。此外,还有以AdaBoost为代表的提升方法(Boosting Method)。
所有的有监督学习算法都有一定的容错性,即不要求所有历史样本绝对正确、可以有部分标签被错误分配的样本。当然,样本中的错误越多越不容易训练出正确的模型。
3.回归与分类的关系
读者应该已经发现:虽然有监督学习的适用场景可以分成两类,但介绍算法时并没有区分哪些适用于回归,哪些适用于分类。其实大多数的算法都可以同时处理这两类问题。如图1-9所示,假设某算法可以处理回归问题,那么当然可以将其值域划分成可数的几段用以表征分类问题。
图1-9 回归模型可以解决分类问题
图1-9中,左图是训练的原始样本;用线性回归学习后可以得到中图的回归线,回归线上的点就是之后的预测点;右图示意对回归结果设置阈值可以用来表达分类问题。从这个角度看,回归与分类的区别只不过是从不同角度分析学习结果而已。
另一方面,如果一个模型可以解决分类问题,则在分类类别之间做线性插值就是一种最简单的将分类模型转化为回归模型的方法。
因此,与很多教程书籍不同,本书不刻意区分它们,将有监督学习算法详细原理与实践的介绍统一放在了第3章。此外考虑内容的连贯性,笔者将神经网络方面的内容放在了深度学习章节。
1.3.2 无监督学习
有监督学习用于解决分类问题的前提是,必须有一个带标签数据的样本集,但获得数据标签的代价往往是非常昂贵的。同时,这些标签通常都是人工标注,标注错误的情况也时有发生。这样就促使了无监督学习策略的发展,简单地说就是:
对无标签数据进行推理的机器学习方法。
1.场景
由于无监督学习的前提是不需要前期的人类判断的,所以它一般作为某项学习任务的前置步骤,用于规约数据;在无监督学习之后,需要加入人类知识以使成果有实用价值。在人类知识加入的时间点比较两种学习策略,如图1-10所示。
图1-10 有监督学习与无监督学习的比较
一般来说,人类理解由无监督学习规约后的数据比整理样本数据中的标签更容易些,所以总体上无监督学习需要更少的人工参与。
无监督学习的算法比较丰富,按整理数据的方式有如下两大分支。
◎ 聚类(Clustering):最主要的无监督学习方式,指将已有的样本数据分成若干个子集。生成的模型也可用于为新样本划分类别。
◎ 降维(Dimensionality Reduction):即以保持数据之间现有距离关系不变为目标,将高维数据转换为低维数据。
此外还有一些小的算法族群,比如协方差分析(Covariance Estimation)、边缘检测(Outlier Detection)等。
如图1-11所示举例说明无监督学习最重要的方式——聚类的适用场景。它是一个银行客户的聚类示意图,将已有的客户总体分成两个子集。在进行聚类训练后,新客户也可以用已有的模型划分到相应子集。
图1-11 聚类的适用场景举例
聚类只是提供子集划分方案,而划分的逻辑意义需要人类进行辨别。在图1-11中,从结果看算法将所有客户按存款额和贷款额的多少分成了两类。对于大多数银行来说,子集1对应的是普通用户,子集2对应的是重要客户。
2.聚类算法
聚类算法仍然是当下一个不断发展的领域,各种方法比较繁杂。本书主要学习目前比较成熟的几种聚类策略,如下所示。
◎ 距离切分方法(Partition Method):一种最基础的算法,根据特征之间的距离进行聚类划分。具体算法主要是指K-means及其派生算法。
◎ 密度方法(Density Method):通过定义每个子集的最小成员数量和成员之间距离实现划分。最典型的算法是 DBSCAN,即 Density-Based Spatial Clustering of Applications with Noise。
◎ 模型方法(Model Method):以概率模型(以高斯混合模型为典型,即Gaussian Mixture Model)和神经网络模型(Self Organizing Map,SOM)为主要代表。其特点是不完全将样本认定为属于某子集,而是指出样本属于各子集的可能性的大小。
◎ 层次方法(Hierarchical Method):不同于其他聚类将总体划分成彼此地位平等的多个子集,层次方法最终将数据集划分成有父子关系的树形结构。这样就可以在聚类的同时考察各子类之间的亲缘关系,比较典型的是BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)模型。
3.降维算法
如前所述,降维一般被用来压缩特征数量以便后续处理,其相对聚类来说略显抽象。本书介绍如下两类降维策略。
◎ 线性降维:顾名思义用来处理线性问题。模型比较简单,包括常见的主成分分析(Principle Component Analysis,PCA)和线性判别分析(Linear Discriminant Analysis,LDA)。
◎ 流行学习(Manifold Learning):是近期学术界的热点,可以处理非线性降维。目前比较成熟的算法包括Isomap、局部线性嵌入(Locally Linear Embedding,LLE)等。
本书第4、5章将分别详细讨论聚类和降维的主要算法原理与实践。
1.3.3 强化学习
强化学习是对英文Reinforced Learning的中文翻译,它的另一个中文名称是“增强学习”。相对于有监督学习和无监督学习而言,强化学习是一个相对独特的分支;前两者偏向于对数据的静态分析,后者倾向于在动态环境中寻找合理的行为决策。
强化学习的行为主体是一个在某种环境中独立运行的Agent(可以理解为“机器人”),它可以通过训练获得在该环境中的最佳行为模式。强化学习被看成最接近人工智能的一个机器学习领域。
思考:为什么说强化学习是最接近人工智能的一个机器学习领域?
1.5个要素
强化学习的场景由如下两个对象构成。
◎ 智能代理(Agent):是可以采取一系列行动以达到某种目标的控制器,可以形象地将其理解为机器人大脑。比如自动驾驶的控制器、打败李世石的AlphaGo。
◎ 环境(Environment):是 Agent 所能感知和控制的世界模型。对自动驾驶来说,Environment就是 Agent所能感知到的路况和车本身的行驶能力;对 AlphaGo来说,Environment包括棋盘上的每种状态和下棋规则。
这两个对象其实定义了机器人和其所能感知到的世界。就像人类能在自己的世界中行走、享受阳光,机器人也可以通过3种方式与其所在的环境进行交互。
◎ 状态(State):是任意一个静态时刻Agent能感知到的Environment情况,相当于某一时刻人类五官能感知到的一切。
◎ 行为(Action):是Agent能在Environment中执行的行为,对应人类四肢所能做的所有事。
◎ 反馈(Reward):是 Agent 执行某个/某些 Action 后获得的结果。Reward 可以是正向的或者是负向的,相当于人类感受到的酸甜苦辣。
以上5种强化学习要素的关系如图1-12所示,它们在一起构建了强化学习的应用场景。
图1-12 强化学习场景
另外,在强化学习中Reward有时是延时获得的。即Agent在做出某个Action后不会马上获得 Reward,而需要在一系列 Action 之后才能获得。每个任务最终获得的 Reward被称为Value。比如在围棋环境中,只有结果是胜或败才对之前的所有Action给出最终的Value。
延迟获得Value的本质分析的是一系列相关行为共同发生的作用,也是强化学习与有监督学习最主要的一个不同点。试想如果每一个 Action 都可以获得一个相应的 Reward,那么Reward就退化成了有监督学习中的label(标签)。
2.两种场景与算法
具备上述五个要素的强化学习可以用来解决如下两类问题。
◎ 状态预测问题:用马尔可夫过程估计在任一时刻各种状态发生的可能性,其中蒙特卡洛模拟(Monte Carlo Method)是一类重要方法。
◎ 控制问题:如何控制Agent以获得最大Reward。其算法可以分成如下两类。
ⅰ.基于策略的学习(Policy-Based):基于概率分布学习行为的可能性,根据可能性选择执行的动作,可学习连续值或离散值类型行为。典型算法是 Policy Gradients。
ⅱ.基于价值学习(Value-Based):直接基于Reward学习行为结果,只能学习离散类型行为,包括算法Q-Learning、Sarsa。
另外,还有个别算法兼具Policy-Based和Value-Based特点,比如Actor-Critic。
不得不承认的是,虽然强化学习是更智能的机器学习分支,但目前产品级应用还比较少,多集中在游戏娱乐和简单工业控制领域。本书将在第6章介绍隐马尔可夫模型,第7章介绍以马尔可夫收敛定理为基础的蒙特卡洛推理,在第10章详细学习各类强化学习控制问题。
1.3.4 综合模型与工具
除了三大类型的学习策略,还有如下几个重要的综合性工具。
◎ 隐马尔可夫模型(Hidden Markov Model,HMM):基于概率转换的双层状态链模型,该技术曾大幅度提高了语音识别、智能拼音输入等领域产品的准确率。
◎ 贝叶斯网络(Bayesian Network):基于条件概率结点的网络模型,用贝叶斯理论推测被预测事件发生的概率。足球比赛前的胜负赔率预测、NBA 赛季前的总冠军预测等,这些都是贝叶斯网络的典型应用。
◎ 主题模型(Topic Model):用三层结构分析文档的内涵主题,是文本分析的主要研究方向之一,逐步产生了 LSA、LDA、HDP 等综合性算法。可用于文档情感分析、相似文档归类等。
本书将在第6、7、8章分别介绍它们的原理与开发框架。
此外,深度学习(Deep Learning)是当前最热门的人工智能话题,它是一种用于解决机器学习问题的技术框架,可以用于解决所有三大类机器学习问题。谷歌于2015年11月发布了开源框架TensorFlow,完备的生态链使得它在发布后迅速成为了最主要的深度学习软件开发框架。可以将传统机器学习模型与深度学习模型看成常规武器与核武器的关系,轻量级的传统模型适用于快速开发实践,重量级的深度学习适合精度更高的知识挖掘,本书第9章将从神经网络开始逐步扩展到深度学习的几个典型,以及在TensorFlow中的开发方法。