参考文献:https://www.jianshu.com/p/63943ffe2bab
https://zhuanlan.zhihu.com/p/49271699
bert-transformer中的点积运算优化
参考文献(bert源码实现):https://blog.csdn.net/chenwu9745/article/details/100628957
在 self attention的计算过程中, 通常使用min batch来计算, 也就是一次计算多个句子,多句话得长度并不一致,因此,我们需要按照最大得长度对短句子进行补全,也就是padding零,但这样做得话,softmax计算就会被影响,输出其实有值,这样就会影响结果,这并不是我们希望看到得,因此在计算得时候我们需要把他们mask起来,填充一个负无穷(-1e9这样得数值),这样计算就可以为0了,等于把计算遮挡住。
长文本预测如何构造Tokens?
head-only:保存前 510 个 token (留两个位置给 [CLS] 和 [SEP] )
tail-only:保存最后 510 个token
head + tail :选择前128个 token 和最后382个 token(文本在800以内)或者前256个token+后254个token(文本大于800tokens)
Bert中如何获得词意和句意?
get_pooled_out代表了涵盖了整条语句的信息
get_sentence_out代表了这个获取每个token的output 输出,用的是cls向量
为什么要在Attention后使用残差结构?
残差结构能够很好的消除层数加深所带来的信息损失问题