文本词向量嵌入方法对比

这篇具有很好参考价值的文章主要介绍了文本词向量嵌入方法对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文本词向量嵌入方法对比

一、文本表示和各词向量间的对比

1、文本表示哪些方法?

下面对文本表示进行一个归纳,也就是对于一篇文本可以如何用数学语言表示呢?

  • 词袋模型(bag-of-words):基于one-hot、tf-idf、textrank等的;
  • 主题模型:LSA(SVD)、pLSA、LDA;
  • 基于词向量的固定表征:word2vec、fastText、glove
  • 基于词向量的动态表征:elmo、GPT、bert

2、怎么从语言模型理解词向量?怎么理解分布式假设?

上面给出的4个类型也是nlp领域最为常用的文本表示了,文本是由每个单词构成的.

谈起词向量:

  • one-hot是可认为是最为简单的词向量,但存在维度灾难和语义鸿沟等问题
  • 通过构建共现矩阵并利用SVD求解构建词向量,则计算复杂度高
  • 而早期词向量的研究通常来源于语言模型,比如NNLM和RNNLM,其主要目的是语言模型,而词向量只是一个副产物
分布式假设

分布式假设也就是在相同的语境或语境中有些词汇可能有相似的含义或意思,即在特定的语境中,一些词汇可以被用来表示类似或相关的概念,而它们的含义可能会相互重叠或交叉。

而由此引申出了word2vec、fastText,在此类词向量中,虽然其本质仍然是语言模型,但是它的目标并不是语言模型本身而是词向量,其所作的一系列优化,都是为了更快更好的得到词向量。

glove则是基于全局语料库、并结合上下文语境构建词向量,结合了LSA和word2vec的优点

3、传统的词向量有什么问题?怎么解决?各种词向量的特点是什么?

上述方法得到的词向量是固定表征的,无法解决一词多义等问题

为此引入基于语言模型的动态表征方法:elmo、GPT、bert。

各种词向量的特点:

(1)One-hot 表示 :维度灾难、语义鸿沟;

(2)分布式表示 (distributed representation) :

  • 矩阵分解(LSA):利用全局语料特征,但SVD求解计算复杂度大;
  • 基于NNLM/RNNLM的词向量:词向量为副产物,效率不高;
  • word2vec、fastText:优化效率高,但是基于局部语料
  • glove:基于全局语料,结合了LSA和word2vec的优点;
  • elmo、GPT、bert:动态特征

4、word2vec和NNLM对比有什么区别?(word2vec vs NNLM)

1)其本质都可以看作是语言模型

2)目标不同

  • 词向量只是NNLM一个副产物;

  • word2vec虽然其本质也是语言模型,但是其专注于词向量本身,因此做了许多优化来提高计算效率

    • 与NNLM相比,词向量直接sum,不再拼接,并舍弃隐层;

    • 考虑到sofmax归一化需要遍历整个词汇表,采用hierarchical softmax 和negative sampling进行优化

      • hierarchical softmax 实质上生成一颗带权路径最小的哈夫曼树,让高频词搜索路劲变小
      • negative sampling更为直接,实质上对每一个样本中每一个词都进行负例采样

5、word2vec和fastText对比有什么区别?(word2vec vs fastText)

1)都可以无监督学习词向量, fastText训练词向量时会考虑subword;

2) fastText还可以进行有监督学习进行文本分类,其主要特点:

  • 结构与CBOW类似,但学习目标是人工标注的分类结果;
  • 采用hierarchical softmax对输出的分类标签建立哈夫曼树,样本中标签多的类别被分配短的搜寻路径;
  • 引入N-gram,考虑词序特征;
  • 引入subword来处理长词,处理未登陆词问题;

6、glove和word2vec、 LSA对比有什么区别?(word2vec vs glove vs LSA)

1)glove vs LSA

  • LSA(Latent Semantic Analysis)可以基于co-occurance matrix构建词向量,实质上是基于全局语料采用SVD进行矩阵分解,然而SVD计算复杂度高;
  • glove可看作是对LSA一种优化的高效矩阵分解算法,采用Adagrad对最小平方损失进行优化;

2)word2vec vs glove

  • word2vec是局部语料库训练的,其特征提取是基于滑窗的;而glove的滑窗是为了构建co-occurance matrix,是基于全局语料的,可见glove需要事先统计共现概率;因此,word2vec可以进行在线学习,glove则需要统计固定语料信息。
  • word2vec是无监督学习,同样由于不需要人工标注;glove通常被认为是无监督学习,但实际上glove还是有label的,即共现次数。
  • word2vec损失函数实质上是带权重的交叉熵,权重固定;glove的损失函数是最小平方损失函数,权重可以做映射变换。
  • 总体来看,glove可以被看作是更换了目标函数和权重函数的全局word2vec

