- 1. 在句子主题相关任务中,我们使用微调bert模型,为什么只选用两层全连接层?好处是什么?
- 命名实体审核任务任务中,实际训练数据量多少,训练多长时间,用了几块GPU,什么型号的,最终公司对模型的评估指标是什么,达到多少合格,你们达到了多少?">2. 命名实体审核任务任务中,实际训练数据量多少,训练多长时间,用了几块GPU,什么型号的,最终公司对模型的评估指标是什么,达到多少合格,你们达到了多少?
- 命名实体审核任务任务中,你们为什么最终采用NLLLoss损失函数,是出于哪方面考虑?相比于其它损失函数在这个项目中优势在哪里?">3. 命名实体审核任务任务中,你们为什么最终采用NLLLoss损失函数,是出于哪方面考虑?相比于其它损失函数在这个项目中优势在哪里?
- 还有命名实体审核这部分,数据量和最后的精确率,召回率,F1该说多少?">4. 还有命名实体审核这部分,数据量和最后的精确率,召回率,F1该说多少?
- 说自己负责三个模型搭建,这个可行吗?会不会假?">5. 说自己负责三个模型搭建,这个可行吗?会不会假?
- 实体命名这块,维特比会让推公式,手写代码吗?">6. 实体命名这块,维特比会让推公式,手写代码吗?
- 机器学习部分,今天提到的几个算法,有公式推导的,需要掌握吗?如果面试官问,他一般问到什么程度?">7. 机器学习部分,今天提到的几个算法,有公式推导的,需要掌握吗?如果面试官问,他一般问到什么程度?
- 8. 对于智能文本分类项目, 为什么不直接使用单个多分类模型,而要使用这么多的二分类模型?">8. 对于智能文本分类项目, 为什么不直接使用单个多分类模型,而要使用这么多的二分类模型?
1. 在句子主题相关任务中,我们使用微调bert模型,为什么只选用两层全连接层?好处是什么?
参考答案:在微调bert过程中,选择怎样的微调网络一直是比较开放的话题,使用全连接层是google官方推荐的一种方式,那全连接具体该选择几层,每层设置多少个节点呢?一般根据经验,我们会将任务的训练数据集样本条数与微调条网络的参数做对照,希望二者更接近;当然只能算是选择方案的初始化逻辑,而当前选择两层全连接,每层节点数分别是8,2,是我们在当前数据集上做了大量对比实验得到的结论。这些超参数(层数,节点数)的选择会随着数据集的变化而变化2. 命名实体审核任务任务中,实际训练数据量多少,训练多长时间,用了几块GPU,什么型号的,最终公司对模型的评估指标是什么,达到多少合格,你们达到了多少?
参考答案:在我们的命名实体审核任务中,文本的平均长度为6(样本平均长度很重要,会影响训练机器的内存占用和整体训练时间),训练集正负样本数量总和为15万条数据,这样的数据规模是完全可以在16C,32G内存的CPU上对bert进行微调,以我们当前设定的超参数(记住:模型训练时间和很多超参数的设定有很大关系,比如,batch_size, epoch, 微调网络结构等等)微调时间约为23个小时左右。如果换做单机GTX1080Ti 11G,训练时间可以缩减10倍(在硬件评测表现中,GTX1080Ti是4C CPU的25倍,是16C CPU的10倍左右),大概2小时即可。如果在能够做数据分布式训练,比如6进程分布,那么,半小时内即可训练完成。但是一般公司内GPU都是抢占式资源,CPU训练不了时才可以抢占GPU。在这里我们的评估指标都是使用ACC,验证集数据量在30000条左右,审核任务对指标要求较高,一般至少需达到90%(短文本分类任务必须是90%以上),我们通过不断优化,完全可以达到90%左右。
3. 命名实体审核任务任务中,你们为什么最终采用NLLLoss损失函数,是出于哪方面考虑?相比于其它损失函数在这个项目中优势在哪里?
参考答案:在我们的句子主题相关任务中,文本的平均长度高达为15,一般情况下,数据集的平均文本长度越大,如果想要训练出效果的话,需要的训练样本数量也就越多。因此我们训练集正负样本数量总和为30万条数据。这样的数据规模也是完全可以在16C,32G内存的CPU上对bert进行微调,以我们当前设定的超参数(记住:模型训练时间和很多超参数的设定有很大关系,比如,batch_size, epoch, 微调网络结构等等)微调时间约为56个小时左右。如果换做单机GTX1080Ti 11G,训练时间可以缩减10倍(在硬件评测表现中,GTX1080Ti是4C CPU的25倍,是16C CPU的10倍左右),大概6小时即可。如果在能够做数据分布式训练,比如6进程分布,那么,一个小时内即可训练完成。在这里我们的评估指标都是使用ACC,验证集数据量在60000条左右,主题相关对指标要求不高,一般至少需达到80%,我们通过不断优化,完全可以达到85%左右。
4. 还有命名实体审核这部分,数据量和最后的精确率,召回率,F1该说多少?
参考答案:对于命名实体审核模型来讲,你可以直接说中期阶段:比如数据量30万左右,正如上面所有段文本分类ACC仍然要达到90%以上,如果非要考虑精度,召回和F1,审核任务其实更希望精度更高(只要预测为正那就希望它一定为正),因此精度可以上到93%,召回87%,这样F1作为二者的调和平均数为0.933.
5. 说自己负责三个模型搭建,这个可行吗?会不会假?
参考答案:不建议直接说自己负责三个模型,公司中算法团队可能每人负责一个模型,你主要负责一个,但是你们之间会经常沟通交流,多少对其他模型的训练也会有一些了解,这样去说比较好。
6. 实体命名这块,维特比会让推公式,手写代码吗?
参考答案:不会,一般只会问到维特比的算法原理,也就是动态规划,最多让你讲一下动态规划的意思。
7. 机器学习部分,今天提到的几个算法,有公式推导的,需要掌握吗?如果面试官问,他一般问到什么程度?
参考答案:机器学习算法不会推导公式,但可能手写交叉熵损失函数(这一定要会),以及损失函数怎么得来的,这个只要说就可以。正常的公司,机器学习部分都是使用LR,SVM和GBDT其中的某个,问题也就是围绕损失函数,bagging决策树和boosting决策树区别,SVM的核函数展开。如果在面试过程中,真的问到了你不会的问题,你可以说这块已经很久没有用到,有些忘了,最近都是在使用深度模型,把话题拽回来。
8. 对于智能文本分类项目, 为什么不直接使用单个多分类模型,而要使用这么多的二分类模型?
参考答案:1,首先我们需要解决的问题类型是:多标签多分类问题,也就是语料不仅存在多个类别,而且也允许每条样本存在多个类别。而我们常用的典型多分类模型只能解决类似于“手写字识别”的多分类问题。 2,假如我们改变当个多分类的模型输出层,让它能够产生多标签多分类的效果,在我们当前的语料分布上并不适合,因为只是使用一个模型意味着所有的语料都需要放在一起进行训练,这对于不同源(原始数据不是同一个源,每个类别的数量的无法控制)的数据实验效果非常差,而且样本如何很好的均衡也是一个难题。 3,随着业务的快速迭代,标签的数量也在发生变化,单独的多分类模型需要重新设计输出层,也就需要重新训练模型,对其他标签的识别效果可能造成影响。而多个二分类能够灵活的增加和减少类别,不会对其他类别产生影响。