解释BERT为什么是双向表示

之前也没有仔细思考这个问题, 近几天重新看了一遍BERT模型,发现之前的理解确实有问题,所以过来填坑。

在说明BERT的双向表示前,先回顾一下常见的双向表示

网络结构的双向

首先区别于biLSTM那种双向, 那种是在网络结构上的双层

例如 biLSTM来进行一个单词的双向上下文表示
解释BERT为什么是双向表示_第1张图片
可以看到, 这种在网络结构上, 每个单词都从正向和反向都得到一个表示, 然后将此表示进行连接, 则此时认为这就是单词的双向表示

在没有深思之前,我也一直以为BERT是使用上面的模式,而当我看到BERT的结构是这样的,说明我之前是错误的理解:
解释BERT为什么是双向表示_第2张图片
请注意,BERT并没有说讲一个序列反向输入到网络中,所以BERT并不属于这种。

BERT中的双向表示

那么BERT 是如何说明是双向表示呢?

首先我们指导BERT的预训练模型中,预训练任务是一个mask LM通过随机的把句子中的单词替换成mask标签, 然后对单词进行预测

这里注意到,对于模型,输入的是一个被挖了空的句子, 而由于Transformer的特性, 它是会注意到所有的单词的,这就导致模型会根据挖空的上下文来进行预测, 这就实现了双向表示, 说明BERT是一个双向的语言模型
解释BERT为什么是双向表示_第3张图片

你可能感兴趣的:(自然语言处理)