优点
首先,bert的创新点在于利用了双向transformer,这就跟openai的gpt有区别,gpt是采用单向的transformer,而作者认为双向transformer更能够融合上下文的信息。这里双向和单向的区别在于,单向只跟当前位置之前的tocken相连,双向与当前位置之后的tocken也有连接。跟ELMo相比的优势在于,transformer对特征的提取能力比lstm要强得多。
模型输入
首先是对输入的句子做tocken embedding,也就是将句子映射为一维向量,可以是word2vec的结果,猜想一下,如果不是维度过高也可以是one-hot,第二部分segment embedding 是在模型训练过程中自动学习得到的,猜想这里可以用全连接,也可以用transformer,最后是position embedding,主要用以区别"我喜欢妈妈"和"妈妈喜欢我",虽然这两句话的单词一样,但是因为位置不同,所以含义不同。
模型参数
BERTBASE (L=12, H=768, A=12, Total Parameters=110M)
BERTLARGE (L=24, H=1024,
A=16, Total Parameters=340M).
L表示层数,H为隐层维度,A为注意力头的数量
两种任务
Masked LM
这个任务主要是随机将某句话的某几个位置做处理,这里的处理可能是3种,80%的概率用[mask]代替,10%的概率保留原来的单词,10%的概率用其他单词代替。就像是英语考试中的完形填空
Next Sentence Prediction (NSP)
主要利用输入的第一个tocken[cls]和中间的tocken[sep],其中cls用来表示后面一句是否为前一句的下一句,sep表示两个句子的间隔。从文本语料库中随机选择 50% 正确语句对和 50% 错误语句对进行训练。就像是与语文中的句子排序。
参考:BERT模型的详细介绍