Word2vec被称作语境无关的,因为它对每一个词生成一个相同的词表示,不考虑同一个词在不同语境下含义的差别。我们用一个浅层神经网络,依次遮住句子中的每一个词,然后用它的上下文来预测它,这被称作连续词袋法(continuous bag of words, CBOW);另一种方法则是与之对偶的,我们用一个k元词组来预测它的上下文,这被称作跳元法(skip-gram)。我们容易看到,这就是为什么说分布语义学使用无监督或者自监督预训练(self-supervised pretraining, SSP)的方法:通过“破坏”句子的一部分,让模型预测它,从而实现对词的更精确的表示。深度学习时代NLP的革命性时刻——BERT的诞生,也是利用了这样的思想。
语境相关(Context-dependent/Contextual)的词表示:BERT
语言的多义性是人类自然语言的重要特点。在Word2vec的基础上更进一步,BERT考虑了三层嵌入:词嵌入、位置嵌入(词在句子中的位置)和句子嵌入,并把它们加起来作为最后的嵌入表示。(容易证明,把三种嵌入加起来,和把三种嵌入首尾拼接,再经过一个全连接层进行训练的效果相同。)BERT使用WordPiece分词器(tokenizer),借鉴了自监督训练的思想,在两个任务上进行预训练:下句预测(Next Sentence Prediction)和掩码语言建模(Masked Language Modeling)。下句预测是一个二分类任务:给定一个句子,判定另一个句子是否是它的下一句;掩码语言建模任务随机掩盖其中15%的单词,并训练模型来预测被掩盖的单词,为了预测被掩盖的单词,模型从两个方向阅读该句并进行预测(这也是为什么BERT叫做双向的Bidirectional)。BERT还有多种变体:Albert, RoBERTa,Electra和SpanBERT等,感兴趣的朋友可以自行了解。