丹棱君有话说:随着人工智能的发展,机器的“智能”让我们惊叹不已,那么机器是怎样学习的?机器学习的“知识”是怎样的呈现方式?这些知识又是如何从海量数据中提取并加工而成的?有请微软亚洲研究院资深研究员闫峻博士为我们指点迷津~
知识是什么?抽象来说,是人类对世界的认知,对宏观及微观世界客观规律的总结。具体来说,大到牛顿定律、量子力学中的科学发现,小到自家孩子的生日、太太做饭常用的酱油颜色,都是我们所掌握的知识。如果这些人类掌握的知识可以被表示成计算机可以读取并计算的形式,那就是计算机科学领域研究的可计算知识了。
可计算的知识类型很多,常见的有知识图谱,比如一部电影通过导演这层关系可以链接到一个具体的人,这个人通过国籍关系又可以链接到一个国家,最后所有的实体和关系在一起会构成一个很大的图结构,这就是知识图谱。另一个例子是,我们将大量的常见问题与对应的答案放在一起,就可以构成一个问答知识库,通过自然语言理解技术能让机器进行自动问答。
还有一类知识经常容易被忽略,那就是已经被训练好的用来解决具体问题的机器学习模型。因为每个模型都会有定义好的输入和输出,它被训练后已经是对数据或人类经验的拟合,所以,虽然很多情况下模型无法直观地解释,但它其实已经是机器学习到的知识了。
在具体应用中,各种类型的知识还可以通过不同方式组合在一起使用,比如一般意义上的知识图谱中的每个节点或关系,除了可以是电影、国家、国籍这种确定的符号以外,还可以是一个已经训练好的机器学习模型与其它实体或模型链接在一起作为图的一部分,这类例子我们在研究中将其称为广义知识图谱。
为什么要研究可计算的知识?
首先,如果将一个智能的机器与智人来类比,它除了需要一个聪明的大脑,还需要受过良好的教育并具有丰富的经验才能解决实际的问题。而知识的引入就是一种对机器进行教育并赋予其经验的重要手段。儿时我们可能都幻想过是不是可以不用上学,在脑袋上插个东西就可以学会所有课程。这对于人类来讲确实很难实现,但对于机器却是切实可行的。
其次,我们现在的很多统计机器学习算法都倡导一切从数据出发,从零开始学习。但回想人类社会的进步,尤其是科技的进步,大多是站在前人的肩膀上一步一步发展起来的。前人们通常会把学到的东西和积累的经验总结成知识。而这激发了我们去想象为什么不能直接教授给机器知识而一定要机器在数据中从头学起呢?这样的话,可计算的知识就变得十分重要,它可以让机器直接读取已知的知识并在此基础上进行新的学习,也就是让机器站在巨人的肩膀上进步了。
另一方面,我们常把人工智能问题分为感知计算与认知计算。前者学习人的感官,如看东西的能力、听声音的能力等等。后者则学习人的认知,如自然语言理解的能力等。其中,知识对于认知计算具有重要意义。这个论断或许有些抽象,我们举个例子来进行说明:我没有学过基因组学,所以当我拿到一篇这方面的文章时,好像每个词/字都能读出来,但就是看不懂内容。什么原因让我看不懂?因为我没有背景知识,不知道每个词背后有什么深刻的含义,也不知道提及的实体间有什么关系。
人类能理解自然语言,很重要的一个原因是我们拥有相关知识,而不是只靠读表面上的几个字符。反观机器,如果没有背景知识,单纯靠那些字符,有可能真正理解自然语言吗?所以说,我们相信知识对于人工智能领域的进一步发展,尤其是对认知计算的进一步发展,将具有重大意义。
在“知识”这个领域
我们都在研究什么?
接下来,让我们简单看一下在“知识”这个领域,我们都在研究什么问题。在海量的数据中,我们需要的知识在哪?哪些是有价值的知识,哪些是信息垃圾?如何从数据中把我们需要的知识有结构地提取出来?得到知识以后,怎样才能把获取的知识表示成计算机可以计算的形式?以及接下来,由于知识的来源很多,怎样可以把不同来源、不同表示的知识融合在一起?然后在基于知识进行计算的过程中,如何让机器像人一样利用知识进行理性的推理,或者做感性的决策或预测?
事实上,所有这些问题,最终都要和具体的应用相结合来解决,因为机器拥有知识后如果不能融会贯通的使用,那么它就会变成“书呆子”。针对上面这些问题,我们挑选了几个重要的问题稍微细化一点与大家分享。
知识抽取
一般我们把知识抽取问题分为四种类型:有结构数据的知识抽取、半结构数据的知识抽取、无结构数据的知识抽取以及其它数据类型的知识抽取。知识抽取的工作传统意义上是把各种数据类型变成有结构的知识数据,就像前面举例过的知识图谱一样。有结构数据源的知识抽取方法相对简单,因为待抽取的数据源本身已经具有一定的结构,只需和我们的需求做好映射即可。
针对半结构数据源,可以举一个例子,购物网站上每个商品介绍网页的结构都很相似,在相对固定的位置有商品名、商品价格及商品的各种属性。如果我们能让机器把这种结构规律学习并总结出来,那么机器就可以把网页中的结构化知识,如每个商品的价格、重量等信息抽取出来了。
对于无结构的数据,典型的就是从自然语言的一句话中识别出实体并且正确分类出相关实体之间的关系,最终形成结构化知识。以上几类知识抽取技术相关研究很多,比如,我们之前 CIKM(ACM International Conference on Information and Knowledge Management)的一篇文章 “Extract Knowledge from Semi-Structured Websites for Search Task Simplification ” 就曾从 200 亿网页中抽取出了 4000 亿条事实型的结构化知识。
还有一类知识抽取的技术是从非文本的例如图像数据中抽取结构化知识。例如,如果大量数据表明天空会出现在陆地的上方,我们就可以获取一条关于天空与陆地位置关系的常识知识。这类的常识知识往往是自然语言的文本中很少提及的。
知识的表示
我们在工作中把知识表示分为符号表示与分布式表示两种。符号表示就是用符号表达实体间的逻辑关系,如一个人的名字通过国籍关系关联到一个国家的名字。然而这里面一个很大挑战就是,即使知识图谱被建设得很大、很完整,但很多时候还是不好用。这是因为同一个实体的表达方式在人类自然语言的呈现中会有很多种。例如,在我们建立的医疗知识图谱中,用“腹泻”表示一种症状,但在实际应用中,人们会用“拉肚子”进行知识的查找。或者用户还会用刘某某的第二任妻子来指定一个具体的人,等等。所以我们要建立各种符号的等价,包含等一系列关系来具体表示一个符号的语义。但这种表示很难做到完全。
为此,我们借助分布式的知识表示,就是用机器学习的手段把知识的实体、关系、规则映射到向量空间进行数学计算。这方面的相关研究工作也有很多,例如我们在 WWW(The International World Wide Web Conference)的一个工作 “LINE: Large -Scale Information Network Embedding” 就是一种有效的把某类特殊关系图映射到向量空间的办法。
机器拥有知识后的计算过程
我们以知识推理和语义计算的问题作为例子。知识推理的相关工作很多,历史也很悠久。常用的方法如贝叶斯网、粗超集方法等。我想补充的是,拥有了将知识图谱映射到向量空间的好算法以后,知识推理的工作就可以在向量空间中进行计算了,这就和统计机器学习有了很好的契合点。
另外值得关注的一点是,如何在我们此前提到的广义知识图谱上进行推理,会与经典的符号推理有些不同,因为知识图谱中的关系可能不再是固定的符号,而是一个机器学习的模型,这会带来很多新的研究价值。不少应用近期对语义计算的需求比较旺盛,如自动问答系统、聊天机器人等。
我们以一个基础问题为例,就是判断两句话的相似性问题。这个问题并不是新挑战,但有结构的知识在这里会起很大作用。传统方法会用词向量模型,也就是看两句话共有的词的多少来决定两句话有多相似。后来研究人员发现这并刻画不了两句话用词不同但词语间语义相关的问题,于是各种语义表示的算法,尤其是深度学习算法就被应用进来了。不过,有很多情况还是会出错。我们一起看一下下面这个例子:
A. 看了欢乐喜剧人,里面那个秃子主持人的儿子很帅。
B. 这季欢乐喜剧人的主持人郭德纲是个秃头,但很棒。
C. 郭德纲的儿子英俊,比他爹强多了。
D. 看了最强大脑节目,里面嘉宾和主持都不错,帅。
对于 A 这句话,如果我们用词向量模型,最相关的明显是 B,因为共有的词最多。加入语义特征后发现 D 也很相关,因为两个电视节目的名字语义上同类,相关性很强。但是如果我们拥有一定背景知识,就会知道“欢乐喜剧人”是一档电视节目,主持人叫郭德纲。我们会发现在语义上实际 A 和 C 才是最像的。所以在计算文本相似度的时候,有时候会需要一些背景知识。针对这个问题,我们在 AAAI(The Association for the Advancement of Artificial Intelligence) 上有一篇文章专门做了讨论 “Efficiently Answering Technical Questions – A Knowledge Graph Approach” 。
无论以上提到的哪个具体问题,从算法的角度来讲,都有一个重要问题最近吸引了大量研究者的目光——如何将统计机器学习与符号化的知识体系进行结合。这样做有很多好处,例如如果可以将已有知识直接教授给机器,那么就可以让机器站在前人的肩膀上进行更快更好地学习,而且机器也将可以像人一样通过理性的推理与感性的理解共同在具体任务中进行决策。我们大概将这方面现有的主流方法划分为六种类型:
第一种,是将知识映射到向量空间后当作统计学习模型的输入。
第二种,是利用逻辑规则当作统计学习模型的后处理,可以筛选模型输出并修正统计学习模型。
第三种,是将符号规则当作统计学习模型目标函数的正则项进行同时优化。
第四种,是把统计学习与符号推理当作两个独立模型,但二者在解决问题的过程中可以相互作用。
第五种,是将统计学习模型加入为知识图谱一部分,在广义知识图谱上进行推理。
第六种,是以上各种方式的各种变种和组合。
我们在每种类型上都有一些相关的工作和努力,例如在 WSDM(ACM International Conference on Web Search and Data Mining)上的一篇文章 “ Concept Embedded Convolutional Semantic Model for Question Retrieval ” 就是针对第一种类型的一个初级工作。
知识的应用
知识的应用可以分为两类,一类是端对端的应用,例如搜索引擎中的知识卡片、基于知识的自动问答系统、任务完成系统等等。另一类是在解决具体问题时的中间步骤或某些重要模块中的应用,例如利用知识提升语义理解的算法能力,利用知识更好地判断用户与广告之间的相关性等等。知识图谱的构建与应用已经在医疗、金融、法律等垂直领域产生了巨大的经济价值。例如,在医疗领域,通过知识图谱的构建及知识的语义表示,机器可以帮助患者更快捷地寻找医学知识并获得诊前、诊中、诊后各个阶段的帮助。
除了以上介绍的这些基本问题,我们也正在努力构建一些可以相对通用的知识图谱来辅助此研究领域的进一步发展。比如,我们已经发布的概念知识图谱Microsoft Concept Graph,已经被证明在很多自然语言处理及语义相似度计算的任务中都可以起到很好的作用。
此外,我们希望构建更多的知识图谱以帮助计算机实现联想、创造等方面的能力。就像,如果提到太阳,人们会联想到“热”、“温暖”;看到跑的很慢的老爷车,会想到“蜗牛”;看到沉迷网络的少年,会想到“毒品”。人们会直观地联想到的这些知识,对机器来讲是非常困难的,所以我们也会努力构建这种赋予机器跨领域联想能力的知识图谱。
另一方面,人的很多创造力来自基于已有知识的假设,那么如何让机器基于知识图谱生成具有创造性的相对合理假设呢?我们最近发表在 WWW 上的一篇短文“Can Machine Intelligently Propose Novel and Reasonable Scientific Hypothesis” 就是这方面的一些早期努力。我们期望用知识与统计机器学习的结合来打破机器智能一些瓶颈问题,如统计机器学习模型无法被人理解的问题、机器对文章的理解一般停留在字面而非深层逻辑结构理解的问题等等。
总而言之,对于人类来讲,知识就是力量,对于机器,也是一样。
本文转自微信公众号:微软研究院AI头条
了解更多:
后台入驻微软小冰
如果你很萌,请跟她一决高下!