括号匹配问题算法怎么算_括号匹配问题算法怎么算的

括号匹配问题算法怎么算_括号匹配问题算法怎么算的自然语言处理面试题,更至105题,持续更新….对象看我在搜集面试题,对我投来不解和疑惑:“你丫刚上岸,刚找到份像样的工作就不消停了?”“面试也会上瘾的吗?”“我属松鼠的哦”没错,松鼠本鼠开始囤货了。刚上岸,当然不会想着立即跳槽,除了敲代码,日常整理些面试题,顺便自己再过一遍,说不准哪天就用

自然语言处理面试题,更至105题,持续更新….
  对象看我在搜集面试题,对我投来不解和疑惑:“你丫刚上岸,刚找到份像样的工作就不消停了?”“面试也会上瘾的吗?”

  “我属松鼠的哦”没错,松鼠本鼠开始囤货了。

  刚上岸,当然不会想着立即跳槽,除了敲代码,日常整理些面试题,顺便自己再过一遍,说不准哪天就用得上了呢。本帖持续不定期更新,欢迎大家评论区交流。

  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用例?

  从图像中检测物体面部识别语音生物识别文本摘要

  答案:D

  A和B是计算机视觉应用案例,C是语音应用案例。

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

  A. KT * Log(3)B. T * Log(3) / KC. K * Log(3) / TD. 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

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

  A. Word2Vec

  B. GloVe

  C. BERT

  D. 以上所有

  答案:C只有BERT(Bidirectional Encoder Representations from Transformer)支持上下文建模。

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

  Word2VecBERTGloVe以上所有

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

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

  A. Word2Vec

  B. BERT

  C. GloVeD. 以上所有

  答案:B

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

  正确错误

  答案:A

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

  正确错误

  答案:A

  可以使用余弦相似度来确定通过词嵌入来表示的两个向量之间的距离。

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

  新德里之于印度,北京之于中国男人之于电脑,女人之于家庭主妇

  答案:A

  陈述B是一种偏见,因为它把女人变成了家庭主妇,而陈述A不是一种偏见。

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

  A. ELMoB. Open AI’s GPTC. ULMFit答案:B

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

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

  A. GloVeB. BERTC. Open AI’s GPTD. ULMFit答案:C

  ULMFit拥有基于LSTM的语言建模架构;这之后被Open AI的GPT的Transformer架构所取代。

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

  A. 基于LSTM的语言建模

  b. Transformer架构

  答案:B

  从GPT开始,Transformer架构就得到了支持,而且训练速度更快,所需的数据量也更少。

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

  GloVeWord2VecELMoNltk

  答案:C

  ELMo(Embeddings from Language Models)词嵌入支持同一个词的多个嵌入,这有助于在不同的上下文中使用同一个词,从而捕获上下文而不仅仅是词的意思,这与GloVe、Word2Vec不同。Nltk不是词嵌入。括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

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

  A. ELMoB. GPTC. BERTD. ULMFit答案:CBERT使用token嵌入、段嵌入(Segment Embedding)、位置嵌入(Position Embedding)。

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

  A. GPTB. BERTC. ULMFitD. ELMo答案:D

  ELMo尝试训练两个独立的LSTM语言模型(从左到右和从右到左),并将结果连接起来以产生词嵌入。

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

  BERTGPTELMoWord2Vec

  答案:B

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

  A. OpenAI GPTB. ELMoC. BERTD. ULMFit答案:C

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

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

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

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

  A. 正确

  B. 错误

  答案:A

  Transformer模型中的注意机制用于建模所有词之间的关系,并为最重要的词提供权重。

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

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

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

  A. BERTB. EMMoC. GPTD. XLNET答案:DXLNET提供了基于排列的语言模型,这是与BERT的一个关键区别。

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

  A. 正确

  B. 错误

  答案:A

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

  43.什么是信息提取?

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

  44.什么是单词袋?

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

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

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

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

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

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

  NLP和CI之间的区别如下:自然语言处理对话介面NLP试图帮助机器理解和学习语言概念的工作方式。CI仅专注于为用户提供与之交互的界面。NLP使用AI技术通过语言识别,理解和解释用户的请求。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维向量映射单词,可以得到一个的矩阵来表示这篇文档。但是还需要抽象出更高层的特征,通常使用深度学习来得到更高维的特征。

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

  word2vec

  CBOW目标是根据上下文出现的单词预测当前词的生成概率。而Skip-gram根据当前词预测上下文各词的生成概率。[图片上传失败…(image-50c410-1583640689140)]其中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)误拼词字典法。 1)N-gram法。基于n元文法,通过对大规模英文文本的统计得到单词与单词问的转移概率矩阵。当检测到某英文单词不在词典中时。查转移概率矩阵,取转移概率大于某给定阈值的单词为纠错建议。 2)最小编辑距离法。通过计算误拼字符串与词典中某个词间的最小编辑距离来确定纠错候选词。所谓最小编辑距离是指将一个词串转换为另一个词串所需的最少的编辑操作次数。在编辑操作中,可以将单次的编辑动作归纳为三种:插入字符、删除字符和替换字符。

  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, [公式] )(2)Xavier 满足x∼U(−a,+a)x∼U(−a,+a)的均匀分布, 其中 a = sqrt(3/n)(3)MSRA 满足x∼N(0, [公式] )x∼N(0,[公式])的高斯分布,其中σ = sqrt(2/n)(4)Uniform 满足min=0,max=1的均匀分布。x∼U(min,max)x∼U(min,max)等等

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

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

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

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

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

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

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

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

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

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

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

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

  80.解释SVM核函数的原理

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

  81.为什么BERT在第一句前会加一个[CLS]标志?

  BERT在第一句前会加一个[CLS]标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游的分类任务等。

  为什么选它呢,因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。

  具体来说,self-attention是用文本中的其它词来增强目标词的语义表示,但是目标词本身的语义还是会占主要部分的,因此,经过BERT的12层,每次词的embedding融合了所有词的信息,可以去更好的表示自己的语义。

  而[CLS]位本身没有语义,经过12层,得到的是attention后所有词的加权平均,相比其他正常词,可以更好的表征句子语义。

  当然,也可以通过对最后一层所有词的embedding做pooling去表征句子语义。

  这里补充一下bert的输出,有两种,在BERT TF源码中对应:

  一种是get_pooled_out(),就是上述[CLS]的表示,输出shape是[batch size,hidden size]。

  一种是get_sequence_out(),的是整个句子每一个token的向量表示,输出shape是[batch_size, seq_length, hidden_size],这里也包括[CLS],因此在做token级别的任务时要注意它。

  82、BERT的三个Embedding直接相加会对语义有影响吗?

  这是一个非常有意思的问题,苏剑林老师也给出了回答,真的很妙啊:Embedding的数学本质,就是以one hot为输入的单层全连接。也就是说,世界上本没什么Embedding,有的只是one hot。

  可参考:https://kexue.fm/archives/4122

  在这里想用一个例子再尝试解释一下:

  假设 token Embedding 矩阵维度是 [4,768];position Embedding 矩阵维度是 [3,768];segment Embedding 矩阵维度是 [2,768]。

  对于一个字,假设它的 token one-hot 是[1,0,0,0];它的 position one-hot 是[1,0,0];它的 segment one-hot 是[1,0]。

  那这个字最后的 word Embedding,就是上面三种 Embedding 的加和。

  如此得到的 word Embedding,和concat后的特征:[1,0,0,0,1,0,0,1,0],再过维度为 [4+3+2,768] = [9, 768] 的全连接层,得到的向量其实就是一样的。

  再换一个角度理解:

  直接将三个one-hot 特征 concat 起来得到的 [1,0,0,0,1,0,0,1,0] 不再是one-hot了,但可以把它映射到三个one-hot 组成的特征空间,空间维度是 4*3*2=24 ,那在新的特征空间,这个字的one-hot就是[1,0,0,0,0…] (23个0)。

  此时,Embedding 矩阵维度就是 [24,768],最后得到的 word Embedding 依然是和上面的等效,但是三个小Embedding 矩阵的大小会远小于新特征空间对应的Embedding 矩阵大小。

  当然,在相同初始化方法前提下,两种方式得到的 word Embedding 可能方差会有差别,但是,BERT还有Layer Norm,会把 Embedding 结果统一到相同的分布。

  BERT的三个Embedding相加,本质可以看作一个特征的融合,强大如 BERT 应该可以学到融合后特征的语义信息的。

  83、在BERT中,token分3种情况做mask,分别的作用是什么?

  在 BERT 的 Masked LM 训练任务中, 会用 [MASK] token 去替换语料中 15% 的词,然后在最后一层预测。但是下游任务中不会出现 [MASK] token,导致预训练和 fine-tune 出现了不一致,为了减弱不一致性给模型带来的影响,在这被替换的 15% 语料中:80% 的 tokens 会被替换为 [MASK] token10% 的 tokens 会称替换为随机的 token10% 的 tokens 会保持不变但需要被预测

  第一点中的替换,是 Masked LM 中的主要部分,可以在不泄露 label 的情况下融合真双向语义信息;

  第二点的随机替换,因为需要在最后一层随机替换的这个 token 位去预测它真实的词,而模型并不知道这个 token 位是被随机替换的,就迫使模型尽量在每一个词上都学习到一个 全局语境下的表征,因而也能够让 BERT 获得更好的语境相关的词向量(这正是解决一词多义的最重要特性);

  第三点的保持不变,也就是真的有 10% 的情况下是 泄密的(占所有词的比例为15% * 10% = 1.5%),这样能够给模型一定的 bias ,相当于是额外的奖励,将模型对于词的表征能够拉向词的 真实表征(此时输入层是待预测词的真实 embedding,在输出层中的该词位置得到的embedding,是经过层层 Self-attention 后得到的,这部分 embedding 里多少依然保留有部分输入 embedding 的信息,而这部分就是通过输入一定比例的真实词所带来的额外奖励,最终会使得模型的输出向量朝输入层的真实 embedding 有一个 偏移)。

  而如果全用 mask 的话,模型只需要保证输出层的分类准确,对于输出层的向量表征并不关心,因此 可能会导致最终的向量输出效果并不好。

  84、为什么BERT选择mask掉15%这个比例的词,可以是其他的比例吗?

  BERT采用的Masked LM,会选取语料中所有词的15%进行随机mask,论文中表示是受到完形填空任务的启发,但其实与CBOW也有异曲同工之妙。

  从CBOW的角度,这里 有一个比较好的解释是:在一个大小为 1/p = 100/15 约等于 7 的窗口中随机选一个词,类似CBOW中滑动窗口的中心词,区别是这里的滑动窗口是非重叠的。

  那从CBOW的滑动窗口角度,10%~20%都是还ok的比例。

  85、针对句子语义相似度/多标签分类/机器翻译翻译/文本生成的任务,利用BERT结构怎么做fine-tuning?

  实际操作时,上述最后一句话之后还会加一个[SEP] token,语义相似度任务将两个句子按照上述方式输入即可,之后与论文中的分类任务一样,将[CLS] token 位置对应的输出,接上 softmax 做分类即可(实际上 GLUE 任务中就有很多语义相似度的数据集)。

  针对多标签分类的任务

  多标签分类任务,即 MultiLabel,指的是一个样本可能同时属于多个类,即有多个标签。以商品为例,一件 L 尺寸的棉服,则该样本就有至少两个标签——型号:L,类型:冬装。

  对于多标签分类任务,显而易见的朴素做法就是不管样本属于几个类,就给它训练几个分类模型即可,然后再一一判断在该类别中,其属于那个子类别,但是这样做未免太暴力了,而多标签分类任务,其实是可以「只用一个模型」来解决的。

  利用 BERT 模型解决多标签分类问题时,其输入与普通单标签分类问题一致,得到其 embedding 表示之后(也就是 BERT 输出层的 embedding),有几个 label 就连接到几个全连接层(也可以称为 projection layer),然后再分别接上 softmax 分类层,这样的话会得到 ,最后再将所有的 loss 相加起来即可。这种做法就相当于将 n 个分类模型的特征提取层参数共享,得到一个共享的表示(其维度可以视任务而定,由于是多标签分类任务,因此其维度可以适当增大一些),最后再做多标签分类任务。

  针对翻译的任务

  针对翻译的任务,我自己想到一种做法,因为 BERT 本身会产生 embedding 这样的“副产品”,因此可以直接利用 BERT 输出层得到的 embedding,然后在做机器翻译任务时,将其作为输入/输出的 embedding 表示,这样做的话,可能会遇到 UNK 的问题,为了解决 UNK 的问题,可以将得到的词向量 embedding 拼接字向量的 embedding 得到输入/输出的表示(对应到英文就是 token embedding 拼接经过 charcnn 的 embedding 的表示)。

  针对文本生成的任务

  关于生成任务,搜到以下几篇论文:

  BERT has a Mouth, and It Must Speak: BERT as a Markov Random Field Language Model

  MASS: Masked Sequence to Sequence Pre-training for Language Generation

  Unified Language Model Pre-training for Natural Language Understanding and Generation

  86.概率题:一个单位圆内随机取一点,求到圆心距离的期望。 用代码模拟一下结果,然后再用数学推导结果

  (代码模拟直接随机取坐标(x, y) (x,y in [-1, 1],圆心为(0,0),模拟1000词,求均值结果)

  (数学推导,求分布函数 -> 密度函数 -> 积分) 答案是2/3

  解析:一个单位圆内随机取一点,求到圆心距离的期望。 用代码模拟一下结果,然后再用数学推导结果。(代码模拟直接随机取坐标(x, y) (x,y in [-1, 1],圆心为(0,0),模拟1000词,求均值结果)(数学推导,求分布函数 -> 密度函数 -> 积分) 答案是2/3求期望,就是找概率,该点到圆心的距离为 r 的概率为:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  式中,分子为该点落到圆心为 r 的小圆环的面积,如下图阴影部分,分母是整个单位圆的面积。括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  下面求点到圆心的距离的期望。括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  代码如下:import numpy as np import random import math def random_point(num_of_points, radius): points = [] for i in range(0, num_of_points): theta = random.random() * 2 * np.pi r = random.random() * radius x = math.cos(theta) * (r ** 0.5) y = math.sin(theta) * (r ** 0.5) points.append([x, y]) return points def main(): num_of_points = 10000 points = random_point(num_of_points, 1) res = 0 for i in points: res += (i[0] ** 2 + i[1] ** 2) ** 0.5 print(res / num_of_points) if __name__ == "__main__": main

  87.字符串内含有小中大括号和其他字符,判断是否括号是否匹配。

  参考答案:此题出自leetcode的20题-判断有效括号, 只需要将字符串中的“其他字符”去除,那么就和leetcode上的一样了:使用栈解题思路:定义一个栈 stack = [], 用于存储括号的左半部分("(, {, ["); 定义一个字典 键为括号的右半部分,值为括号的左半部分;遍历整个字符串,遇到左括号就保存在stack中;遇到右括号就确认与stack最顶端的元素是否匹配,若不匹配或者stack为空,则返回False;遍历整个字符串后检查stack,正常情况此时栈为空,若不为空 则返回False;

  Python参考代码如下:class Solution: def isValid(self, s: str) -> bool: # 定义栈 stack = [] # 括号字符列表 chars = ["(", ")", "{", "}", "[", "]"] # 括号匹配对 pair = { ")" : "(", "}" : "{", "]" : "[" } # 遍历整个字符串 for char in s: # 去除"其他字符" if char not in chars: continue # 右括号:栈为空或 栈顶元素不匹配则返回False, 否则弹出栈顶元素 if char in pair: if not stack or stack[-1] != pair[char]: return False stack.pop() else: # 将左括号压入栈 stack.append(char) # 左右括号如果全部是匹配的 那么此时栈应该是空的 # 栈为空 返回 True 不为空返回False: return not stack

  88.介绍一下transformer。有什么可以调整的参数。

  Transformer结构,可参考前面已有答案。可调整的参数:训练数据集中最长句子的长度,beam_size(候选集的个数) 和 max_out_len(最大输出的句子长度)。

  89.具体讲一下self attention。

  参考答案:自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。自注意力机制在文本中的应用,主要是通过计算单词间的互相影响,来解决长距离依赖问题。自注意力机制的计算过程:1.将输入单词转化成嵌入向量;2.根据嵌入向量得到q,k,v三个向量;3.为每个向量计算一个score:score =q . k ;4.为了梯度的稳定,Transformer使用了score归一化,即除以括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  ;5.对score施以softmax激活函数;6.softmax点乘Value值v,得到加权的每个输入向量的评分v;7.相加之后得到最终的输出结果z :z=\\Sigma{v}。

  90.讲一下attention

  参考答案:Attention是从大量信息中有筛选出少量重要信息,并聚焦到这些重要信息上,忽略大多不重要的信息。权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。计算过程可以概括为三个部分:第一个部分:根据Query和某个 Keyi ,计算两者的相似性或者相关性,最常见的方法包括:求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求值;第二个部分:采用SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。第三个部分:计算结果 ai 即为 Valuei 对应的权重系数,然后进行加权求和即可得到Attention数值。

  91.self attention, attention, 双向lstm的区别。

  参考答案:传统的Attention机制在一般任务的Encoder-Decoder model中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素Query和Source中的所有元素之间。简单的讲就是Attention机制中的权重的计算需要Target来参与的,即在Encoder-Decoder model中Attention权值的计算不仅需要Encoder中的隐状态而且还需要Decoder 中的隐状态。而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。例如在Transformer中在计算权重参数时将文字向量转成对应的KQV,只需要在Source处进行对应的矩阵操作,用不到Target中的信息。Self Attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或者LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。

  92.常见的激活函数有哪些?各自有什么特点。分布应用于场景。leaky relu公式。

  参考答案:常见的激活函数有:Sigmoid、Tanh、ReLU、Leaky ReLUSigmoid函数:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  特点:它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。缺点:缺点1:在深度神经网络中梯度反向传递时导致梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。缺点2:Sigmoid 的 output不是0均值(即zero-centered)。缺点3:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。Tanh函数:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  特点:它解决了Sigmoid函数的不是zero-centered输出问题,收敛速度比sigmoid要快,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。ReLU函数:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  特点:1.ReLu函数是利用阈值来进行因变量的输出,因此其计算复杂度会比剩下两个函数低(后两个函数都是进行指数运算)2.ReLu函数的非饱和性可以有效地解决梯度消失的问题,提供相对宽的激活边界。3.ReLU的单侧抑制提供了网络的稀疏表达能力。ReLU的局限性:在于其训练过程中会导致神经元死亡的问题。这是由于函数f(x)=max(0,x)导致负梯度在经过该ReLU单元时被置为0,且在之后也不被任何数据激活,即流经该神经元的梯度永远为0,不对任何数据产生响应。在实际训练中,如果学习率(Learning Rate)设置较大,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。Leaky ReLu函数:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  LReLU与ReLU的区别在于, 当z<0时其值不为0,而是一个斜率为a的线性函数,一般a为一个很小的正常数, 这样既实现了单侧抑制,又保留了部分负梯度信息以致不完全丢失。但另一方面,a值的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。基于此,参数化的PReLU(Parametric ReLU)应运而生。它与LReLU的主要区别是将负轴部分斜率a作为网络中一个可学习的参数,进行反向传播训练,与其他含参数网络层联合优化。而另一个LReLU的变种增加了“随机化”机制,具体地,在训练过程中,斜率a作为一个满足某种分布的随机采样;测试时再固定下来。Random ReLU(RReLU)在一定程度上能起到正则化的作用。

  93.layer norm和batch norm的区别。和各自的应用场景。已经各自在norm之后还有没有其他操作。训练时候和测试时候的区别。

  参考答案:Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。BatchNorm的缺点:1.需要较大的batch以体现整体数据分布2.训练阶段需要保存每个batch的均值和方差,以求出整体均值和方差在infrence阶段使用3.不适用于可变长序列的训练,如RNNLayer NormalizationLayer Normalization是一个独立于batch size的算法,所以无论一个batch样本数多少都不会影响参与LN计算的数据量,从而解决BN的两个问题。LN的做法是根据样本的特征数做归一化。LN不依赖于batch的大小和输入sequence的深度,因此可以用于batch-size为1和RNN中对边长的输入sequence的normalize操作。但在大批量的样本训练时,效果没BN好。实践证明,LN用于RNN进行Normalization时,取得了比BN更好的效果。但用于CNN时,效果并不如BN明显。

  94.字符串最长公共子序列。 动态规划

  参考答案:此题来源于leetcode1143. 最长公共子序列,解析如下:最长公共子序列问题是典型的二维动态规划问题。假设字符串 text1 和 text2 的长度分别为 m 和 n,创建 m+1行 n+1 列的二维数组dp,其中dp[i][j] 表示 text1[0: i] 和 text2[0: j] 的最长公共子序列的长度。考虑动态规划的边界情况:当 i = 0 时, text1[0: i]为空,故对于任意0 ≤j≤n,有dp[0][j] = 0;当 j = 0 时, text2[0: j]为空,故对于任意0 ≤i≤m,有dp[i][0] = 0;因此动态规划的边界情况是:当i = 0或j = 0时,dp[i][j] = 0。因此动态规划的边界情况是:当i = 0或j = 0时,dp[i][j] = 0。当 i > 0 且 j > 0 时,考虑 dp[i][j] 的计算为如下状态转移方程:括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  即:当两个字符相同时,公共字符长度加1;当两个字符不相同时,取长度较长的一项。最终计算得到 dp[m][n] 即为 text 1和 text 2的最长公共子序列的长度。括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  代码如下:class Solution: def longestCommonSubsequence(self, text1: str, text2: str) -> int: m, n = len(text1), len(text2) dp = [[0] * (n + 1) for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n + 1): if text1[i – 1] == text2[j – 1]: dp[i][j] = dp[i – 1][j – 1] + 1 else: dp[i][j] = max(dp[i – 1][j], dp[i][j – 1]) return dp[m][n]

  95.二维数组从右上角开始 按照对角线的方式打印输出。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  假设m行n列的数组为arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]) 如上图,解题思路:首先从右上角对角线开始,打印出所有的对角线元素;

  每条对角线的端点坐标:(0, n-1)=> (m-1, n-1)=>(m-1, 0)假设端点坐标为(i, j),则对角线元素为:(i, j) => (i-1, j-1) => (0, *) 或者 (*, 0)然后将奇数对角线的元素顺序反转;

  参考代码:import numpy as np arr = np.array([ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]) m, n = arr.shape # 保存最后结果 ret = [] for row in list(range(m+n-1)): # 反转元素的开始位置 ret_count = len(ret) # i, j 每个对角线的开始位置 i = row if row + 1 <= m else m – 1 j = n-1 if row + 1 <= m else (m + n – 1) – row – 1 # 每条对角线上的元素 while i >= 0 and j >= 0: ret.append(arr[i][j]) i -= 1 j -= 1 # 奇数行顺序反转 if row % 2 == 0: ret = ret[:ret_count] + ret[ret_count:][::-1] print(ret)])

  96.一个单位圆内随机取一点,求到圆心距离的期望。 用代码模拟一下结果,然后再用数学推导结果

  (代码模拟直接随机取坐标(x, y) (x,y in [-1, 1],圆心为(0,0),模拟1000词,求均值结果)

  (数学推导,求分布函数 -> 密度函数 -> 积分) 答案是2/3括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  97.字符串内含有小中大括号和其他字符,判断是否括号是否匹配。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  Python参考代码如下:

  98.介绍一下transformer。有什么可以调整的参数。

  Transformer结构,可参考前面已有答案。

  可调整的参数:训练数据集中最长句子的长度,beam_size(候选集的个数) 和 max_out_len(最大输出的句子长度)。

  99.具体讲一下self attention。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  100.讲一下attention。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  101.self attention, attention, 双向lstm的区别。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  102.常见的激活函数有哪些?各自有什么特点。分布应用于场景。leaky relu公式。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  103.layer norm和batch norm的区别。和各自的应用场景。已经各自在norm之后还有没有其他操作。训练时候和测试时候的区别。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  104.字符串最长公共子序列。 动态规划

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  105.二位数组从右上角开始 按照对角线的方式打印输出。

  括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的括号匹配问题算法怎么算_括号匹配问题算法怎么算的

  福利

  存了些自然语言处理方面的资料,需要的请三连后私我sigusoft【NLP】领取!

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/96160.html

(0)
上一篇 2024年 5月 23日
下一篇 2024年 5月 23日

相关推荐

关注微信