本文主要是介绍BERT如何解决一词多义问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
知乎上有一个这样的问题:
Bert 在pretrain的时候 每个字的输出都是经过一个分类层后去预测自己 由于分类层中的权重是固定的 所以不管输入和中间的encoding有多么的复杂 每个字最后的输出在训练过程一定是长得越来越像自己在分类层中对应的那个权重 否则loss下不去
既然这样 在不同句子里相同字的输出应该区趋于相同才对 那又如何区别一字多义呢
问题参见:https://www.zhihu.com/question/332286187
我觉得这是一个很好的问题,需要想的很细才会考虑到「他们的最后的字表示应该都长的很像苹字在分类层里的权重 那样softmax后才能有很高的概率」
简单凝练一下,楼主要问的问题就是:明明分类层是确定的,为什么BERT还是能区分一词多义?
首先,我们先分析后半句,BERT如何区分一词多义
BERT是如何区分一词多义的
BERT 的核心是 Self-Attention,而 Self-Attention 的核心是用文本中的其它词来增强目标词的语义表示。
对于一个句子,每经过一层 Self-Attention,每个词的 embedding 都会是这句话中所有词 embedding 的加权平均,也就会融合这句话中所有词的信息。
因此,对于同一个词,不同的上下文会让这个词融合不同的语义信息,使得同一个词在不同的上下文中有不同的embedding,去表征不同的语义&
这篇关于BERT如何解决一词多义问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!