主要聚焦目前处于NLP舞台中央的Transformer/BERT/后BERT 和 Self Attention。
筛选的问题会深入到上述算法/模型更细节的地方,而尽量避免大而泛的问题。本文希望能帮助你对Transformer/BERT的理解再深一层,而这也要求你对上面的算法/模型有基本的认识,主要包括这两部分(后BERT的模型可以自行查找):
1、论文:论文是最一手的资源,没有各方解读的杂音
Transformer: Attention Is All You Need
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
2、源码:在你看完源码之后,对于BERT,你会调用地更所以然
Transformer Pytorch源码 ,BERT Pytorch源码 ,HuggingFace Transformers
注:BERT Pytorch源码是我参考自这里并加上了一些自己注释的代码,更多语言模型推荐 HuggingFace Transformers
1、为什么BERT在第一句前会加一个[CLS]标志? [1]
2、BERT的三个Embedding直接相加会对语义有影响吗?[1]
3、在BERT中,token分3种情况做mask,分别的作用是什么?
4、为什么BERT选择mask掉15%这个比例的词,可以是其他的比例吗?[1]
5、针对句子语义相似度/多标签分类/机器翻译翻译/文本生成的任务,利用BERT结构怎么做fine-tuning?
6、使用BERT预训练模型为什么最多只能输入512个词,最多只能两个句子合成一句?[1]
7、BERT非线性的来源在哪里?multi head attention 是线性的嘛?[1]
8、BERT 是如何区分一词多义的?
9、BERT的输入是什么,哪些是必须的,为什么position id不用给,type_id 和 attention_mask没有给定的时候,默认会是什么
10、BERT训练时使用的学习率 warm-up 策略是怎样的?为什么要这么做?[13]
11、Bert 采用哪种Normalization结构,LayerNorm和BatchNorm区别,LayerNorm结构有参数吗,参数的作用?[8]
12、为什么说ELMO是伪双向,BERT是真双向?产生这种差异的原因是什么?
13、BERT和Transformer Encoder的差异有哪些?做出这些差异化的目的是什么?
14、BERT训练过程中的损失函数是什么?
15、BERT 的两个任务 Masked LM 任务和 Next Sentence Prediction 任务是先后训练的还是交替训练的
1、Transformer在哪里做了权重共享,为什么可以做权重共享?好处是什么?[1]
2、Transformer的点积模型做缩放的原因是什么?[1]
3、Transformer中是怎么做multi head attention 的,这样做multi head attention,会增加它的时间复杂度嘛?[1]
4、为什么Transformer 要做 Multi-head Attention? 它的好处在哪?[6]
5、Transformer的Encoder端和Decoder端是如何进行交互的?和一般的seq2seq有什么差别?
6、Transformer中multi-head attention中每个head为什么要进行降维?[14]
BERT 发表之后,预训练语言模型如雨后春笋,这里暂时只选了两个代表,之后有空会再添加上。
XLNet:
1、XLNet如何实现在不加 [Mask] 情况下利用上下文信息呢?[3]
2、XLNet为什么要用双流注意力?两个流的差别是什么?分别的作用是什么?分别的初始向量是什么?
3、虽然不需要改变输入文本的顺序,但 XLNet 通过 PLM 采样输入文本的不同排列去学习,这样不会打乱或者丢失词汇的时序信息嘛?
4、AutoRegressive (AR) language modeling and AutoEncoding (AE) 两种模式分别是怎样的,各自的优缺点是什么,XLNet又是怎样融合这两者的?
ALBERT:
1、ALBERT的小具体小在哪里?对于实际存储和推理都有帮助嘛?
2、BERT的NSP为什么被认为没有效?ALBERT采样的OSP(Sentence Order Prediction)任务是怎样的?相比NSP有什么优势?
深入思考,会发现它真的是一个很神奇的存在,它是BERT乃至整个预训练语言模型的基石,是接棒CNN/RNN,成为特征抽取的新利器。Attention is all you need !
1、self-attention 的本质是什么?包括哪几个步骤?和普通 Attention 的差别在哪里?[15]
2、不考虑多头的原因,self-attention中词向量不乘QKV参数矩阵,会有什么问题?[4]
3、在普通 attention 中,一般有 k=v,那 self-attention 可以嘛?[4]
4、self-attention 在计算的过程中,如何对padding位做mask?[2]
5、bert的mask为何不学习transformer在attention处进行屏蔽score的技巧?[11]
6、XLNet为什么不直接在attention掩码矩阵中只把当前的单词掩盖住来获取上下文的信息呢?直接mask住左上到右下的对角线构建双向语言模型不行吗?[3]
结语:在这个Transformer/BERT已然成为NLP领域基础组件的时代,面试官会更关注Transformer/BERT在你实际项目中的落地去考察你的应用能力,和Transformer/BERT相关的更细节的问题去考察你的理解能力。应用能力的提升需要你在实际项目/比赛中去落地使用Transformer/BERT;而本文希望能帮助你对Transformer/BERT的理解再深一层。
另外,对于上述没有答案参考的问题,可以自行思考和搜索,之后,我也会在空闲时间尝试自己补上这些答案。
参考:
[1] 超细节的BERT/Transformer知识点 - 知乎
[2] NLP 中的Mask全解 - 知乎
[3] XLNet 中神奇的 Attention Mask - 知乎
[4] 目前主流的attention方法都有哪些? - 知乎
[5] 为什么 Bert 的三个 Embedding 可以进行相加? - 知乎
[6] Transformer和Bert相关知识解答 - 知乎
[7] NLP面试常问问题答案参考 - 知乎
[8] BERT相关面试题(不定期更新) - 知乎
[9] https://github.com/songyingxin/NLPer-Interview
[10] 关于BERT的若干问题整理记录 - 知乎
[11] bert的mask为何不学习transformer在attention处进行屏蔽score的技巧? - 知乎
[12] 关于BERT的若干问题整理记录 - 知乎
[13] 神经网络中 warmup 策略为什么有效;有什么理论解释么? - 知乎
[14]transformer中multi-head attention中每个head为什么要进行降维? - 知乎
[15]深度学习中Attention与全连接层的区别何在? - 知乎