BERT的基本理念
BERT的基本理念
BERT的基本理念:
word2vec是一类生成词向量的模型的总称。这类模型多为浅层或者双层的神经网络,通过训练建立词在语言空间中的向量关系。
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能够根据语境生成动态嵌入。