今天上午11点进行了深信服算法工程师的第一次面试,由于事先准备不足,一些常规的面试套路题回答的并不好,这里主要记录一下面试问题到的题目。
一、引题 (自我介绍)
首先要求的是自我介绍,主要大概介绍做过的一些比赛、项目。面试官也比较直接,让自己选择介绍一个点。
二、竞赛与比赛介绍
我本身在做NLP知识图谱相关的技术,这里着重谈了下信息抽取中的NER。主要结合了两个比赛:CCKS和瑞金医院辅助构建知识图谱。
回答路线
- 比赛概述
- 着重负责部分
面试官根据自己介绍的部分,进行着重提问。我首先介绍了数据预处理、数据增强、模型,这三部分。可能面试官对于数据预处理以及数据增强没有什么兴趣或其他原因,没有过多地提及。
上述是一面的流程,下面按照时间线整理提问到的一些问题。
1. BERT的网络架构
我主要回答了BERT的核心过程包括两个训练任务:
- 从数据集抽取两个句子,已知上一句子预测下一句子,这样可以学习句子之间的关系。
- 随机去抽两个句子中的一些词,模型预测这些词,这样能够学习句子内部的关系。
对于细节问题问答的不好。
下面将借鉴机器之心的讲述,详细地介绍下BERT的网络架构以及工作原理。
1.1 BERT概述
BERT属于预训练NLP模型, Google开放了预训练的BERT-Base和BERT-Large模型。每一种模型都有uncased和cased版本。
uncased是指将所有的英文词转为小写,没有大小写之分。
cased是指保留文本所有的真实情况。
BERT的计算力是十分惊人的,模型总共有24层、2014个隐藏单元,在有33亿词量的数据集上需要训练40个Epoch,因此在8块P100可能需要1年。
1.2 BERT网络架构
BERT的全称是基于Transformer的双向编码器表征,其中“双向“就是模型在处理一个词时,能够同时利用前后两部分词的信息。但是这与常规的双向模型不同,主要体现在BERT会随机遮掩掉一些词,只能利用所有没被遮掩的词进行预测。
上图为BERT与GPT和ELMO的比较,BERT和ELMo都是使用双向信息,GPT使用单向信息。BERT结合了GPT和ELMo的优势,ELMo使用两条独立训练的LSTM获取双向信息,GPT使用新型Transformer模型获取单向信息。
这里介绍下Goolge提出的Transformer模型,具体可参考这篇paper《attenttion is all your need》。
1.2.1 Transformer模型
在整个Transformer架构中,只使用了注意力机制和全链接层来处理文本,没有使用RNN CNN进行特征提取。