研究表示学习跟人工智能很多领域研究对象有关,这些领域包括自然语言处理,数据挖掘,社会网络分析,多媒体处理等等,他们研究的对象包括 :
- 网络结构:用户及其关系和行为
- 媒体信息:文本,视频,语音等信息
- 知识图谱:结构化的世界知识
那么研究自然语言处理领域的人会关注与现实世界相关的非常多的不同种类的数据的对象,当面向这些数据的对象做数据挖掘的时候,有一个非常严峻的挑战,就是这些信息本身是多源异构的,很难建立它们之间的语义关联,解决这个问题的方法与表示学习有关。
在传统的数据挖掘或者说相关的领域里面,大多数数据对象表示方案是基于符号的表示,这种思想可以用一个简单的例子来举例:
star[0,0,0,0,0,0,0,0,1,0,0,0,0,…]
sun[0,0,0,0,0,0,0,1,0,0,0,0,0,…]
上面是来自自然语言处理里关于词的表示,在信息检索或者自然语言处理里,一个非常基础的关于词表示,就是one-hot representation.
基本思想是每一个词都用一个和这个词汇表相等长度的向量来表示在向量里,只有某一维是1,然后其他维都是零,通过这种方式就可以把现实世界语言中的每一不同的词都能用不同向量表示。
实际如果熟悉信息检索的Bag of words模型,就会发现one-hot representation或者基于符号的词汇表示方案是Bag of words模型的一个基础,Bag of words模型现在已经广泛应用在各大商业的搜索引擎当中,并且取得了非常好的效果,但是这种基于符号的方案存在非常严重的问题,就是它假设对象之间在语义上完全没有任何关系,如上面的star和sun,如果计算它们的相似度,我们会认为它们之间的相似度是0,但这肯定是不符合实际。
为了解决这个问题,随着深度学习的发展,一种新的数据表示方案被提出来,并且在各个领域取得了比较好的成绩,这种方案就叫做分布式表示(distributional representation)。
分布式表示基本思想是把研究的对象表示成一个低维的稠密的实质的向量,那么这种向量的物理意义就是在于它能够把所有的这些对象都能够表示在一个语义的空间里。
在这个语义空间里,这些对象之间的距离反映了他们互相之间的语义的关系,这是分布式表示的基本思想。
那么为什么要叫分布式表示或者说它为什么会取这样名字?
我的理解是在低维向量里这个对象的语义,是分布在低维向量里的每一维里,换句话说就是低维向量里的每一维被单独取出来,它其实是没有任何的物理含义,只有当这些维集合在一起形成一个向量,它能够反映对象在空间里的具体位置,那么他才能够真正的反映对象本身的语义信息,这就是分布式表示的一个基本的思想。 分布式表示在自然语言处理领域里面具有非常多的优势:
第一:能够解决大数据自然语言处理的数据稀疏的问题。
假设在上面的语义空间里,我们能够用大数据里面的高频的数据,经过学习语义的空间,就可以用语义的空间去表示那些相对低频的数据,就形成了使用大数据中的高频部分的语义信息去帮助表示低频数据的语义信息,这样就一定程度上解决了大数据自然语言处理的数据稀疏的问题。
第二:实现跨领域,跨对象的知识迁移
自然语言处理里一个非常大的特点是会关注非常多不同的对象,譬如说自然语言处理里会关注词汇,句子,文档,知识等多个不同的对象,如果要对这些对象进行各种各样的自然语言处理的任务,往往要计算这些不同对象之间的语义关系,如果我们能够把这些不同的对象通过某种方式映射到同一个语义空间里面,就能够更好的去实现跨领域跨对象的知识迁移,譬如在自然语言处理里,一个任务是做文档的关键词提取,它本质上是计算词汇和文档之间的相似度,在做关键句子的抽取或者是做文档的摘要,其实就是在做文档和句子之间的语义相似度之间的计算。这些任务都可以用分布式表示的方法。
第三:提供多任务的统一底层表示
自然语言处理里面对于同一个输入有非常多不同的任务,如对同一个句子,可以做词性标注,命名实体识别,句法分析等等任务。如果通过分布式的表示可以给句子提供统一的底层的表示,就能够更好的支持多任务的学习。这对自然语言处理有非常大的优势。
这种分布式表示能够给自然语言处理提供更好的工具,进行关于语言对象的深层语义的分析。 过去我们更多的是通过计算词汇或者句子互相之间表层的,同线的,统计的各种关系,然后计算他们这种关联的语义关系,如果能够对这些语言对象背后的语义信息进行深层的表示,就有可能进行更加复杂的语义关系的计算,比如因果关系等等。