xml地图|网站地图|网站标签 [设为首页] [加入收藏]

正规赌博平台

当前位置:网上十大正规赌博平台 > 正规赌博平台 > 进行神经网络机器翻译,生成式模型系列

进行神经网络机器翻译,生成式模型系列

来源:http://www.nb-machinery.com 作者:网上十大正规赌博平台 时间:2019-09-05 19:54

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

NVIDIA 深度学习系列

图片 1

Christopher Olah 新作 原文

图片 2theano

OpenAI 现在第一个研究成果已经公开:这四个项目 有着同样的主题——那就是加强或者使用了生成式模型. 生成式模型是无监督学习 的一个分支. 除了介绍我们的工作,本文将会教你关于生成式模型更多的内容:这种模型是什么,为何重要,往哪里发展.

深度学习,尽管已经获得相当的成果,还是一个年轻的领域。尽管被称作人工神经网络的模型已经被人们研究了数十年,但是那时的工作看起来却与现代的研究成果关系不大。一般来说,年轻的领域都是从一种 ad-hoc 的方式开始的。慢慢地,成熟起来的领域的理解会和早期的先行者的理解差异较大。例如,在分类学中,近千年来人们都将植物和动物组织在一起的,在我们对进化和分子生物学理解深入后才改变了禁锢已久的观念。在化学领域,人类研究了好长时间的化学反应,但是真正让我们认识转变的其实是发现不可约的元素,而后是因为原子模型的发现。这些都是伟大的发现,而科学和数学的历史中已经不断地上演这样的不同程度的桥段了。现在看起来,深度学习可能就出在这样的一种状态下。同时,深度学习有着极其成功的工具作为支撑。虽然工具看起来并不是根本性的;它是被偶然发现的一些东西,不过拥有着规律性的属性。作为一个领域,我们还没有获得某种统一的洞察或者共通的理解。实际上,该领域还有好几个流派!所以我猜测,很可能在 30 年后,回过来看深度学习,会大不相同的。

前面的系列文章中,我介绍了一种用来做机器翻译的简单的编码解码器模型。这个模型在英法翻译任务上效果很好。但是在本文中,我们会简要讨论这个模型自身的缺点,给出近期出现的引入软注意力机制来克服这些缺点并给出了显著性能提升的模型。另外,我还会列出一些近期的推广这种神经网络机器翻译模型的方法到其他的场景的尝试的研究成果,比如说图像描述生成和视频描述生成。最后我会对未来的研究方向做一个展望,并给出一些关于文中提及的模型开源实现。

**我们 OpenAI 的核心志向是开发出算法和技术可以赋予计算机理解世界的能力. **

如果我们觉得深度学习在 30 年后变化非常大,也就意味着:我们将如何看到?当然,没有人能够真正知道我们如何理解这个领域。但是来做个推测也是很有趣的。当前,三种流派正在争夺作为理解深度学习的方式。一个就是神经科学流派,把深度学习类比于生物学。一个是表示流派,关注数据的转换和流形假设。最后一个,就是概率流派,将神经网络解释称一种寻找潜在变量的方法。这些流派并不是互斥的,但是在思维方式上存在着相当大的差异。这篇文章尝试扩展了表示流派,并给出一个可能的答案:深度学习研究了优化和函数式程序设计的关联。在这个观点下,深度学习中表示流派的想法就对应于函数式程序设计中的类型论。我们将深度学习看做是成果颇丰的两个领域的联结。我能够看到的是,美妙和自然的现象就是作为数学家的我可以相信这可以给出一些有关真实世界的某种根本性的认知。这的确是一种极强推测性的想法。我并不是想要证明这个想法。只是希望来论述一些关于这个想法的合理性,我们也可以从这个方向来推测深度学习的今后的演变。简言之:我尝试给出了一个美学观点,而非一个事实论证。本文试着给出这个自然又简洁的想法,对深度学习给出一个全面的解释。

编码器将输入序列压缩成一个定长的向量,然后从这个定长向量来产生全句的翻译。简言之,定长向量,必须包含源语句中的每一个细节都包含进去。直觉上看,这意味着由编码器近似的真实函数必须是非常地非线性和复杂的。而且,上下文向量的维度必须足够大使得任意长度的句子都可以被压缩。在我的这篇 On the Properties of Neural Machine Translation: Encoder-Decoder Approaches 文章中,我们通过实验确认了在编码器-解码器模型规模很小的时候,翻译质量会随着源语句长度增加而急剧下降。加上 Sutskever et al. 的更好的结果,使用了同样类型的编码器-解码器架构,指出编码器的表示能力需要被扩展,也就是说模型必须变很大,来解决长句子的问题。