7、 elmo、GPT、bert三者之间有什么区别?(elmo vs GPT vs bert)

之前介绍词向量均是静态的词向量,无法解决一次多义等问题。

下面介绍三种elmo、GPT、bert词向量,它们都是基于语言模型的动态词向量。

从几个方面对这三者进行对比:

(1)特征提取器:elmo采用LSTM进行提取,GPT和bert则采用Transformer进行提取。很多任务表明Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer可采用多层,并行计算能力强。

(2)单/双向语言模型

  • GPT采用单向语言模型,elmo和bert采用双向语言模型。但是elmo实际上是两个单向语言模型(方向相反)的拼接,这种融合特征的能力比bert一体化融合特征方式弱。
  • GPT和bert都采用Transformer,Transformer是encoder-decoder结构,GPT的单向语言模型采用decoder部分,decoder的部分见到的都是不完整的句子;bert的双向语言模型则采用encoder部分,采用了完整句子。

二、深入解剖word2vec

1、word2vec的两种模型分别是什么?

word2Vec 有两种模型:CBOWSkip-Gram:

  • CBOW 在已知 context(w) 的情况下,预测 w
  • Skip-Gram在已知 w 的情况下预测 context(w)

与NNLM相比,word2vec的主要目的是生成词向量而不是语言模型,在CBOW中,投射层将词向量直接相加而不是拼接起来,并舍弃了隐层,这些牺牲都是为了减少计算量,使训练更加高效。

2、word2vec的两种优化方法是什么?它们的目标函数怎样确定的?训练过程又是怎样的?

不经过优化的CBOW和Skip-gram中 ,在每个样本中每个词的训练过程都要遍历整个词汇表,也就是都需要经过softmax归一化,计算误差向量和梯度以更新两个词向量矩阵(这两个词向量矩阵实际上就是最终的词向量,可认为初始化不一样),当语料库规模变大、词汇表增长时,训练变得不切实际。为了解决这个问题,word2vec支持两种优化方法:hierarchical softmaxnegative sampling。此部分仅做关键介绍,数学推导请仔细阅读《word2vec 中的数学原理详解》。

(1)基于hierarchical softmax 的 CBOW 和 Skip-gram

hierarchical softmax 使用一颗二叉树表示词汇表中的单词,每个单词都作为二叉树的叶子节点。对于一个大小为V的词汇表,其对应的二叉树包含V-1非叶子节点。假如每个非叶子节点向左转标记为1,向右转标记为0,那么每个单词都具有唯一的从根节点到达该叶子节点的由{0 1}组成的代号(实际上为哈夫曼编码,为哈夫曼树,是带权路径长度最短的树,哈夫曼树保证了词频高的单词的路径短,词频相对低的单词的路径长,这种编码方式很大程度减少了计算量)。

(2)基于negative sampling的 CBOW 和 Skip-gram

negative sampling是一种不同于hierarchical softmax的优化策略,相比于hierarchical softmax,negative sampling的想法更直接——为每个训练实例都提供负例。

三、深入解2剖bert(与elmo和GPT比较)

bert的全称是Bidirectional Encoder Representation from Transformers,bert的核心是双向Transformer Encoder

1、为什么bert采取的是双向Transformer Encoder,而不叫decoder?

BERT Transformer 使用双向self-attention

而GPT Transformer 使用受限制的self-attention,其中每个token只能处理其左侧的上下文

双向 Transformer 通常被称为“Transformer encoder”,而左侧上下文被称为“Transformer decoder”,decoder是不能获要预测的信息的。

2、elmo、GPT和bert在单双向语言模型处理上的不同之处?

在上述3个模型中,只有bert共同依赖于左右上下文。

elmo使用的是经过独立训练的从左到右和从右到左LSTM的串联拼接起来的,不是双向。

而GPT使用从左到右的Transformer,实际就是“Transformer decoder”。

3、bert构建双向语言模型不是很简单吗?不也可以直接像elmo拼接Transformer decoder吗?

BERT 的作者认为,这种拼接式的bi-directional 仍然不能完整地理解整个语句的语义

更好的办法是用上下文全向来预测[mask],也就是用 “能/实现/语言/表征/…/的/模型”,来预测[mask]。

BERT 作者把上下文全向的预测方法,称之为 deep bi-directional

4、为什么要采取Marked LM,而不直接应用Transformer Encoder?

我们知道向Transformer这样深度越深,学习效果会越好。可是为什么不直接应用双向模型呢?因为随着网络深度增加会导致标签泄露。

深度双向模型比left-to-right 模型或left-to-right and right-to-left模型的浅层连接更强大。遗憾的是,标准条件语言模型只能从左到右或从右到左进行训练,因为双向条件作用将允许每个单词在多层上下文中间接地“see itself”。

