序:把镜头拉远一点看人工智能
上一篇总结了大数据&人工智能的知识地图,在地图中,我只选择“深度学习”作为具体的落地技术,实际上有些偏颇。这一篇,我们先从实现细节中跳出来,把镜头拉远一点,重新认识一下人工智能领域的三个重要学派,因为这次我想总结的是另外一个学派的技术,所以故事还是得从头讲起。
认知:人工智能的三大学派其实各有所长
若从1956年正式提出人工智能学科算起,人工智能的研究已有50多年的历史。这期间,不同学科背景的学者对人工智能做出了各自的理解,由此产生了不同的学术流派。对人工智能研究影响较大的的主要有三大学派:
- 模拟人的思维方式的“符号主义”
(symbolicism) - 模拟人的大脑结构的“连接主义”
(connectionism) - 模拟人的行为的“行为主义”
(actionism)
1.符号主义
又称为逻辑主义或心理学派,“人工智能”这个术语就是这一派首次提出的。它的理论基础就是人们从人的思维规律中提炼、总结出的“形式逻辑”(上一篇我已在基础理论中做过总结)。
符号主义认为,人类的认知过程,就是对“知识”进行“逻辑推理”的过程,映射到计算机里,“知识”可以用“符号”表示,而“逻辑推理”就是对各种符号进行搜索、计算。所以这个学派的思路是想办法实现“知识表示”、“知识推理”和“知识运用”。
他们的代表成果是1957年的数学定理证明程序“TL”,它成功的证明了38条数学定理,后来又发展出了启发式算法、专家系统、知识工程理论与技术,以及当前最常用的技术——“知识图谱”(Knowlage Graph)。
当然,它的问题也明显,正如上一篇提到的,它在理论层面上已经被“哥德尔不可能定理”锁死,一个仅仅依靠知识和逻辑的系统,只能比较“傻”的解决某类专有问题,不可能具有通用性,若想实现广义上的“人工智能”,这个学派很可能已无路可走。
2.连接主义
又称为仿生学派或生理学派,它的理论基础是人脑的物理结构和运行机制。
连接主义发现,人脑的每个神经元细胞具有树突、轴突和细胞体。树突可以接收信号,轴突用于输出信号,不同细胞的树突和轴突之间是神经突触,不同的突触具有不同的权重。树突传入的信号强度与相应的突触权重相乘,经由细胞体设置的非线性阈值检验,触发轴突的兴奋或抑制。数目庞大的神经元连接成结构复杂的网络,从而实现灵活多样的功能。所以,这个学派的思路是模仿神经网络及神经网络间的连接机制构造学习算法,即人工神经网络(Artifical Neural Nework)。
它的代表性成果是1943年由生理学家麦卡洛克和数理逻辑学家皮茨创立的脑模型(MP模型),它开创了用电子装置模仿人脑结构和功能的新途径。近些年来,随着计算能力的突飞猛进,特别是图形处理单元(GPU)的大规模普及,发展出了更具有通用性、一扫过去所有经典算法的技术——“深度学习”(Deep Learning)。
深度学习有很多优点,一方面,它可以用相同的算法训练不同的功能,比如人脸检测和语音识别,就可以做到算法相同,只是训练数据不同。另一方面,它的算法很简单,对应的数学理论只是初等,其准确性主要还是依赖训练数据的数量和完备性。
当然,这个方向也有比较致命的缺陷,就是缺乏理论基础,偏实践层面。虽然深度学习算法能够将图片中的猫辨识出来,却无法详细地解释为什么会做出这样的判断,也无法判定方法是否具备普适性,究其本质,它只能根据经验揭示事物的“相关性”而非“因果性”。同时,又因为它计算所消耗的空间和时间代价过大,很多观点认为它是现代的“炼金术”,不能算是科学。
3.行为主义
又称为进化主义或控制论学派,它的理论基础则是“控制论”。
控制论是一个跨领域的理论,它把神经系统的工作原理与信息理论、控制理论、逻辑以及计算机联系起来。行为主义的思路是构建一个“感知-动作型控制系统”,这个系统能自动感知环境变化,根据外部的持续反馈实现系统的自适应、自寻优、自组织。
它的代表作首推布鲁克斯的六足行走机器人,它被看作是新一代的“控制论动物”,是一个基于感知-动作模式模拟昆虫行为的控制系统。发展到现在,最主要是实现技术叫“增强学习(Reinforcement Learning)”。
知识地图扩展
这一期补充一个和“深度学习”并列又经常关联使用的技术——“知识图谱”。
一.知识图谱(knowledge graph)
知识图谱自上世纪60年代从语义网络发展起来以后,分别经历了1980年代的专家系统、1990年代的贝叶斯网络、2000年代的OWL和语义WEB,直至2012年Google提出了“知识图谱”的概念。当时,Google主要是为了将传统的keyword-base搜索模型升级到基于语义的搜索。“知识图谱”技术可以更好的查询复杂的关联信息,从语义层面“理解”用户意图,改进搜索质量。Google目前的知识图谱已经包含了数亿个条目,并广泛应用于搜索、推荐等领域。
知识图谱本质上是一种大型的语义网络,它以现实世界中事物的概念为节点,称之为“实体”,以实体之间的关系为边,提供了一种以实体-关系来描述世界的方式。某种程度上,它类似于今天备受推崇的思维导图,但是具有更加规范的层次结构和更加强大的知识表示能力。
它是怎么实现的呢?下面,就按照它的的三个实现步骤来总结,分别是:知识表示、知识推理和知识运用。
1.知识表示
“阿里巴巴成立于1999年”
“阿里巴巴是一种科技公司”
“阿里巴巴是一个数据驱动的公司”
以上是3条知识,用什么结构来表示它们,才能确保人和机器都能理解呢?人们最终找到的结构就是“三元组”(triple),它由实体(Entity)、属性(Attribute)和关系(Relation)组成。它足够的简单,既容易被人类解读,又容易被计算机来处理和加工。你可能会问,这也太简单了吧?事实上,人们也尝试过扩充成四元组、五元组,但是发现整个结构会变得复杂,最终,综合复杂性、人的易理解性、计算机的易处理性,还是选择了用三元组。顺便一提,“三”真的一个黄金数字,科学发现,人类的天生数感就能到“三”,也就是说人能一眼识别三以内的数量,而对超过三的数量只有模糊数感,这也能很好的解释了为什么中国汉字和罗马数字中“一”、“二”、“三”都具有数字性和连续性,而从“四”之后就只剩下语义了。
那怎么把知识转换为三元组呢?举一个例子:
“阿里巴巴是一个数据驱动的公司”
其实就可以表示成<实体,关系,实体>:
<阿里巴巴,is-a,数据驱动的公司>
“阿里巴巴是一种科技公司”
也是一样
<阿里巴巴,subclass,科技公司>
“阿里巴巴成立于1999年”
则可以表示成<实体,关系,属性>:
<阿里巴巴,start-time,1999年>
有了这些结构化的知识,机器就可以按照逻辑得到一个新知识:
<数据驱动的公司,subclass,科技公司>
这样一来,以后如果再录入一条这样的知识:
<Google,is-a,数据驱动的公司>
机器就可以自动得到一个新知识:
<Google,subclass,科技公司>
以此类推,随着新知识的录入和机器的自动推理,把这些结构化的知识存储起来,会得到一个庞大、丰富的数据库,这个数据库就叫做“知识库”(Knowledge Base)。
从结构化的数据类型上看,知识库有两种类:Curated KBs和Extracted KBs。
Curated KBs由标准的、结构化的三元组所表达的知识组成的知识库,每条知识的结构和刚才的例子很像,每个关系都是标准定义好的。以freebase(一个创作共享类的网站)为代表,它从维基百科和WordNet等知识库抽取了大量的实体及实体关系,相当于实现了一种结构化的维基百科。
Extracted KBs则是是直接从网页中抽取实体关系三元组所组成的知识库,它的实体和关系更多是自然语言的形式表达的。与freebase相比,这样得到的知识更具有多样性,但也会存在一定的噪声,其精确度低于Curated KBs。所以目前行业内使用的比较多的还是简单、易构建的Curated KBs。
再从结构化所使用的算法上看,“实体”的提取主要是用的传统机器学习算法或者“条件随机场” (conditional random field, CRF);“关系”的提取则是即可以用有监督的分类算法也可以用无监督的聚类算法。
最后从知识的存储上看,图数据库、NoSQL数据库,关系型数据库都可以,不过通常情况下,如果知识图谱的结构非常复杂、关系非常多,建议使用图数据库,目前业内主流是Titan、Graph Engine、Neo4J三款。
2.知识推理
知识推理和人类的逻辑是一样,可以分为“归纳”和“演绎”两类。所谓归纳(induction)是指从某类事物的大量实例出发,推理出关于这类事物的一般性结论。将归纳的过程调转方向,得到的就是演绎。演绎(deduction)指的是从一般性的前提出发,推导出个别结论或者具体陈述的过程。
归纳推理能够从已知知识中获取未知知识,是知识的增殖过程。而演绎推理可以用来解决复杂的问题,但它只是将已有事实揭示出来,而不能够产生新知识。回忆一下上面三元组例子中的推理过程,用的其实是演绎推理,虽然产生了新的知识记录,但是只是揭示了已有的事实,并没有推理出未知。
在知识推理的实现技术上,归纳和推理分别对应两种算法:
归纳推理对应的算法叫路径排序算法(path ranking algorithm)。在知识图谱中,实体是由二元关系相连接的,因而现实世界中的规则在知识图谱中就体现为不同实体之间的关系路径。路径排序算法正是以实体之间的路径为依据,在不完全的知识库中学习目标关系的分类器。路径排序算法的实现包括特征抽取、特征计算和分类器训练三个步骤。
- 特征抽取:生成路径特征的集合并加以筛选,筛选出的特征被应用在训练数据集上。
- 特征计算:对每个训练样本都计算出其对应的特征取值。
- 分类器训练:根据训练样本为每个目标关系训练出一个分类器。
最后,将分类器应用在知识图谱上,就可以自动挖掘并筛选出可靠的规则。
演绎推理对应的算法叫做马尔可夫逻辑网(Markov logic network)和概率软逻辑(probabilistic soft logic)。前者是将无向概率图模型和一阶谓词逻辑相结合得到的统计关系学习模型,这个网络是一阶逻辑公式的集合,其中的每个逻辑规则都被分配一个实数作为权重系数,以此实现规则的程序化。利用马尔可夫逻辑网对知识图谱建模后,就可以利用已有的规则和权重系数来推断未知事实成立的概率。如果对马尔可夫逻辑网加以扩展,给网络中每个顶点所代表的原子事实赋予一个连续分布的真值,得到的就是概率软逻辑,它能够对不确定的事实和规则同时建模,因而具有更强的不确定性处理能力。
3.知识运用
知识图谱的应用场景非常广泛,比如搜索、问答、推荐系统、反欺诈、不一致性验证、异常分析、客户洞察等等。下面重点整理三个场景:
(1)搜索:在搜索引擎的右侧,以知识卡片的形式来呈现跟搜索信息结构化的信息,包括比如地图、图片、描述等等,甚至还会出现相关信息,可以让用户在搜索引擎里面能够不断的去进行知识的关联和发现。
(2)智能推荐:比如购物网站,用户买了牛肉卷或者羊肉卷,假设他实际上是要为了做一顿火锅,这时候系统可以给他推荐火锅底料或者是电磁炉。
(3)客户洞察:知识图谱能够比较全面的记录客户的非常详细的信息,包括名字,住址,经常和什么样的人进行互动,还认识其它什么样的人,网上的行为习惯、行为方式是什么样的,这样就可以挖掘出更多的用户的属性标签和兴趣标签,以及社会的属性标签,形成全面的用户洞察。
二.自然语言处理(NLP)
总结完知识图谱,不得不再加一点经常和知识图谱配对使用的技术——NLP (Natural Language Processing),即自然语言处理。NLP是人工智能的一个子领域,它的目标是让机器具有理解并解释人类写作、说话方式的能力,最终弥补人类交流(自然语言)和计算机理解(机器语言)之间的差距。
它常和知识图谱配对运用也很好理解,比如实现一个问答机器人,输入的是自然语言,处理则需要用机器能理解的基于三元组的知识,而输出则也需要是自然语言,也就是说输入输出都需要用到NLP技术。那么对于这个系统来说至少就需要有如下三个层次:
1. 知识库:包含客户可能的提问知识和对应的回答知识。
2. NLP 层:将用户的问题(任何形式)转译为知识,待知识库处理完成后,再将回应转译为恰当的自然语言。
3. 应用层:用来与用户交互的应用接口。
在这里面,NLP层必然包含两个核心技术:
1. 自然语言理解(NLU):理解给定文本的含义,文本内每个单词的特性与结构需要被理解,相当于把自然语言翻译成机器语言。
2. 自然语言生成(NLG):从结构化数据中以可读地方式自动生成文本的过程,相当于把机器语言翻译成自然语言。
三. 小结
知识图谱和自然语言处理这两种技术本身都还在发展成长过程中,同时也在逐步的和深度学习进行融合。在实际应用中可以观察到,一个问题的解决,通常是多种技术的配合使用,所以在这个领域中,无论是对应用场景还是技术都需要有一个广度上的了解,有时候,答案可能并不在算法细节里,只需要把镜头拉远一点,视野放宽一些,最优解就在那里。
写在最后
这次我没有放参考书,主要是因为我是利用碎片化的时间学习的,很多资料都比较零散,我是按照自己的学习习惯整理的:在大量的泛读后把信息整理成结构,再逐一提出问题,自问自答,最后从零碎的资料里抽丝剥茧找到每个问题的答案,用自己的语言写出来,所以这篇文章即是总结,也是我的学习过程。当然,其中肯定有不全或者不详尽的地方,请见谅,留着我日后再慢慢迭代刷新。
上一篇
网友评论