1.3 认知机器学习
新的人工智能热潮基于机器学习,结合实际生活,不免联想到垃圾分类,如果垃圾能够自动分类该有多好。
适宜回收未污染的生活垃圾被归类为“可回收垃圾”,自动收入蓝色垃圾桶;餐厨废弃物、居民生活厨余垃圾、有机垃圾被归类为“易腐垃圾”,自动收入绿色垃圾桶;对人体健康有直接或潜在危害的生活垃圾被归类为“有害垃圾”,自动收入红色垃圾桶;除可回收垃圾、有害垃圾及易腐垃圾外,还有一种垃圾被归类为“其他垃圾”,自动收入黑色垃圾桶。如果这里只有少量的几件垃圾去分类,并非难事;倘若判断成千上万件垃圾一同袭来,判断垃圾分类的正确性,全部依靠人工分类,耗时巨大,且不现实。而利用计算机进行分类,其优势便在于它善于处理这种情况,能够高速处理大量数据,这就是机器学习,如图1.6所示。
图1.6 垃圾分类的机器学习结构
可以设想一下垃圾的分类规则。
通过材质和挥发性进行分类,如同样是瓶子,塑料瓶可回收加工后循环利用,是可回收垃圾,农药瓶是有害垃圾,因农药属于化学药剂,会对人体健康和环境造成潜在危害。
识别出水果残余、花卉、果壳等即为易腐垃圾。
识别包装中的图标有无绿色或有害的标志,根据标志和材质可以判断是可回收垃圾还是有害垃圾。
难度比较大的纸张,根据纸质、成分等可以判断是可回收垃圾还是其他垃圾。
……
这些是人类比较容易捕捉到的规则,机器学习面对庞大的数据量,可能会发现人类无法察觉的、隐藏于数据深处的规则。同时,假使在既有数据中增加新型垃圾的信息,只需再次进行同样的学习,便能妥善构建出新的规则。
1.3.1 机器学习概念
所谓机器学习,是指AI自身从被给予的数据中构建规则的技术,这种技术并不依赖人类给计算机输入的某种规则。但“巧妇难为无米之炊”,在一无所有的情况下,机器学习也很难完成任务。机器学习的粮食是不太完美的规则及数据,由人类给予,这些不太完美的规则及数据在后期也会不断地被完善和调整,相当于改善机器学习的伙食。尝遍八方美食,吞吐海量数据,这是机器学习的基础所在,这些美食还要跟机器学习的“喜好”有关系,即数据必须与机器学习研究的方向相符,随意的数据会使机器学习研究的课题不明所以。
中国有个成语叫“指鹿为马”,如果想开发出一款AI产品,使其能够辨别出照片上的是马还是鹿,就需要收集大量马和鹿的照片,把这些含有马和鹿的照片作为AI的机器学习数据。AI通过学习马和鹿的相关照片的特点,从而具备“推测出照片上所拍摄的是马还是鹿”这一功能。当然,如果你非要用这个功能去识别“猪”,这也是不可能的事情。
“学习”两个字在机器学习中,就是不断完善和调整人类给予的不太完整的规则和数据,我们在做“好好学习,天天向上”,机器在做“学习数据,调整完善”。
1.3.2 机器学习方式
机器学习最主要的学习方式有三种:监督学习、无监督学习和强化学习。
1.监督学习
监督学习是机器学习中使用频率最高的方法。根据已经获取的数据集合,确定输入和输出结果之间的关系,根据这种已知的关系,训练得到一个最优的模型。说得通俗一点,就是教机器如何去做事情。事先获取的数据集称为“监督数据”,计算机从监督数据中学习规则和模式。也就是说,在监督学习中训练数据不但要有数据的特征,还要有数据结果的标签,通过训练,让机器可以自己找到数据特征和结果标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。
监督学习适用于以下两种情况。
一种情况是,人类能够掌握相关的规则,利用掌握的规则得出正解,实现监督学习。例如,用大众的观点来分辨男女,一般情况下,短发的普遍是男性,长发的普遍是女性,穿裙子的普遍是女性,光膀子的普遍是男性,等等。用这样的大众普遍规则让计算机自动对男女性别进行识别,监督数据中包括男性特征和女性特征的相关信息。
另一种情况是,数据中原本就带有答案的标志。假设把在五台山和狼牙山拍摄的照片放在一起,除非拍摄的是著名的地标性标志,否则都是绿林草丛,很难作出正确判断。当人类看到都是树或花的照片,根本无法确定拍摄地点。但是,这些照片形成的数据中却包含了正确答案的信息。因此,可以把在五台山和狼牙山拍摄的照片作为监督数据输入计算机中。
这两种情况充分说明了监督学习的使用条件,如图1.7所示。
图1.7 监督学习的场景
通过这两个使用条件,监督学习最终实现两个主要任务,一是回归,二是分类。
回归预测的是连续的、具体的数值。例如,不同的人因为不同的信用,最终在银行获得的贷款数额和还款期限都会有所不同,而信用值也是跟某些维度有关系的,如工资情况、年龄、学历、职业等。接下来构建公式,把所有的维度和贷款等级形成关联。这样,当有一个新的用户数据时,就可以套用到这样的关联公式中,计算出最终的贷款等级。
分类是将各种事物分门别类,用于离散型数据的预测,如男、女的识别分类,五台山、狼牙山的识别分类,都属于离散型数据预测。
回归型预测在图像上表现出一条线型,分类型预测在图像上表现出离散的点,如图1.8所示。
图1.8 监督学习研究的问题图像
为了完成回归或分类的主要任务,监督学习也会分成两个部分:一是通过监督学习监督数据的构建规则,二是利用构建的规则进行推测。前者的阶段称为学习阶段,后者的阶段称为预测阶段。也就是说,计算机在学习阶段通过学习监督数据构建规则,在预测阶段利用构建的规则对新数据进行预测。
设想一下,吃早餐的时候,一般都是面食配流食,例如油条配豆浆,包子配小米粥,面包配牛奶。现需开发一台“输入早餐面食后,可以输出流食名称”的计算机,协助选择早餐搭配。
针对早餐搭配,可以设想具体的组合。
输入油条,输出豆浆
输入油条、包子,输出豆浆
输入包子,输出小米粥
输入包子、面包,输出牛奶
输入面包,输出牛奶
当然,仅仅以实现这5种输入和输出为目的,就没有必要进行机器学习了,计算机还需要做到在输入既定的5种组合之外的搭配后,也能够进行推荐。
监督学习究竟如何进行,下面进行具体说明。
首先向计算机输入表1.1的数据形式,表中的行表示输入的面食种类,列表示输出的流食名称。
表1.1 早餐搭配的面食与流食数据
计算机需要学习的是豆浆、小米粥、牛奶与匹配油条、包子、面包间的关联程度。关联程度指的是当输入早餐面食时,从3种流食中选择其中一种输出的概率。
在表中有关联的维度行列交叉空白处以圆点符号(l)表示关联程度。计算机结合监督数据,对照模型使用圆点符号练习填空题,以此来调整早餐搭配的关联程度。
计算机按照顺序依次学习监督数据。首先是“输入油条,输出豆浆”,见表1.2。
表1.2 早餐搭配监督学习第一条数据匹配
这条信息说明计算机学习到了油条和豆浆的联系。接下来继续学习“输入油条、包子,输出豆浆”,按照前面一条的规则,应该在对应的行列交叉处填入圆点,见表1.3。
表1.3 早餐搭配监督学习第二条数据匹配
然后是“输入包子,输出小米粥”,在包子和小米粥的行列交叉空白处填充圆点。但如果这样做了,就会出现这种情况:包子和豆浆、包子和小米粥的行列交叉处的圆点数量相同,这里即使输入“包子”,计算机也未必能识别并输出“小米粥”。为了避免和监督数据冲突,必须消除包子和豆浆之间的联系,只在包子和小米粥的行列交叉处填充圆点,这样处理之后,输入“包子”,计算机就会自动输出“小米粥”,见表1.4。
表1.4 早餐搭配监督学习第三条数据匹配
从这样的规则中可以看到监督数据记录的输入和输出不断组合,决定的条件会与出现部分的学习成果相矛盾,计算机会在保证两种学习结果的情况下进行调整。机器学习也是在这种反复调整的情况下不断学习的。
接下来继续学习,“输入包子、面包,输出牛奶”,同样的规则,同样的矛盾情况,在这一条的学习中,清除包子和牛奶的关联,标记面包和牛奶的关联,见表1.5表示。
表1.5 早餐搭配监督学习第四条数据匹配
最后学习“输入面包,输出牛奶”,没有什么矛盾的地方,直接记录学习,见表1.6。
表1.6 早餐搭配监督学习第五条数据匹配
由每个表的流程构成的学习过程可以知道,监督学习就是依次学习监督数据,并对规则进行细微调整的学习方法。由人类设计计算机学习的“基础”数据,将其输入计算机。“基础”数据的规则就是我们所说的“模型”,计算机通过监督数据所学的内容反映到模型之中。在最初的有限数据中,人类给计算机输入的模型并不能反映出监督数据,计算机需要基于监督数据不断对人类给予的模型进行调整。这就是“学习”的过程。计算机完成学习之后所形成的模型能够反映出监督数据。再往后,根据这个模型,计算机就可以对未知数据进行准确预测。
2.无监督学习
无监督学习,顾名思义,即无须给出监督数据就能进行机器学习的方法,它与监督学习可以对比着来看。
监督学习是一种有目的的、明确的训练方式,可以知道最终会得到什么;无监督学习则是没有明确目的的训练方式,无法提前知道最终结果是什么。由于监督学习目标明确,因此可以衡量效果;而无监督学习几乎无法量化效果如何。再者,监督学习需要给数据打标签,无监督学习不需要给数据打标签。
使用没有提供明确目的的数据时,常见的问题表现在会将数据进行集群化,也就是把数据分割成若干个小团体。数据集群化也称为聚类,根据分类对象集合而成的集合体称为集群。
“输入某个早餐面食名称,输出早餐流食名称”是在讨论一个分类的问题,也是监督学习的范畴,监督学习相当于解决“分类”的课题。无监督学习作为与监督学习不同的一种学习方法,在进行聚类时可以发挥积极作用。分类和聚类这两个词很容易被混淆。关键在于聚类得到的集群1和集群2中汇集的数据具有何种特征,需要人类根据其内容进行类推,可能推出的“早餐搭配”组合是价格的高低,也可能是营养的搭配,都是人类根据最终的内容结果倒推其意义所在。
无监督学习本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构。例如,有些人利用违法行为进行“洗钱”,洗钱行为跟普通用户的行为是不一样的。如果人为去分析是一件成本很高、很复杂的事情,这里可以先通过这些行为的特征维度对这些用户数据进行聚类,找到那些行为异常的用户,然后再深入分析行为的异常之处,继而判断是否属于违法洗钱的范畴。
这里实践一下聚集式聚类,把相似的对象聚集在一起的聚类法就是聚集式聚类,也叫“自下而上型聚类”。
为此次实践准备以下五句话作为学习数据。
(1)抽根烟,喝杯酒。
(2)点着一根烟,然后悠闲地喝一杯酒。
(3)抽烟、喝酒和烫头是我的三大爱好。
(4)如果也能烫个头,那该有多好。
(5)现在烫头的价格挺贵的。
这些数据也被称为“学习数据”或“监督数据”,都是人类事先存储到计算机中的数据。
进行聚类的第一步,是把这些孤立的句子全部视为不同的集群。也就是说,每一句话形成一个集群,一共有5个集群。接下来,需要将与之相似的集群对象按照顺序进行组合。这里将“各句中包含的名词一致的数量”看作“相似度”,把“包含相同名词数量最多”定义为“最相似”。把句子(1)至(5)中每句含有名词的标记为“¡”,见表1.7。
表1.7 抽烟喝酒聚类名词记录
续表
先看句子1对应句子2至5的相似度。根据句子中出现相同名词的个数,句子1、句子2与句子3的相似度是“2”,与句子4的相似度是“0”,与句子5的相似度是“0”,见表1.8。
表1.8 抽烟喝酒聚类名词记录第一句与后几句的相似度
接下来看句子2,与句子3的相似度是“2”,与句子4的相似度是“0”,与句子5的相似度是“0”,见表1.9。
表1.9 抽烟喝酒聚类名词记录第二句与后几句的相似度
可按照相同的处理方法计算出所有组合的相似度。最终可以得出,最相似的集群是相似度为“2”的句子1集群、句子2集群、句子3集群,同样存在相似度为“1”的句子4集群和句子5集群,如图1.9所示。
图1.9 抽烟喝酒聚类第一次的相似度匹配
最初5个集群都只包含一个句子,通过查找各句中相同名词数量最多的句子,能够找到最相似的集群。现在存在含有若干句子的集群,句子1、句子2和句子3形成的集群A,句子4和句子5形成的集群B,但是,现在的集群还可以继续进行相似度的比较。
集群A和集群B之间进行句子相似度对比,见表1.10。
表1.10 抽烟喝酒聚类名词记录两类集群的相似度
虽然句子的相似度为“0”,但因为没有其他集群比较,现在就变成这两个集群最为相似,本来没有任何相似度也会被合并,合并后结束聚类,如图1.10所示。
图1.10 抽烟喝酒聚类第二次的相似度匹配
从结果上看,最终由于聚集型聚类会把全部的独立元素集中在一起,所以需要在适当的时候予以终止,可以通过迭代次数或指定集群数量来控制聚类的结果。
无监督学习的聚类,其基本目标在于“将数据分成集群”,但绝不等同于“只要将数据输入,就一定能做好聚类”,必须结合目标反复进行试验。如果预测的结果与聚类得出的结果不符,则可以尝试改变集群数量,或者采用其他手段。
3.强化学习
强化学习,理论上来说就是对某种状态下的各种行动进行评价,并借此主动学习更好的行动方式。通俗一点又叫试错学习,由于没有直接的指导信息,所以通过试错的方式来获得策略。在象棋的博弈中,每一个棋步组成的策略决定了是否能赢得比赛,但唯一的反馈是在最后赢得或输掉棋局时才产生的。强化学习可以通过不断的探索和试错,获得下一步该如何走棋的策略,并在每个状态下都选择最有可能获胜的棋步。
试探性地做出某种行动后,通过观察其结果的好坏对“该如何进行下一步行动”的内在规则加以改善,其实人类积累经验的方式也是如此。强化学习不会像监督学习那样给出明确的答案,但是人类会给予其行动的选项,以及判断该行动是否合理的基准。
曾经有这样一个故事,一个富翁说:“如果谁能跳到鳄鱼池中从这个岸边游到对岸,就把女儿嫁给他”,这有两种选择,一种是跳下去,拼了老命游到对岸,或者被鳄鱼吃掉,或者娶富翁的女儿;另外一种选择是站着不动,既不会被鳄鱼吃掉,也不可能娶到富翁的女儿。但选择了站着不动,心中也会歇斯底里地幻想一下,一旦鳄鱼游得慢,或者鳄鱼对自己根本就不感兴趣,那不就能娶到富翁的女儿了吗。故事中确实有一个小伙子下去了,并且成功游到了对岸,虽然上来的第一句话是:“刚才谁把我推下去的!”,但他还是活着上来了,鳄鱼可能没理他。从强化学习的观点来看,站着看热闹的做出了“所掌握的规则效果不佳”的判断,降低了跳下去的概率,提高了站着不动的概率。
从故事回到生活中,房子是生活的必需品。从没有自己的房到有自己的房,要么全款买,要么贷款买,要么继承……可以有很多途径。根据选择的方式不同,“花钱的多少”也会发生变化。多数情况下,不能把所有的从无房到有房的流程都体验一次,继承、全款买、贷款买等方式只能选择其中一条路线。
如果谈哪一条路线有更高的压力指数,也是很容易想到的,继承的没有什么压力,全款买房的在买房的那一刻花了很多钱,如果经济不是很宽裕,可能要苦几年,贷款买房的首付款也花了很多钱,后面还有还贷的压力。除了压力指数外,再谈一下花销之后的盈余,房产都是有使用年限的,继承的房产从你继承之日起,可能后面的年限也不多矣,还要面临房产到期后的问题。全款买房的苦了几年后,不但在生活上有了一定的盈余,还可能获得房产的增值。贷款买房虽然承受还贷的压力,但是也会获得房产上的增值。从强化学习的观点来看,存在“积累报酬”的思维方式——不局限于眼前的蝇头小利,而是着眼于长远目标,为实现利益最大化而不断进行学习,更易选择最佳行动。当然,这个例子旨在形象理解强化学习的选择,同时也忽视了经济条件的限制。如果全款也买不起房,贷款也没有偿还能力,继承也没有先决条件,就只能租房。不过强化学习也会根据地段“积累报酬”的方式学习到在哪一个地方租房更划算。
“积累报酬”也不是强化学习中单纯的思维方式,强化学习同时还具有“折算累计回报”的思维方式,即认为未来的可得报酬会有所减少。同样,放到无房产到有房产的案例中,贷款买房的房解决了,但还贷的数额也是个数字。“在处于某一个状态时,接下来采取哪一个行动”这一问题,可以稍微转换为“进行到下一个状态后,能获得多少折算累计回报”来给出答案。这也有助于对强化学习的进一步探讨。
借用象棋的思维,最终的胜负决定着自始至终的每一步行动,相当于胜利时获得报酬,失败时没有报酬。由此可以逆推,即可对应所有行动确定其应获得的报酬。
强化学习是机器学习中一个非常活跃且有趣的领域,相比其他学习方法,强化学习更接近生物学习的本质,因此有望获得更高的智能。