篇幅有限,本文不会把每一题的参考答案都加载出来,会摘出一些摘要,完整解析见题库!
添加老师微信:julyedukefu14,回复 ” 6 “ ,领取最新升级版《名企AI面试100题》电子书!
1、了解Google最新的模型bert么?
Google AI Language 发布了论文BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding,提出的 BERT 模型在 11 个 NLP 任务上的表现刷新了记录,包括问答 Question Answering (SQuAD v1.1),推理 Natural Language Inference (MNLI) 等:
GLUE :General Language Understanding Evaluation
MNLI :Multi-Genre Natural Language Inference
SQuAD v1.1 :The Standford Question Answering Dataset
QQP : Quora Question Pairs
QNLI : Question Natural Language Inference
SST-2 :The Stanford Sentiment Treebank
CoLA :The Corpus of Linguistic Acceptability
STS-B :The Semantic Textual Similarity Benchmark
MRPC :Microsoft Research Paraphrase Corpus
RTE :Recognizing Textual Entailment
WNLI :Winograd NLI
SWAG :The Situations With Adversarial Generations
让我们先来看一下 BERT 在 Stanford Question Answering Dataset (SQuAD) 上面的排行榜吧:
BERT 可以用来干什么?
BERT 可以用于问答系统,情感分析,垃圾邮件过滤,命名实体识别,文档聚类等任务中,作为这些任务的基础设施即语言模型,
BERT 的代码也已经开源:
google-research/bert
我们可以对其进行微调,将它应用于我们的目标任务中,BERT 的微调训练也是快而且简单的。
例如在 NER 问题上,BERT 语言模型已经经过 100 多种语言的预训练,这个是 top 100 语言的列表:
google-research/bert
只要在这 100 种语言中,如果有 NER 数据,就可以很快地训练 NER。
2、了解文本嵌入么?
什么是NLP?
自然语言处理(NLP) 是计算机科学,人工智能和语言学的交叉领域。目标是让计算机处理或“理解”自然语言,以执行语言翻译和问题回答等任务。
随着语音接口和聊天机器人的兴起,NLP正在成为信息时代最重要的技术之一,同时它也是人工智能的关键部分。充分理解和表达语言的含义是一个非常困难的目标。为什么?因为人类的语言很特别。
人类语言有什么特别之处?
1.人类语言是专门为传达说话人的意图而构建的系统。这不仅仅是一个环境信号,更是一个有意识的交流。
2.人类语言大多是离散/符号的/分类的信号系统,大概是因为信号可靠性更高。
3.一种语言的分类符号可以用几种方式编码为通信信号:声音,手势,写作,图像等。人类语言只是其中的一种。
4.人类语言是不明确的(与编程和其他正式语言不同)。 因此,在表达、学习和使用语言/情境/情境/文字/视觉知识对人类语言方面存在高度复杂性。
NLP应用到哪里?
从NLP研究领域衍生出了一批快速增长的应用程序。以下是其中几个:
1.拼写检查,关键字搜索,查找同义词;
2.从网站提取信息,例如:产品价格,日期,地点,人员或公司名称;
3.分类:长文档的积极/消极情绪;
4.机器翻译;
5.口语对话系统;
6.复杂的问答系统;
篇幅有限,本文不会把每一题的参考答案都加载出来,会摘出一些摘要,完整解析见题库!
添加老师微信:julyedukefu14,回复 ” 6 “ ,领取最新升级版《名企AI面试100题》电子书!
3、了解机器翻译中的NLP技术么?
机器翻译是语言理解的经典测试。它由语言分析和语言生成组成。大型机器翻译系统具有巨大的商业用途,给你一些值得注意的例子:
·谷歌翻译每天翻译1000亿字;
·Facebook使用机器翻译自动翻译帖子和评论中的文字,以打破语言障碍,让世界各地的人们相互交流;
·阿里巴巴使用机器翻译技术来实现跨境贸易,连接世界各地的买家和卖家;
·微软为Android、iOS和Amazon Fire上的最终用户和开发人员提供基于人工智能的翻译,无论他们是否可以访问互联网。
在传统的机器翻译系统中,我们必须使用平行语料库:一组文本,每个文本都被翻译成一种或多种不同于原文的其他语言。
例如,给定源语言f(例如法语)和目标语言e(例如英语),我们需要建立多个统计模型,包括使用贝叶斯规则的概率公式,训练的翻译模型p(f | e)平行语料库和语言模型p(e)在纯英文语料库上训练。这种方法跳过了数百个重要细节,需要大量的手工特征工程,整体而言它是一个非常复杂的系统。
神经机器翻译是通过一个称为递归神经网络(RNN)的大型人工神经网络对整个过程进行建模的方法。RNN是一个有状态的神经网络,它通过时间连接过去。神经元的信息不仅来自前一层,而且来自更前一层的信息。
标准的神经机器翻译是一种端到端神经网络,其中,源语句由称为编码器的RNN 编码,目标词使用另一个称为解码器。RNN编码器一次读取一个源语句,然后在最后隐藏状态汇总整个源句子。RNN解码器使用反向传播学习这个汇总并返回翻译后的版本。
4、了解情感分析中的NLP技术么?
人际交往不仅仅是文字和其明确的含义,而且它还是微妙且复杂的。即使在完全基于文本的对话中,你也可以根据单词选择和标点符号判断客户是否感到愤怒。你可以阅读产品在天猫平台的评论,并了解评论者是否喜欢或不喜欢它,即使他们从未直接说过。
为了使计算机真正理解人类每天的交流方式,他们需要理解的不仅仅是客观意义上的词语定义、而且他们需要了解我们的情绪。
情绪分析是通过较小元素的语义组成来解释较大文本单元(实体、描述性术语、事实、论据、故事)的含义的过程。
传统情感分析的方法是将句子视为一个词袋,并查阅“积极”和“消极”单词的策划列表,以确定该句子的情绪。这需要手工设计的特征来捕捉情绪,所有这是非常耗时和不可扩展的。
用于情感分析的现代深度学习方法可用于形态学、语法和逻辑语义,其中最有效的是递归神经网络。顾名思义,递归神经网络开发的主要假设递归是描述语言的自然方式。递归在消歧方面很有用,有助于某些任务引用特定的短语,并且对于使用语法树结构的任务非常有效。
递归神经网络非常适合具有嵌套层次结构和内部递归结构的设置。语法的句法规则是高度递归的,因此,我们利用递归神经网络!
5、了解问答系统中涉及的NLP技术么?
问答(QA)系统的想法是直接从文档、对话、在线搜索和其他地方提取信息,以满足用户的信息需求。QA系统不是让用户阅读整个文档,而是更喜欢简短而简洁的答案。如今,QA系统可以非常容易地与其他NLP系统结合使用,并且一些QA系统甚至超越了对文本文档的搜索,并且可以从图片集合中提取信息。
事实上,大多数NLP问题都可以被视为一个问题回答问题。范例很简单:我们发出查询指令,机器提供响应。通过阅读文档或一组指令,智能系统应该能够回答各种各样的问题。
强大的深度学习架构(称为动态内存网络(DMN))已针对QA问题进行了专门开发和优化。给定输入序列(知识)和问题的训练集,它可以形成情节记忆,并使用它们来产生相关答案。该体系结构具有以下组件:
· 语义内存模块(类似于知识库)被用来创建从输入句子的嵌入字序列预先训练手套载体。
· 输入模块处理与问题有关的输入矢量称为事实。该模块使用门控循环单元实现,GRU使网络能够了解当前正在考虑的句子是否相关或与答案无关。
· 问题模块逐字处理疑问词,并且使用输出相同权重的GRU输入模块的向量。事实和问题都被编码为嵌入。
· 情景记忆模块接收从输入中提取和编码的嵌入事实和问题载体。这使用了一个受大脑海马体启发的想法,它可以检索由某些反应触发的时间状态,如景点或声音。
· 答案生成模块,通过适当的响应,情景记忆应该包含回答问题所需的所有信息。该模块使用另一个GRU,使用正确序列的交叉熵错误分类进行训练,然后可以将其转换回自然语言。
DMN不仅在质量保证方面做得非常好,而且在情感分析和词性标注方面也优于其他架构。自开发以来,动态内存网络已经有了重大改进,进一步提高其在问答环境中的准确性,包括:
· 用于视觉和文本问题的动态存储网络问答应用基本上是将DMN应用于图像,其内存和输入模块已升级,以便能够回答视觉问题。该模型改进了许多基准Visual Question Answering数据集的现有技术水平,而不支持事实监督。
· 用于问题应答的动态Coattention网络解决了从对应于不正确答案的局部最大值恢复的问题。它首先融合了问题和文件的共同依赖表示,以便集中于两 者的相关部分。然后,动态指向解码器迭代潜在的答案跨度,该迭代过程使模型能够从对应于不正确答案的初始局部最大值中恢复。
篇幅有限,本文不会把每一题的参考答案都加载出来,会摘出一些摘要,完整解析见题库!
添加老师微信:julyedukefu14,回复 ” 6 “ ,领取最新升级版《名企AI面试100题》电子书!
6、了解文本摘要中的NLP技术么?
人类很难手动汇总大型文本文档。文本摘要是NLP为源文档创建简短、准确和流畅的摘要问题。随着推送通知和文章摘要获得越来越多的注意力,为长文本生成智能且准确摘要的任务每天都在增长。
通过首先计算整个文本文档的单词频率来自动汇总文本。
然后,存储和排序100个最常用的单词。然后根据它包含的高频词数对每个句子进行评分,更高频率的词,价值更大。
最后,根据它们在原始文本中的位置来获取和排序前X个句子。
文本摘要有两种基本方法:提取和抽象。前者从原始文本中提取单词和单词短语以创建摘要。后者是学习内部语言表示以生成更像人类的摘要,解释原始文本的意图。
7、了解注意力机制么?
神经网络中的注意力机制是基于人类的视觉注意机制。人类的视觉注意力虽然存在不同的模型,但它们都基本上归结为能够以“高分辨率”聚焦于图像的某个区域,同时以“低分辨率”感知周围的图像,然后随着时间的推移调整焦点。
想象一下,你正在阅读一篇完整的文章:不是按顺序浏览每个单词或字符,而是潜意识地关注一些信息密度最高的句子并过滤掉其余部分。你的注意力有效地以分层方式捕获上下文信息,这样就可以在减少开销的同时做出决策。
那为什么这很重要?诸如LSTM和GRU之类的模型依赖于读取完整的句子并将所有信息压缩为固定长度的矢量。这需要基于文本统计属性的复杂特征工程,用几个单词表示的数百个单词的句子肯定会导致信息丢失,翻译不足等。
8、如何通俗理解Word2vec
小编注:考虑到下文(穆文:[NLP] 秒懂词向量Word2vec的本质
- 引子
大家好
我叫数据挖掘机
皇家布鲁斯特大学肄业
我喝最烈的果粒橙,钻最深的牛角尖
——执着如我
今天我要揭开Word2vec的神秘面纱
直窥其本质
相信我,这绝对是你看到的
最浅白易懂的 Word2vec 中文总结
(蛤?你问我为啥有这个底气?
且看下面,我的踩坑血泪史。。。)
- Word2vec参考资料总结
(以下都是我踩过的坑,建议先跳过本节,阅读正文部分,读完全文回头再来看)
先大概说下我深挖 word2vec 的过程:先是按照惯例,看了 Mikolov 关于 Word2vec 的两篇原始论文,然而发现看完依然是一头雾水,似懂非懂,主要原因是这两篇文章省略了太多理论背景和推导细节;
然后翻出 Bengio 03年那篇JMLR和 Ronan 11年那篇JMLR,看完对语言模型、用CNN处理NLP任务有所了解,但依然无法完全吃透 word2vec;
这时候我开始大量阅读中英文博客,其中 北漂浪子 的一篇阅读量很多的博客吸引了我的注意,里面非常系统地讲解了 Word2vec 的前因后果,最难得的是深入剖析了代码的实现细节,看完之后细节方面了解了很多,不过还是觉得有些迷雾;
终于,我在 quora 上看到有人推荐 Xin Rong 的那篇英文paper,看完之后只觉醍醐灌顶,酣畅淋漓,相见恨晚,成为我首推的 Word2vec 参考资料。
下面我将详细列出我阅读过的所有 Word2vec 相关的参考资料,并给出评价
Mikolov 两篇原论文:
『Distributed Representations of Sentences and Documents』
在前人基础上提出更精简的语言模型(language model)框架并用于生成词向量,这个框架就是 Word2vec
『Efficient estimation of word representations in vector space』
专门讲训练 Word2vec 中的两个trick:hierarchical softmax 和 negative sampling
优点:Word2vec 开山之作,两篇论文均值得一读
缺点:只见树木,不见森林和树叶,读完不得要义。这里『森林』指 word2vec 模型的理论基础——即 以神经网络形式表示的语言模型,『树叶』指具体的神经网络形式、理论推导、hierarchical softmax 的实现细节等等
9、什么是词嵌入word embedding?
Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,其中该函数是injective(就是我们所说的单射函数,每个Y只有唯一的X对应,反之亦然)和structure-preserving (结构保存,比如在X所属的空间上X1 < X2,那么映射后在Y所属空间上同理 Y1 < Y2)。那么对于word embedding,就是将单词word映射到另外一个空间,其中这个映射具有injective和structure-preserving的特点。
通俗的翻译可以认为是单词嵌入,就是把X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。
word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。
推广开来,还有image embedding, video embedding, 都是一种将源数据映射到另外一个空间。
更多解释见:什么是 word embedding?
10、了解NLP神经网络的发展历史么?
传统算法里程碑事件
2001 – 神经语言模型
语言建模任务指的是给定前一个单词去预测文本中的下一个单词。它可能是比较简单的语言处理任务,具体的实际应用场景包括 智能键盘 、电子邮件回复建议(Kannan 等人, 2016)、拼写自动更正等。正如很多人所知,语言建模有着丰富的历史。其中比较经典的方法基于 n-grams ,并使用平滑处理不可见的 n-grams(Kneser & Ney, 1995)。
第一个神经语言模型是 Bengio 等人在 2001 年提出的前馈神经网络,如图 1 所示。
图 1:前馈神经网络语言模型(Bengio 等,2001;2003)
这个模型将从表 C 中查找到的 n 个单词作为输入向量表征。这种向量被现在的学者们称做“词嵌入”。这些词嵌入级联后被输入到一个隐藏层中,该隐藏层的输出又被输入到 softmax 层。更多关于模型的信息,请看 这篇文章 。
最近,在语言建模技术方面,前馈神经网络被循环神经网络(RNNs;Mikolov 等人,2010)和长短时记忆网络(LSTMs;格雷夫斯,2013)所取代。尽管近年来提出了许多扩展经典 LSTM 的新语言模型(请参阅 本页 以获得概述),经典的 LSTM 仍然作为一个强大的基线存在着(Melis 等人, 2018)。甚至 Bengio 等人的经典前馈神经网络在某些情况下也可以与更复杂的模型一较高下,因为这些模型通常只会考虑距离较近的单词(Daniluk 等人, 2017)。因此,如何更好地理解这种语言模型所捕获的信息也是一个比较热门的研究领域(Kuncoro 等人, 2018;布莱文斯等人,2018 年)。
语言建模通常是应用 RNN 时的第一步,对于这一点大家已经形成了共识。许多人是通过 Andrej 的博客 文章第一次接触到语言建模的。语言建模是一种非监督学习形式,Yann LeCun 也将其称为预测性学习,并将其作为获得基础常识的先决条件( 参见 NIPS 2016 年的幻灯片)。语言建模最引人关注的一点是,尽管它很简单,但却是本文后面讨论的许多技术发展的核心:
词嵌入:word2vec 的目标是简化语言建模。
sequence-to-sequence 模型:这种模型通过一次预测一个单词生成一个输出序列。
预训练语言模型:这些方法使用来自语言模型的表述进行迁移学习。
反过来讲,这意味着近年来 NLP 的许多重要进展都可以归结为某些形式的语言建模。为了“真正”理解自然语言,仅仅从文本的原始形式中学习是不够的。我们需要新的方法和模型。
11、判别式(discriminative)模型和生成式(generative)模型的核心区别是什么?
12、如何通俗理解隐马尔可夫模型HMM?
作者:Yang Eninala,杜克大学 生物化学博士
链接:如何用简单易懂的例子解释隐马尔可夫模型?
隐马尔可夫(HMM)好讲,简单易懂不好讲。我认为 @者也的回答没什么错误,不过我想说个更通俗易懂的例子。我希望我的读者不是专家,而是对这个问题感兴趣的入门者,所以我会多阐述数学思想,少写公式。霍金曾经说过,你多写一个公式,就会少一半的读者。所以时间简史这本关于物理的书和麦当娜关于性的书卖的一样好。我会效仿这一做法,写最通俗易懂的答案。
还是用最经典的例子,掷骰子。
假设我手里有三个不同的骰子。
第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6。
第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4。
第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8。
假设我们开始掷骰子,我们先从三个骰子里挑一个,挑到每一个骰子的概率都是1/3。然后我们掷骰子,得到一个数字,1,2,3,4,5,6,7,8中的一个。不停的重复上述过程,我们会得到一串数字,每个数字都是1,2,3,4,5,6,7,8中的一个。例如我们可能得到这么一串数字(掷骰子10次):1 6 3 5 2 7 3 5 2 4
这串数字叫做可见状态链。但是在隐马尔可夫模型中,我们不仅仅有这么一串可见状态链,还有一串隐含状态链。在这个例子里,这串隐含状态链就是你用的骰子的序列。比如,隐含状态链有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8
一般来说,HMM中说到的马尔可夫链其实是指隐含状态链,因为隐含状态(骰子)之间存在转换概率(transition probability)。在我们这个例子里,D6的下一个状态是D4,D6,D8的概率都是1/3。D4,D8的下一个状态是D4,D6,D8的转换概率也都一样是1/3。这样设定是为了最开始容易说清楚,但是我们其实是可以随意设定转换概率的。比如,我们可以这样定义,D6后面不能接D4,D6后面是D6的概率是0.9,是D8的概率是0.1。这样就是一个新的HMM。
同样的,尽管可见状态之间没有转换概率,但是隐含状态和可见状态之间有一个概率叫做输出概率(emission probability)。就我们的例子来说,六面骰(D6)产生1的输出概率是1/6。产生2,3,4,5,6的概率也都是1/6。我们同样可以对输出概率进行其他定义。比如,我有一个被赌场动过手脚的六面骰子,掷出来是1的概率更大,是1/2,掷出来是2,3,4,5,6的概率是1/10。
13、预训练方法 BERT和OpenAI GPT有什么区别?
本题解析来源:吕小涛OUT:经典算法·从ELMo、GPT到bert
Word Embedding
词向量在自然语言处理中有着重要的角色,它将抽象的词语之间的语义关系量化成向量形式。有了良好的词向量,我们就可以做更多的工作。目前构建词向量的方式大体上分成两大类:
统计方法:通过统计词语之间的关系,定义一些显性隐性的关系,从而构建词向量。例如SVD,LSA等等。这样的做法在逻辑上不理性,效果上也不好。
语言模型:通过构建语言模型来实现对词向量的学习,在理论上可行的,并且目前大部分的工作就是基于这样的思想。从最开始的神经网络语言模型(NNLM)到后来的Word2vec,GloVe等等。
即使上述的模型的性能优良,但是最大的缺点就是词向量是固定的,也就是语义消除的问题。接下来的模型就是基于解决这个问题展开的。
ELMo Embedding from Language Models
论文:Deep contextualized word representations
与之前的工作不同的是,该模型不仅去学习单词特征,还有句法特征与语义特征。后两者的特征是来自LSTM的隐含输出向量。这里的模型目标是预测对应位置的下一个单词(也就是T1的向量应该预测出E2的单词)。
模型训练完,我们就可以得到单词,句法以及语义特征。也就是在一个句子中每一个单词将会对应三个向量,然后三者共同构建成下游任务的输入。比如下游任务就是一个对话系统,整个流程如下图所示。
总结就是ELMo模型是通过语言模型任务得到句子中的单词的向量,这个向量是结合左向右向的信息,但是仅仅是拼接的实现。
14、对比BERT、OpenAI GPT、ELMo预训练模型架构间差异
BERT使用双向变换器,模型的表示在所有层中,共同依赖于左右两侧的上下文
OpenAI GPT使用从左到右的变换器,利用了 Transformer 的编码器作为语言模型进行预训练的,之后特定的自然语言处理任务在其基础上进行微调即可。
ELMo使用独立训练的从左到右和从右到左LSTM级联来生成下游任务的特征。是一种双层双向的 LSTM 结构,其训练的语言模型可以学习到句子左右两边的上下文信息,但此处所谓的上下文信息并不是真正意义上的上下文。
三种模型中只有BERT表征基于所有层左右两侧语境。
15、了解词嵌入的来龙去脉么?
本题解析来源:@Scofield_Phil,DeepNLP的表示学习·词嵌入来龙去脉·深度学习(Deep Learning)·自然语言处理(NLP)·表示(Representation)
Indexing:
〇、序
一、DeepNLP的核心关键:语言表示(Representation)
二、NLP词的表示方法类型
1、词的独热表示one-hot representation
2、词的分布式表示distributed representation
三、NLP语言模型
四、词的分布式表示
-
基于矩阵的分布表示
-
基于聚类的分布表示
-
基于神经网络的分布表示,词嵌入( word embedding)
五、词嵌入( word embedding)
1、概念
2、理解
六、神经网络语言模型与word2vec
1、神经网络语言模型
2.word2vec与CBOW、Skip-gram
3.个人对word embedding的理解
16、如何通俗理解深度学习中的注意力机制
解析:
本题解析来源:深度学习中的注意力机制_CSDN人工智能-CSDN博客
最近两年,注意力模型(Attention Model)被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注与深入了解的核心技术之一。本文以机器翻译为例,深入浅出地介绍了深度学习中注意力机制的原理及关键计算机制,同时也抽象出其本质思想,并介绍了注意力模型在图像及语音等领域的典型应用场景。
注意力模型最近几年在深度学习各个领域被广泛使用,无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中,都很容易遇到注意力模型的身影。所以,了解注意力机制的工作原理对于关注深度学习技术发展的技术人员来说有很大的必要。
人类的视觉注意力
从注意力模型的命名方式看,很明显其借鉴了人类的注意力机制,因此,我们首先简单介绍人类视觉的选择性注意力机制。
视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。
图1形象化展示了人类在看到一副图像时是如何高效分配有限的注意力资源的,其中红色区域表明视觉系统更关注的目标,很明显对于图1所示的场景,人们会把注意力更多投入到人的脸部,文本的标题以及文章首句等位置。
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
17、请详细说说Transformer (超详细图解,一图胜千言)
本文解析来源:
https://blog.csdn.net/longxinchen_ml/article/details/86533005,原英文链接:https://jalammar.github.io/illustrated-transformer/
编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果,引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。谷歌的Transformer模型最早是用于机器翻译任务,当时达到了SOTA效果。Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把它掰开揉碎,理解它的工作原理。
正文:
Transformer由论文《Attention is All You Need》提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。
在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。
Attention is All You Need:Attention Is All You Need
从宏观的视角开始
首先将这个模型看成是一个黑箱操作。在机器翻译中,就是输入一种语言,输出另一种语言。
那么拆开这个黑箱,我们可以看到它是由编码组件、解码组件和它们之间的连接组成。
编码组件部分由一堆编码器(encoder)构成(论文中是将6个编码器叠在一起——数字6没有什么神奇之处,你也可以尝试其他数字)。解码组件部分也是由相同数量(与编码器对应)的解码器(decoder)组成的。
18、如何通俗理解LDA主题模型
0 前言
印象中,最开始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是因为这篇文档的前序铺垫太长(现在才意识到这些“铺垫”都是深刻理解LDA 的基础,但如果没有人帮助初学者提纲挈领、把握主次、理清思路,则很容易陷入LDA的细枝末节之中),还是因为其中的数学推导细节太多,导致一直没有完整看完过。
2013年12月,在我组织的Machine Learning读书会第8期上,@夏粉_百度 讲机器学习中排序学习的理论和算法研究,@沈醉2011 则讲主题模型的理解。又一次碰到了主题模型,当时貌似只记得沈博讲了一个汪峰写歌词的例子,依然没有理解LDA到底是怎样一个东西(但理解了LDA之后,再看沈博主题模型的PPT会很赞)。
直到昨日下午,机器学习班 第12次课上,邹讲完LDA之后,才真正明白LDA原来是那么一个东东!上完课后,趁热打铁,再次看LDA数学八卦,发现以前看不下去的文档再看时竟然一路都比较顺畅,一口气看完大部。看完大部后,思路清晰了,知道理解LDA,可以分为下述5个步骤:
一个函数:gamma函数
四个分布:二项分布、多项分布、beta分布、Dirichlet分布
一个概念和一个理念:共轭先验和贝叶斯框架
两个模型:pLSA、LDA(在本文第4 部分阐述)
一个采样:Gibbs采样
本文便按照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。同时,本文基于邹讲LDA的PPT、rickjin的LDA数学八卦及其它参考资料写就,可以定义为一篇学习笔记或课程笔记,当然,后续不断加入了很多自己的理解。若有任何问题,欢迎随时于本文评论下指出,thanks。
19、Word2Vec中为什么使用负采样(negtive sample)?
解析:
解析一
如七月在线推荐就业班的专家讲师李老师所言
负采样这个点引入word2vec非常巧妙,两个作用:
1.加速了模型计算
2.保证了模型训练的效果,其一 模型每次只需要更新采样的词的权重,不用更新所有的权重,那样会很慢,其二 中心词其实只跟它周围的词有关系,位置离着很远的词没有关系,也没必要同时训练更新,作者这点非常聪明。
解析二
下述解析来源于:刘博:Word2Vec介绍: 为什么使用负采样(negtive sample)?
- 随机梯度下降法有什么问题?
通过对代价函数求权重的梯度,我们可以一次性对所有的参数进行优化,但是如果每次等全部计算完成再优化升级,我们将等待很长时间(对于很大的语料库来说)。
所以我们采用随机梯度下降( Stochastic Gradient Descent),也就是说每次完成一次计算就进行升级。
但是,还有两个问题导致目前的模型效率低下!
第一个问题,我们每次只对窗口中出现的几个单词进行升级,但是在计算梯度的过程中,我们是对整个参数矩阵进行运算,这样参数矩阵中的大部分值都是0。
计算效率低下!
20、什么是TF-IDF算法?
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。
TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。
假设我们现在有一片长文叫做《量化系统架构设计》词频高在文章中往往是停用词,“的”,“是”,“了”等,这些在文档中最常见但对结果毫无帮助、需要过滤掉的词,用TF可以统计到这些停用词并把它们过滤。当高频词过滤后就只需考虑剩下的有实际意义的词。
但这样又会遇到了另一个问题,我们可能发现"量化"、“系统”、"架构"这三个词的出现次数一样多。这是不是意味着,作为关键词,它们的重要性是一样的?事实上系统应该在其他文章比较常见,所以在关键词排序上,“量化”和“架构”应该排在“系统”前面,这个时候就需要IDF,IDF会给常见的词较小的权重,它的大小与一个词的常见程度成反比。
当有TF(词频)和IDF(逆文档频率)后,将这两个词相乘,就能得到一个词的TF-IDF的值。某个词在文章中的TF-IDF越大,那么一般而言这个词在这篇文章的重要性会越高,所以通过计算文章中各个词的TF-IDF,由大到小排序,排在最前面的几个词,就是该文章的关键词。
21、请说说word2vec的简要理解
本题解析来源:word2vec的通俗理解_lilong117194的博客-CSDN博客
在自然语言处理领域中,本文向量化是文本表示的一种重要方式。在当前阶段,对文本的大部分研究都是通过词向量化实现的,但同时也有一部分研究将句子作为文本处理的基本单元,也就是doc2vec和str2vec技术。
- word2vec简介
大家很熟悉的词袋(bag of words)模型是最早的以词语为基本处理单元的文本向量化算法,所谓的词袋模型就是借助于词典把文本转化为一组向量,下面是两个简单的文本示例:
john likes to watch movies, mary likes too.
john also likes to watch football games.
现假设词典如下:
{“john”:1,“likes”:2,“to”:3,“watch”:4, “movies”:5,“also”:6,“football”:7,“games”:8,“mary”:9 “too”:10}
在这个自己构建的词典中,每个单词都有一个唯一的索引,那么上述的两个文本就可以基于这个暂时的词典来构建其文本的向量表示,如下:
[1,2,1,1,1,0,0,0,1,1]
[1,1,1,1,0,1,1,1,0,0]
由此可以看出此向量的构建是根据该词在词典出现的次数而构成的,比如第一条文本中的”likes”,这个词在文本中出现了2次,所以基于词袋的文本向量是根据词出现的次数构建的。但是此向量与文本中单词出现的顺序没有关系,只是一种频率的表示,该方法容易实现,但是有很大的问题:
a)维数灾难:假如词典包含10000个单词,那么每个文本需要使用10000维的向量表示,那么向量的很多位置必定是0,如此稀疏的高维向量会严重影响计算速度。
b)这样构成的向量无法保存词序信息,而词序对于自然语言处理又是那么的重要。
c)存在语义鸿沟
例如:关于数据稀疏的问题
自然语言处理经常把字词转为离散的单独的符号,也就是One-Hot Encoder。
杭州 [0,0,0,0,0,0,0,1,0,……,0,0,0,0,0,0,0]
上海 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0]
宁波 [0,0,0,1,0,0,0,0,0,……,0,0,0,0,0,0,0]
北京 [0,0,0,0,0,0,0,0,0,……,1,0,0,0,0,0,0]
比如上面的这个例子,在语料库中,杭州、上海、宁波、北京各对应一个向量,向量中只有一个值为1,其余都为0。但是使用One-Hot Encoder有以下问题。一方面,城市编码是随机的,向量之间相互独立,看不出城市之间可能存在的关联关系。其次,向量维度的大小取决于语料库中字词的多少。如果将世界所有城市名称对应的向量合为一个矩阵的话,那这个矩阵过于稀疏,并且会造成维度灾难。
现在随着互联网的发展,大量的无标注数据产生,此时的word2vec技术即是利用神经网络从大量的无标注的文本中提取有用的信息而产生的。
22、如何理解Word2vec 之 Skip-Gram 模型
本题解析来源:天雨粟:理解 Word2Vec 之 Skip-Gram 模型
什么是Word2Vec和Embeddings?
Word2Vec是从大量文本语料中以无监督的方式学习语义知识的一种模型,它被大量地用在自然语言处理(NLP)中。那么它是如何帮助我们做自然语言处理呢?
Word2Vec其实就是通过学习文本来用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。
本质上,Embedding其实就是一个映射,将单词从原先所属的空间映射到新的多维空间中,也就是把原先词所在空间嵌入到一个新的空间中去。
我们从直观角度上来理解一下,cat这个单词和kitten属于语义上很相近的词,而dog和kitten则不是那么相近,iphone这个单词和kitten的语义就差的更远了。通过对词汇表中单词进行这种数值表示方式的学习(也就是将单词转换为词向量),能够让我们基于这样的数值进行向量化的操作从而得到一些有趣的结论。
比如说,如果我们对词向量kitten、cat以及dog执行这样的操作:kitten - cat + dog,那么最终得到的嵌入向量(embedded vector)将与puppy这个词向量十分相近。
23、请用图形象的解释word2vec(一图胜千言)
本题解析来源:图解Word2vec_龙心尘-CSDN博客
嵌入(embedding)是机器学习中最迷人的想法之一。 如果你曾经使用Siri、Google Assistant、Alexa、Google翻译,甚至智能手机键盘进行下一词预测,那么你很有可能从这个已经成为自然语言处理模型核心的想法中受益。
在过去的几十年中,嵌入技术用于神经网络模型已有相当大的发展。尤其是最近,其发展包括导致BERT和GPT2等尖端模型的语境化嵌入。
BERT:
The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning)
Word2vec是一种有效创建词嵌入的方法,它自2013年以来就一直存在。但除了作为词嵌入的方法之外,它的一些概念已经被证明可以有效地创建推荐引擎和理解时序数据。在商业的、非语言的任务中。像Airbnb、阿里巴巴、Spotify这样的公司都从NLP领域中提取灵感并用于产品中,从而为新型推荐引擎提供支持。
在这篇文章中,我们将讨论嵌入的概念,以及使用word2vec生成嵌入的机制。让我们从一个例子开始,熟悉使用向量来表示事物。你是否知道你的个性可以仅被五个数字的列表(向量)表示?
个性嵌入:你是什么样的人?
如何用0到100的范围来表示你是多么内向/外向(其中0是最内向的,100是最外向的)? 你有没有做过像MBTI那样的人格测试,或者五大人格特质测试? 如果你还没有,这些测试会问你一系列的问题,然后在很多维度给你打分,内向/外向就是其中之一。
五大人格特质测试测试结果示例。它可以真正告诉你很多关于你自己的事情,并且在学术、人格和职业成功方面都具有预测能力。此处可以找到测试结果。
24、请简要说说word2vec的来龙去脉/前世今生?
本题解析来源:word2vec前世今生 - 公子天 - 博客园
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。
随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络,是一个计算word vector的开源工具。所以,当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。
接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。
Statistical Language Model
在深入word2vec算法的细节之前,我们首先回顾一下自然语言处理中的一个基本问题:如何计算一段文本序列在某种语言下出现的概率?之所为称其为一个基本问题,是因为它在很多NLP任务中都扮演着重要的角色。
例如,在机器翻译的问题中,如果我们知道了目标语言中每句话的概率,就可以从候选集合中挑选出最合理的句子做为翻译结果返回。统计语言模型给出了这一类问题的一个基本解决框架。对于一段文本序列S=w1,w2,…,wT,它的概率可以表示为:
即将序列的联合概率转化为一系列条件概率的乘积。
25、了解什么是正则表达式么?
本题解析来源:
https://www.liaoxuefeng.com/wiki/897692888725344/923056128128864,配图则来自七月在线自然语言处理课程。
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
所以我们判断一个字符串是否是合法的Email的方法是:
1 创建一个匹配Email的正则表达式;
2 用该正则表达式去匹配用户的输入来判断是否合法。
因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:
‘00\d’可以匹配’007’,但无法匹配’00A’;
‘\d\d\d’可以匹配’010’;
‘\w\w\d’可以匹配’py3’;
.可以匹配任意字符,
所以:
'py.‘可以匹配’pyc’、‘pyo’、'py!'等等。
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
来看一个复杂的例子:\d{3}\s+\d{3,8}。我们来从左到右解读一下:
\d{3}表示匹配3个数字,例如’010’;
\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配’ ‘,’ '等;
\d{3,8}表示3-8个数字,例如’1234567’。
综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。
如果要匹配’010-12345’这样的号码呢?由于’-‘是特殊字符,在正则表达式中,要用’'转义,所以,上面的正则是\d{3}-\d{3,8}。
但是,仍然无法匹配’010 - 12345’,因为带有空格。所以我们需要更复杂的匹配方式。
26、如何理解NNLM(Neural Network Language Model)模型?
本题解析来源:词嵌入(word2vec)-NNLM(Neural Network Language Model)
1 基本概念
传统的机器翻译,自然语言处理多是基于规则的,现在更多的是基于模型,规则隐含的参数里。
词编码 :
每个词都用不同的含义,而要被机器所识别,就必须要把词进行编码,同时词编码时要保证词的相似性。图像识别的时候,对图像在RGB三个颜色通道中看他们的相似性就可以了,但是,无论中文还是英文,词都太多了,他是人造的,很难保持像图片这样的信息,所以我们希望能对词进行编码,保持它所包含的信息量。
因此,我们希望能有一个对应关系,如图,这些数字在空间中的表示能有一个对应关系。这不就是和机器学习差不多吗?很多机器学习的预测都是寻找一个对应关系,也就是数据(X)和预测的东西(Y)的对应。机器翻译其实原理也差不多。
27、请详细推导下word2vec(Xin Rong牛论文的解读)
本题解析来源:Word2vec数学原理全家桶
目前需要做Network Embedding方面的课题,而复杂网络本身就经常借鉴NLP的一些算法模型, Embedding也不例外. 因此先从Word Embedding入手。之前对Word Embedding(暂且翻译为词嵌入或者词向量)的理解就是将单词根据某种特征转为数值向量,再来做其他工作比如文本分类的工作。而word2vec则是word embedding的一种模型,也是目前使用最广的词向量模型, 由Google的Mikolov团队2013年提出。之前仅仅能够使用第三方库来训练直接使用, 对其中原理并没有多少理解, 这篇博客则比较完整的从背景知识到原理,参数训练等方面整理一下word2Vec。
Mikolov的两篇文章中涉及word2vec的细节甚少. 有不少人都对此模型作出了更加详细的解释, 本文主要沿着Rong, X.word2vec Parameter Learning Explained这篇文章的思路来整理一下,很多公式参考于这篇文章。
参考:
Mikolov, T.(2013). Distributed Representations of Words and Phrases and their Compositionality.
Mikolov, T.(2013). Efficient Estimation of Word Representations in Vector Space.
Rong, X. (2014). word2vec Parameter Learning Explained.
28、word2vec 相比之前的 Word Embedding 方法好在什么地方?
本题解析来源:word2vec 相比之前的 Word Embedding 方法好在什么地方?
解析一
@邱锡鹏:Word2vec训练方面采用的HSoftmax以及负采样确实可以认为是创新不大。但Word2vec流行的主要原因也不在于此。主要原因在于以下3点:
-
极快的训练速度。以前的语言模型优化的目标是MLE,只能说词向量是其副产品。Mikolov应该是第一个提出抛弃MLE(和困惑度)指标,就是要学习一个好的词嵌入。如果不追求MLE,模型就可以大幅简化,去除隐藏层。再利用HSoftmax以及负采样的加速方法,可以使得训练在小时级别完成。而原来的语言模型可能需要几周时间。
-
一个很酷炫的man-woman=king-queen的示例。这个示例使得人们发现词嵌入还可以这么玩,并促使词嵌入学习成为了一个研究方向,而不再仅仅是神经网络中的一些参数。
-
word2vec里有大量的tricks,比如噪声分布如何选?如何采样?如何负采样?等等。这些tricks虽然摆不上台面,但是对于得到一个好的词向量至关重要。
举一个生活中的例子,语言模型和word2vec的关系可以类比于单反相机和美颜手机,它们的受众不一样。就照片质量(MLE)而言,单反肯定好。但如果更关心美颜(词嵌入)和便携性(训练速度),美颜手机就更受欢迎。
更多的资料可以参考:
https://nndl.github.io/ch12.pdf
29、说说NLP中的预训练技术发展史:从Word Embedding到Bert模型(全网最通俗的BERT详解)
本题解析原作者:张俊林,链接:张俊林:从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 ,July在相关地方做了8段批注/注解,以让本文成为全网最通俗的BERT详解
July注1:「 本文是了解bert历史的最佳文章,把整个来龙去脉介绍的高屋建瓴、通俗细致,全文主要有这些内容:预训练在图像领域的应用、从语言模型到Word Embedding、从Word Embedding到ELMO、从Word Embedding到GPT、Bert的诞生。
当然,在此之前,建议先通过此文了解word2vec:
https://blog.csdn.net/v_JULY_v/article/details/102708459,这是理解bert的关键,其次则是Transformer,关于Transformer,推荐此文 AI笔试面试题库 - 七月在线
因为我也是这么过来的,之前bert刚火起来的时候,就看到俊林老师这篇文章,当时看的不甚了解,及至后来先学习word2vec和Transformer之后,再看此文,你会觉得真是高屋建瓴,甚至醍醐灌顶,是关于bert中文介绍少有的好文章。
话休絮烦,以下即为张俊林老师所写的正文。」
Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高的评价吗?我个人判断是值得。那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?
其实并没有,从模型创新角度看一般,创新不算大。但是架不住效果太好了,基本刷新了很多NLP的任务的最好性能,有些任务还被刷爆了,这个才是关键。另外一点是Bert具备广泛的通用性,就是说绝大部分NLP任务都可以采用类似的两阶段模式直接去提升效果,这个第二关键。客观的说,把Bert当做最近两年NLP重大进展的集大成者更符合事实。
本文的主题是自然语言处理中的预训练过程,会大致说下NLP中的预训练技术是一步一步如何发展到Bert模型的,从中可以很自然地看到Bert的思路是如何逐渐形成的,Bert的历史沿革是什么,继承了什么,创新了什么,为什么效果那么好,主要原因是什么,以及为何说模型创新不算太大,为何说Bert是近年来NLP重大进展的集大成者。
我们一步一步来讲,而串起来这个故事的脉络就是自然语言的预训练过程,但是落脚点还是在Bert身上。要讲自然语言的预训练,得先从图像领域的预训练说起。
图像领域的预训练自从深度学习火起来后,预训练过程就是做图像或者视频领域的一种比较常规的做法,有比较长的历史了,而且这种做法很有效,能明显促进应用的效果。
那么图像领域怎么做预训练呢,上图展示了这个过程,我们设计好网络结构以后,对于图像来说一般是CNN的多层叠加网络结构,可以先用某个训练集合比如训练集合A或者训练集合B对这个网络进行预先训练,在A任务上或者B任务上学会网络参数,然后存起来以备后用。假设我们面临第三个任务C,网络结构采取相同的网络结构,在比较浅的几层CNN结构,网络参数初始化的时候可以加载A任务或者B任务学习好的参数,其它CNN高层参数仍然随机初始化。
30、如何理解Seq2Seq Attention模型:图解Seq2Seq Attention
本题解析来源:Yuanche.Sh:真正的完全图解Seq2Seq Attention模型 ,和
https://blog.csdn.net/Irving_zhang/article/details/78889364
seq2seq是一个Encoder–Decoder结构的网络,它的输入是一个序列,输出也是一个序列,Encoder中将一个可变长度的信号序列变为固定长度的向量表达,Decoder将这个固定长度的向量变成可变长度的目标的信号序列。
首先,我们使用x={x1,x2,…,xn}代表输入的语句,y={y1,y2,…,yn}代表输出的语句,yt代表当前输出词。在理解seq2seq的过程中,我们要牢记我们的目标是:
即输出的yt不仅依赖之前的输出{y1,y2,…,yt−1},还依赖输入语句x,模型再怎么变化都是在上述公式的约束之下。
31、请详细比较下自然语言处理三大特征抽取器(CNN/RNN/TF)
本题解析作者:张俊林,链接:张俊林:放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较
在辞旧迎新的时刻,大家都在忙着回顾过去一年的成绩(或者在灶台前含泪数锅),并对2019做着规划,当然也有不少朋友执行力和工作效率比较高,直接把2018年初制定的计划拷贝一下,就能在3秒钟内完成2019年计划的制定,在此表示祝贺。
2018年从经济角度讲,对于所有人可能都是比较难过的一年,而对于自然语言处理领域来说,2018年无疑是个收获颇丰的年头,而诸多技术进展如果只能选择一项来讲的话,那么当之无愧的应该就是Bert模型了。在上一篇介绍Bert的文章“从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史”里,我曾大言不惭地宣称如下两个个人判断:一个是Bert这种两阶段的模式(预训练+Finetuning)必将成为NLP领域研究和工业应用的流行方法;第二个是从NLP领域的特征抽取器角度来说,Transformer会逐步取代RNN成为最主流的的特征抽取器。
关于特征抽取器方面的判断,上面文章限于篇幅,只是给了一个结论,并未给出具备诱惑力的说明,看过我文章的人都知道我不是一个随便下结论的人(那位正在补充下一句:“你随便起来不是……”的同学请住口,请不要泄露国家机密,你可以继续睡觉,吵到其它同学也没有关系,哈哈),但是为什么当时我会下这个结论呢?
本文可以看做是上文的一个外传,会给出比较详实的证据来支撑之前给出的结论。如果对目前NLP里的三大特征抽取器的未来走向趋势做个宏观判断的话,我的判断是这样的:RNN人老珠黄,已经基本完成它的历史使命,将来会逐步退出历史舞台;CNN如果改造得当,将来还是有希望有自己在NLP领域的一席之地,如果改造成功程度超出期望,那么还有一丝可能作为割据一方的军阀,继续生存壮大,当然我认为这个希望不大,可能跟宋小宝打篮球把姚明打哭的概率相当;而新欢Transformer明显会很快成为NLP里担当大任的最主流的特征抽取器。
至于将来是否会出现新的特征抽取器,一枪将Tranformer挑落马下,继而取而代之成为新的特征抽取山大王?这种担忧其实是挺有必要的,毕竟李商隐在一千年前就告诫过我们说:“君恩如水向东流,得宠忧移失宠愁。 莫向樽前奏花落,凉风只在殿西头。”当然这首诗看样子目前送给RNN是比较贴切的,至于未来Transformer是否会失宠?这个问题的答案基本可以是肯定的,无非这个时刻的来临是3年之后,还是1年之后出现而已。
32、XLNet有哪些突出的有点,有哪些创新的地方?
本题解析作者:张俊林,链接:张俊林:XLNet:运行机制及和Bert的异同比较 ,开头部分图来自此文:AI笔试面试题库 - 七月在线
这两天,XLNet貌似也引起了NLP圈的极大关注,从实验数据看,在某些场景下,确实XLNet相对Bert有很大幅度的提升。就像我们之前说的,感觉Bert打开两阶段模式的魔法盒开关后,在这条路上,会有越来越多的同行者,而XLNet就是其中比较引人注目的一位。当然,我估计很快我们会看到更多的这个模式下的新工作。未来两年,在两阶段新模式(预训练+Finetuning)下,应该会有更多的好工作涌现出来。
根本原因在于:这个模式的潜力还没有被充分挖掘,貌似还有很大的提升空间。当然,这也意味着NLP在未来两年会有各种技术或者应用的突破,现在其实是进入NLP领域非常好的时机。原因有两个:
一个是NLP正面临一个技术栈大的改朝换代的时刻,有很多空白等着你去填补,容易出成绩;
另外一点,貌似Bert+Transformer有统一NLP各个应用领域的趋向,这意味着此时进入NLP领域,具备学习成本非常低的好处,和之前相比,投入产出比非常合算。这是两个原因。
当然,即使如此,想要学好NLP,持续的精力投入是必不可少的。有句老话说得好:“永恒的爱大约持续三个月”,这句话其实对于很多对NLP感兴趣的同学也成立:“对NLP的永恒的热情大约能够持续3到5天”,希望真的有兴趣的同学能坚持一下,起码持续7到8天,凑够一个星期……
那么XLNet和Bert比,有什么异同?有什么模型方面的改进?在哪些场景下特别有效?原因又是什么?本文通过论文思想解读及实验结果分析,试图回答上述问题。首先,XLNet引入了自回归语言模型以及自编码语言模型的提法,这个思维框架我觉得挺好的,可以先简单说明下。
33、BERT的变种有哪些?
本题解析来源:AI科技评论:NLP领域预训练模型的现状及分析
作者 | 王泽洋
单位 | 小牛翻译
王泽洋 东北大学自然语言处理实验室研究生,研究方向为机器翻译。
小牛翻译,核心成员来自东北大学自然语言处理实验室,由姚天顺教授创建于1980年,现由朱靖波教授、肖桐博士领导,长期从事计算语言学的相关研究工作,主要包括机器翻译、语言分析、文本挖掘等。团队研发的支持140种语言互译的小牛翻译系统已经得到广泛应用,并研发了小牛翻译云,让机器翻译技术赋能全球企业。
预训练的方法最初是在图像领域提出的,达到了良好的效果,后来被应用到自然语言处理。预训练一般分为两步,首先用某个较大的数据集训练好模型(这种模型往往比较大,训练需要大量的内存资源),使模型训练到一个良好的状态,然后下一步根据不同的任务,改造预训练模型,用这个任务的数据集在预训练模型上进行微调。
这种做法的好处是训练代价很小,预训练的模型参数可以让新的模型达到更快的收敛速度,并且能够有效地提高模型性能,尤其是对一些训练数据比较稀缺的任务,在神经网络参数十分庞大的情况下,仅仅依靠任务自身的训练数据可能无法训练充分,预训练方法可以认为是让模型基于一个更好的初始状态进行学习,从而能够达到更好的性能。
一、预训练方法发展
基于词嵌入的预训练方法2003年,Bengio等人提出了神经语言模型(Neural Network Language Model)[1]神经语言模型在训练过程中,不仅学习到预测下一个词的概率分布,同时也得到了一个副产品:词嵌入表示。相比随机初始化的词嵌入,模型训练完成后的词嵌入已经包含了词汇之间的信息。2013年,Mikolov等人提出了word2vec工具,其中包含了CBOW(Continue Bag of Words)模型和Skip-gram模型[2-3],该工具仅仅利用海量的单语数据,通过无监督的方法训练得到词嵌入。
基于语言模型的预训练方法
词嵌入本身具有局限性,最主要的缺点是无法解决一词多义问题,不同的词在不同的上下文中会有不同的意思,而词嵌入对模型中的每个词都分配了一个固定的表示。针对上述问题,Peters等人提出了ELMo(Embedding from Language Model)[4],即使用语言模型来获取深层的上下文表示。ELMo的具体做法是,基于每个词所在的上下文,利用双向LSTM的语言模型来获取这个词的表示。ELMo的方法能够提取丰富的特征给下游任务使用,但是ELMo仅仅进行特征提取而没有预训练整个网络,远远没有发挥预训练的潜力,另外一个不足之处是,自注意力机制的Transformer模型结构,相比LSTM能够更有效地捕获长距离依赖,对句子中信息进行更充分的建模。
针对上述两个问题,Radford等人提出了 GPT Generative Pre-Training)[5],即生成式的预训练。GPT将LSTM换成了Transformer,获得了更高的成绩,但是由于使用的是单向模型,只能通过前面词预测后面的词,可能会遗漏信息。Devlin等人提出了BERT(Bidirectional Encoder Representations from Transformers)[6],即基于Transformer的双向编码器表示。
BERT和GPT的结构和方法十分相似,最主要的不同之处在于GPT模型使用的是单向语言模型,可以认为是基于Transformer的解码器表示,而BERT使用的基于Transformer的编码器能够对来自过去和未来的信息进行建模,能够提取更丰富的信息。三个预训练模型的图如下所示:
BERT提出后大火,也许是因为BERT的效果太好。目前绝大多数的预训练模型都是在BERT上改造而来。清华大学的王晓智和张正彦同学给出了目前的预训练模型关系图,这里引用一下,如下图所示:
34、Transformer XL和Transformer的主要区别是什么?
本题解析来源:Transformer-XL解读(论文 + PyTorch源码)
前言
目前在NLP领域中,处理语言建模问题有两种最先进的架构:RNN和Transformer。RNN按照序列顺序逐个学习输入的单词或字符之间的关系,而Transformer则接收一整段序列,然后使用self-attention机制来学习它们之间的依赖关系。这两种架构目前来看都取得了令人瞩目的成就,但它们都局限在捕捉长期依赖性上。
为了解决这一问题,CMU联合Google Brain在2019年1月推出的一篇新论文《Transformer-XL:Attentive Language Models beyond a Fixed-Length Context》同时结合了RNN序列建模和Transformer自注意力机制的优点,在输入数据的每个段上使用Transformer的注意力模块,并使用循环机制来学习连续段之间的依赖关系。Transformer-XL在多种语言建模数据集(如单词级别的enwik8和字符级别的text8)上实现了目前的SoTA效果,且该模型在推理阶段速度更快,比之前最先进的利用Transformer进行语言建模的方法快300~1800倍。 同时,该论文也放出了其配套源码(包括TensorFlow和PyTorch的)、预训练模型及在各个数据集上训练的超参数,可以说是非常良心了~造福我等伸手党!
本文将主要针对模型原理及其PyTorch实现进行逐一对照解读,因笔者能力有限,如有不详尽之处,可移步文末的传送门进行详细阅读,并欢迎指出~
篇幅有限,本文不会把每一题的参考答案都加载出来,会摘出一些摘要,完整解析见题库!
添加老师微信:julyedukefu14,回复 ” 6 “ ,领取最新升级版《名企AI面试100题》电子书!