2021年10月25日-京东NLP工程师面试题10道

412 阅读4分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

新鲜出炉的面试题来了,答案供各位参考,欢迎评论区交流。

1、如何计算文本相似度?

  1. 直接使用词向量做平均得到句向量,通过余弦相似度来计算
  2. 直接使用词向量做平均得到句向量,通过向量距离来计算
  3. 使用sentenceBert输出两个句子各自的句向量,通过余弦相似度来计算
  4. 使用sentenceBert输出两个句子各自的句向量,拼接起来,通过全连接层,再做二分类
  5. 使用simCSE输出两个句子各自的句向量,通过余弦相似度来计算。

2、Bert模型的输出一般接上一个全连接层做下游的任务,是否可以用xgboost代替全连接层?为什么?

  1. 不能使用xgboost代替
  2. 不能使用任何非参数模型代替全连接层,比如以树模型为基础的模型,SVM。
  3. 因为Bert中的参数的调整是需要通过梯度反向传播来进行梯度下降来更新的,如果梯度都没有,那么如何更新参数。如果需要梯度的话,就必须上可对参数求导的模型,如果参数可求导,那么一定是有参数模型,比如逻辑回归,全链接层。

3、描述下Roberta模型和bert有什么不同?

  1. Roberta可以直接看成收敛后的bert模型
  2. 在更加大量的数据集上做了Bert预训练任务
  3. 取消了NSP任务,只关注MLM任务
  4. 使用了动态的MASK方式

4、描述下Albert模型和bert有什么不同?

  1. Albert模型相当于乞丐版的bert模型
  2. 由于Bert模型效果好,很多业务上都想尝试使用bert来做预测,但是发现Bert重大的缺陷就是模型太大,不好移植,且速度慢,不能达到快速响应。
  3. 于是尝试想看下是否可以生成一个缩小版的Bert,用于快速响应,且效果差不多
  4. Albert首先减少了词向量的维度
  5. Albert还尝试block中的参数做共享
  6. 以上两种方法下,极大的减少了模型参数的个数,且也达到了和Bert-Base差不多的效果

5、如何减少训练好的神经网络模型的运行的时间?

  1. 使用使用GPU,或者TPU来做运算
  2. 可以尝试做剪执以减少参数
  3. 可以尝试做TeacherForcing做知识蒸馏

6、Bert模型适合做什么任务,不适合做什么任务?

  1. Bert模型是Transformer的encoder,适合做情感分类,文本分类,意图识别,命名实体识别,句子是否相似,句子是否有被包含,半指针半标注的SPO三元组抽取,问答,等任务。
  2. Bert只是Transformer的encoder,不能做任何生成式的任务。比如翻译,文本摘要,问题生成,等seq2seq任务。

7、你看过哪些以Bert为基础的模型?

  1. Roberta
  2. Albert
  3. Bert-wwm
  4. XLnet
  5. DistillationBert
  6. SimBert
  7. SimCSE
  8. UNIgram
  9. PET
  10. BART
  11. 等等

8、如果训练集的数据量太少了怎么办?

  1. 可以尝试做数据增强,模拟出其他的数据
  2. 可以尝试使用Prompt的思路,做小样本学习,甚至零样本学习
  3. 如果是分类问题,那么可以使用PET模型来构建Pattern,通过完形填空的方式来间接的解决分类问题

9、如果业务中,训练好的模型的标签多了一个怎么办?

  1. 最笨的办法就是尝试重新标记好数据集,将新的标签标记到原来的数据集中,重新训练模型
  2. 将新的标签重新标记到数据集中,将新标签和非新标签分开。
  3. 首先用一个二分类模型判断样本是否属于新标签或者非新标签,如果属于新标签则结束,如果属于非新标签,则尝试用老模型继续判断样本属于哪一个老标签。
  4. 直接使用PET的方式来训练,在MASK的位置多增加一个Verbalizer,然后做微调即可,完全不用更加其他的代码

10、BatchNorm和LayerNorm的区别?

  1. BatchNorm:计算每个最小批每层的平均值和方差
  2. LayerNorm:独立计算每层每一个样本的均值和方差