前言
在前文大语言模型系列-word2vec已经提到word2vec的缺点:
- 为每个词汇表中每个分词静态生成一个对应的词向量表示,没有考虑到语境,因此无法无法处理多义词
ps:先训练一个词嵌入模型,生成词向量表示,然后将生成的词向量输入下游任务新的模型中进行具体NLP任务训练,由于下游任务不再需要使用这些词嵌入模型,因此整个过程计算效率方面通常非常低,如Skip-Gram和GloVe。
ELMo对上述缺点进行了改进。
提示:以下是本篇文章正文内容,下面内容可供参考
一、ELMo的网络结构和流程
基于ELMo的NLP任务分为两个阶段:
- 第一个阶段是预训练,使用在大规模语料库上训练好的Word Embedding,输入ELMo模型中进行预训练
- 第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的词嵌入作为新特征补充到下游任务中
ps:由此可以看出ELMo是一种典型的基于特征融合的预训练模型。
具体的应用流程如下:
- 将句子输入ELMo网络中,这样句子中每个单词在ELMo网络中都能获得对应的三个Embedding;
- 赋予每个Embedding一个权重(这个权重可以由学习得来),然后通过加权求和将三个Embedding整合为一个;
- 将整合后的Embedding作为相应的单词输入,作为新特征给下游任务使用
二、ELMo的创新点
- 采用多层的Bi-LSTM网络以捕捉不同层次的特征
- 通过将token与word embedding对应,可以针对不同的上下文生成不同的词向量
ps:ELMO 的本质思想是:事先用语言模型学好一个单词的 Word Embedding,此时多义词无法区分,不过这没关系。在实际使用 Word Embedding 的时候,单词已经具备了特定的上下文了,这个时候我可以根据上下文单词的语义去调整单词的 Word Embedding 表示,这样经过调整后的 Word Embedding 更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。所以 ELMO 本身是个根据当前上下文对 Word Embedding 动态调整的思路。
总结
ELMo是一种动态词向量算法,它最大的特点就是在大型的语料库里训练一个 biLSTM (双向LSTM模型)。下游任务需要获取单词词向量的时候,可以直接将整个句子输入 biLSTM,利用 biLSTM 的输出作为单词的词向量,这样词向量就能包含上下文语义信息。文章来源:https://www.toymoban.com/news/detail-800782.html
尽管ELMo考虑了上下文,可以针对不同的上下文生成不同的词向量,以表达不同的语法或语义信息,但其仍存在如下缺陷:文章来源地址https://www.toymoban.com/news/detail-800782.html
- 使用向量拼接方式融合上下文特征,这种方式获取的上下文信息效果不如想象中好。
- 特征提取能力弱,训练难且时间长,这也是RNN的本质导致的,极大限制了NLP的应用,直到Transformer出现,NLP迎来爆发式增长。
- 预训练模型(仅用于特征抽取)和实际下游任务模型仍是分开的、非端到端的,训练困难
到了这里,关于大语言模型系列-ELMo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!