transformer、bert总结

1、transformer
其实transformer最重要的就是,输入的是什莫,输出是什么,主要的组成部分是什么?
现在明白一点输入和另外一个的输入其实相差一位,output主要是为了训练的时候,让下一个知道之前都发生了什么,让下一个输入知道上一输出的内容,为了充分学习这一句话。output是最主要的就是它具有掩蔽模块就是为了掩盖以后的,从而达到比第一个input少知道一点东西。
在这里插入图片描述
2.bert
bert其实是transformer的复合体,做重要的有两个事情:输入向量的变换、与预训练任务。
①输入的向量
语义向量(字向量)、片段向量(文本向量)、位置向量。
语义向量:指的就是具体的词
片段向量:指的就是词在哪个句子中(可以通过训练得到)
位置向量:指的就是词在句子的位置
在这里插入图片描述
②预训练任务:NSP,mlm
BERT实际上是一个语言模型。语言模型通常采用大规模、与特定NLP任务无关的文本语料进行训练,其目标是学习语言本身应该是什么样的,这就好比我们学习语文、英语等语言课程时,都需要学习如何选择并组合我们已经掌握的词汇来生成一篇通顺的文本。回到BERT模型上,其预训练过程就是逐渐调整模型参数,使得模型输出的文本语义表示能够刻画语言的本质,便于后续针对具体NLP任务作微调。为了达到这个目的,BERT文章作者提出了两个预训练任务:Masked LM和Next Sentence Prediction。

mlm:Masked LM的任务描述为,给定一句话,随机抹去这句话中的一个或几个词,要求根据剩余词汇预测被抹去的几个词分别是什么.(像极了完形填空)
在这里插入图片描述
这不就是我们高中英语常做的完形填空么!所以说,BERT模型的预训练过程其实就是在模仿我们学语言的过程。具体来说,文章作者在一句话中随机选择15%的词汇用于预测。对于在原句中被抹去的词汇,80%情况下采用一个特殊符号[MASK]替换,10%情况下采用一个任意词替换,剩余10%情况下保持原词汇不变。这么做的主要原因是:在后续微调任务中语句中并不会出现[MASK]标记,而且这么做的另一个好处是:预测一个词汇时,模型并不知道输入对应位置的词汇是否为正确的词汇(10%概率),这就迫使模型更多地依赖于上下文信息去预测词汇,并且赋予了模型一定的纠错能力。

Next Sentence Prediction的任务描述为:给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后,如下图所示。
在这里插入图片描述
在这里插入图片描述
当年大学考英语四六级的时候,大家应该都做过段落重排序,即:将一篇文章的各段打乱,让我们通过重新排序把原文还原出来,这其实需要我们对全文大意有充分、准确的理解。Next Sentence Prediction任务实际上就是段落重排序的简化版:只考虑两句话,判断是否是一篇文章中的前后句。在实际预训练过程中,文章作者从文本语料库中随机选择50%正确语句对和50%错误语句对进行训练,与Masked LM任务相结合,让模型能够更准确地刻画语句乃至篇章层面的语义信息。

BERT模型通过对Masked LM任务和Next Sentence Prediction任务进行联合训练,使模型输出的每个字/词的向量表示都能尽可能全面、准确地刻画输入文本(单句或语句对)的整体信息,为后续的微调任务提供更好的模型参数初始值。

参考:https://blog.csdn.net/m0_37477175/article/details/106578098?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161827474516780269895046%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161827474516780269895046&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-106578098.first_rank_v2_pc_rank_v29&utm_term=bert

猜你喜欢

转载自blog.csdn.net/weixin_44885180/article/details/115663513
今日推荐