NLP中的预训练模型总结

262 阅读2分钟

这里稍微说下BERT用于预训练中的MLM任务,以及为什么可以称之为双向的语言模型.理想情况下,我们都希望一个词的语义特征表示是由其上下文共同编码决定的.显然上面基于链式法则的单向语言模型是不能够学习到双向语义表示的,因为在预测时,无论是正向的语言模型还是反向的语言模型,都只由该时刻一侧的序列决定,所以模型自然不能将双向的信息编码到中心词中去.而BERT通过借鉴close-test这样的任务思想,借助Self-Attention Mask,巧妙的解决了上述问题.BERT可以形式化最大如下似然函数: 其中

\theta = argmax \Sigma _{x \in Cor}P_\theta(x|\overline x) \\ = argmax\Sigma _{x \in Cor}\Sigma _t I(t)\cdot P_\theta(x_t|\overline x)
I(t) = \begin{cases}1,x_t masked \\ 0,otherwise \end{cases}

具体的是通过Transformer的Encoder部分来完成特征提取的,在预测当前单词t时刻单词时,通过Attention Mask保证时刻的信息不泄露.由于Self-Attention计算是对整个句子进行query操作,所以就把双向的信息编码进去了.通过这样的任务转化,BERT就建模到了双向的语义表示信息,但是BERT也面临着如下的为解决问题: • 如果在Transformer不加入Position Encoding这一操作,那么该特征提取模块实际上就是One-Hot表示而已,不能建模句子内部的相对位置信息.这也是为什么需要加入额外的位置嵌入信息这一操作. • 可以看出在进行序列预测时,上述的建模实际上有默认被Mask掉的部分各自相互独立,显然这是不合理的. • 同时,在单步预测被mask掉位置的单词时,将其他位置的mask信息信息也编码了进来,这样做有优点,也有弊端,优点是相当于人为的引进了噪声,可以增强模型的鲁棒性,缺点只能通过启发式的方法设置MASK的数量占比.无法确定究竟引入多少的MASK是合适的.