了解自然语言处理之文本嵌入模型BERT

栏目:素质教育  时间:2023-06-25
手机版

  由于在许多自然语言处理任务上的卓越表现,BERT彻底改变了自然语言处理的方法。

  BERT是Bidirectional Encoder Representations from Transformers的缩写,意为多Transformer的双向编码器表示法,它是由谷歌发布的先进的嵌入模型。BERT是自然语言处理领域的一个重大突破,它在许多自然语言处理任务中取得了突出的成果,比如问答任务、文本生成、句子分类等。BERT成功的一个主要原因是,它是基于上下文的嵌入模型,这是它与其他流行的嵌入模型的最大不同,比如无上下文的word2vec。

  首先,让我们了解有上下文的嵌入模型和无上下文的嵌入模型之间的区别。请看以下两个句子。

  句子A:He got bit by Python(他被蟒蛇咬了)

  句子B:Python is my favorite programming language(Python是我最喜欢的编程语言)

  阅读了上面两个句子后,我们知道单词Python在这两个句子中的含义是不同的。在句子A中,Python是指蟒蛇,而在句子B中,Python是指编程语言。

  如果我们用word2vec这样的嵌入模型计算单词Python在前面两个句子中的嵌入值,那么该词的嵌入值在两个句子中都是一样的,这会导致单词Python在两个句子中的含义没有区别。因为word2vec是无上下文模型,所以它会忽略语境。也就是说,无论语境如何,它都会为单词Python计算出相同的嵌入值。

  与word2vec不同,BERT是一个基于上下文的模型。它先理解语境,然后根据上下文生成该词的嵌入值。对于前面的两个句子,它将根据语境对单词Python给出不同的嵌入结果。这背后的原理是什么?BERT是如何理解语境的?下面让我们详细解答这些疑问。

  首先来看句子A:He got bit by Python。

  BERT将该句中的每个单词与句子中的所有单词相关联,以了解每个单词的上下文含义。具体地说,为了理解单词Python的上下文含义,BERT将Python与句子中的所有单词联系起来。

  BERT可以通过bit这一单词理解句子A中的Python是用来表示蟒蛇的,如下图所示。

  

  下面来看句子B:Python is my favorite programming language。同理,BERT将这句话中的每个单词与句子中的所有单词联系起来,以了解每个单词的上下文含义。所以,通过programming一词,BERT理解了句子B中的单词Python与编程语言有关,如下图所示。

  

  由此可见,与word2vec等无上下文模型生成静态嵌入不同,BERT能够根据语境生成动态嵌入。

  BERT(多Transformer的双向编码器表示法)是基于Transformer模型的。我们可以把BERT看作只有编码器的Transformer。

  我们把句子A(He got bit by Python)送入Transformer的编码器,得到句子中每个单词的上下文特征(嵌入)。一旦我们将句子送入编码器,编码器就会利用多头注意力层来理解每个单词在句中的上下文(将句子中的每个单词与句子中的所有单词联系起来,以学习单词之间的关系和语境含义),并将其特征值作为输出。

  举报/反馈

上一篇:谁曾想广东“车震门”张小姐人民教师“面具”下的她是如此模样?
下一篇:2012年,江西一老师批阅作文,看到一半转身就报警:我学生杀了人

最近更新素质教育