其实我们常会忽视自己对世界的认知和理解:世界是一个 3D 的环境,对象可以移动,碰撞和交互;行走,对话和思考的人类;放牧、飞翔、奔跑或者咆哮;播放天气,篮球赛或者 1970 年发生的事情的用语言表示的信息的显示器.

深度学习的一个特别之处是它研究了深度神经网络——拥有多层的神经网络。通过众多的网络层,这些模型逐渐地将数据进行扭曲,最终转换成一种容易解决最终任务的形式。

图片 3图 1:编码器-解码器模型性能随着句子的长度增加急剧下降

这些海量信息就在我们的身边,某种程度上触手可及 —— 或者是在原子物理世界中,或者是比特的数字世界里. 而最为棘手的部分就是发展出可以分析和理解数据中潜藏的珍宝的模型和算法.

图片 4简单的神经网络

当然了,更大的模型带来的是更多的计算和内存需求。使用诸如 NVIDIA Titan X 这样的高级 GPU,可以帮助我们处理计算的问题,不过也还是不足以解决内存问题。现在能够达到的内存通常限制在几个 G 的规模,这就带来对模型大小的限制。(注意:使用多 GPU,并将单一模型分布置于这些 GPU 上是可以解决这个问题的。但是这里我们简化场景为单一 GPU 机器,存在着空间,计算能力和其他物理上的限制)接着,问题就是:“我们能够做得比简单的 编码器-解码器 模型更好么?”

生成式模型是达到这个目标的最为可能的方式之一. 要训练一个生成式模型,我们首先收集某个领域中的大量数据(如,数以百万计的图像、句子或者声音等),然后训练一个可以生成像这些数据模型. 这个观点的直觉其实是 Richard Feynman 名言的含义:

这些层上的细节不断地在变化。而不变的一点是层之间的顺序关系。每个层都是一个函数,作用于上一层的输出上。整体上看,神经网络是复合函数形成的链。而我们就是通过优化这个复合函数的链来完成既定任务的。我注意到在神经网络中的每个模型其实都包含优化复合函数的过程。这也是本文所要研究的关键之处。

简单编解码模型的最大问题就是任意长度的句子需要被压缩成定长向量。当你思考我们一般处理压缩任务的方法时能体会到这个问题的诡异。当我们压缩文件时,压缩后的文件长度一般是和原始文件的长度成比例的。(这也说得不准确,应该是,压缩后的文件大小和原始文件中的信息量成比例,而不是简单的长度。然而,我们再简化一下,原始文件的长度反应了文件中的信息量。)继续类比数字计算机,我们不会按照定长向量来存放整个句子,而是根据源句子的长度来放置句子到内存单元中。通过BiRNN 来做到这一点。这是一种双向的 RNN,从正向和反向来阅读源语句。

``What I cannot create, I do not understand.''

借助每个层,神经网络转换数据,将数据转成适合最终任务的形式。我们也称这些被转换后的数据为“表示”。表示对应于类型。粗略地看来,在计算机科学中的类型是一种将某种数据嵌入到 n 个比特中的方式。类似地,深度学习中的表示就是一种将数据流形嵌入到 n 个维度的方法。正如两个函数仅在类型一致时才能够复合,两个层也是仅能够在其表示相符的时候进行复合。错误表示的数据对神经网络来说,毫无作用。在训练的过程中,邻接的层会确认好他们之间交互的表示;而网络的性能则会依赖于使用网络期待的表示的数据。

现在我们记来自 正向 RNN 的隐藏状态为

而完成这个任务的关键就是我们用神经网络作为生成式模型,这样的模型参数的数量远小于我们用来训练的数据的量,迫使模型能够发现和有效地内化(internalize)数据的本质,从而才可以生成这些数据.

图片 5Paste_Image.png

图片 6Paste_Image.png

生成式模型有很多短期(short-term)应用. 但是从长远角度来看,他们有着自动学习数据集的自然特征的潜力,包含类型、维度或者其他特征.

