点击上方,选择星标置顶,每天给你送干货

阅读大概需要11分钟

跟随小博主,每天进步一丢丢

转载自:AI公园

作者:Pratik Bhavsar

编译:ronghuaiyang

导读

在NLP的面试中提问频率非常高的问题。

练习NLP是一回事,破解面试是另一回事。对NLP人员的面试与一般的数据科学非常不同。在短短几年内,由于迁移学习和新的语言模型,这些问题已经完全改变了。我个人经历过,随着时间的推移,NLP面试变得越来越艰难,因为我们取得了更多的进步。

早些时候,都是关于SGD,naive-bayes和LSTM,但现在更多的是关于LAMB,transformer和BERT。

这篇文章是我在接受采访时遇到的一些问题的小的总结,希望能对现在的NLP的面试的一些重要方面有所帮助。在transformer架构之后,我更关注NLP中发生的事情,这也是我在面试中主要的问题。

这些问题对于评估NLP工程师非常重要,如果你没有被问到任何一个问题,你可能正在面试一个过时的NLP团队,他们做复杂工作的范围更小。


什么是perplexity?它在NLP中的地位是什么?

Perplexity是一种表达模型在预测中出现的混乱程度的方法。熵越大=越混乱。使用Perplexity来评估NLP中的语言模型。一个好的语言模型会给正确的预测赋予更高的概率。

ReLu的问题是什么?

  • 爆炸梯度(通过梯度裁剪来解决)

  • 死亡ReLu — 激活为0时不进行学习(通过加参数的ReLu解决)

  • 激活值的均值和方差不是0和1。(通过从激活中减去约0.5来部分解决这个问题。在fastai的视频力有个更好的解释)

使用SVD学习潜在特征和使用深度网络获取嵌入向量有什么区别?

SVD使用输入的线性组合,而神经网络使用非线性组合。

LSTM的hidden和cell存储的信息是什么?

hidden存储到当前时间步的所有信息,cell存储将来的时间步中可能需要的特定信息。

带bias的LSTM模型的参数个数

4(????h+h²+h) 其中 ???? 是输入向量的尺寸, h 是输出向量的尺寸,hidden也是一样。

要注意的是 mh 中 m>>h. 因此重要的一点是需要使用小的词汇表。

LSTM的复杂度

序列长度*hidden²

transfomer的时间复杂度

序列长度²*hidden

当hidden尺寸大于序列长度时(通常是这种情况)时,transfomer速度比LSTM快。

为什么self-attention怎么牛逼?

“在计算复杂性方面,当序列长度n小于表示维数d时,self-attention层速度比recurrent层要快,实际情况也往往是这样,同时可以在机器翻译中使用最先进的模型来进行句子的表示,比如word-piece和byte-pair表示。“ — Attention is all you need

Adam optimiser的局限性是什么?

虽然使用Adam进行训练有助于快速收敛,但结果模型的泛化性能往往不如使用SGD进行动量训练时的泛化性能。另一个问题是,即使Adam有自适应学习率,当使用良好的学习率计划时,它的性能也会提高。特别是在训练的早期,使用较低的学习率来避免发散是有益的。这是因为在一开始,模型的权值是随机的,因此得到的梯度不是很可靠。如果学习率太大,可能会导致模型采取太大的步骤,而没有确定合适的权重。当模型克服了这些初始稳定性问题后,可以提高学习速度,加快收敛速度。这个过程被称为学习率热身,其中一个版本在论文“Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”中有描述。

AdamW和Adam有什么不同?

AdamW是Adam在权重上使用了L2正则化,这样小的权重泛化性能更好。

使用大的batch size可以训练模型更快吗?

是的!

在2018年4月的这条推特中,Yann建议不要使用大的batch size。

好消息!

这在以前是不可能的,但是现在有了新的优化器,比如LARS和LAMB。ALBERT使用了LAMB和batch size为4096进行了训练。

Large Batch Optimization for Deep Learning: Training BERT in 76 minutes:https://arxiv.org/abs/1904.00962

你喜欢特征提取还是微调?你怎么决定?你会使用BERT作为特征提取器还是对它进行微调?

在这篇文章中有详细的解释。

Transfer Learning in NLP:https://medium.com/modern-nlp/transfer-learning-in-nlp-f5035cc3f62f

举一个学习率调度策略的例子?

解释Leslie Smith的cycle策略。

我们应该在深度学习中进行交叉验证吗?

不用。

随着样本数量的增大,cross-folds的方差减小。因为我们只有在样本成千上万的情况下才进行深度学习,所以交叉验证的意义不大。

在多任务学习中,软、硬参数共享的区别是什么?

在硬共享中,我们一次训练所有的任务,并根据所有的损失更新权重。在软共享中,我们一次只训练一个任务。

注意力机制有哪些不同类型?

BatchNorm和LayerNorm的区别?

BatchNorm — 为每一个小batch计算每一层的平均值和方差

LayerNorm — 独立计算每一层每一个样本的均值和方差

为什么transformer块使用LayerNorm而不是BatchNorm?

从LayerNorm的优点来看,它对于batch大小是健壮的,并且在样本级别而不是batch级别工作得更好。

如果你知道你的训练数据有错误,你会对你的深度学习代码做什么改变?

我们可以做标签平滑,其中的平滑值是基于百分误差。如果任何特定的类有已知的误差,我们还可以使用类权值来修正损失。

如何为一个任务选择文本编码器?你最喜欢的文本编码器是什么?为什么?

这是一个主观问题,你可以通过阅读了解更多

Variety Of Encoders In NLP:https://medium.com/modern-nlp/on-variety-of-encoding-text-8b7623969d1e

在ULMFiT中使用了哪些技巧?(不是很好的问题,但是可以检查意识)

  • 使用任务文本进行语言模型的调优

  • 权重dropout

  • 每个层独立的学习率

  • 逐步的解冻层

  • 斜三角学习率策略

接下来可以提出一个问题,解释它们是如何提供帮助的。

为什么transformer的性能比LSTM好?

https://medium.com/saarthi-ai/transformers-attention-based-seq2seq-machine-translation-a28940aaa4fe

有趣的问题:在transformer中使用最多的层是哪一层?

Dropout ????

技巧问题:告诉我一个不使用dropout的语言模型

ALBERT v2:这说明了一个事实,我们认为理所当然的许多假设并不一定是正确的。ALBERT中参数共享的正则化效果非常强,不需要dropouts。(ALBERT v1有dropouts。)

GPT和GPT-2有什么区别?

  • Layer normalization放到了每个sub-block中,类似于残差单元的“building block”(和原始的“bottleneck”不一样,原始的里面在权重层之前有批归一化层)。

  • 在最后的self-attention block之后添加了一个额外的layer normalization。

  • 使用模型深度的函数来对初始化进行修改。

  • 残差层权值初始按1/√n的倍数缩放,其中n为残差层数。

  • 使用更大的词汇量和上下文。

GPT和BERT有什么不同?

  • GPT不是双向的,没有masking的概念

  • BERT在训练中加入了下一个句子预测任务,所以它也有 segment嵌入

BERT和ALBERT v2有什么不同?

  • 嵌入矩阵分解(有助于减少参数数量)

  • 没有dropout

  • 参数共享(有助于减少参数数量并进行正则化)

ALBERT中的参数共享如何影响训练和推理时间?

没有效果。参数共享只是减少了参数的数量。

如何减少训练好的神经网络模型的推理时间?

  • 在GPU/TPU/FPGA上进行服务

  • 16位量化,部署在支持fp16的GPU上提供服务

  • 剪枝以减少参数

  • 知识蒸馏(用于较小的transformer模型或简单的神经网络)

  • 分层softmax

  • 你也可以缓存结果,这里有解释。

Productionizing NLP Models:https://medium.com/modern-nlp/productionizing-nlp-models-9a2b8a0c7d14

给你这个图表,你会选择transformer模型还是LSTM语言模型?

你会把BPE与经典模型结合使用吗?

当然!BPE是一个智能的tokens生成器,它可以帮助我们获得更小的词汇表,这可以帮助我们找到参数更少的模型。

如何制作一个arxiv论文搜索引擎?(有人问我 —— 你怎么做一个抄袭检测器?)

用TF-IDF相似度得到k个top的结果,然后用

  • 语义编码+余弦相似度

  • 一个排序模型

On Semantic Search:https://medium.com/modern-nlp/semantic-search-fuck-yeah-e371c0f639d

如何制作一个情感分类器?

这是个脑筋急转弯。面试者可以说所有的事情,如使用转移学习和最新的模型,但他们需要说到有一个中性的类,否则你可以有很好的准确性和f1值,模型会把一切只分为积极或消极。

事实上,很多新闻都是中立的,所以训练需要设置这个类别。被面试者还应该谈到他将如何创建一个数据集和他的训练策略,如选择语言模型,语言模型微调和使用各种数据集进行多任务学习。

英文原文:https://medium.com/modern-nlp/nlp-interview-questions-f062040f32f7


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

让更多的人知道你“在看”

【面试】一些NLP的面试问题相关推荐

  1. 一些NLP的面试问题

    2020-02-19 21:04:27 作者:Pratik Bhavsar 编译:ronghuaiyang 导读 在NLP的面试中提问频率非常高的问题. 练习NLP是一回事,破解面试是另一回事.对NL ...

  2. NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一年一度的秋招已经悄悄来临,征战在求职路上的你,准备好了吗? 工欲善其事,必先利其器. 这里有一份NLP面试大全,全中文教学,囊括机器学习 ...

  3. 一些在NLP的面试中提问频率非常高的问题

    作者:Pratik Bhavsar      编译:ronghuaiyang 导读 在NLP的面试中提问频率非常高的问题. 练习NLP是一回事,破解面试是另一回事.对NLP人员的面试与一般的数据科学非 ...

  4. NLP高频面试_CodingPark编程公园

    NLP高频面试 1.LSTM 画图,写公式 计算一层的参数量 假设lstm层的一个时间点上的输入特征长度是n,输出长度是m, 那么参数量是4*((n+m)*m+m) https://www.cnblo ...

  5. Orange NLP实习面试

    Orange 法国 NLP实习面试 实习内容 个人情况 面试过程 整体体验 改进/提升 实习内容 研究型实习,主要任务是为输入文本寻找合适的word-embedding方法, 用于提高电信传输中对于语 ...

  6. 给大家分享我的宝藏:nlp算法面试经验

    (本人双非研二) 2021年.7.20日:奥维森基因科技公司: 1 svm基本原理,核函数,核函数怎么选 ,四分类的原理是什么.​ svm多分类的两种方法: 支持向量机原理详解(八): 多类分类SVM ...

  7. python的celery的面试_Python面试经验总结,面试一时爽,一直面试一直爽!

    前言:这是一位好友最近对Python岗位面试后的一篇经验之谈,从Python岗位需求到Python就业方向都有,很有借鉴意义 Python学习交流群:835017344,这里是python学习者聚集地 ...

  8. Python面试经验总结,面试一时爽,一直面试一直爽!

    前言:这是一位好友最近对Python岗位面试后的一篇经验之谈,从Python岗位需求到Python就业方向都有,很有借鉴意义 面试的心得体会: 1.简历制作 我做了两份简历,用两个手机账号,两个简历名 ...

  9. 【面试】我是如何面试别人List相关知识的,深度有点长文

    作者:李新杰 来自:编程新说 ?先来点鸡汤前几年易中天可谓非常的火,接受过很多采访.他的情况比较特殊,在武汉读高中时期,恰逢"知识青年上山下乡"活动,就到新疆去了. 在新疆生产建设 ...

  10. 大厂面试篇:五轮面试,阿里offer到手!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来源 | 应届生求职论坛 拿到 阿里实习offer,经历了5次面试,其中4轮技术面 ...

最新文章

  1. 利用velocity模板以及itext生成pdf
  2. 一个现金流量表的代码
  3. Geoserver怎样设置地图shp文件为相对路径,可轻松复制移植
  4. LeetCode 面试题 03 数组中重复的数字
  5. [设计模式]6. C++与职责链模式(chain of rsponsibility pattern)
  6. Mysql学习总结(29)——MySQL中CHAR和VARCHAR
  7. 团队协调办公工具比较
  8. git学习 add - commit - init
  9. javascript之事件模型
  10. HTML CSS 个人网页设计
  11. 快捷键打开管理员cmd
  12. unity中使用C#语言判断斗地主出牌牌型
  13. 你不得不读的好书 ——《此生未完成》读后感
  14. CentOS7.6腾讯云中域名的备案详细流程
  15. echarts 中国地图+穿透
  16. 树莓派之火焰传感器模块
  17. 网易邮箱大师中添加qq邮箱时,需要开启IMAP,一直卡在验证密保的界面
  18. 第4次作业类测试代码+105032014070+胡阳洋
  19. FLOTHERM 10.1软件热分析仿真基础培训 风冷 水冷 自冷视频教程
  20. GBDT(梯度提升树)算法概述

热门文章

  1. [UWP小白日记-9]页面跳转过度动画(二)
  2. oracle常见sql积累
  3. avalon使用笔记
  4. C# 根据地址调用 Google Map 服务得到经纬度
  5. 推荐iOS模拟器截图工具iOS-Simulator Cropper
  6. lt;转载自刘佳ID:freedom0203和waretgt; C++中成员初始化列表的使用
  7. Picturebox实现图片的缩放
  8. java day18【线程池、Lambda表达式】
  9. Eclipse JSP 页面设置 charset=UTF-8
  10. 在同一台服务器上安装两个数据库