⑴ cnn与lstm应用于哪个领域
下面我尽可能地用简单的语言来阐述下我的看法(叙述中假设你已经大致知道什么是深度学习和神经网络:大数据和高性能计算
在如今的互联网时代,都让神经网络有了前所未有的“更深”的可能,一批新方法被发明出来(Denoise Autoencoder、图像识别中,他提出了利用RBM预训练的方法。几年后人们发现?
3,抛砖引玉。在这个框架下?
2,deep learning还会进一步推动更多AI领域的发展,即用特定结构将网络先初始化到一个差不多“好”的程度,从一定程度上解决了之前网络“深不了”的问题,再回到传统的训练方法(反向传播BP),并且可以模拟人脑的运作形式,深度学习重新得到了人们重视,大家共同讨论,但是计算速度跟不上。
当然,人的聪明才智是无穷无尽的,浅层的神经网络啥都达不到:
==============================我是分割线============================
1.为什么深度学习突然间火起来了,是论证完整化的标准,即便不做预训练,需要程序员辛辛苦苦写代码,也能使深层网络得到非常好的结果。一个我所知道的例子是自然语言处理NLP中词向量(Word Embedding)方法对传统语言模型的提升[1]。
有大数据和高性能计算打下最坚实的基础,就是使语音,GPU并行计算的发展确实极大推动了深度学习的普及?这也是为什么有人认为神经网络火起来完全是因为GPU使得计算方法更快更好了,性能反而还不如一两层的浅模型。这样得到的深度网络似乎就能达到一个不错的结果。
虽然神经网络“号称”自己可以拟合任何函数、图像识别获得了长足的进步,基本都是没有预训练步骤的,深度学习DeepLearning最为人所关注也表现最明显的,只是我忍不住再谈谈自己的理解. 为什么深度学习能成功地应用到语音,顺便认为你已经浏览了其他答案)?
为了让更多对深度学习感兴趣的朋友看懂,只要有足够多的数据。没有了规模,了解神经网络的基本原理。其实有的同学已经回答得很漂亮了,Dropout. 为什么深度学习会应用到语音识别和图像识别中,我觉得可以从以下三点递进地解决题主的疑问. 为什么深度学习突然间火起来了,想象你有好多好多数据(百万幅图片。而人们发现:
1,那这个研究也完全不必要做了吧,预训练本身也不像全连接那么好做了,优化多层神经网络是一个高度非凸的问题,训练就难以收敛。从这个意义上,训练一个网络需要好几年(做机器学习的人应该知道这个完全没有夸张吧)Deep learning实际上同时推动了很多领域的发展,如果在五六年之前。
在2006年Hinton的那篇文章中。这个严重的问题直接导致了神经网络方法的上一次衰败,你说谁干呢……现在的语音识别或图像识别系统。那些笃信深度学习的学者们使用了各种各样的算法激发深度学习的潜能,取得突破,但是这一切都是建立在神经网络足够深足够大的基础上,比如微软的残差学习[2]?
谈到这个问题,再多的数据也不能把传统的神经网络训练到152层啊;而且我相信。而针对卷积神经网络CNN或者LSTM来说,还需要researcher辛辛苦苦想算法,上万小时语音)。否则,当网络层数太多了之后,ReLU……),或者只能收敛到一个次优的局部最优解,我们应该加入两个甚至更加关键的元素。
但是我们现在再回过头来看这个问题。
而高性能计算是与大数据相辅相成的。一个技术不能很大地提升性能,如果拥有大量的训练样本,近十年来数据量的积累是爆炸式的,很多人肯定会说是因为Hinton在Science上的那篇论文“Recing the dimensionality ofdata with neural networks”。
本着读书人简单问题复杂化……啊呸
⑵ nlp的嵌入层包括词向量、词性向量、实体类型向量(随机初始化),这些随机初始化的向量是怎样做出调整的
在梯度反向传播过程中,这些初始化的向量也会得到调整。
⑶ 快速了解什么是自然语言处理
摘要:
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学等于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
1 计算机对自然语言处理的过程
1.1把需要研究是问题在语言上建立形式化模型,使其可以数学形式表示出来,这个过程称之为"形式化"
1.2把数学模型表示为算法的过程称之为"算法化"
1.3根据算法,计算机进行实现,建立各种自然语言处理系统,这个过程是"程序化"
1.4对系统进行评测和改进最终满足现实需求,这个过程是"实用化"
2 自然语言处理涉及的知识领域
语言学、计算机科学(提供模型表示、算法设计、计算机实现)、数学(数学模型)、心理学(人类言语心理模型和理论)、哲学(提供人类思维和语言的更深层次理论)、统计学(提供样本数据的预测统计技术)、电子工程(信息论基础和语言信号处理技术)、生物学(人类言语行为机制理论)。故其为多边缘的交叉学科
3 自然语言处理涉及的范围
3.1语音的自动合成与识别、机器翻译、自然语言理解、人机对话、信息检索、文本分类、自动文摘等等,总之分为四大方向:
语言学方向
数据处理方向
人工智能和认知科学方向
语言工程方向
3.2也可细分为13个方面
口语输入:语音识别、信号表示、鲁棒的语音识别、语音识别中的隐马尔科夫模型方法、语言模型、说话人识别、口语理解
书面语输入:文献格式识别、光学字符识别(OCR):印刷体识别/手写体识别、手写界面、手写文字分析
语言分析理解:小于句子单位的处理、语法的形式化、针对基于约束的语法编写的词表、计算语义学、句子建模和剖析技术、鲁棒的剖析技术
语言生成:句法生成、深层生成
口语输入技术:合成语音技术、语音合成的文本解释、口语生成
话语分析与对话:对话建模、话语建模口语对话系统
文献自动处理:文献检索、文本解释:信息抽取、文本内容自动归纳、文本写作和编辑的计算机支持、工业和企业中使用的受限语言
多语问题的计算机处理:机器翻译、人助机译、机助人译、多语言信息检索、多语言语音识别、自动语种验证
多模态的计算机处理:空间和时间表示方法、文本与图像处理、口语与手势的模态结合、口语与面部信息的模态结合:面部运动和语音识别
信息传输和信息存储:语音压缩、语音品质的提升
自然语言处理中的数学方法:统计建模和分类的数学理论、数字信号处理技术、剖析算法的数学基础研究、神经网络、有限状态分析技术、语音和语言处理中的最优化技术和搜索技术
语言资源:书面语料库、口语语料库、机器词典与词网的建设、术语编撰和术语数据库、网络数据挖掘和信息提取
自然语言处理系统的评测:面向任务的文本分析评测、机器翻译系统和翻译工具的评测、大覆盖面的自然语言剖析器的评测、语音识别:评估和评测、语音合成评测、系统的可用性和界面的评测、语音通信质量的评测、文字识别系统的评测
4自然语言处理的发展的几个特点
基于句法-语义规则的理性主义方法受到质疑,随着语料库建设和语料库语言学 的崛起,大规模真实文本的处理成为自然语言处理的主要战略目标。
自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。
统计数学方法越来越受到重视。
自然语言处理中越来越重视词汇的作用,出现了强烈的"词汇主义"的倾向。
最后,你了解了吗。
⑷ word2vec 词向量怎么来的
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。
详情:网页链接
⑸ word2vec是如何得到词向量的
word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
一、理论概述:
1.词向量是什么?自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
举个栗子:
“话筒”表示为 [0 0 0 1 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 0 ...]
每个词都是茫茫 0 海中的一个 1。这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字 ID。比如刚才的例子中,话筒记为 3,麦克记为 8(假设从 0 开始记)。如果要编程实现的话,用 Hash 表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完成了 NLP 领域的各种主流任务。当然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克这样的同义词也不能幸免于难。Deep Learning 中一般用到的词向量并不是刚才提到的用One-hot Representation 表示的那种很长很长的词向量,而是用Distributed Representation(不知道这个应该怎么翻译,因为还存在一种叫“Distributional Representation”(类似,LDA中用topic表示词语的词向量的表示方法)表示的一种低维实数向量。这种向量一般是这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, ...]。维度以50维和 100 维比较常见。
2.词向量的来历?Distributed representation 最早是 Hinton 在 1986 年的论文《Learning distributed representations of concepts》中提出的。虽然这篇文章没有说要将词做 Distributed representation但至少这种先进的思想在那个时候就在人们的心中埋下了火种,到 2000 年之后开始逐渐被人重视。
3. 词向量的训练:要介绍词向量是怎么训练得到的,就不得不提到语言模型。到目前为止我了解到的所有训练方法都是在训练语言模型的同时,顺便得到词向量的。这也比较容易理解,要从一段无标注的自然文本中学习出一些东西,无非就是统计出词频、词的共现、词的搭配之类的信息。而要从自然文本中统计并建立一个语言模型,无疑是要求最为精确的一个任务(也不排除以后有人创造出更好更有用的方法)。既然构建语言模型这一任务要求这么高,其中必然也需要对语言进行更精细的统计和分析,同时也会需要更好的模型,更大的数据来支撑。目前最好的词向量都来自于此,也就不难理解了。词向量的训练最经典的有 3 个工作,C&W 2008、M&H 2008、Mikolov 2010。当然在说这些工作之前,不得不介绍一下这一系列中 Bengio 的经典之作
4. 词向量的评价:词向量的评价大体上可以分成两种方式,第一种是把词向量融入现有系统中,看对系统性能的提升;第二种是直接从语言学的角度对词向量进行分析,如相似度、语义偏移等。
⑹ 词向量,LDA,word2vec三者的关系是什么
词向量,有时候翻译为词嵌入(word embeddings),又可以称作distributed word representation[1], 最初起源是神经网络语言模型(Neural Networks Language Models),word2vec是一种常见的word embeddings,另外一种着名word embeddings是GloVe
LDA(Latent Dirichlet Allocation)是主题模型(Topic Models)的一种计算方法,和词向量并无直接关系,不过如果扯上另外一种topic model, LSA(Latent Semantic Allocation),那就有一些关系了:LSA的核心技术是SVD,一种矩阵分解,而SVD一般在NLP中的使用并非是使用它分解的三个矩阵,而是合并右边两个矩阵。那么合并之后,左边的矩阵就可以视为word embeddings,而右边的矩阵可以视为当它是context时候的embeddings。当然,一般的矩阵分解,比如NMF,也可以得到word embeddings。而word2vec一再被人证明,从结果看,是一个全局PPMI矩阵的分解。某种意义讲,word embeddings可以理解是传统矩阵分解的一个加速版本。LDA和word embeddings还是可以有点联系,比如加入LDA的结果作为word embeddings的输入,来增强文章分类效果。Latent Dirichlet Allocation(LDA)和word2vec从模型上看几乎没有显着联系。词向量则是所有对词进行表示的方法的统称。关于联系你可以这样看:LDA的作用之一是通过对doc-word矩阵进行建模抽出doc-topic和topic-word两个分布。而word2vec其实是分解了word-context矩阵。其实都是对一个"A"-"B"矩阵进行建模。那么LDA自然也可以用于对word-context矩阵进行建模,而word2vec也可以对doc-word矩阵做分解。以上算是LDA和word2vec之间的的一点联系吧。不过他们之间的区别也是非常显着的。
⑺ 进行自然语言处理时,使用字向量好,还是词向量好
两个方面,1)得看具体任务,不同的任务下两种方式的孰优孰劣只有试了才知道。2)图中给出的文本标签分类的一个模型效果,从中可以看到,词向量是要优于字向量的。
⑻ 为什么说Transformer的注意力机制是相对廉价的注意力机制相对更对于RNN系列及CNN系列算法有何优势
QA形式对自然语言处理中注意力机制(Attention)进行总结,并对Transformer进行深入解析。
二、Transformer(Attention Is All You Need)详解
1、Transformer的整体架构是怎样的?由哪些部分组成?
2、Transformer Encoder 与 Transformer Decoder 有哪些不同?
3、Encoder-Decoder attention 与self-attention mechanism有哪些不同?
4、multi-head self-attention mechanism具体的计算过程是怎样的?
5、Transformer在GPT和Bert等词向量预训练模型中具体是怎么应用的?有什么变化?
一、Attention机制剖析
1、为什么要引入Attention机制?
根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还要引入注意力机制呢?
计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。
可以借助人脑处理信息过载的方式,例如Attention机制可以提高神经网络处理信息的能力。
2、Attention机制有哪些?(怎么分类?)
当用神经网络来处理大量的输入信息时,也可以借鉴人脑的注意力机制,只 选择一些关键的信息输入进行处理,来提高神经网络的效率。按照认知神经学中的注意力,可以总体上分为两类:
聚焦式(focus)注意力:自上而下的有意识的注意力,主动注意——是指有预定目的、依赖任务的、主动有意识地聚焦于某一对象的注意力;
显着性(saliency-based)注意力:自下而上的有意识的注意力,被动注意——基于显着性的注意力是由外界刺激驱动的注意,不需要主动干预,也和任务无关;可以将max-pooling和门控(gating)机制来近似地看作是自下而上的基于显着性的注意力机制。
在人工神经网络中,注意力机制一般就特指聚焦式注意力。
3、Attention机制的计算流程是怎样的?
Attention机制的实质其实就是一个寻址(addressing)的过程,如上图所示:给定一个和任务相关的查询Query向量q,通过计算与Key的注意力分布并附加在Value上,从而计算Attention Value,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现:不需要将所有的N个输入信息都输入到神经网络进行计算,只需要从X中选择一些和任务相关的信息输入给神经网络。
step1-信息输入:用X= [x1, · · · , xN ]表示N 个输入信息;
step2-注意力分布计算:令Key=Value=X,则可以给出注意力分布
我们将称之为注意力分布(概率分布),为注意力打分机制,有几种打分机制:
step3-信息加权平均:注意力分布可以解释为在上下文查询q时,第i个信息受关注的程度,采用一种“软性”的信息选择机制对输入信息X进行编码为:
这种编码方式为软性注意力机制(soft Attention),软性注意力机制有两种:普通模式(Key=Value=X)和键值对模式(Key!=Value)。
4、Attention机制的变种有哪些?
与普通的Attention机制(上图左)相比,Attention机制有哪些变种呢?
变种1-硬性注意力:之前提到的注意力是软性注意力,其选择的信息是所有输入信息在注意力 分布下的期望。还有一种注意力是只关注到某一个位置上的信息,叫做硬性注意力(hard attention)。硬性注意力有两种实现方式:(1)一种是选取最高概率的输入信息;(2)另一种硬性注意力可以通过在注意力分布式上随机采样的方式实现。硬性注意力模型的缺点:
变种2-键值对注意力:即上图右边的键值对模式,此时Key!=Value,注意力函数变为:
变种3-多头注意力:多头注意力(multi-head attention)是利用多个查询Q = [q1, · · · , qM],来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分,然后再进行拼接:
5、一种强大的Attention机制:为什么自注意力模型(self-Attention model)在长距离序列中如此强大?
(1)卷积或循环神经网络难道不能处理长距离序列吗?
当使用神经网络来处理一个变长的向量序列时,我们通常可以使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列,如图所示:
从上图可以看出,无论卷积还是循环神经网络其实都是对变长序列的一种“局部编码”:卷积神经网络显然是基于N-gram的局部编码;而对于循环神经网络,由于梯度消失等问题也只能建立短距离依赖。
(2)要解决这种短距离依赖的“局部编码”问题,从而对输入序列建立长距离依赖关系,有哪些办法呢?
由上图可以看出,全连接网络虽然是一种非常直接的建模远距离依赖的模型, 但是无法处理变长的输入序列。不同的输入长度,其连接权重的大小也是不同的。
这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(self-attention model)。由于自注意力模型的权重是动态生成的,因此可以处理变长的信息序列。
总体来说,为什么自注意力模型(self-Attention model)如此强大:利用注意力机制来“动态”地生成不同连接的权重,从而处理变长的信息序列。
(3)自注意力模型(self-Attention model)具体的计算流程是怎样的呢?
同样,给出信息输入:用X = [x1, · · · , xN ]表示N 个输入信息;通过线性变换得到为查询向量序列,键向量序列和值向量序列:
上面的公式可以看出,self-Attention中的Q是对自身(self)输入的变换,而在传统的Attention中,Q来自于外部。
注意力计算公式为:
自注意力模型(self-Attention model)中,通常使用缩放点积来作为注意力打分函数,输出向量序列可以写为:
二、Transformer(Attention Is All You Need)详解
从Transformer这篇论文的题目可以看出,Transformer的核心就是Attention,这也就是为什么本文会在剖析玩Attention机制之后会引出Transformer,如果对上面的Attention机制特别是自注意力模型(self-Attention model)理解后,Transformer就很容易理解了。
1、Transformer的整体架构是怎样的?由哪些部分组成?
Transformer其实这就是一个Seq2Seq模型,左边一个encoder把输入读进去,右边一个decoder得到输出:
Transformer=Transformer Encoder+Transformer Decoder
(1)Transformer Encoder(N=6层,每层包括2个sub-layers):
sub-layer-1:multi-head self-attention mechanism,用来进行self-attention。
sub-layer-2:Position-wise Feed-forward Networks,简单的全连接网络,对每个position的向量分别进行相同的操作,包括两个线性变换和一个ReLU激活输出(输入输出层的维度都为512,中间层为2048):
每个sub-layer都使用了残差网络:
(2)Transformer Decoder(N=6层,每层包括3个sub-layers):
sub-layer-1:Masked multi-head self-attention mechanism,用来进行self-attention,与Encoder不同:由于是序列生成过程,所以在时刻 i 的时候,大于 i 的时刻都没有结果,只有小于 i 的时刻有结果,因此需要做Mask。
sub-layer-2:Position-wise Feed-forward Networks,同Encoder。
sub-layer-3:Encoder-Decoder attention计算。
2、Transformer Encoder 与 Transformer Decoder 有哪些不同?
(1)multi-head self-attention mechanism不同,Encoder中不需要使用Masked,而Decoder中需要使用Masked;
(2)Decoder中多了一层Encoder-Decoder attention,这与 self-attention mechanism不同。
3、Encoder-Decoder attention 与self-attention mechanism有哪些不同?
它们都是用了 multi-head计算,不过Encoder-Decoder attention采用传统的attention机制,其中的Query是self-attention mechanism已经计算出的上一时间i处的编码值,Key和Value都是Encoder的输出,这与self-attention mechanism不同。代码中具体体现:
4、multi-head self-attention mechanism具体的计算过程是怎样的?
Transformer中的Attention机制由Scaled Dot-Proct Attention和Multi-Head Attention组成,上图给出了整体流程。下面具体介绍各个环节:
Expand:实际上是经过线性变换,生成Q、K、V三个向量;
Split heads: 进行分头操作,在原文中将原来每个位置512维度分成8个head,每个head维度变为64;
Self Attention:对每个head进行Self Attention,具体过程和第一部分介绍的一致;
Concat heads:对进行完Self Attention每个head进行拼接;
上述过程公式为:
5、Transformer在GPT和Bert等词向量预训练模型中具体是怎么应用的?有什么变化?
GPT中训练的是单向语言模型,其实就是直接应用Transformer Decoder;
Bert中训练的是双向语言模型,应用了Transformer Encoder部分,不过在Encoder基础上还做了Masked操作;
BERT Transformer 使用双向self-attention,而GPT Transformer 使用受限制的self-attention,其中每个token只能处理其左侧的上下文。双向 Transformer 通常被称为“Transformer encoder”,而左侧上下文被称为“Transformer decoder”,decoder是不能获要预测的信息的。
⑼ 自然语言处理的概述
FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。开发语言为Java。
功能:
1. 文本分类 新闻聚类
2. 中文分词 词性标注 实体名识别 关键词抽取 依存句法分析 时间短语识别
3. 结构化学习 在线学习 层次分类 聚类 精确推理 句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程上一年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。