在一个极其简单的神经网络架构中,只包含一个线性的序列的若干层,这不会很有趣。一层输出的表示需要匹配下一层的输入——这有什么好玩的!?这不是易见的么。但是很多神经网络拥有更加复杂的架构,所以这个约束也会变得很有意思。举个例子,想象一个有多个类似类型输入的神经网络,进行着多个相关任务。可能会同时获取RGB 图像和灰度图像作为输入。就想象成网络正在学习人的图片,试着对年龄和性别做出预测。因为输入的类型的相似性还有任务的相似性,在一个模型中来做所有的事就很有用了,训练数据可以帮助所有的任务。结果就是多个输入层映射到了一个表示,多个输出从共同的表示映射出来。

而 反向 RNN 的隐藏状态记为

让我们看看一个具体的例子. 假设我们有某个大量图像的集合,比如说 ImageNet 数据集中 120 万幅图像(但是需要记住这也可以是互联网或者机器人中获得的大量的图像或者视频的集合). 如果我们将每幅图重置为 256 的宽高的图像,我们的数据集就是一个 1200000*256*256*3的像素块. 这里是该数据集的一些样例图像:

图片 7Paste_Image.png

图片 8Paste_Image.png

图片 9

也许这个例子有点太刻意,但是映射不同类型的数据到同样的表示上可以达成一些很棒的效果。例如,通过映射两种语言下的词到同一个表示,我们可以找到那些我们开始时并没能发现的对应的词之间的翻译。还有就是通过映射图像和词到同样的表示上,我们就可以将图像分出那些我们从没看到的类别上!表示和类型可以被看成是深度学习和函数程序设计分别对应的基础构成单元。深度学习的一个主要流派——流形和表示,整个就是关注神经网络扭变数据到新的表示上。而已知的集合、逻辑、拓扑和函数式程序设计之间的关联也揭示出表示和类型之间的联系可能更加具有根本性。

正如我们在前面的文章中讨论的那样,RNN 通过一次读取一个符号来总结序列。所以

这些图像是我们视觉世界呈现的样子,我们将它们成为“从真实数据分布中采样的样本”. 现在我们构造生成式模型,将他们训练成可以生成如同这些样本图的模型. 这里的生成式模型可以是一个大的神经网络可以输出图像,这些图像称为“来自模型的样本”.

现代神经网络背后关键思想之一就是可以在网络中使用一个神经元的若干拷贝。在程序设计中,函数的抽象则是根本的。我们可以通过函数来减少重复代码数十倍、百倍乃至千倍。这样不仅减少了我们需要编写和维护的代码量,加速了开发的进程,而且降低了引入 bug 的风险,让我们能够更容易地找到错误。在神经网络中使用一个神经元的多个配置就类比于在程序设计中使用函数。这样的话,我们需要学习的东西更少,当然模型训练会变快,并能够得到一个较好的模型。这种技术——也称为 权重捆绑(weight tying)——是深度学习中常见的现象级结果。当然,我们也不是任意地在网络中的所有地方去使用神经元的拷贝。为了让模型起到作用,需要按照一定的方式办事,利用数据中的一些结构来设计权重捆绑。实践中,通常会有一些广泛使用的模式,例如递归层和卷积层。这些神经网络的模式其实就是更高阶的函数——也就是说,一些将函数作为参数的函数。诸如此类的东西在函数式程序设计中已经被广泛研究过了。实际上,很多网络模式对应于极其常见的函数,如 fold。唯一不同的是,这里接受的是神经网络的块而不是正常的函数作为参数。

图片 10Paste_Image.png

最近的一个模型是来自 Radford 等人的 DCGAN network . 这个网络以 100 个从一个高斯分布中采样的随机数为输入(这些数字我们称为代码,或者隐含变量,红色文字所示),输出了一个图像(在这里是 64*64*3 的右部的图像,绿色文字所示). 当代码增量式变化时,生成出的图像也随之变化——这说明模型已经学到了可以描述世界是什么样的特征,而不是仅仅是记住了一些样本.

  • Encoding RNN:就是 folds。通常让神经网络接受可变长度的列表作为输入,如将:

是对源语句从开头到第 j 个词的总结,而

网络由标准的卷积神经网络如去卷积层,全连接层 等:

