诚如本书简介所述,《大数据智能:互联网时代的机器学习和自然语言处理技术》可视为一本科普书籍。
本书是一本介绍大数据智能分析的科普书籍,旨在让更多的人了解和学习互联网时代的机器学习和自然语言处理技术,以期让大数据技术更好地为我们的生产和生活服务。
全书并没有深入到具体的技术细节(但概率论的基础知识还是需要的),而是提纲挈领地讲了大数据和人工智能的相关领域知识,同时提供了若干论文以便读者进行拓展阅读(这一点非常赞)。整本书写的还是蛮有诚意的,譬如说最后的后记部分。但是需要注意的是,由于该书成书于2015年,因此近两三年机器学习、NLP等的发展成果在书中看不到。
深度学习
深度学习:使用多层神经网络来进行机器学习。
“Learning”:神经网络,它是一个带参数的函数,通过调整参数,可以拟合不同的函数。而机器学习就是一种让计算机自动调整函数参数以拟合想要的函数的过程。
“Deep”:多层神经网络能更好地拟合某些实际问题,一些算法能有效地自动调整函数参数(如逐层预训练的方法),从而使得多层神经网络能够达到较好的效果。
一言以蔽之,人工神经网络的目标是用机器设计机器。
参数学习
一个好的神经网络,对于给定的输入,能够得到设计者期望的输出。可定义实际输出与期望输出的差别作为评价神经网络好坏的指标。
梯度下降法是解决无约束优化问题(即调整一组变量使得某个表达式最小(或最大),而对所调整的变量的取值没有限制)的基本方法,也被普遍用于神经网络参数的优化。梯度下降法是一种迭代的方法。首先任意选取一组参数,然后一次次地对这组参数进行微小的调整,不断使得新的参数的损失函数更小。梯度下降法最大的不足是无法保证最终得到全局最优的结果,即最终的结果通常并不能保证使损失函数最小,而只能保证在最终结果附近,没有更好的结果。
流行的参数学习方法还有随机梯度下降法(SGD)、拟牛顿法(如L-BFGS)等。
多层前馈网络
人工神经网络可以用图表示,神经元是图的节点,神经元之间的联系是图中的有向边。神经元不同的连接方式就会形成不同拓扑结构的神经网络。目前神经网络的自动学习几乎只局限于神经网络边连接的权重,不会去自动学习网络拓扑结构。而不同拓扑结构的网络适用于不同类型的问题,设计神经网络结构这部分工作还需要设计者的参与。
在多层前馈网络中,信号由左至右向前单向传播,每一列神经元构成一层,因此被称为多层前馈网络。网络相邻两层的任意神经元之间都有连接,此外没有层间连接或者跨越多层的连接。网络的输入/输出数目和形式根据具体问题指定,网络层数和每层神经元的个数也是需要人为指定的。它的计算没有迭代,并且是并行的,使用GPU来模拟人工神经网络要比使用CPU高效得多。
层间连接方式除了全连接外还有卷积(Convolutional Neural Network,CNN),层的组织形式除了多层叠之外常见的还有递归形式(Recursive Neural Network,RNN)和循环形式(Recurrent Neural Network,RNN)。
逐层预训练
经过预训练后得到的神经网络,会明显优于随机给出初始权重训练得到的神经网络。
具体可以参考文章:Reducing the dimensionality of data with neural networks.Science,313(5786),504–507.
深度学习带来了什么?
强调了数据的抽象
深度学习通过多层的神经网络,将事物的表面特征变为更深的、更抽象的特征。
强调了特征的自动学习
传统的机器学习算法已经让模型的设计更为自动化,通过数据可以自动确定模型的参数,只是模型的特征需要融入设计者的智慧手动设计。而深度学习的思想之一是特征也应该被自动地设计。人的智慧,可以只用来构造自动设计特征的方法。深度学习本身,就是这样的一种可以自动设计特征的方法。
对连接主义的重视
深度神经网络对数据的抽象并不是从数据中提取出某种离散的级别、标签等。在这种连接主义的观点下,所谓的抽象仍然是一些神经网络能够处理的实数向量。不过这也与大脑的运行机制相契合。
知识图谱
知识图谱的主要应用
查询理解(Query Understanding):能够更好地理解用户输入的查询词,同时能获得简单的推理能力;
一个可以理解用户问题,从网络信息中抽取事实,并最终选出一个合适答案的搜索引擎,才能将我们带到信息获取的制高点。
自动问答(Question Answering) :是知识图谱最重要的应用方向。
文档表示(Document Representation):一篇文章不再只是由一组代表词汇的字符串来表示,而是由文章中的实体及其复杂语义关系来表示。
知识图谱为计算机智能信息处理提供了巨大的知识储备和支持,将让现在的技术从基于字符串匹配的层次提升至知识理解层次。
知识图谱的主要技术
- 实体链指(Entity Linking):将互联网网页与实体之间建立了链接关系;
- 关系抽取(Relation Extraction):从互联网网页文本中抽取实体关系;
- 知识推理(Knowledge Reasoning):从已有知识中发现隐含知识;
- 知识表示(Knowledge Representation):对知识图谱进行表示与存储
总结
- 知识图谱是下一代搜索引擎、自动问答等智能应用的基础设施。
- 互联网大数据是知识图谱的重要数据来源。
- 知识表示是知识图谱构建与应用的基础技术。
- 实体链指、关系抽取和知识推理是知识图谱构建与应用的核心技术。
大数据系统
人类的DNA有30亿左右个碱基对,每个碱基对可以用2个二进制位(bit,缩写:b)来表示,4个碱基对就是1个字节(byte,缩写:B),每个人的基因就有0.75GB左右的数据量…
这样来看《西部世界2》里面描述的人类并没自由意志是有一定依据的。
高性能计算技术
超级计算机其实并不是指一台具体的机器,而是指一套完整的系统,包括所有节点以及它们之间互联的网络设备,另外还有为了保障这些设备正常运行而配置的电源、冷却等装置。超级计算机的节点一般可分为计算节点、存储节点和管理节点。
虚拟化和云计算技术
基于分布式计算的大数据系统
HDFS的设计目标是存储那些一次写入多次读取的大量数据,例如搜索引擎会用爬虫抓取大量的Web页面,一旦存入分布式文件系统之后,这些数据不会再被修改,但可以追加新的数据。对于桌面用户共享文件的应用场景(有很多小文件,内容会经常发生修改),HDFS一般是不适用的。
GFS面向搜索引擎设计,文件的内容可以不断追加,但是不能修改。GFS是分布式的,描述文件的信息(又称为元数据)保存在文件系统的主节点上,另有多个数据节点,负责保存分块之后的文件内容。同一个数据块分别保存在多个数据节点上,即使出现一定数量的数据节点故障,整个文件系统依然可以正常工作,不会导致数据丢失。
大规模图计算
图的分析可分为图的查询和计算两大类。
当图的规模变大时,图计算会面临挑战,主要原因都是由图的不规则性引起的。由于图中的边可以连接任意的两个顶点,而图的算法在访问一个顶点时经常要访问和它相关的边以及邻居顶点,这些数据在计算机存储上的局部性就会很差。
对于大多数情况来说,单机的图计算框架是一种更好的选择。
NoSQL
常见的NoSQL数据库大致可分为以下几类:
- 基于列的存储(column-oriented store):数据组织成表格的形式,每个表格有行和列两个维度,一行表示一个数据项,而列的维度可以分为若干个层次(例如HBase中的列族和列),最小的层次被称为列。一行一列的交叉被称为一个单元,每个单元可以保存若干个版本的数据,用时间戳来区分。
- 基于文档的存储(document-oriented store):数据以文档为单位组织,一个文档可以包含若干属性,每个属性有各自的名字和值。不同的文档可以有不同的属性集合。例子有MongoDB、CouchDB等。
- 键值对存储(key-value store):数据以键值对的形式组织,操作非常简单(put、get、delete)。
- 图数据库(graph database):数据以图的形式组织,数据项是图中的顶点,每个顶点可以带属性,数据项之间的联系用边来表示,边上也可以带属性。图数据库有Neo4j等。
- 多模型(multi-model):同时支持上述若干种模型,例如OrientDB、ArangoDB等。
智能问答
专家系统(Expert System),在20世纪80年代十分流行,它依赖于精确组织的知识结构(例如昆虫有6条腿、哺乳动物有脊椎等),又称本体(Ontology),对于那些没有组织好知识结构的门类来说,推理便无从进行。
问答系统的基本组成,与人进行提问—思考—回答的思维过程相近,大致分为3个部分:
- 问题理解:对于自然语言输入的问题,首先需要理解问题问的是什么;
- 知识检索:自然语言提问的问题在理解后,通常会组织成为一个计算机可理解的检索式;
- 答案生成:通常来说,检索到知识并不能直接作为答案返回。这是因为最精确的答案往往混杂在上下文档中,我们需要提取出其中与问题最相关的部分。
有的研究者把问答系统的目标定义为解答这样一个问题:谁(Who)对谁(Whom)在何时(When)何地(Where)做了什么(What),是怎么做的(How),为什么这样做(Why)?
在“图灵测试”中,机器的目标是让人分辨不出是机器还是人在作答,并非以回答正确作为检验标准。从这个角度看,对话系统比问答系统更“简单”。
文本问答系统
问题理解
问题理解的核心是理解用户在“问什么”——一方面理解问的是什么事情,另一方面理解问题是什么类型。由于一个问题可能有多种不同问法,问答系统还需要进行适当的扩展,以便找到所有相似的问法。
问题理解的方法:
- 模板匹配策略:优点是易于理解和编写;缺点:形式固定,对于千变万化的自然语言不容易灵活适应。
- 语义分析技术:优点是可以较准确地分析出句子及其各类变种,容错性好。缺点是自然语言处理技术要求的技术储备较多,门槛高,未必适合小规模系统的快速开发和部署。
知识检索
知识库既可以由人工整理成结构化的数据,又可以以非结构化的方式存储以便后期检索。
非结构化信息,通常是指没有或很少标注的整篇文档组成的集合。在这些文档中,信息蕴含在文本中,并没有组织成实体、属性这样的结构。这时我们可以借助信息检索技术挖掘与问题相关的信息。最直观的理解便是使用搜索引擎。
结构化知识,主要有百科类知识和关系类知识(本体)/知识图谱。
答案生成
问答系统检索到的信息,如果结构化特性不够强,则还需要进一步地筛选过滤,提取出其中最精准的答案。这对于非结构化信息检索知识来说是必不可少的。
在问题理解步骤中,我们除了理解问题是在“问什么”(提取关键词)之外,还可以理解问题的类型,例如问的是人物还是数值。因此这个信息便可以用来筛选答案。因此,借助自然语言处理技术,我们可以分析答案文本块中的词语,例如命名实体识别、词性标注等,从中筛选出更可能是答案的词语或词组。
社区问答系统
社区问答网站为我们提供了问题以及对应的答案,我们称之为“问题-答案对”,简称“问答对”(question-answer pair)。因此,与前面传统问答系统不同,此时我们已经有了问题和答案之间的联系。我们只需要找到合适的问题,再从这些问题的答案中挑出最合适的,即可完成问答任务。
多媒体问答系统
文本问答系统采用自然语言处理技术理解问题。而对于多媒体形式的问题,我们就要依靠相应的图像处理、模式识别等技术来识别其中的内容。
主题模型
如何能够快速地了解和获取一个文本数据集合中主要覆盖的内容,以及如何分析每个文本文档中所包含的主要语义信息。这个问题本质上是对于文本数据集合提供了内容摘要、语义抽取和语义表示的功能。在目前这个“大数据”的信息时代,主题模型提供了一种建模思路、方法和工具,可以从大规模甚至海量文本集合中抽取主题和主题分布,其生成的结果既可以用来对语料集合进行初步的语义分析,也可以作为其他高级语义分析挖掘任务的“高阶知识”。
主题模型发展:
- 潜在语义分析(Latent Semantic Analysis,LSA)
- 概率主题模型
- 贝叶斯主题模型
- LDA及其相关变种
这部分的理解不是很充分,待后面重读后补充。
个性化推荐系统
GroupLens 系统的贡献:
- 首次提出了基于协同过滤(Collaborative Filtering,CF)来完成推荐任务的思想;
- 是为推荐问题建立了一个形式化的模型;
个性化推荐技术的核心在于“个性化”(Personalize),而“推荐”(Recommendation)只是“个性化”下的一种应用场景,除此之外,我们还可以构建个性化搜索引擎,个性化手机助手等基于个性化技术的应用。
个性化推荐技术及其试图去理解用户的基本思想将作为人工智能的核心环节,在未来智能生活的大潮中发挥重要作用。
个性化推荐的基本问题
推荐系统的输入
包含用户(User)、物品(Item)和评价(Review)三个方面。
- “物品”用来描述一个对象的性质,也经常被称为物品属性(Item Profile);
- “用户”不仅仅可以是一个用户的ID,还可以是用来描述一个用户个性的“用户画像”(User Profile);
- 评价(Review)是联系一个用户与一个物品的纽带,最简单也是最常见的评价是购物网站中用户对某一物品的打分(Rating),此外信息、评论、页面访问情况、页面停留时间等也构成了评价体系的一部分。
推荐系统的输出
一般是一个个性化的“推荐列表”。
个性化推荐的形式化
一个大型的矩阵来形式化描述推荐系统。
矩阵的每一行表示一个用户,每一列表示一个物品,矩阵中的每一个数值表示该用户对该物品的打分,这经常是一个1~5的分值,对应于用户在购物网站中对商品给出的一星到五星的评价,“1”表示该用户对该商品最不满意,“5”则表示该用户对该物品非常满意,如果某用户对某物品没有评分,则对应的矩阵元素值为“0”。视我们所拥有数据的具体情况,每一个用户可能有其对应的用户画像,而每一个物品,也可能有其对应的物品属性。
需要指出的是,这样一个用户-物品评分矩阵往往非常稀疏(Sparse),也就是说该矩阵中往往有大量的“0”值,而只有少量的非零值。
对用户文本评论语料进行个性化推荐的研究目前还较少,但这个方向对了解用户兴趣、发掘用户需求有极其重要的作用,如何充分利用这些数值评分之外的文本信息进行用户建模和个性化推荐具有重要的意义。
推荐系统的三大核心问题
推荐系统所要解决的核心问题主要有三个,分别是预测(Prediction)、推荐(Recommendation)和解释(Explanation)。
- “预测”模块所要解决的主要问题是推断每一个用户对每一个物品的喜好程度,长期以来,其主要手段是根据如上稀疏矩阵中已有的信息(打分或评论)来计算用户在他没打过分的物品上可能的打分或喜好程度。
- “预测”模块所要解决的主要问题是推断每一个用户对每一个物品的喜好程度,长期以来,其主要手段是根据如上稀疏矩阵中已有的信息(打分或评论)来计算用户在他没打过分的物品上可能的打分或喜好程度。
- “解释”模块则对如上所给出的推荐列表中的每一个物品或推荐列表整体给出解释,即为何我们认为这样的一个推荐列表对用户而言是合理的,从而说服用户去查看甚至接受我们给出的推荐。
典型推荐算法浅析
推荐算法的分类
依据推荐方法的不同:
- 基于人口统计学的推荐:用户有可能会喜欢与其相似的用户所喜欢的物品;
- 基于内容的推荐:用户可能会喜欢和他曾经喜欢过的物品相似的物品;
- 基于协同过滤的推荐
- 基于用户的推荐:用户可能会喜欢和他具有相似爱好的用户所喜欢的物品(“相似用户”是利用用户的打分历史记录来进行计算的);
- 基于物品的推荐:用户可能会喜欢与他之前曾经喜欢的物品相似的物品(“相似物品”是通过网络用户对物品的历史评分记录来计算的);
- 基于社交网络关系的推荐:
- 基于模型的推荐:利用历史数据训练得到一个模型,再用此模型进行预测;
- 混合型推荐方法
依据推荐模型构建方式的不同:
- 启发式推荐
- 基于关联规则的推荐
- 基于模型的推荐
- 混合型推荐系统
推荐系统面临的问题
冷启动(Cold-Start)问题是困扰研究界和产业界多年的重要问题,该问题在传统的基于数值化评分的个性化推荐方法中尤为突出,并与数据的稀疏性问题互为因果。
推荐系统中的小众用户(Gray Sheep)问题是限制系统在小众用户上取得较好性能的重要问题。小众用户推荐一般采用混合式的推荐模型来解决,例如最常见的结合内容的和协同过滤的混合式推荐方式,挖掘小众用户在感兴趣的物品上的内容信息,并进一步结合可能取得的相似用户行为信息给出推荐。
个性化推荐的可解释性长期以来是困扰学术界和实际应用的重要问题:让用户理解为什么系统会给出该物品作为推荐而不是其他物品。
推荐系统如何应对恶意攻击(Shilling Attack)也是实际系统中需要解决的重要问题。该问题的被动的解决办法可以是采用基于物品的(Item-based)推荐,因为在恶意攻击的问题上,基于物品的推荐往往能比基于用户的推荐具有更好的鲁棒性,因为作弊者总归是较少数,在计算物品相似度的时候影响较小。
情感分析与意见挖掘
情感分析与意见挖掘,狭义上看前者更偏重于分析喜怒哀乐这些情感,后者更偏重于理解用户表达的意见和观点。然而广义上,在研究界这两个词通常表示相同的研究内容。
句子的主观性跟情感色彩并不等价。
情感词典:在一个很全面的情感词典中,查找句中出现的情感词并将它们的情感倾向合并,即可得到一句话整体的情感倾向。我们有什么办法能自动扩展情感词典呢?通过从已知情感的词语出发,通过词语间的相互联系,探索未知情感的词语,最终完成词典的自动构建过程。
属性-观点对:在观点挖掘任务中,观点的倾向性只是其中一个要素。观点的对象、属性同样重要。例如在舆情分析这一类应用中,仅仅知道观点的褒贬是不够的。如购物网站,一款手机的总体评价只能给人一个粗略的判断,但尚不足以影响人的行为。消费者、商家更需要知道手机的哪个功能是好是坏、是否符合自己需求。
情感分析中最基本的情感分类任务(识别一段文本的情感是褒义、贬义还是中性),有无监督学习(Unsupervised Learning)和有监督学习(Supervised Learning)两种方式。
面向社会媒体大数据的语言使用分析及应用
自然语言处理技术按照处理目标分为几个层次:
- 词汇层。主要是在词汇级别的处理任务,如中文分词、词性标注、命名实体识别等。
- 句法层。主要是在句法级别的处理任务,如针对句子的句法分析、依存分析等。
- 语义层。主要是在语义空间的处理任务,例如语义分析、语义消歧、复述等
- 篇章层。主要是在篇章级别的处理任务,如指代消解、共指消解等。
- 应用层。主要是指利用自然语言处理分析技术完成的应用任务,如文本分类、信息抽取、问答系统、文档摘要、机器翻译,等等。
面向社会媒体的自然语言分析及其应用的发展趋势:
- 自然语言的深度分析。隐含主题模型、情感分析和观点挖掘的相关技术、跨语言分析的机器翻译技术、知识图谱等。
- 跨媒体、跨平台、跨信息源的综合分析。面向社会媒体的分析及其应用,需要将文本内容与其他信息源充分融合,进行跨媒体、跨平台的融合分析,只有充分进行跨媒体、跨平台和跨信息源的综合分析,才能发现人类社会更复杂、更深层的科学规律。
自然语言处理(NLP)在很大程度上与计算语言学(computational linguistics,CL)重叠。
NLP/CL是文本大数据智能的主要研究领域。作为交叉学科,大数据智能也与以下几个方面密切相关:
- 信息检索和数据挖掘领域;
- 人工智能领域;
- 机器学习领域。
如何快速了解某个领域的研究进展?
最后简单说一下快速了解某领域研究进展的经验。你会发现,搜索引擎是查阅文献的重要工具,尤其是谷歌提供的Google Scholar,由于其庞大的索引量,将是我们披荆斩棘的利器。
当需要了解某个领域,如果能找到一篇该领域的最新研究综述,就省劲多了。最方便的方法还是在Google Scholar中搜索“领域名称+survey/review/tutorial/综述”来查找。也有一些出版社专门出版各领域的综述文章,例如NOW Publisher出版的Foundations and Trends系列,Morgan&Claypool Publisher出版的Synthesis Lectures on Human Language Technologies系列等。它们发表了很多热门方向的综述,如文档摘要、情感分析和意见挖掘、学习排序、语言模型等。
如果方向太新还没有相关综述,一般还可以查找该方向发表的最新论文,阅读它们的“相关工作”章节,顺着列出的参考文献,就基本能够了解相关研究脉络了。当然,还有很多其他办法,例如去videolectures.net上看著名学者在各大学术会议或暑期学校上做的tutorial报告,去直接咨询这个领域的研究者,等等。