论文阅读_嵌入_综述
1 | 英文名:A Survey of Text Representation and Embedding Techniques in NLP |
读后感
这是一篇针对文本表示的综述性论文。相比之下,这篇论文的深浅度刚刚好,逻辑完整,详略得当,新旧技术兼具。文中提供了例子、表格和公式,但都很简单。我觉得作者有意避免晦涩难懂,试图用简单的语言把问题讲清楚。
调查涵盖了 1970 年代及以后的文本表示历史,从规则方法到统计方法,再到深度学习方法。列出了它们的表示形式、解决的问题、限制和应用,最后还涉及一些多模态技术。这篇论文不仅停留在理论层面。尤其是对于对 NLP 有所了解的读者,可以利用这篇论文将分散的知识统一起来,将书本上的公式和现实中的方法结合起来。
模型并不是越新越好,需要考虑使用场景。例如,在聊天场景中,是讨论一个复杂的问题,还是只查找一个关键词;是否需要支持上下文;上下文是多轮对话还是一句话和一个文档;在什么情况下需要支持同义词。
摘要
目标: 研究如何将输入文本(原始数据)表示为数值格式(向量或矩阵)。
方法: 通过回顾从基于规则、统计方法到基于神经网络表示的发展历程,对各种嵌入类型进行调查。
结果: 论文展示了 NLP 领域从仅能理解零散信息发展到能够全面理解文本各主要方面的演变过程。
I. 引言
文本表示主要基于下述三种方法:
基于规则的方法,如 CFG(Context Free Grammar)上下文自由语法,常使用复杂嵌套的 if-then 规则实现。
基于统计的方法,常与词频相关,如 OneHot、TF/IDF 和词袋(BoW)。但由于维度和算力的限制,这种方法在大规模数据集上表现不佳。为了降维,常用 DRT(Dimensionality Reduction Technique),具体方法包括特征选择(如 top-K)和维度变换(线性/非线性)。这种方法不适用于生成任务。
如图 -1 所示,作者把所有方法纳中到一张图中,读者可以了解每种技术在整体技术地图中的位置,以及和其它技术的关系。正文有 24 页,内容比较多,这里给大家做个导读,太基本的 NLP 技术不展开了,早期技术尽量说明白,主要集中在目前常用的技术上。章节号与论文正文一致。
II. 正则表达式
NLP 领域的最初发展主要局限于与上下文无关的搜索引擎和问答系统。
早期的方法依赖于硬编码的正则表达式和复杂的逻辑规则,如嵌套的 if-else 语句。这些模式用于在文档中搜索特定序列,并按频率对文档进行排名。这种方法有严格的响应规则。为了克服以上限制,引入了模糊表达式,以执行近似匹配而非精确匹配。
在正则表达式中,考虑了单词的顺序和匹配(精确/近似),但忽略了单词的含义、上下文和频率。因此,其深度理解能力有限,对于需要语言语义理解的应用程序(如文本摘要、机器翻译等)表现不佳。
(小编说:以目前的技术来看,这是一种比较早期的方法,只适用于简单场景和垂直领域,虽然需要大量人工经验,但确实高效。)
III. 离散向量空间
单词使用数字向量表示。将任意长度的文档简化为固定长度的数字列表。可以使用线性代数运算来操作向量并计算距离和相似性。
统计方法大致可分为三部分:(1)离散向量空间,(2)稠密向量空间,(3)连续向量空间。
这里的“离散”指的是矩阵中的值是不连续的,比如:0, 1, 计数值等。
(小编说:基于统计的方法相对比较传统,但在很多领域还是够用的,甚至可以说还是主流技术。统计方法一般都基于一个数据集计算得来,扩展性和通用性不是很强,对于一词多义、一义多词及上下文支持都不是很好。但这种方法计算量相对较小。)
A. OneHot 嵌入(OHE)
构建给定语料库的词汇词典,待编码的句子是:he started driving when he was 22 years old。词表是横轴,单词在词表中出现的位置置 "1"。这种表示还保留了句子中单词的顺序,并且不会丢失原文中的任何信息。
词向量间的距离只与字母顺序有关,与含义无关。存储也相对稀疏,占空间大,比规则好不了多少。
(小编说:这是一种比较古老的方法,现在用得较少了)
B. 词袋 BOW
语料库由一个矩阵表示,其中每行代表一个句子,每列代表词汇表中的一个唯一单词。矩阵的行数等于语料库中的句子数,列数等于语料库的词汇量。矩阵中的值可以表示该词是否出现,也可以表示出现次数。
与 OHE 相比,它不考虑句中词序,矩阵的行大小要小得多,但同样是稀疏的,其中大多数值为 0。此外,向量之间的距离与词义无关。优点在于,可以通过点积计算句子的相似性分数,从而查找句子或文档之间的相似度,但它不支持同义词。
这种方法常用于垃圾邮件过滤器和情绪分析应用程序。
(小编说:相对规则的好处是无需手动编写规则。单纯使用 BOW 的情况很少,它更多地被视为后续算法的基础。)
C. 基于类别的嵌入(CBE)
与动态识别类别相比,这里预先对类别进行确定并硬编码。列数等于语料库中可能的类别数,矩阵的行数等于语料库中的句子或文档数。CBE 的维度显著降低,因为类别数量远小于词汇表大小。因此,矩阵表示是密集的。然而,编纂这样的词典是劳动密集型的。
遍历每个文档,通过查看用户定义的词典来找到每个单词的极性,并在矩阵中递增给定文档的相应极性或类别计数(统计某一词性相关词的计数)。
这种方法主要用于处理短句。例如,评论情绪分析、垃圾邮件检测、查找喷子消息、测量聊天消息中的情绪或友善程度等。在短句中,词序的改变不会彻底改变意思。
(小编说:也很常用的一种方法,就是给句子或者文章打标签。它能很好地提升检索效率,也是数据与知识结合的一种方法。可以说,贴标签和定性是非常增效的方法。)
D. 多词标记 N-gram
添加一个窗口来捕获单词之间的顺序。这里的“n”表示窗口或上下文的大小。它可以用来捕捉一组特定单词的出现情况。例如,“不喜欢”可以被视为一个单词。当这些词一起出现时,它们的含义可能与单独出现时完全不同。
N-gram 不一定能够捕捉到完整的上下文信息,但它确实成功地捕捉到了单词之间的顺序。N-gram 通常用于文档分类、聚类和情感分析等应用中,因为它们能够捕捉文档中经常出现的重要词组,也有以字符为单位的 n-gram,用于模糊处理拼写错误和不同的词形。
(小编说:考虑到词间顺序,理论上 N-gram 优于词袋。随着 N 的增加,词表可能会变得很大;通过频率筛选出的高频组合也不一定是有意义的组合。由于这些限制,目前很少单独使用这种方法,常常作为后续路径中的一个步骤)。
E. 术语频率嵌入 TF Embedding
计数的 BoW 方法考虑了单词的频率,但它没有考虑单词在文档或语料库中相对于其他单词的重要性。计算方法是:一个特定词在文档中出现的次数除以文档中的总词数。得到的矩阵是文档术语矩阵,其中行表示句子或文档,列表示语料库中的唯一单词。
通过查看各个向量之间的余弦角来计算查询与文档之间或文档之间的相似性分数。如果两个向量的余弦相似度接近 1,则意味着这些文档按比例使用了相似的单词。同一组单词(完全匹配)需要以相似的比例出现,以提高它们的相似性分数。另外,它也不考虑同义词。
(小编说:TF 一般与 IDF 结合使用)
F. TF-IDF Embedding
在考虑词频(TF)与所在文档关系的基础上,还需要关注词在语料库中其他文档的重要性。例如,“的”这个词在所有文档中都很高频,但意义不大。我们更应该关注那些在特定文档中既高频又独特的单词。
为减少常见词的影响,可以使用逆文档频率(IDF,Inverse Document Frequency)。
其中 t 是特定的词语,D 是文档集合,N 是文档数,上述公式的分子是包含 t 的文档数。
(小编说,TF-IDF 也是目前常用的算法之一,优于 BOW 和 TF。BM25 可以算是 TF-IDF 的进化版本,还考虑了词频饱和和文档长度。)
G. 语言的超空间模拟(HAL)
这是一种基于共现的方法。它通过创建高维向量空间来捕捉词语之间的语义关系和上下文关联。
HAL 中的共现矩阵是一个方阵,其中行和列等于词汇表大小 |V|。上下文窗口跨越了几个单词。矩阵中的每个元素表示两个词在窗口内共同出现的次数或加权共现频率。HAL 模型直观地捕捉了词语的上下文关系。
缺点是它对窗口大小敏感,非常稀疏,且只能考虑窗口长度内的共现。
(小编说:我觉得这种方法有点像 n-gram 的扩展版本,相对于其它统计方法,它考虑到了上下文,但不如深度学习方法。现在实践中也没太见过直接使用,但可作为筛选关键字特征的方法)。
IV. 降维技术
这一章介绍的是对离散向量空间的降维技术(Dimensionality Reduction Techniques),可以看作是对上一章内容的扩展。降维技术主要有两种类型:特征选择和特征转换。
(小编说:这些方法一般都可以通过调用库来实现,只需大概了解其原理,具体细节请参见论文正文)
A. 特征选择
去掉了一些特征,主要有四种方法:文档频率(DF)、术语频率方差(TFV)、平均 TF-IDF(TI)和信息增益(IG)。基本思路是排序后,选择前 k 个或大于阈值的特征保留。
(小编说:在机器学习中,经常需要从文本中提取一些重要的关键词作为特征。这里提供了多种提取和筛选方法,自己肯定想不出来,另外这些方法选出的特征具有实际意义。)
B. 特征变换
在特征变换中,将原来的高维空间投影到低维空间上。较低维度的每个维度都是原始空间中维度的线性或非线性组合。具体方法包括:
- 潜在语义索引(LSI):其核心思想是通过奇异值分解对词项 - 文档矩阵进行降维。
- 概率潜在语义索引(PLSI):引入概率模型,尝试找到一些隐藏的主题。
- 潜在狄利克雷分配(LDA):使用贝叶斯推断方法,提供更严格和完善的概率模型。它允许文档在不同程度上展示多个主题,使用非线性统计算法对单词进行分组,更精确,但训练时间更长。
- 独立成分分析(ICA):将多变量信号分解为统计上独立的成分。
- 随机索引(RI):通过累积上下文中的词向量,构建词语或文档的语义向量。
(小编说:这些方法可以看作是主成份分析的各种衍生。它们将文档抽象并投射到潜空间中,以更经济的方式描述,如多标签或多主题组合,只是这些标签无法用文字描述。)
V. 概念嵌入
概念嵌入也属于基于统计的方法。
它将文本表示为一组预定的自然概念的加权混合。来自维基百科的概念有助于整合特定领域的世界知识,使语义表示更加细粒度。
当文本被表示为概念的加权向量时,这些向量称为解释向量。每个单词被映射到其出现的概念列表中。语义解释器遍历给定文本中的单词,从索引中检索并合并它们相应的概念条目,将其组合成加权向量。该向量条目反映了相应概念与文本 T 的相关性。
特征生成过程通过对文档文本的上下文分析完成,文档被映射到维基百科或本体概念上以生成特征。
(小编说:这个方法非常有启发性,虽然没有复杂的公式,但实用价值很高,对于大规模知识整合管理分类非常有效。此外,还可以与当前的大语言模型(LLM)结合,将复杂文档映射到人类能够理解的概念组合。这不仅让人更容易接受这些概念,还能将潜在空间中的概念与人类理解的概念联系起来。)
VI. 密度分布嵌入
密度分布嵌入也是一种基于统计的方法。
这种方法不是将单词投影到离散或连续向量空间中,而是使用基于密度的分布式嵌入来表示单词。通过从数据中学习均值和协方差矩阵,该方法能够捕获文本的细微特征。
与仅基于词语出现频率的方法不同,密度分布嵌入通过计算局部密度分布来更精确地表示文本。密度通常是基于词语在其邻域(窗口)中的分布来计算的。通过平滑和降维技术,DDE 可以生成更丰富和细致的文本嵌入向量。
然而,由于是单峰的,这种方法类似于确定性方法,无法捕捉单词的多种含义。后来一些改进方法被提出,以解决这一问题。
(小编说:这种方法相对复杂,sklearn 中支持此方法,可直接调用。尽管与上下文相关,但由于它始终是一种统计方法,其理解力有限且相对复杂。我个人没太见过其具体应用)。
VII. 基于神经网络的嵌入
词嵌入将语言中单词或文本序列表示为实值数值向量。在基于神经网络的方法中,模型自动推导特征,这些特征隐式地表示语言的句法和语义。
基于神经网络的技术大致分为基于特征的嵌入和基于微调的嵌入。基于特征的方法可以生成静态或动态嵌入。静态嵌入是非上下文的,无论上下文如何,嵌入都保持不变。这种嵌入使用浅层网络训练。动态嵌入中,同一单词的嵌入会根据上下文变化,从而解决单词多义性的问题。
(小编说:并不是说新的复杂的一定比旧的简单的好,还是看应用场景)
A. 静态词嵌入
先看看在不同任务中的效果。
1) Word2Vec
参考文献《Efficient estimation of word representations in vector space》(2013) 提出了两种使用前馈神经网络推导嵌入的方法。在连续词袋(CBOW)方法中,给定上下文,它预测目标单词。而在 Skip-gram 方法中,给定单词,它预测上下文。这两种架构都很简单,因为没有使用隐藏层,因此学习嵌入的计算复杂度要低得多。
2) GloVe
GloVe 是一个计数模型,通过全局词共现矩阵对整个词汇表进行统计,捕捉词与词之间的共现关系,并在此基础上进行优化。该方法结合了局部上下文窗口和全局矩阵分解技术,通过优化词共现矩阵的低秩近似来生成词向量。
虽然构建全局词共现矩阵的计算量较大,但训练完成后,可以生成更稳定和一致的词向量。
GloVe 模型还在单词相似性和命名实体识别 (NER) 任务上进行了测试,其性能优于 SVD 和 CBOW。
3) FastText
FastText 的核心原理与 Word2Vec 类似,但它不仅考虑整个词语的表示,还会分析词语的子词(subword)。子词是字符级别的 n-gram 组合,例如单个字符或连续字符二元组等。这种方法使 FastText 能够更好地处理低频词汇,同时捕捉到词语内部的结构信息,如词缀和词根。因此,对于阿拉伯语、德语、英语等基于字母拼写的语言,效果更佳。
B. 动态嵌入
为解决单词在不同上下文中词义不同的问题,
1) Context2Vec (C2V)
C2V 是一个无监督模型,利用双向 LSTM 来学习目标词周围广泛感知上下文的通用(与任务无关)表示。一个 LSTM 从左到右处理输入,另一个从右到左处理。两个网络的参数是独立的,包括两组独立的从左到右和从右到左的词嵌入。两个 LSTM 的输出会被串联起来。
2) CoVe
CoVe 使用神经机器翻译编码器计算上下文化表示。它源自于为机器翻译任务训练的注意力 seq-to-seq 模型的深度 LSTM 编码器。该方法先在机器翻译(MT)任务上训练一个 LSTM 编码器,然后将其转移到 NLP 领域的其他任务中。
英语单词的 GloVe 嵌入被输入到 seq-to-seq 双向 LSTM 模型中。在训练完 MT-LSTM 后,编码器的输出被视为 CoVe。与仅使用 GloVe 的模型相比,(CoVe + GloVe)在所有分类和问答任务上都实现了更高的验证性能。
3) 通用语言微调模型 (ULMFiT)
使用语言建模(LM)任务进行预训练。与机器翻译不同,LM 的数据非常丰富。ULMFiT 提出了一种称为判别微调的新颖微调方法,其中每一层都可以以不同的学习率进行调整,作者还提出了一种渐进解冻技术。这些方法使 ULMFiT 方法能够在不同的数据集中表现良好。
4) 来自语言模型的嵌入 (ELMo)
使用双向 LSTM 模型推导词嵌入。每个标记的上下文表示是从左到右和从右到左的串联。每个单词表示都是整个输入句子的函数。网络使用耦合语言模型(LM)目标进行训练。字符卷积作为内部网络状态的线性函数,从不同层次提取,每个层次都捕捉了不同粒度的语言信息。因此,ELMo 学习的表示比传统词向量更深。较高级别的 LSTM 状态捕获语义和上下文相关方面,而较低级别的 LSTM 状态侧重于句法方面。
5) 生成预训练 (GPT)
使用无监督预训练和监督微调的组合。每个 Transformer 层都提供了更多的好处,因为它有助于提高精度。与 LSTM 相比,Transformer 的注意力记忆有助于迁移。通过对具有长篇连续文本的多样化语料库进行预训练,GPT 模型获得了重要的世界知识,并具备处理长程依赖关系的能力。
6) Transformers 的双向编码器表示 (BERT)
BERT 框架主要有两个步骤——预训练和微调。它采用双向 Transformer 编码器来融合左右上下文,以预测掩码词。随机屏蔽一些令牌,目的是根据这些令牌的上下文来预测其词汇 ID。通过联合条件从左侧和右侧的上下文,预训练一个深度双向 Transformer 编码器表示未标记文本。
与 GPT 不同,GPT 使用从左到右的架构,其中每个令牌只能关注自注意力层中的先前令牌。而在 BERT 中,上下文从左到右都被考虑在内。与 ELMo 相比,ELMo 完成的是独立学习嵌入的浅层串联,而 BERT 使用 MLM 来实现深度双向表示。
7) 统一预训练语言模型 (UNILM)
BERT 显著提高了各种自然语言理解任务的性能,但其双向性使其难以应用于自然语言生成任务。UNILM 提供一个统一的框架来处理文本的理解、生成和推理。
UNILM 使用多任务学习的方法,通过共享模型参数和学习过程来提升模型的效率和泛化能力。多个任务使 UNILM 可以在不同的任务中共享和迁移知识,提高整体的性能和效果。可以同时用于自然语言理解 NLU 和 自然语言生成 NLG 任务。
(小编说:目前大家用得比较多的还是 BERT 和 GPT,GPT 更大更广,BERT 更专,综合模型大小和对前后文的依赖,在词嵌入方面 BERT 好像用得更多一些)
C. 基于微调的嵌入
大多数关于词嵌入实现的研究通常集中在通用领域的文本生成上。而当模型应用于特定领域或任务时,微调效果更佳。
(小编说:这里提到的模型不仅用于嵌入,还支持各种下游任务。模型微调的主要目标是针对特定任务,这也会改善嵌入效果。这里介绍几个与嵌入相关的主要方向。)
1)跨语言嵌入
最近,跨语言方法激增,其中源语言(预训练)和目标语言(微调)是不同的。这种多语言方法导致了跨多种语言的嵌入。经过多语言训练的编码器可以将不同语言的句子编码到相同的嵌入(共享语义)空间中。
这一节介绍了多个模型,它们通过不同的模型结构、选择训练任务以及优化训练策略等方法,提高了模型在多语言支持方面的性能。
2)知识丰富的嵌入
知识丰富嵌入(KEE)是包含来自外部来源(例如本体或知识图谱)的附加信息或知识的词嵌入。这有助于丰富嵌入,并在知识驱动的应用程序(例如实体类型和关系分类与提取)上获得更好的结果。
本节介绍了知识图与大模型相结合的方法。使用知识图谱(KG)生成的知识嵌入(KE)有效地整合了实体及其关系信息。
3)特定于域的嵌入
针对特定领域任务进行模型微调,例如将单词分布从通用领域转移到生物医学领域。在嵌入方面,使模型更好地理解术语和专业语境。以下介绍了如何针对医学领域对 BERT 进行精调。
4)多模态嵌入
通过深度神经网络,集成来自音频、视觉和文本模态的各种信息和特征,以创建更强大且增强的词嵌入。
此节讨论了语音嵌入、图像嵌入和视频嵌入三个方向的模型实现。这不仅实现了语言与其他不同领域的对齐和映射,还考虑到了语言上下文的影响。这些模型多基于 BERT 扩展。
5)特定于语言的嵌入
特定语言的嵌入是在某种特定语言(如中文、法文、俄文)的庞大语料库上训练的单词嵌入。这些嵌入用于捕捉该语言中单词和短语之间的关系。一些实验表明,单一语言模型在自然语言理解(NLU)任务上表现更佳。
(小编说:最直接的例子是我们看到一些中文大型语言模型在中文评测中得分很高。这得益于它们在大量中文标注数据上的训练。对于只需要处理中文的用户来说,这样的模型已经足够用了。)