1 为什么BERT有用?
最常见的解释是,当输入一串文本时,每个文本都有一个对应的向量。对于这个向量,我们称之为embedding。

它的特别之处在于,这些向量代表了输入词的含义。例如,模型输入 “台湾大学”,输出4个向量。这4个向量分别代表 “台”、“湾”、"大 "和 “学”。
更具体地说,如果你把这些词所对应的向量画出来,或者计算它们之间的距离,你会发现,意思比较相似的词,它们的向量比较接近。例如,"鸟 "和 "鱼 "是动物,所以它们可能更接近。

你可能会问,中文有歧义,其实不仅是中文,很多语言都有歧义。BERT可以考虑上下文,所以,同一个词,比如说 “苹果”,它的上下文和另一个 "苹果 "不同,它们的向量也不会相同。
水果 "苹果 "和手机 "苹果 "都是 “苹果”,但根据上下文,它们的含义是不同的。所以,它的向量和相应的embedding会有很大不同。水果 "苹果 "可能更接近于 “草”,手机 "苹果 "可能更接近于 “电”。
现在我们看一个真实的例子。假设我们现在考虑 "苹果 "这个词,我们会收集很多有 "苹果 "这个词的句子,比如 “喝苹果汁”、"苹果MacBook "等等。然后,我们把这些句子放入BERT中。

接下来,我们将计算"苹果"一词的相应embedding。输入"喝苹果汁",得到一个"苹果"的向量;输入"苹果MacBook",又得到这个”苹果“的向量。那事实上我们可以看到这两个向量离得比较远,这是因为在Encoder中存在Self-Attention,根据 "苹果"一词的不同语境得