图片 11fold = Encoding RNNHaskell:foldl a s

图片 12Paste_Image.png就是对源语句从结尾到反向第 j 个词的总结。见下图,理解这两个状态的含义。图片 13图2. 双向 RNN 对源语句的编码但是,在每个词处的总结并不是关于整个输入语句的最优总结。由于序列化的特性,RNN 倾向于记住出现更近的符号。换言之,输入符号越远离 j,RNN 的隐藏状态就越不可能记起这个符号。用来表示隐藏状态的连接的注解向量能够最好地表示当前词。这肯定不是一个已被认可的假设,但是为了更好地理解,我将注解向量看做是 上下文依赖的词表示。而且,我们可以将这个上下文依赖的词表示方法看成变长存储源语句的一种机制,而非简单的编解码器那样的定长定维度的表示。借助这样的变长表示,解码器需要能够对每个目标词选择性地集中在一个或者多个上下文依赖的词表示上。所以,每次我们需要选择哪个注解向量呢?假设,你正在翻译一个给定的源语句,已经写了前 i-1 个目标词序 (y_1, y_2, ..., y_{i-1}),下一步就是确定哪个目标词作为第 i 个目标词。此时,你如何决定翻译哪个源词呢?一种典型的翻译器是看每个源词 x_j(或者它的上下文依赖表示 h_j),将其与前面 i-1 个已翻译的词序 (y_1, y_2, ..., y_{i-1})合在一起,确定源词 x_j 是否已经被翻译过了(等价地看,就是源词 x_j 对下一个目标词有多相关)。然后对在源语句中的每个词重复这样的过程。图片 14

图片 15

  • Generating RNN:就是unfold。通常让神经网络可以产生一个列表形式的输出,如句子中的词:
  1. 注意力机制考虑到了已经被翻译过了的词和源词之一

DCGAN 使用随机权重进行初始化,所以随机代码输入到网络中会生成一个完全随机的图像. 但是,你可以想象,这个网络有数百万的参数可以调整,目标就是找到一个参数的设置,可以使得从随机代码中生成出的样本看起来像训练数据. 或者换言之,我们想要模型分布匹配在图像空间中的真实的数据分布.

图片 16unfold = Generating RNNHaskell:unfoldr a s

Dzmitry bahdanau 和我跟Yoshua Bengio在去年夏天提出了一个将小神经网络包含进解码器中的方法实现了这个想法。小的神经网络,我们称之为 注意力机制(图 3. 中紫色的部分)使用前面的解码器的隐藏状态 z_i 和一个源 上下文依赖的词表示 h_j 作为输入。注意力机制使用单隐藏层的神经网络实现,其输出是一个标量

假设我们使用新初始化网络生成 200 幅图,每次从一个不同的随机代码开始. 问题是:我们如何调整网络的参数来鼓励他产生更加可信的新的图像?注意到我们不是在一个简单的监督学习场景下,也没有对产生的 200 幅图像设定任何显式的预计目标;我们仅仅希望他们看起来真实.

  • General RNN:就是累积的映射(Accumulating Map)。通常对一个序列上的元素进行预测的时候使用。例如在语音识别的时候,我们希望基于过去的上下文环境预测每个时间步的声音代表的词:

图片 17Paste_Image.png

处理这个问题的巧妙的方式是根据生成式对抗网络 Adversarial Network 方法. 这里我们引入第二个判别器网络(通常是一个标准的卷积神经网络). 例如,我们可以将 200 生成出的图像和 200 幅真实图像作为判别器的输入,训练成为一个标准的分类器来区分这两个来源的图像. 除此之外——我们同样可以反向传播通过判别器和生成器来找出如何改变生成器的参数来让判别器对其 200 样本微小地困惑. 这两个网络就产生了一种对抗:判别器试着从伪造图像中区分出真实图像而产生器则尝试创造可以让判别器觉得它们真实的图像. 最后,生成器网络输出让判别器无法区分的图像.

图片 18Accumulating Map = RNNHaskell:mapAccumR a s

参见图 4.

本文由网上十大正规赌博平台发布于正规赌博平台,转载请注明出处:进行神经网络机器翻译,生成式模型系列

关键词: AG娱乐场

上一篇:目前流行的深度学习框架对比,神经网络

下一篇:没有了