这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
新鲜出炉的面试题来了,答案供各位参考,欢迎评论区交流。
1、如何计算文本相似度?
- 直接使用词向量做平均得到句向量,通过余弦相似度来计算
- 直接使用词向量做平均得到句向量,通过向量距离来计算
- 使用sentenceBert输出两个句子各自的句向量,通过余弦相似度来计算
- 使用sentenceBert输出两个句子各自的句向量,拼接起来,通过全连接层,再做二分类
- 使用simCSE输出两个句子各自的句向量,通过余弦相似度来计算。
2、Bert模型的输出一般接上一个全连接层做下游的任务,是否可以用xgboost代替全连接层?为什么?
- 不能使用xgboost代替
- 不能使用任何非参数模型代替全连接层,比如以树模型为基础的模型,SVM。
- 因为Bert中的参数的调整是需要通过梯度反向传播来进行梯度下降来更新的,如果梯度都没有,那么如何更新参数。如果需要梯度的话,就必须上可对参数求导的模型,如果参数可求导,那么一定是有参数模型,比如逻辑回归,全链接层。
3、描述下Roberta模型和bert有什么不同?
- Roberta可以直接看成收敛后的bert模型
- 在更加大量的数据集上做了Bert预训练任务
- 取消了NSP任务,只关注MLM任务
- 使用了动态的MASK方式
4、描述下Albert模型和bert有什么不同?
- Albert模型相当于乞丐版的bert模型
- 由于Bert模型效果好,很多业务上都想尝试使用bert来做预测,但是发现Bert重大的缺陷就是模型太大,不好移植,且速度慢,不能达到快速响应。
- 于是尝试想看下是否可以生成一个缩小版的Bert,用于快速响应,且效果差不多
- Albert首先减少了词向量的维度
- Albert还尝试block中的参数做共享
- 以上两种方法下,极大的减少了模型参数的个数,且也达到了和Bert-Base差不多的效果
5、如何减少训练好的神经网络模型的运行的时间?
- 使用使用GPU,或者TPU来做运算
- 可以尝试做剪执以减少参数
- 可以尝试做TeacherForcing做知识蒸馏
6、Bert模型适合做什么任务,不适合做什么任务?
- Bert模型是Transformer的encoder,适合做情感分类,文本分类,意图识别,命名实体识别,句子是否相似,句子是否有被包含,半指针半标注的SPO三元组抽取,问答,等任务。
- Bert只是Transformer的encoder,不能做任何生成式的任务。比如翻译,文本摘要,问题生成,等seq2seq任务。
7、你看过哪些以Bert为基础的模型?
- Roberta
- Albert
- Bert-wwm
- XLnet
- DistillationBert
- SimBert
- SimCSE
- UNIgram
- PET
- BART
- 等等
8、如果训练集的数据量太少了怎么办?
- 可以尝试做数据增强,模拟出其他的数据
- 可以尝试使用Prompt的思路,做小样本学习,甚至零样本学习
- 如果是分类问题,那么可以使用PET模型来构建Pattern,通过完形填空的方式来间接的解决分类问题
9、如果业务中,训练好的模型的标签多了一个怎么办?
- 最笨的办法就是尝试重新标记好数据集,将新的标签标记到原来的数据集中,重新训练模型
- 将新的标签重新标记到数据集中,将新标签和非新标签分开。
- 首先用一个二分类模型判断样本是否属于新标签或者非新标签,如果属于新标签则结束,如果属于非新标签,则尝试用老模型继续判断样本属于哪一个老标签。
- 直接使用PET的方式来训练,在MASK的位置多增加一个Verbalizer,然后做微调即可,完全不用更加其他的代码
10、BatchNorm和LayerNorm的区别?
- BatchNorm:计算每个最小批每层的平均值和方差
- LayerNorm:独立计算每层每一个样本的均值和方差