为了训练一个深度双向表示(deep bidirectional representation),研究团队采用了一种简单的方法,即随机屏蔽(masking)部分输入token,然后只预测那些被屏蔽的token。论文将这个过程称为“masked LM”(MLM)。

5、bert为什么并不总是用实际的[MASK]token替换被“masked”的词汇?

虽然这确实能让团队获得双向预训练模型,但这种方法有两个缺点。

首先,预训练和finetuning之间不匹配,因为在finetuning期间从未看到[MASK]token。

为了解决这个问题,团队并不总是用实际的[MASK]token替换被“masked”的词汇。相反,训练数据生成器随机选择15%的token。例如在这个句子“my dog is hairy”中,它选择的token是“hairy”。

然后,执行以下过程:

数据生成器将执行以下操作,而不是始终用[MASK]替换所选单词:

  • 80%的时间:用[MASK]标记替换单词,例如,my dog is hairy → my dog is [MASK]
  • 10%的时间:用一个随机的单词替换该单词,例如,my dog is hairy → my dog is apple
  • 10%的时间:保持单词不变,例如,my dog is hairy → my dog is hairy. 这样做的目的是将表示偏向于实际观察到的单词。

Transformer encoder不知道它将被要求预测哪些单词或哪些单词已被随机单词替换,因此它被迫保持每个输入token的分布式上下文表示。

此外,因为随机替换只发生在所有token的1.5%(即15%的10%),这似乎不会损害模型的语言理解能力。

使用MLM的第二个缺点是每个batch只预测了15%的token,这表明模型可能需要更多的预训练步骤才能收敛。团队证明MLM的收敛速度略慢于 left-to-right的模型(预测每个token),但MLM模型在实验上获得的提升远远超过增加的训练成本。

bert模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation文章来源地址https://www.toymoban.com/news/detail-629528.html

到了这里,关于文本词向量嵌入方法对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习6:自然语言处理-Natural language processing | NLP

    目录 NLP 为什么重要? 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 “语言理解是人工智能领域皇冠上的明珠” 比尔·盖茨 在人工智能

    2024年02月11日
    浏览(68)
  • 【自然语言处理】【深度学习】NLP中的N-gram理解

    N-gram是自然语言处理(NLP)中的一个概念,它描述的是文本中连续的n个项(通常是单词或字符)。这个概念主要用于语言建模和文本分析中。 具体来说: Unigram (1-gram): 包含一个单词的序列,例如句子中的单个单词。 Bigram (2-gram): 包含两个相邻单词的序列。例如,在句子 “

    2024年01月25日
    浏览(57)
  • 深度学习处理文本(NLP)

    深度学习处理文本主要涉及到自然语言处理(NLP)领域。随着深度学习技术的发展,NLP领域已经取得了很大的进展。以下是深度学习在处理文本中的一些主要应用和技术: 词嵌入(Word Embeddings): 词嵌入是将词汇表中的单词映射到稠密的向量,常用的方法有Word2Vec, GloVe和Fas

    2024年02月11日
    浏览(39)
  • AI实践与学习1_NLP文本特征提取以及Milvus向量数据库实践

    随着NLP预训练模型(大模型)以及多模态研究领域的发展,向量数据库被使用的越来越多。 在XOP亿级题库业务背景下,对于试题召回搜索单单靠着ES分片集群普通搜索已经出现性能瓶颈,因此需要预研其他技术方案提高试题搜索召回率。 现一个方案就是使用Bert等模型提取试

    2024年01月24日
    浏览(48)
  • 自然语言处理 Paddle NLP - 词向量应用展示

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月08日
    浏览(62)
  • 【自然语言处理】【深度学习】文本向量化、one-hot、word embedding编码

    因为文本不能够直接被模型计算,所以需要将其转化为向量 把文本转化为向量有两种方式: 转化为one-hot编码 转化为word embedding 在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示词典的数量。 即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典

    2024年01月24日
    浏览(57)
  • 自然语言处理NLP:LTP、SnowNLP、HanLP 常用NLP工具和库对比

    常见NLP任务 Word Segmentation 分词 – Tokenization Stem extraction 词干提取 - Stemming Lexical reduction 词形还原 – Lemmatization Part of Speech Tagging 词性标注 – Parts of Speech Named entity recognition 命名主体识别 -NER Chunking 分块 -Chunking 语音识别 :也称为语音转文本,用于将语音数据以可靠的方式转

    2024年02月07日
    浏览(41)
  • 自然语言处理 Paddle NLP - 检索式文本问答-理论

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月11日
    浏览(56)
  • 【自然语言处理(NLP)】基于ERNIE语言模型的文本语义匹配

    作者简介 :在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC)志愿者,以及编程爱好者,期待和大家一起学习,一起进步~ . 博客主页 : ぃ灵彧が的学习日志

    2024年02月10日
    浏览(63)
  • 自然语言处理 Paddle NLP - 文本翻译技术及应用-理论

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包