跟着我一起背NLP算法八股文_bert篇

导读:一提到NLP算法,必须手推bert模型。当小白问起bert与word2vec之间的区别时,如何简单易懂的说明这个问题呢?接下来,我将尝试说明。
首先,word2vec将中文转变为可计算的向量,需要说明的是使用不同语料训练的word2vec不尽相同,需要看自己的任务文本和通用w2v训练使用的文本差距;bert预训练模型则是根据上下文训练出来的词向量,在同一个语料中每个token是不固定的,关于本部分细节可以查看层次softmax和霍尔曼编码相关知识。bert通过预训练,训练神经网络的隐藏层,使用隐藏层权重作为词向量,使用该模型时候就像查字典,每个token对应一个词向量,每次查完字典以后还要回到模型里再计算,这个计算就可以把整个语境计算进去,因此称为语境化的向量,这也就是大家说的bert是结合了语境了的,就是一个词在不同的句子里且在相同的bert模型中,输出的词向量是不一样的。所以说,bert比word2vec更加先进。
(1)为什么bert有3个嵌入层(Embedding),它们如何实现?
首先3个嵌入层分别为Token Embedding、Segment Embedding和Position Embedding。
首先,bert将输入文本中的每一个词(token)送入token embedding层从而将每一个词转换成词向量的形式,但不同于其它模型,bert多了2个嵌入层即segment embedding和position embedding。
首先说一下,token embedding实现过程,输入文本首先进行tokenization处理,此外,2个特殊的token会被插入tokenization的结果的开头([CLS])和([SEP]),它们为后面分类任务和划分句子对服务。
Token Embedding层将每一个wordpiece token转换成768维的向量。
其次,bert使用segment embeddings实现句子对中2个句子的区分。segment embeddings层只有2种向量表示,前一个向量是把0赋给第一个句子中的各个token,后一个向量把1赋给第二个句子的token。
第三,加入position embedding可以让bert理解,不同句子中出现的同一个单词的含义。
总结:bert能够处理最长512个token的输入序列,position embeddings layer实际上是一个大小为(512,768)的lookup表。
第一个嵌入是为了获得词的向量表示;第二个是为了区分句子对中2个句子的向量表示;第三个是为了让bert学习到输入的顺序属性。

Original: https://blog.csdn.net/weixin_42419825/article/details/120319533
Author: lbertj
Title: 跟着我一起背NLP算法八股文_bert篇

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/547903/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球