在词袋模型(Bag-of-Words, BoW) 中,每个文档被表示为一个固定长度的向量。向量的每个位置对应于词汇表中的一个词,向量的值为该词在文档中出现的次数(或其他统计量,如词频-逆文档频率(TF-IDF))。假设有两个文档,文档1: "I love machine learning."和文档2: "I love machine learning. Machine learning is great.":
词袋模型没有考虑词的顺序和上下文信息,N-gram模型通过考虑文本中连续 n 个词的序列来捕捉词的顺序和局部上下文信息。n-gram 可以是 unigram(1-gram),bigram(2-gram),trigram(3-gram)等。假设有一个文档:"I love machine learning.":
词向量(词嵌入,Word Embedding) 是将每个词都映射到低维空间上的一个稠密向量(Dense Vector)。这里的低维空间上的每一维也可以看作是中一个主题模型中的一个主题,只不过不像主题模型中那么直观(不具备可解释性)。词向量在学习时考虑到了当前词的上下文信息,以Word2Vec为例,它实际上是一种浅层的神经网络模型(输入层、映射层、输出层),它有两种网络结构,分别是CBOW和Skip-gram,参考下图:不管是CBOW还是Skip-gram,都是通过最大化上下文词出现的概率来进行模型的优化。其他常见的词嵌入方法,还有GloVe(Global Vectors for Word Representation)、FastText。词向量的几何性:词嵌入的向量空间具备几何性,因此允许使用向量之间的距离和角度来衡量相似性。常用的相似度度量包括:
上面介绍的词向量相加求平均获取句向量的方法,缺点之一是没有考虑到句子中不同词之间的重要性差异,因为所有词都是一样的权重。在实际使用过程中,有尝试使用tf-idf对词进行加权,但是效果提升有限。2016年提出来SIF加权算法,使用随机游走来推算句子的生成概率。2018年发表在ACL的USIF(「Unsupervised Random Walk Sentence Embeddings」https://aclanthology.org/W18-3012.pdf)算法,是对SIF加权算法的改进。感兴趣的可以看看「这一篇」https://zhuanlan.zhihu.com/p/263511812。
将文本输入Bert模型中后,通常使用最后一个隐藏层中[CLS]标记对应的向量或对最后一个隐藏层做MeanPooling,来获取该文本对应的向量表示。为什么Bert向量表示不能直接用于相似度计算?核心原因就是:各向异性(anisotropy)。各向异性是一个物理学、材料科学领域的概念,原本指材料或系统在不同方向上表现出不同物理性质的现象。作为吃货的我们肯定非常有经验,吃肉的时候顺纹切的肉比横纹切的肉更有嚼劲。类似的还有木头的顺纹和横纹的抗压和抗拉能力也不同,石墨单晶的电导率在不同方向差异很大。各向异性在向量空间上的含义就是分布与方向有关系,而各向同性就是各个方向都一样,比如二维的空间,各向异性和各向同性对比如下(左图为各向异性,右图为各向同性)。Bert的各向异性是指:“Anisotropic” means word embeddings occupy a narrow cone in the vector space.
简单解释就是,词向量在向量空间中占据了一个狭窄的圆锥形体。Bert的词向量在空间中的分布呈现锥形,研究者发现高频的词都靠近原点(所有词的均值),而低频词远离原点,这会导致即使一个高频词与一个低频词的语义等价,但是词频的差异也会带来巨大的差异,从而词向量的距离不能很好的表达词间的语义相关性。另外,还存在高频词分布紧凑,低频词的分布稀疏的问题。分布稀疏会导致区间的语义不完整(poorly defined),低频词向量训练的不充分,从而导致进行向量相似度计算时出现问题。不只是Bert,大多数Transformer架构的预训练模型学习到的词向量空间(包括GPT-2),都有类似的问题(感兴趣的可以去看「Gao et al. 2019」https://arxiv.org/abs/1907.12009,「Wang et al. 2020」https://openreview.net/pdf?id=ByxY8CNtvr,「Ethayarajh, 2019」https://arxiv.org/abs/1909.00512):各项异性的缺点: 一个好的向量表示应该同时满足alignment和uniformity,前者表示相似的向量距离应该相近,后者就表示向量在空间上应该尽量均匀,最好是各向同性的。各向异性就有个问题,那就是最后学到的向量都挤在一起,彼此之间计算余弦相似度都很高,并不是一个很好的表示。各项异性问题的优化方法: