查看原文
其他

【综述专栏】自然语言处理面试题

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:知乎—全新的小志

地址:https://www.zhihu.com/people/quan-xin-de-xiao-zhi

对象看我在搜集面试题,对我投来不解和疑惑:“你丫刚上岸,刚找到份像样的工作就不消停了?”“面试也会上瘾的吗?”
“我属松鼠的哦”没错,松鼠本鼠开始囤货了。
刚上岸,当然不会想着立即跳槽,除了敲代码,日常整理些面试题,顺便自己再过一遍,说不准哪天就用得上了呢。欢迎大家评论区交流。

1. 什么是GBDT算法?

在介绍gbdt算法前,有必要先简单介绍一下boosting算法,它每步会产生一个弱预测模型,最后会将所有的弱预测模型累加汇总得到一个总模型,每个弱预测模型的生成都会依赖损失函数梯度递减的方式生成的,boosting被称为提升学习。
gdbt和adaboost都是boosting提升学习中的方法,不同的adaboost可以采用的弱分类器可以有很多。但是gbdt只能采用决策树(CART)作为弱分类器。GBDT采用的损失函数依然是最小二乘的损失函数。

2. 什么是xgboost算法?

xgboost本身就是GBDT算法,它是在gbdt算法的基础上进行了一系列的优化,从而使算法拥有了更好的性能。
下面简单总结一下,GBDT算法和xgboost之间的不同点:
除了算法上与传统的GBDT有一些不同外,XGBoost还在工程实现上做了大量的优化。总的来说,两者之间的区别和联系可以总结成以下几个方面。
GBDT是机器学习算法,XGBoost是该算法的工程实现。
在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代 价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类 器,比如线性分类器。
传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样。
传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略。弱分类器采用决策树

3. 什么是随机森林算法?

在了解随机森林算法前,我们先来了解一下bagging算法。bagging算法是集成算法下面的一个分支,与boosting方法合称为集成学习算法下面的两大分支。bagging它综合多个弱分类器形成一个强分类器,弱分类器之间没有联系,它的多样性体现在分类器的选择和样本的选择上。而随机森林算法,它是在bagging的算法基础上做了改动,引入了特征的随机选择。相对于bagging而言,它的效率和准确率都会更高。
boosting集成学习,由多个相关联的决策树联合决策,什么叫相关联,举个例子,有一个样本[数据->标签]是[(2,4,5)-> 4],第一棵决策树用这个样本训练得预测为3.3,那么第二棵决策树训练时的输入,这个样本就变成了[(2,4,5)-> 0.7],也就是说,下一棵决策树输入样本会与前面决策树的训练和预测相关。
与之对比的是random foreast(随机森林)算法,各个决策树是独立的、每个决策树在样本堆里随机选一批样本,随机选一批特征进行独立训练,各个决策树之间没有啥毛线关系。

4. 深度学习优化算法用过哪些?讲讲Sgd和gd,bgd的区别?

sgd是随机梯度下降,使用一个样本来求梯度,很省内存,但是不稳定。
gd是梯度下降,使用所有的样本来求梯度。
bgd是小批量梯度的下降,使用一部分样本来求梯度,普遍采用bgd比较多。

5.下列哪些技术能被用于关键词归一化(keyword normalization),即把关键词转化为其基本形式?

A. 词形还原(Lemmatization)
B. 探测法(Soundex)
C. 余弦相似度(Cosine Similarity)
D. N-grams
答案:A
词形还原有助于得到一个词的基本形式,例如:playing -> play, eating -> eat等;其他选项的技术都有其他使用目的。

6.下列哪些技术能被用于计算两个词向量之间的距离?

A. 词形还原(Lemmatization)
B. 欧氏距离(Euclidean Distance)
C. 余弦相似度(Cosine Similarity)
D. N-grams
答案:B与C
两个词向量之间的距离可以用余弦相似度和欧氏距离来计算。余弦相似度在两个词的向量之间建立一个余弦角,两个词向量之间的余弦角接近表示词相似,反之亦然。例如,与“Football”、“NewDelhi”这2个词相比,“Football”、“Cricket” 这两个词之间的余弦角将更接近于1。通常,文档相似度是通过文档中的内容(或单词)在语义上的接近程度来衡量的;当它们接近时,相似度指数接近于1,否则接近于0。两点之间的欧氏距离是连接这两点的最短路径的长度。通常用毕达哥拉斯定理计算三角形。

7.文本语料库的可能特征是什么?

A. 文本中词计数
B. 词的向量标注
C. 词性标注(Part of Speech Tag)
D. 基本依存语法
E. 以上所有
答案:E
以上所有这些都可以作为文本语料库的特征。

8.你在20K文档的输入数据上为机器学习模型创建了文档-词矩阵(document-term matrix)。以下哪项可用于减少数据维度?

(1)关键词归一化(Keyword Normalization)
(2)潜在语义索引(Latent Semantic Indexing)
(3)隐狄利克雷分布(Latent Dirichlet Allocation)
A.只有(1)
B. (2)、(3)
C. (1)、(3)
D. (1)、(2)、(3)
答案:D

9.哪些文本分析技术可被用于名词短语检测、动词短语检测、主语检测和宾语检测?

A. 词性标注(Part of Speech Tagging)
B. Skip Gram 和N-Gram 提取
C. 连续性词袋(Bag of Words)
D. 依存句法分析(Dependency Parsing)和成分句法分析(Constituency Parsing)
答案:D

10.用余弦相似度表示的词之间的差异将显著高于0.5

A. 正确
B. 错误
答案:A

11.下列哪项是关键词归一化技术?

A. 词干提取(Stemming)
B. 词性标注(Part of Speech)
C. 命名实体识别(Named Entity Recognition)
D. 词形还原(Lemmatization)
答案:A与 D
词性标注(POS)与命名实体识别(NER)不是关键词归一化技术。

12.下面哪个是NLP用例?

A. 从图像中检测物体
B. 面部识别
C. 语音生物识别
D. 文本摘要
答案:D
A和B是计算机视觉应用案例,C是语音应用案例。

13.在包含N个文档的语料库中,随机选择的一个文档总共包含T个词条,词条“hello”出现 K 次。如果词条“hello”出现在全部文档的数量接近三分之一,则TF(词频)和 IDF(逆文档频率)的乘积的正确值是多少?

A. KT * Log(3)
B. T * Log(3) / K
C. K * Log(3) / T
D. Log(3) / KT
答案:C

14. 下列算法中减少了常用词的权重,增加了文档集合中不常用词的权重的是?

A. 词频(TF)
B. 逆文档频率(IDF)
C. Word2Vec
D. 隐狄利克雷分布(Latent Dirichlet Allocation)
答案:B

15.从句子中删除“and”、“is”、“a”、“an”、“the” 这样的词的过程被称为?

A. 词干提取(Stemming)
b. 词形还原(Lemmatization)
C. 停用词(Stop Words)
D. 以上所有
答案:C

16.将句子或段落转换为tokens的过程称为词干提取(Stemming)

A. 正确
B. 错误
答案:B
这是分词(tokenization),而不是词干提取。

17.在给到任何神经网络之前,Tokens都会被转换成数字

A. 正确
B. 错误
答案:A
在自然语言处理中,所有的词在输入到神经网络之前都被转换成数字。

18.找出其中的异类

A. nltk
B. scikit learn
C. SpaCy
D. BERT
答案:D
除了BERT是一个词嵌入方法以外,其它都是NLP库。

19.TF-IDF帮你建立

A. 文档中出现频率最高的词
B. 文档中最重要的词
答案:B
TF-IDF有助于确定特定词在文档语料库中的重要性。TF-IDF考虑了该词在文档中出现的次数,并被出现在语料库中的文档数所抵消。

20.从给定的句子、段落中识别人名、组织名的过程称为?

A. 词干提取(Stemming)
B. 词形还原(Lemmatization)
C. 停用词消除(Stop Word Removal)
D. 命名实体识别(Named Entity Recognition)
答案:D

21.下列哪一项不是预处理技术?

A. 词干提取和词形还原(Stemming and Lemmatization)
B. 转换成小写(Converting to Lowercase)
C. 删除标点符号(Remove Punctuation)
D. 删除停用词(Removal of Stop Words)
E. 情绪分析(Sentiment Analysis)
答案:E
情绪分析不是一种预处理技术。它是在预处理之后完成的,是一个NLP用例。所有其他列出的都用作语句预处理的一部分。

22.在文本挖掘中,可以使用以下哪项命令完成将文本转换为tokens,然后将其转换为整数或浮点向量的操作?

A. CountVectorizer
B. TF-IDF
C. 词袋模型(Bag of Words)
D. NERs
答案:A
CountVectorizer可帮助完成上述操作,而其他方法则不适用。

23.将词表示成向量被称为神经词嵌入(Neural Word Embeddings)?

A. 正确
B. 错误
答案:A

24.下列哪种词嵌入支持上下文建模(Context Modeling)?

A. Word2Vec
B. GloVe
C. BERT
D. 以上所有
答案:C
只有BERT(Bidirectional Encoder Representations from Transformer)支持上下文建模。

25.下列哪种嵌入方式支持双向上下文(Bidirectional Context)?

A. Word2Vec
B. BERT
C. GloVe
D. 以上所有
答案:B
只有BERT支持双向上下文。Word2Vec和GloVe是词嵌入,它们不提供任何上下文。

26.下列哪种词嵌入可以自定义训练特定主题?

A. Word2Vec
B. BERT
C. GloVe
D. 以上所有
答案:B

27.词嵌入捕获多维数据,并表示为向量?

A. 正确
B2. 错误
答案:A

28.词嵌入向量有助于确定2个tokens之间的距离?

A. 正确
B. 错误
答案:A
可以使用余弦相似度来确定通过词嵌入来表示的两个向量之间的距离。

29.语言偏见是由词嵌入训练中使用的历史数据引入的,下面哪项不是偏见的示例?

A. 新德里之于印度,北京之于中国
B. 男人之于电脑,女人之于家庭主妇
答案:A
陈述B是一种偏见,因为它把女人变成了家庭主妇,而陈述A不是一种偏见。

30. 以下哪项是解决NLP用例(如语义相似性、阅读理解和常识推理)的更好选择?

A. ELMo
B. Open AI’s GPT
C. ULMFit
答案:B
Open AI的GPT能够通过使用Transformer模型的注意力机制(Attention Mechanism)来学习数据中的复杂模式,因此更适合于诸如语义相似性、阅读理解和常识推理之类的复杂用例。

31. Transformer架构首先是由下列哪项引入的?

A. GloVe
B. BERT
C. Open AI’s GPT
D. ULMFit
答案:C
ULMFit拥有基于LSTM的语言建模架构;这之后被Open AI的GPT的Transformer架构所取代。

32. 以下哪种架构可以更快地训练,且需要更少的训练数据?

A. 基于LSTM的语言建模
b. Transformer架构
答案:B
从GPT开始,Transformer架构就得到了支持,而且训练速度更快,所需的数据量也更少。

33. 相同的词可以通过___________来实现多个词嵌入?

A. GloVe
B. Word2Vec
C. ELMo
D. Nltk
答案:C
ELMo(Embeddings from Language Models)词嵌入支持同一个词的多个嵌入,这有助于在不同的上下文中使用同一个词,从而捕获上下文而不仅仅是词的意思,这与GloVe、Word2Vec不同。Nltk不是词嵌入。

34. 对于一个给定的token,其输入表示为它的token嵌入、段嵌入(Segment Embedding)、位置嵌入(Position Embedding)的总和

A. ELMo
B. GPT
C. BERT
D. ULMFit
答案:C
BERT使用token嵌入、段嵌入(Segment Embedding)、位置嵌入(Position Embedding)。

35. 从左到右和从右到左训练两个独立的LSTM语言模型,并将它们简单地连接起来

A. GPT
B. BERT
C. ULMFit
D. ELMo
答案:D
ELMo尝试训练两个独立的LSTM语言模型(从左到右和从右到左),并将结果连接起来以产生词嵌入。

36.用于产生词嵌入的单向语言模型

A. BERT
B. GPT
C. ELMo
D. Word2Vec
答案:B

37. 在这种架构中,对句子中所有词之间的关系进行建模,而与它们的位置无关。这是哪种架构?

A. OpenAI GPT
B. ELMo
C. BERT
D. ULMFit
答案:C
BERT Transformer架构将句子中每个词和所有其他词之间的关系建模,以生成注意力分数。这些注意力分数随后被用作所有词表示的加权平均值的权重,它们被输入到完全连接的网络中以生成新的表示。

38.列出10个使用NLP技术解决的用例

  1. 情绪分析(Sentiment Analysis)
  2. 语言翻译(英语到德语、中文到英语等等)
  3. 文档摘要(Document Summarization)
  4. 问题回答
  5. 句子完成
  6. 属性提取(从文档中提取关键信息)
  7. 聊天机器人交互
  8. 主题分类(Topic Classification)
  9. 意图提取(Intent Extraction)
  10. 语法或句子更正
  11. 图像描述生成(Image Captioning)
  12. 文档排名(Document Ranking)
  13. 自然语言推理

39. Transformer模型关注句子中最重要的词

A. 正确
B. 错误
答案:A
Transformer模型中的注意机制用于建模所有词之间的关系,并为最重要的词提供权重。

40.以下哪种NLP模型的准确性最高?

A. BERT
B. XLNET
C. GPT-2
D. ELMo
答案:B
XLNET在所有模型中都给出了最好的准确性。它在20个任务上都优于BERT,在情感分析、问答、自然语言推理等18个任务上都取得了顶尖的结果。

41.排列语言模型(Permutation Language Models)是下列哪项的特点?

A. BERT
B. EMMo
C. GPT
D. XLNET
答案:D
XLNET提供了基于排列的语言模型,这是与BERT的一个关键区别。

42. Transformer XL使用相对位置嵌入

A. 正确
B. 错误
答案:A
Transformer XL使用嵌入来编码词之间的相对距离,而不是必须表示词的绝对位置。这个嵌入用于计算任意两个词之间的注意力得分,这两个词之间可以在之前或之后被n个词分隔开。

43.什么是信息提取?

自然语言处理中的信息提取是指从非结构化源中自动提取结构化信息以赋予其含义的技术。这可以包括提取有关实体属性,不同实体之间的关系等信息。信息提取的各种模型包括:
  1. 标记器模块
  2. 关系提取模块
  3. 事实提取模块
  4. 实体提取模块
  5. 情绪分析模块
  6. 网络图模块
  7. 文档分类和语言建模模块

44.什么是单词袋?

单词袋是一种常用的模型,它取决于单词的频率或出现次数来训练分类器。该模型为文档或句子创建一个出现矩阵,无论其语法结构或单词顺序如何。

45.什么是自然语言处理中的语用歧义?

语用歧义是指具有多个含义的单词,它们在任何句子中的使用可能完全取决于上下文。语用歧义会导致对同一句子的多种解释。通常,我们会遇到句子中含有多种含义的单词,从而使句子易于解释。这种多重解释引起歧义,在NLP中被称为语用歧义。

46.什么是屏蔽语言模型?

屏蔽语言模型通过从损坏的输入中获取输出,可以帮助学习者理解下游任务中的深入表示。该模型通常用于预测句子中要使用的单词。

47. NLP和CI(对话界面)有什么区别?

NLP和CI之间的区别如下:

48.什么是NLTK?与Spacy有何不同?

NLTK或自然语言工具包是用于符号和统计自然语言处理的一系列库和程序。该工具包包含一些最强大的库,可以使用不同的ML技术来分解和理解人类语言。NLTK用于取词,标点,字符计数,记号和词干。NLTK和Spacey之间的区别如下:
  • 尽管NLTK有一系列可供选择的程序,但Spacey在其工具箱中仅包含最适合该问题的算法。
  • 与Spacey相比,NLTK支持更广泛的语言(Spacey仅支持7种语言)
  • 虽然Spacey有一个面向对象的库,但是NLTK有一个字符串处理库
  • Spacey可以支持单词向量,而NLTK无法支持

49.什么是POS标记?

词性标记(通常称为POS标记)是指根据文档的上下文识别文档中特定单词并将其分组为词性的过程。POS标记也称为语法标记,因为它涉及理解语法结构并标识各个组成部分。
POS标记是一个复杂的过程,因为根据上下文,同一单词可能是语音的不同部分。由于相同的原因,用于单词映射的相同通用过程对于POS标记非常无效。

50.什么是NES?

名称实体识别通常被称为NER,它是在文本文档中标识信息量更大且具有唯一上下文的特定实体的过程。这些通常表示地点,人员,组织等。即使这些实体看起来是专有名词,NER过程也远非仅仅识别名词。实际上,NER涉及实体组块或提取,其中实体被分段以将它们归类到不同的预定义类别下。此步骤进一步有助于提取信息。

51.变压器XL使用相对位置嵌入

A. 正确
B. 错误
答案:A
无需嵌入即可表示单词的绝对位置,而是使用Transformer XL使用嵌入来编码单词之间的相对距离。此嵌入用于计算在可能被n个单词之前或之后分隔的任何2个单词之间的注意力得分。

52.什么是朴素贝叶斯算法?何时可以在NLP中使用该算法?

朴素贝叶斯算法是基于贝叶斯定理原理的分类器的集合。这一系列NLP模型构成了一系列算法,可用于各种分类任务,包括情感预测,垃圾邮件过滤,文档分类等。
朴素贝叶斯算法收敛速度更快,所需的训练数据更少。与其他判别模型(例如逻辑回归)相比,朴素贝叶斯模型花费的时间更少。该算法非常适合在数据动态且频繁更改的多个类和文本分类中使用。

53.解释NLP中的依赖项解析吗?

依赖解析,在NLP中也称为语法解析,是为句子分配语法结构并标识其依赖解析的过程。这个过程对于理解句法结构中“头”词之间的相关性至关重要。考虑到任何句子如何具有多个依赖关系解析,依赖关系解析的过程可能会有些复杂。多个解析树称为歧义。依存关系解析需要解决这些歧义,以便有效地为句子分配句法结构。
除了句法结构之外,依赖关系分析还可以用于句子的语义分析。

54.什么是文本摘要?

文本摘要是缩短一长段文本并保持其含义和效果不变的过程。文本摘要旨在为任何给定的文本创建摘要,并概述文档的要点。这项技术最近得到了改进,并且能够成功总结大量文本。
文本摘要已证明是一种幸运,因为机器可以立即汇总大量文本,否则这将非常耗时。文本摘要有两种类型:
  • 基于提取的摘要
  • 基于抽象的摘要

55.NLP的主要任务是什么?

翻译,命名实体识别,关系提取,情感分析,语音识别和主题细分是NLP的主要任务。在非结构化数据下,可能有许多未开发的信息可以帮助组织发展。

56.NLP中的停用词是什么?

句子中出现的常见单词会给句子增加分量,被称为停用词。这些停用词充当桥梁,并确保句子在语法上是正确的。简单来说,在处理自然语言数据之前被过滤掉的单词被称为停用词,它是一种常见的预处理方法。

57.有哪些文本表示模型,它们各有什么优缺点?

词袋模型与N-gram
最基本的文本表示模型是词袋模型(Bag of Words)。基本思想是把每篇文章看成一袋子词,并忽略每个词出现的顺序。具体来看:将整段文本表示成一个长向量,每一维代表一个单词。该维对应的权重代表这个词在原文章中的重要程度。
常用TF-IDF计算权重。公式为:
其中TF(t,d)为单词t在文档中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所起的重要性。表示为
IDF(t)=log文章总数包含单词t的文章总数+1IDF(t)=log\frac{文章总数}{包含单词t的文章总数+1}IDF(t)=log
包含单词t的文章总数+1
文章总数
直观的解释是如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。
缺点 单词程度的划分有时候并不是一个好的做法。比如Natural Language Processing一词,单个单词拆分的语义与三个词连续出现的语义并不相同。
改进 通常可将连续出现的N个单词构成的词组作为一个特征放到向量表示中去。构成N-gram模型
  • 主题模型
    主题模型用于从文本库中发现有代表性的主题(得到每个主题上的词的分布特性),并且能够计算出每篇文章的主题分布。
  • 词嵌入与深度学习模型
    词嵌入是一类将词向量化的模型的统称,核心思想是将每个单词都映射成地位空间上的一个稠密向量。低维空间上的每一个单词也可以看做是一个隐含的主题,只不过不像主题模型中那么明显。
    对有N个单词的文档,词嵌入用K维向量映射单词,可以得到一个N*K的矩阵来表示这篇文档。但是还需要抽象出更高层的特征,通常使用深度学习来得到更高维的特征。

58.Word2vec是如何工作的?它和LDA有什么区别和联系?

  • word2vec
CBOW目标是根据上下文出现的单词预测当前词的生成概率。而Skip-gram根据当前词预测上下文各词的生成概率。
其中w(t)w(t)w(t)是当前所关注的词,w(t−2),w(t−1),w(t+1),w(t+2)w(t-2),w(t-1),w(t+1),w(t+2)w(t−2),w(t−1),w(t+1),w(t+2)是上下文单词,这里前后滑动窗口大小均设为2。
CBOW和skip-gram都可以表示为有输入层、映射层、输出层组成的浅层神经网络。
输入层中每个单词是由独热编码表示。所有词均表示一个N维向量,N为词汇表中单词的总数。在向量中,每个单词对应的维度为1,其余维度为0。
在映射层中,K个隐含单元的值可以由N维输入向量以及连接输入和隐含单元的NK维权重矩阵计算得到。
输出层向量的值可以由隐含层向量(K维),以及连接隐含层和输出层之间的KN维权重矩阵计算得到。输出层也是一个N维向量,每一维与词汇表中的一个单词对应。最后对输出层向量应用Softmax函数,可以得到每个单词的生成概率。
接下来需要训练神经网络权重,使得所有单词的整体生成概率最大化。共有两大参数:从输入层到隐含层的一个维度为NK的权重矩阵,从隐含层到输出层的一个维度为KN的权重矩阵。学习权重可以使用BP算法实现。
训练得到维度为N * K和K * N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。
但是由于Softmax激活函数存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得迭代过程非常缓慢。由此产生了Hierarchical Softmax和Negative Sampling两种方法。
  • word2vec与LDA区别
    首先,LDA是按照文档中单词的共现关系来对单词按照主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布。而word2vec实际上是对“上下文-单词”矩阵进行学习,其中上下文由周围几个单词组成,由此学到的词向量更多融入了上下文特征。
    主题模型和词嵌入两类方法最大的不同在于模型本身。
  • 主题模型是一种基于概率图模型的生成式模型。其似然函数可以写为若干条件概率连乘的形式,其中包含需要推测的隐含变量(即主题)
  • 词嵌入模型一般表示为神经网络的形式,似然函数定义在网络的输出之上。需要学习网络的权重来得到单词的稠密向量表示。

59.处理文本数据时,RNN比CNN有什么特点?

传统文本处理任务的方法一般将TF-IDF向量作为特征输入,这样实际上丢失了输入的文本系列中每个单词的顺序。
CNN一般会接收一个定长的向量作为输入,然后通过滑动窗口加池化的方法将原来的输入转换为一个固定长度的向量表示。这样做可以捕捉到文本中的一些局部特征,但是两个单词之间的长距离依赖关系难以学习。
RNN能够很好处理文本数据变长并且有序的输入序列。将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力。
在文本分类任务中,激活函数f可以选取Tanh或ReLU函数,g可以采用Softmax函数。
通过不断最小化损失误差(即输出的y与真实类别之间的距离),可以不断训练网络,使得得到的循环神经网络可以准确预测文本类别。相比于CNN,RNN由于具备对序列信息的刻画能力,往往能得到更加准确的结果。

60.RNN为什么会出现梯度消失或梯度爆炸?有哪些改进方案?

RNN的求解可以采用BPTT(Back Propagation Through Time)算法实现。实际上是BP的简单变种。RNN设计的初衷在于捕捉长距离输入之间的依赖关系,然而使用BPTT的算法并不能成功捕捉远距离依赖关系,这一现象源于深度神经网络中的梯度消失问题。
由于预测误差沿神经网络每一层反向传播,当雅克比矩阵最大特征值大于1时,随着离输出越来越远,每层的梯度大小会呈指数增长,导致梯度爆炸。反之若最大特征值小于1,梯度大小会指数减小,产生梯度消失。梯度消失意味着无法通过加深网络层数来提升预测效果,只有靠近输出的几层才真正起到学习的作用,这样RNN很难学习到输入序列中的长距离依赖关系。
梯度爆炸可以通过梯度裁剪来缓解,即当梯度的范式大于某个给定值的时候,对梯度进行等比缩放。而梯度消失问题需要对模型本身进行改进。深度残差网络是对前馈神经网络的改进。通过残差学习的方式缓解了梯度消失的现象,从而可以学习到更深层的网络表示。对于RNN来说,长短时记忆模型及其变种门控循环单元等模型通过加入门控机制,很大程度上缓解了梯度消失带来的损失。
在CNN中采用ReLU激活函数可以有效改进梯度消失,取得更好收敛速度和收敛结果,

那么在RNN中可以采用ReLU作为激活函数吗?

答案是肯定的。但是需要对矩阵的初值做一定限制,否则容易引发数值问题。首先回顾一下RNN前向传播公式:
那么为什么在CNN中不会出现这样的问题呢,因为CNN中每一层的权重矩阵是不同的,并且在初始化的时候它们是独立同分布的,可以相互抵消,多层之后不会出现严重的数值问题。
综上所述,采用ReLU作为RNN中隐含层的激活函数时,只有当W的取值在单位矩阵附近时才能取得较好结果。因此需要将W初始化为单位矩阵。实践证明,初始化W为单位矩阵并使用ReLU激活函数在一些应用中取得了与LSTM相似的结果,并且学习速度更快。

61.LSTM是如何实现长短期记忆功能的?

RNN有梯度消失和梯度爆炸问题,学习能力有限。LSTM可以对有价值的信息进行长期记忆,有广泛应用
首先结合LSTM结构图和更新的计算公式探讨这种网络如何实现功能。
与传统的RNN相比,LSTM依然是基于 只不过对内部的结果进行了更加精细的设计:加入了输入门,,遗忘门以及输出门和一个内部记忆单元, 输入门控制当前计算的新状态以及以多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息以多大程度被遗忘掉;输出门控制当前的输出有多大程度取决于当前的记忆单元。
与传统RNN不同的是,从上一个记忆单元的转移不一定完全取决于激活函数计算得到的状态,还得由输入门和遗忘门共同控制。
在一个训练好的网络中,当输入序列没有重要信息时,LSTM遗忘门的值接近为1,输入门接近0,此时过去的记忆会被保存,从而实现了长期记忆;当输入的序列中出现了重要信息时,LSTM会将其存入记忆中,此时输入门的值会接近于1;当输入序列出现重要信息,且该信息意味着之前的记忆不再重要的时候,输入门接近1,遗忘门接近0,这样旧的记忆被遗忘,新的重要信息被记忆。经过这样的设计,整个网络更容易学习到序列之间的长期依赖。

62.hash 冲突及解决办法
关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突。解决办法:
1)开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。
2) 再哈希法:同时构造多个不同的哈希函数。
3)链地址法:将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。
4)建立公共溢出区:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。

63.LSTM中各模块分别使用什么激活函数,可以使用别的激活函数吗?

关于激活函数的选取。在LSTM中,遗忘门、输入门、输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh作为激活函数。
值得注意的是,这两个函数都是饱和的,也就是在输入达到一定值的情况下,输出不会发生明显变化。如果是非饱和的激活函数,比如ReLU,那么就难以实现门控的效果。
Sigmoid函数的输出在0~1之间,符合门控的物理意义。且当输入较小或较大时,其输出会非常接近0或1,从而保证该门开或关。
在生成候选记忆时,使用Tanh函数,因为其输出在-1~1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh在输入为0的附近比Sigmoid有更大梯度,通常使模型收敛更快。
激活函数选取不是一成不变的,例如在原始LSTM中,使用的是Sigmoid函数的变种,h(x)=2sigmoid(x)−1,g(x)=4sigmoid(x)−2h(x)=2sigmoid(x)-1,g(x)=4sigmoid(x)-2h(x)=2sigmoid(x)−1,g(x)=4sigmoid(x)−2,这两个函数的范围分别是[-1,1]和[-2,2]。后来发现效果并不如sigmoid。
实际上在门控中,使用Sigmoid几乎是现代所有神经网络模块的共同选择。例如在GRU和Attention机制中,也采用Sigmoid作为门控激活函数。
在计算能力有限制的设备中,由于Sigmoid函数求指数需要一定的计算量,此时会使用0/1门控输出为0或1的离散值。即当输入小于阈值,门控输出为0;大于阈值时,输出为1。

64.常见的概率图模型中,哪些是生成式模型,哪些是判别式模型?

首先需要弄清楚生成式模型与判别式模型的区别。
假设可观测的变量集合为X,需要预测的变量集合为Y,其他的变量集合为Z。生成式模式是对联合概率分布P(X,Y,Z)P(X,Y,Z)P(X,Y,Z)进行建模,在给定观测集合X的条件下,通过计算边缘分布来求得对变量集合Y的推断。
判别式模型是直接对条件概率分布P(Y,Z∣X)P(Y,Z|X)P(Y,Z∣X)进行建模,然后消掉无关变量Z就可以得到对变量集合Y的预测,即常见的概率图模型由朴素贝叶斯、最大熵模型、贝叶斯网络、隐马尔可夫模型、条件随机场、pLSA、LDA等。
其中朴素贝叶斯、贝叶斯网络、pLSA、LDA属于生成式。
最大熵模型属于判别式
隐马尔可夫模型、条件随机场是对序列数据进行建模的方法,其中隐马尔可夫属于生成式,条件随机场属于判别式

65.了解基于医学语义匹配的实体链接算法吗?

实体链接任务分为命名实体识别、实体链接两个阶段
对于其中的实体链接阶段进行介绍:
实体链接一般分为候选实体生成和候选实体消歧两个阶段。候选实体生成是指为了待链接的实体指称初步筛选出一批待选命名实体。候选实体生成的方法一般有:词典映射法和检索排序法。候选实体生成以后,我们需要在候选实体中选出真正的目标实体,我们称这个过程为实体消歧。常用的实体消歧方法以下分别介绍。
基于检索的方法
该方法将指称实体及其附近的关键词作为查询项,在知识库中进行查询,选取得分最高的候选实体作为目标实体;能够有效利用上下文信息。
基于空间向量模型的方法
根据上下文分别构建指称实体和候选实体的特征向量,然后计算它们的余弦相似度,选取相似度最高的候选实体作为目标实体。但空间向量为词袋模型,不能反映词语之间的语义关系。
基于排序模型的方法
该方法主要利用Learn to Rank(LTR)排序模型,根据查询与文档的文本相似度(余弦相
似度)、欧氏距离、编辑距离、主题相似度、实体流行度等等特征进行训练和预测,选取排序最高的作为目标实体。它的优势就是可以有效地融入不同的特征。
基于主题模型的方法
根据指称实体与候选实体的主题分布相似度进行目标实体的确认。该方法的主要优势是能在一定程度上反映实体的语义相关性,避免维度灾难,在上下文信息比较丰富的情况下,能够取得很好的效果。
基于深度语义表示的方法
利用维基百科中实体链接关系与邻接关系等训练实体语义表示;然后结合上下文,使用类似于PageRank的方法对各个候选实体进行打分,选取得分最高的作为目标实体。

66.实现输入纠错的方法

1)误拼词字典法。
2)N-gram法。基于n元文法,通过对大规模英文文本的统计得到单词与单词问的转移概率矩阵。当检测到某英文单词不在词典中时。查转移概率矩阵,取转移概率大于某给定阈值的单词为纠错建议。
3)最小编辑距离法。通过计算误拼字符串与词典中某个词间的最小编辑距离来确定纠错候选词。所谓最小编辑距离是指将一个词串转换为另一个词串所需的最少的编辑操作次数。在编辑操作中,可以将单次的编辑动作归纳为三种:插入字符、删除字符和替换字符。

67.请列出几种文本特征提取算法

答:文档频率、信息增益、互信息、X^2统计、TF-IDF

68.简述几种自然语言处理开源工具包

答:LingPipe、FudanNLP、OpenNLP、CRF++、Standord CoreNLP、IKAnalyzer

69.比较Boosting和Bagging的异同

二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法。
Bagging:从原始数据集中每一轮有放回地抽取训练集,训练得到k个弱学习器,将这k个弱学习器以投票的方式得到最终的分类结果。
Boosting:每一轮根据上一轮的分类结果动态调整每个样本在分类器中的权重,训练得到k个弱分类器,他们都有各自的权重,通过加权组合的方式得到最终的分类结果。

70.卷积神经网络CNN中池化层有什么作用?

减小图像尺寸即数据降维,缓解过拟合,保持一定程度的旋转和平移不变性。

71.神经网络中Dropout的作用?具体是怎么实现的?

防止过拟合。每次训练,都对每个神经网络单元,按一定概率临时丢弃。

72.解释下卷积神经网络中感受野的概念?

在卷积神经网络中,感受野 (receptive field)的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。

73.梯度爆炸的解决方法?

针对梯度爆炸问题,解决方案是引入Gradient Clipping(梯度裁剪)。通过Gradient Clipping,将梯度约束在一个范围内,这样不会使得梯度过大。
74.深度学习模型参数初始化都有哪些方法?
(1)Gaussian 满足mean=0,std=1的高斯分布x∼N(mean,std2)
(2)Xavier 满足x∼U(−a,+a)x∼U(−a,+a)的均匀分布, 其中 a = sqrt(3/n)
(3)MSRA 满足x∼N(0,σ2)x∼N(0,σ2)的高斯分布,其中σ = sqrt(2/n)
(4)Uniform 满足min=0,max=1的均匀分布。x∼U(min,max)x∼U(min,max)等等

75.注意力机制在深度学习中的作用是什么?有哪些场景会使用?

深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标是从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。目前在神经机器翻译(Neural Machine Translation)、图像理解(Image caption)等场景都有广泛应用。

76. 卷积神经网络为什么会具有平移不变性?

MaxPooling能保证卷积神经网络在一定范围内平移特征能得到同样的激励,具有平移不变形。

77.神经网络参数共享(parameter sharing)是指什么?

所谓的权值共享就是说,用一个卷积核去卷积一张图,这张图每个位置是被同样数值的卷积核操作的,权重是一样的,也就是参数共享。

78.什么是神经网络的梯度消失问题,为什么会有梯度消失问题?有什么办法能缓解梯度消失问题?

在反向传播算法计算每一层的误差项的时候,需要乘以本层激活函数的导数值,如果导数值接近于0,则多次乘积之后误差项会趋向于0,而参数的梯度值通过误差项计算,这会导致参数的梯度值接近于0,无法用梯度下降法来有效的更新参数的值。
改进激活函数,选用更不容易饱和的函数,如ReLU函数。

79.列举你所知道的神经网络中使用的损失函数

欧氏距离,交叉熵,对比损失,合页损失

80.对于多分类问题,为什么神经网络一般使用交叉熵而不用欧氏距离损失?

交叉熵在一般情况下更容易收敛到一个更好的解。

81.解释SVM核函数的原理

核函数将数据映射到更高维的空间后处理,但不用做这种显式映射,而是先对两个样本向量做内积,然后用核函数映射。这等价于先进行映射,然后再做内积。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存