首页 > 经典文章 > 经典语录 > 波尔兹曼大脑

波尔兹曼大脑

时间:2018-12-01   来源:经典语录   点击:

【www.gbppp.com--经典语录】

第一篇:波尔兹曼大脑

Learning_Deep_Architectures_for_AI_中文版_初译整理

Learning Deep Architectures for AI

Yoshua Bengio

摘要

理论结果表明,为了学习用于表示高层次的抽象(例如视觉、语言以及其他AI级别的任务)的复杂函数,我们需要深度结构。深度结构的组成包括了多层次的非线性操作,比如具有许多隐含层的神经网络,或者重用了许多子公式的复杂命题公式。搜索深度结构的参数空间是一件很困难的任务,但是最近提出的诸如用于深度信念网络等的学习算法,对于探索这类问题取得了显著的成功,在某些领域达到了最新的水平。本书讨论深度学习算法的方法和原理,尤其是那些被充分用作基石的单层模型的非监督学习算法例如受限玻尔兹曼机(RBM),它用于构建深度信念网络等深度模型。

第一章 介绍

允许让计算机来模拟我们的世界,足以表明我们所说的智力已经超过半个世纪一直是的研究重点。为了实现这一点,很显然,有大量的关于我们的世界的信息应该以某种方式被明确地或含蓄地存储在计算机中。因为手工地将那些信息转换,并使计算机可以用它们来回答问题并推广到新的环境中是一件令人怯步的事,许多研究者纷纷转向学习算法来获取大部分信息。了解和改进的学习算法已经取得了很大的进展,但人工智能仍然面临挑战。我们有算法可以去理解场景并用自然语言来描述它们?不完全是,除非在非常有限的情况下。我们有算法可以推断出足够的语义概念以便能够使用这些概念进行大多数人类互动?不,如果我们考虑图像理解,人工智能任务里最棒的一个分支,我们认识到,我们还没有能发现许多视觉和语义概念的学习算法,而它们(指概念)似乎有必要出现在网络上解释大部分图像。这种情况就类似于其他的AI任务。

图1.1 我们希望原始输入图像能被转换为更高水平的表述,并表现原始输入表达式越来越多的抽象功能,如:边、局域形状、对象部分等等。在实践中,我们不能提前知道“正确”的表达式应该是什么,在所有这些抽象层中,尽管语言概念可以帮助我们猜测到更高层次表述可能隐含的信息

考虑一个例子,要求解释一个如图1.1中输入的图像。当人们尝试着去解决特定的AI任务(例如机器视觉或自然语言处理),他们往往会直接利用他们的有关如何分解问题转化子问题和多级表示的经验,例如,在对象的部分和一系列模型中[138,179,197],可以重新用在不同的对象实例模型的部件。例如,最先进机器视觉领域的当前语句涉及从像素开始并以线性或内核分类结束[134,145]模块的序列,以及中间模块混合工程的转换和学习。

例如,先提取低级别的功能,那些不变的小几何变化(如Gabor滤波器的边缘检测),并逐渐转变它们(例如,使它们在参照物改变或反转时保持不变,有时通过集中和子采样),然后检测最频繁的模式。一种貌似有理且常见的方式是从自然图像中提取有用的信息,包括将所述原始像素表示成逐渐更抽象的表示,例如,从边缘表达式,以及更复杂的,局部的形状的检测,到抽象类别的识别与子对象,哪些是图像的部分对象相关联,并把这些放到一起来捕获足够关于这些场景的理解来回答关于它们的问题。

在这里,我们假设必要的计算机来表达复杂的行为(其中一个可能被标记为“智能”

)需要

高度变化的数学函数,即,数学函数是高度非线性依据原始感知输入,并横跨感兴趣的领域显示一个非常大的的变化(增长和减小)。我们观察原始输入给学习系统作为一个高维实体,提出了许多观测变量的,这些都和未知的错综复杂的统计关系有关。例如,使用固态物体和照明的三维几何的知识,就可以在与底层物理和几何因素小的变化(如位置,方向,对象的照明)用的图像的所有像素的变化像素强度。我们称之为变量,是因为它们是数据的不同方面,并可以独立地经常变化。在这种情况下,所涉及的物理因素的明确知识允许人们获得该组图像的形状,这些依赖关系的数学形式的图片,和(如在像素强度的高维空间中的点)与相关联的同样的3D对象。如果一台机器捕获变量在数据中的统计变化,以及它们是如何相互作用以产生我们观察到的数据种类,我们将能够说,机器理解是指这些变化的因素覆盖的的世界。不幸的是,在一般情况和变化最底层的因素的自然图像,我们没有对分析这些变化因素的理解。我们没有足够形式化的关于世界的先验知识来解释所观察到的各种图像,即便是这样一个看似简单的抽象:MAN,像图1.1中那样。一个高层次的抽象,例如,MAN有一个性质,他相当于一个巨大的可能图像的集合,这可能非常不同于那些简单欧几里得距离中的像素点的属性。该组图像能够识别此标签可能是适当的形式在像素空间中的高度旋绕区域即甚至没有必要是一个连接区域。MAN类可以被看作是相对于图象的空间的高层次抽象。我们所说的抽象这里可以是一个类(如MAN类别)或特征,感觉数据的函数,它可以是离散的(例如,输入的句子是在过去时),或连续的(例如,输入视频显示了运动物体的移动是2米/秒)。对于构建MAN-探测器,许多较低级和中间级的概念(我们这里也称之为抽象)将是有用的。低层次的抽象更直接关系到特定的知觉,而更高级别的那些就是我们所说的“更抽象的”,因为他们与实际知觉的连接比较微弱,是通过了其他中间层次的抽象。

除了想出合适的中间抽象的难度,我们希望用一种“智能”的机器来捕获的视觉和语义类别的数目(如MAN)相当大了。深层结构学习的重点是能够自动发现这样的抽象,从最低级别的特性到最高层次的概念。理想情况下,我们希望使这一发现成真的学习算法只需很少人的努力,换言之,无需手动定义所有必要的抽象或不必提供一组相关的手工标记的巨大样本。如果这些算法可以挖掘到网络上的文本和图像的巨大资源,这肯定会有助于传递许多人类的知识转换为机器可解释的形式。

1.1我们如何学习深度架构?

深度学习方法的目的是学习层次与更高水平由低级别的功能组合物形成深层次结构的特点。自动多层次的抽象学习功能允许系统学习复杂的功能映射,直接从数据的输入到输出,而不完全依赖于人类制作的功能。这对于更高层次的抽象特别重要,人们经常常常不知道怎么根据原始感受数据来明确给出指令。能够自动学习强大特征的能力将随着机器学习方法的数据量和应用范围继续增长而变得越来越重要。

架构的深度是指在功能学习中非线性运算组合的数目。而目前大多数学习算法对应于浅层结构(1,2或3层),哺乳动物脑是一个组织组织在深度架构[173]与多个级别的抽象,每一级

对应于不同的区域的,代表一个给定的输入知觉。人类往往用分层的方式,借助多层次的抽象来描述这种概念。大脑似乎也处理通过转换和表达的多个阶段的信息。这在灵长类视觉系统[173]特别清楚,按顺序处理:检测边缘,原始形状,并且向上移动到逐渐更复杂的视觉形状。

灵感来自于大脑的深度架构,神经网络研究人员努力了几十年来训练深度多层神经网络[19,191],但在2006年之前没有尝试成功[除具有特殊的结构的神经网络,称为卷积网络,讨论于

4.5节]:研究人员报告了有两个或三个层次(即一个或两个隐藏层)的阳性试验结果,但更深层次的培训网络,一直都取得的是较差的结果。突破性的事情发生在2006年:Hinton等人在多伦多大学引进深信念网络(DBNs)[73],它具有学习算法,每次贪婪地学习一层,对每个层利用无监督学习算法,受限波尔兹曼机(RBM)[51]。不久后,相关的基于自动编码器的算法[17,153]也被提出,显然利用了同样的原理:采用无监督学习,这可以在本地在每个级别进行指导代表性的中等水平的培训。其他算法的深架构提出了近期的利用既没有RBMS也不是自动编码器,并且利用同样的原理[131,202](见第4章)。

自2006年以来,深度网络已经不仅在分类任务[2,17,99,111,150,153,195]应用成功,而且在回归[160],降维[74,158],造型纹理[141],建模运动[182,183],对象分割[114],信息检索[154,159,190],机器人[60],自然语言处理[37,130,202],和协同过滤[162]。虽然自动编码器,如RBM和DBN,可以用未标记的数据进行训练,在上述的许多应用中,它们已被成功地用于初始化一些深度有监督的正向反馈特定神经网络任务。

1.2中间表示:在任务间共享特性和抽象

由于深度结构可以看作由一系列加工阶段组成,提高深度结构当前面临的问题是:每个阶段的输出(即:另一个阶段的输入)到底采用哪种数据表示?阶段之间采用哪种接口?最近深度结构研究的一个特点就是聚焦中间表示:深度结构的成功属于借鉴RBMs [ 73 ],普通自动编码器[ 17 ],稀疏自动编码器[ 150,153 ],或者降噪自动编码器[ 195 ]等学习无监督的方式表示。这些算法(详见7.2节)可以被看作是学习将一个表示(前一阶段的输出)变换为另一个表示,每次变换也许能解开潜在变化数据中的更好因素。正如在4节中我们讨论的长度,它被一次又一次观察到,一旦一个良好表示在各级中被发现,它可以用于初始化,并成功地通过监督基于梯度的优化培养深神经网络。

在大脑中发现的每一级抽象包括了大量特征的小的子集的“激活”(神经激发),在一般情况下,它们不是相互排斥的。因为这些特征不是相互排斥的,它们形成所谓的分布式表示[68,156]:该信息不被局限在一个特定的神经元,但分布在许多中。除了被分发,它似乎显示大脑使用的表示较稀疏:在给定的时间里,神经元中仅一个围绕1-4%的区域是同时激活 [5,113]。

3.2节介绍稀疏分布表示的概念,第7.1节详细介绍了机器学习的方法。部分灵感来自于大脑中的稀疏表示的观察,已被用于采用稀疏表示构建深层结构。

而稠密分布表示是一个频谱的一个极端,和稀疏表示是在该光谱的中间,纯粹本地表示是

另一个极端。代表性的地方是密切与当地泛化的概念连接。许多现有的机器学习方法是局部的输入空间:获得一个有学问的功能表现不同的数据空间的不同区域,它们在每一个地区(详见

3.1节)需要不同的可调参数。即使在可调参数的数目很大时,统计效率不一定差,良好的泛化可以加入某种形式的先验(例如,参数的较小值是首选)。当先验不是特定任务时,它往往迫使解决方案是很平滑的,如在第3.1节的末尾讨论那样。对比基于局部泛化的学习方法,模式总数,可以区分使用一个分布式表示比例可能呈指数级表示维度(即:学习特征的数量)。

在许多机器视觉系统,学习算法都被限制在这样一个处理链的特定部分。其余的设计仍然是劳动密集型,这可能限制了这种系统的规模。另一方面,我们认为的智能机包括了一个足够大的概念指令表。认识到MAN是不够的。我们需要的算法应可以解决一个非常大的任务和概念。在这种情况下,手动定义许多任务和必要的学习看起来令人气馁。此外,在这些任务之间和需要的概念之间不利用基本的共性是看起来很愚蠢的。这已是多任务学习[ 7,8,32,88,186]研究的重点。具有多层次自然结构提供了共享和重用组件:低级别的视觉特征(如边缘检测)和中等水平的视觉特征(如对象的部分),用于检测人,也可用于一大组的其他视觉任务。深度学习算法都是基于学习可共享的任务的中间表示。因此,他们可以利用无监督的数据和来自类似任务[ 148 ]的数据,以来提高大型的、具有挑战性的问题性能,经常遭受贫困的标记的数据,已经显示出[ 37 ],在国家的最先进的多种自然语言处理任务。深层结构相似的多任务的方法应用在视觉任务[ 2 ]。考虑有不同任务不同输出的一个多任务环境,他们都来自于一个高层次的功能共享池。在多任务中,事实上许多这些学习特性是共享的,并为提供统计强度共享比例。现在认为,这些学习的高级功能,可以自表示在一个普通池低级别的中间表示。再次统计强度可以通过类似的方式获得,这种策略可以用于深层结构的各个层次。

此外,学习大量的相关概念,可能提供人类出现能做的那种广泛概括的一个关键,我们不期望于独立的培训对象检测器,而每个视觉范畴都有个探测器。如果每一个高层次的范畴本身是代表通过一个特定的分布式结构的抽象特征从一个普通的池,推广到看不见的类别可以遵循自然,来自这些特征的新配置。尽管这些功能只有一些配置会出现于训练样本中,但如果他们代表不同方面的数据,新的例子可以有效地被这些特征的新配置代表。

1.3 人工智能学习中的迫切需求

总结上文所提到的各个问题,并从人工智能的更为广泛的角度来观察,我们提出了我们认为在人工智能的学习算法中至关重要的若干要求,它们中促进了科学研究的列举如下:

 学习复杂且高度灵活的函数的能力。在这种情况下,变量的数量往往远大于训练集实例的

数量。

第二篇:波尔兹曼大脑

深度学习综述

目录

1 深度学习的概念........................................................................................................ 1

1.1 卷积神经网络模型......................................................................................... 2

1.2 深度信任网络模型......................................................................................... 3

1.3堆栈自编码网络模型...................................................................................... 4

2 深度学习算法............................................................................................................ 5

2.1深度费希尔映射方法...................................................................................... 5

2.2 非线性变换方法............................................................................................. 5

2.3 稀疏编码对称机算法..................................................................................... 6

2.4 迁移学习算法................................................................................................. 6

2.5 自然语言解析算法......................................................................................... 6

2.6 学习率自适应方法......................................................................................... 6

3 深度学习的实际应用.............................................................................................. 6

3.1 语音识别......................................................................................................... 7

3.2视频分析.......................................................................................................... 7

3.3 人脸识别......................................................................................................... 7

3.4 图像识别和检索............................................................................................. 8

4 深度学习的问题及发展趋势.................................................................................... 8

5 总结............................................................................................................................ 9

参考文献...................................................................................................................... 10

深度学习综述

摘要:深度学习是机器学习研究中的一个新领域,在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。近年来,深度学习在各领域上也取得了丰硕的研究成果。本文简要论述了深度学习的概念、模型、算法以及在各领域的应用,最后说明深度学习的问题及发展趋势。

关键字:深度学习,神经网络,机器学习

Review of Deep Learning

Abstract:Deep leaning is a new field in machine learning research.It is a which simulates the human brain to analyze and study the mechanism of the human to interpret the data.In recent years,deep leaning has achieved fruitful results in various fields.This paper briefly discusses the concept,model,algorithm and application in various fields of deep learning. Finally, explains the problems and development trend of deep learning.

Keywords:Deep learning,neural network,machine learning

1 深度学习的概念

深度学习是机器学习领域一个新的研究方向,近年来在图像识别与检索、语言信息处理、语音识别等多领域中都取得较为成功的发展。深度学习应用的发展基础在于建立模型来模拟人类大脑的神经连接结构,在处理图像、声音和文本这些信号时,通过多个变换阶段分层对数据特征进行描述,进而给出数据的解释。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

深度学习的概念最早G. E. Hinton 等于2006 年提出。基于深信度网(DBN)提出非监督贪心训练逐层算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。

同机器学习方法一样,深度机器学习方法也有有监督学习和无监督学习之分,不同的学习框架下建立的学习模型不同。例如卷积神经网络就是一种深度的监督学习下的机器学习模型,而就是一种无监督学习下的机器学习模型。

典型的深度学习模型有卷积神经网络、深度置信网络和堆栈自编码网络模型等,下面对这些模型进行描述。

1.1 卷积神经网络模型

卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在于网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或是其他形式的变形具有高度不变形。

Lecun 的卷积神经网络由卷积层和子抽样层两种类型的神经网络层组成。每一层有一个拓扑图结构,即在接收域内,每个神经元与输入图像中某个位置对应的固定二维位置编码信息关联。在每层的各个位置分布着许多不同的神经元,每个神经元有一组输入权值,这些权值与前一层神经网络矩形块中的神经元关联;同一组权值和不同输入矩形块与不同位置的神经元关联。

下图是一个用于手写体字符识别的卷积神经网络,由一个输入层、四个隐层和一个输出层组成。由下图可以看出,与完全连接的多层前馈感知器网络相比,卷积神经网络通过使用接收域的局部连接,限制了网络结构。卷积神经网络的另一个特点是权值共享,图中包含大量连接权值,但是由于同一隐层的神经元共享同一权值集,大大减少了自由参数的数量。

图1—1 用于手写体字符识别的卷积神经网络

卷积神经网络本质上实现一种输入到输出的映射关系,能够学习大量输入与输出之间的映射关系,不需要任何输入和输出之间的精确数学表达式,只要用已知的模式对卷积神经网络加以训练,就可以使网络具有输入输出之间的映射能

力。卷积神经网络执行的是有监督训练,在开始训练前,用一些不同的小随机数对网络的所有权值进行初始化。

卷积神经网络中这种层间联系和空域信息的紧密关系,使其适于图像处理和理解。而且,在其自动提取图像的显著特征方面还表现出了比较优异的性能。在目前大部分的工作中,研究者将卷积神经网络应用到了多种机器学习问题中,包括人脸识别,文档分析和语言检测等。为了达到寻找视频中帧与帧之间的相干性的目的,目前卷积神经网络通过一个时间想干性去训练,但这个不是卷积神经网络特有的。

1.2 深度信任网络模型

深度信任网络可以解释为贝叶斯概率生成模型,由多层随机隐变量组成,上面的两层具有无向对称连接,下面的层得到来自上一层的自顶向下的有向连接,最底层单元的状态为可见输入数据向量。深度信任网络由若干结构单元堆栈组成,如图1—2 所示,结构单元通常为 RBM。堆栈中每个 RBM 单元的可视层神经元数量等于前一 RBM 单元的隐层神经元数量。根据深度学习机制,采用输入样例训练第一层RBM 单元,并利用其输出训练第二层RBM 模型,将RBM模型进行堆栈通过增加层来改善模型性能。在无监督预训练过程中,DBN 编码输入到顶层RBM后解码顶层的状态到最底层的单元实现输入的重构。

图 1—2 DBN的生成过程

RBM 的无向图模型如图1—3所示,作为 DBN 的结构单元,RBM 与每一层 DBN 共享参数。

图 1—3 RBM的无向图模型

RBM是一种特殊形式的波尔兹曼机,变量之间的图模型连接形式有限制,只有可见层节点与隐层节点之间有连接权值,而可见层节点与可见层节点以及隐层节点与隐层节点之间无连接。

1.3堆栈自编码网络模型

堆栈自编码网络的结构与深度信任网络类似,由若干结构单元堆栈组成,不同之处在于其结构单元为自编码模型而不是RBM。

自编码模型是一个两层的神经网络,第一层称为编码层,第二层称为解码层。如图1—4所示,训练该模型的目的是用编码器c(·) 将输入x编码成表示c(x),再用解码器g(·)从c(x) 表示中解码重构输入r(x) = g(c(x))。因此,自编码模型的输出是其输入本身,通过最小化重构误差 L( r( x) ,x) 来执行训练。当隐层是线性的,并且 L( r( x) ,x) =‖r( x), x‖2 是平方误差时,c( x) 训练网络将输入投影到数据的主分量空间中, 此时自编码模型的作用等效于 PCA;当隐层非线性时与 PCA不同,得到的表示可以堆栈成多层,自编码模型能够得到多模态输入分布。重构误差的概率分布可以解释为非归一化对数概率密度函数这种特殊形式的能量函数,意味着有低重构误差的样例对应的模型具有更高的概率。

图1—4 自编码模型结构

第三篇:波尔兹曼大脑

深度学习平台

【深度学习系列1】 深度学习在腾讯的平台化和应用实践 mary 发表于 2014.8.4 1072浏览 0讨论

引言:深度学习是近年机器学习领域的重大突破,有着广泛的应用前景。随着Google公开Google Brain计划,业界对深度学习的热情高涨。腾讯在深度学习领域持续投入,获得了实际落地的产出。我们准备了四篇文章,阐述深度学习的原理和在腾讯的实践,介绍腾讯深度学习平台Mariana,本文为第一篇。

深度学习(Deep Learning)是近年来机器学习领域的热点,在语音识别、图像识别等领域均取得了突破性进展。腾讯提供广泛的互联网服务,在2014年第一季度,即拥有3.96亿月活跃用户的微信,8.48亿月活跃用户的QQ,以及6.44亿月活跃用户的Qzone等平台,拥有海量数据和众多应用,深度学习在腾讯有广泛的潜在应用场景。【波尔兹曼大脑】

深度学习是近年来机器学习领域最令人瞩目的方向。自2006年深度学习界泰斗Geoffrey Hinton在Science杂志上发表Deep Belief Networks [1]的论文后,重新激活了神经网络的研究,开启了深度神经网络的新时代。学术界和工业界对深度学习热情高涨,并逐渐在语音识别、图像识别、自然语言处理等领域获得突破性进展。深度学习在语音识别领域获得相对20%到30%的准确率提升,突破了近十年的瓶颈。2012年图像识别领域在ImageNet图像分类竞赛中取得了85%的top5准确率 [2],相比前一年74%的准确率有里程碑式的提升,并进一步在2013年获得89%的准确率。目前Google、Facebook、Microsoft、IBM等国际巨头,以及国内百度、阿里巴巴等互联网巨头争相布局深度学习。

深度学习通过构建深层神经网络,来模拟人类大脑的工作原理。如图1

所示,深层神经网络由一个输入层,数个隐层,以及一个输出层构成。每层有若干个神经元,神经元之间有连接权重。每个神经元模拟人类的神经细胞,而结点之间的连接模拟神经细胞之间的连接。

图1:深度神经网络的结构

然而,深度学习要在腾讯落地,面临巨大的挑战。

首先,深度神经网络模型复杂,训练数据多,计算量大。一方面,DNN需要模拟人脑的计算能力,而人脑包含100多亿个神经细胞,这要求DNN中神经元多,神经元间连接数量也相当惊人。从数学的角度看,DNN中每个神经元都包含数学计算(如Sigmoid、ReLU或者Softmax函数),需要估计的参数量也极大。语音识别和图像识别应用中,神经元达数万个,参数数千万,模型复杂导致计算量大。另一方面,DNN需要大量数据才能训练出高准确率的模型。DNN参数量大,模型复杂,为了避免过拟合,需要海量训练数据。两方面因素叠加,导致训练一个模型耗时惊人。以语音识别为例,目前业界通常使用样本量达数十亿,以CPU单机需要数年才能完成一次训练,用流行的GPU卡也需要数周才能完成训练。

其次,深度神经网络需要支持大模型。以图像识别为例,已有工作证明通过增加卷积层的filter数量,加大模型深度等,可以获得更好的模型质量,但模型参数也随之增加。然而,以ImageNet 2012竞赛冠军的网络为例,其占用3.99 GB的显存,已接近主流GPU的显存容量,试图增大模型则会超过GPU显存范围。因此,如何支持更大模型是一个大的挑战。

再次,深度神经网络训练收敛难,需要反复多次实验。深度神经网络是非线性模型,其代价函数是非凸函数,容易收敛到局部最优解。同时,深度神经网络的模型结构、输入数据处理方式、权重初始化方案、参数配置、激活函数选择、权重优化方法等均可能对最终效果有较大影响。另外,深度神经网络的数学基础研究稍显不足。虽然可以通过限制性波尔兹曼机(Restricted Boltzmann Machines,RBMs),或者(DenoisingAutoencoder,DAEs)等产生式建模方法初始化网络模型,以达到减少陷入局部最优的风险,但仍然不是彻底的解

决方案,仍然需要在实际使用深度神经网络解决问题的时候,合理的利用海量数据,合理的选择优化方式。上述原因导致需要技巧、经验,基于大量实验来训练出一个效果好的模型。

因此,深度学习成为一个效果很好但门槛极高的方向,如何落地产生实际应用效果成为关注的焦点。

面对机遇和挑战,我们打造了腾讯深度学习平台Mariana。Mariana包括三个框架:深度神经网络(Deep Neural Networks,DNN)的GPU数据并行框架,深度卷积神经网络(Deep ConvolutionalNeural Networks,CNN)的GPU数据并行和模型并行框架,以及DNN CPU集群框架。Mariana通过此三个框架完成并行加速,针对多种应用场景,以解决深度学习训练极慢的问题;Mariana通过模型并行,支持大模型;Mariana提供默认算法的并行实现以减少新算法开发量,简化实验过程。Mariana面向语音识别、图像识别、广告推荐等众多应用领域。

腾讯深度学习平台Mariana以GPU服务器为主,每台服务器配置4或者6块Nvidia Tesla系列高端科学计算用GPU卡。利用每块GPU卡2000多个流处理器的强大计算能力,并实现多GPU卡并行以加速训练。

腾讯深度学习平台Mariana重点研究多GPU卡的并行化技术,完成DNN的数据并行框架,以及CNN的模型并行和数据并行框架。数据并行和模型并行是Google分布式大神Jeff Dean和深度学习大佬Andrew Ng在2012年NIPS会议上发表的DistBelief[3] 论文中针对深度学习的CPU集群框架提出的定义。数据并行指将训练数据划分为多份,每份数据有

一个模型实例进行训练,再将多个模型实例产生的梯度合并后更新模型。模型并行指将模型划分为多个分片,每个分片在一台服务器,全部分片协同对一份训练数据进行训练。我们学习并借鉴了这两种并行方式,并成功应用于单机多GPU卡的并行。

DNN的数据并行框架通过同步随机梯度下降进行训练。数据并行训练中,每个GPU卡各自训练,并各自产生一份梯度值,然后进行参数交换。图2. 展示了参数交换过程。每台GPU服务器配置6块GPU卡,其中四块通过树状的PCIe连接,并与另外两块GPU卡通过IOH连接。参数交换过程从逻辑上看,梯度收集阶段将全部梯度值累加起来,然后应用到当前模型以更新参数得到新模型,最后在模型分发阶段将新模型下发给全部GPU卡。采用数据并行后,相对于单卡训练过程,关键的问题是参数交换过程引入额外时间消耗,拖累了并行性能,使得加速比很难提高。我们通过一个精心设计的拓扑完成参数交换,提升整体性能。此外,我们采用近似的自适应学习率算法,使得支持自适应学习率所需交换的数据量降低了一个数量级。

第四篇:波尔兹曼大脑

Deep Learning深度学习总结

Deep Learning深度学习总结

一、Deep Learning的基本思想

假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>…..=>Sn => O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失(呵呵,大牛说,这是不可能的。信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。当然了,如果丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。现在回到我们的主题Deep Learning,我们需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。

【波尔兹曼大脑】

对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。 另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。

二、Deep learning与Neural Network

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。大约二三十年前,neural network曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:【波尔兹曼大脑】

1)比较容易过拟合,参数比较难tune,而且需要不少trick;

2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;

所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上是SVM和boosting算法的天下。但是,一个痴心的老先生Hinton,他坚持了下来,并最终(和其它人一起Bengio、Yann.lecun等)提成了一个实际可行的deep learning框架。

Deep learning与传统的神经网络之间有相同的地方也有很多不同。 二者的相同在于deep learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。

而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而deep learning整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度扩散)。这个问题我们接下来讨论。

三、Deep learning训练过程

3.1、传统神经网络的训练方法为什么不能用在深度神经网络

BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源。

BP算法存在的问题:

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;

3.2、deep learning训练过程

如果对所有层同时训练,时间复杂度会太高;如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合(因为深度网络的神经元和参数太多了)。

2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是:

1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。

2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。

将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结

果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。

1)wake阶段:认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。

2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。 deep learning训练过程具体如下:

1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练): 采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程):

具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;

2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):

基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。

四、Deep Learning的常用模型或者方法

4.1、AutoEncoder自动编码器

Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。

具体过程简单的说明如下:

1)给定无标签数据,用非监督学习学习特征:

在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和target(label)之间的差去改变前面各层的参数,直到收敛。但现在我们只有无标签数据,也就是右边的图。那么这个误差怎么得到呢?

如上图,我们将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示,那么我们怎么知道这个code表示的就是input呢?我们加一个decoder解码器,这时候decoder就会输出一个信息,那么如果输出的这个信息和一开始的输入信号input是很像的(理想情况下就

第五篇:波尔兹曼大脑

深度学习_笔记

1 介绍

1989 年Y.leCun首次使用一个简单的 4 层卷积神经网 LeNet-5 在Mnist数据集上获得 98.4%的识别率,获得前所未有的识别率。.

2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton 和他的学生RuslanSalakhutdinov在《科学》上发表了

一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个 主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习 得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深 度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise

pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学 习实现的。【波尔兹曼大脑】

BP 算法存在的问题:

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小; (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值 初始化会导致这种情况的发生);

(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标 签的,而大脑可以从没有标签的的数据中学习;

后向传播算法的梯度扩散&学习的局部最优和非稀疏性等问题

DL最重要的步骤:第一步的特征学习过程

K-means聚类算法

2 稀疏滤波

样本的特征应该是稀疏,特征矩阵的每一列(一个样本)f(i),只有很少的非零元素。其他的都是0 。

要区分样本,就要选择样本独有的,而不是大家都有的特征。稍微学术点的表达就是,每个特征只允许在少量的样本内被激活。 一般都要求提取到的特征是正交的

单层非监督学习网络

k-means效果竟然最好。因此在最后作者给出结论时的建议是,尽量使用whitening对数据进行预处理,每一层训练更多的特征数,采用更密集的方法对数据进行采样。

3 RBM

限制性玻尔兹曼机

上层是是随机隐含单元(像伯努利分布)可以看做是一些特征提取器[21],下层是随机的可见或可观测单元层(像伯努利分布或高斯分布)。

5 CNN:

在MNIST、CIFAR-10、863语音和android-mobile语音语料库上使用CNN来进行模式分

卷积神经网络的示意图。输入的图像通过和三个可训练的滤波器进行卷积,卷积后在 C1 层产生三个特征映射图,然后特征映射图加权值和偏置后,通过一个 sigmoid 函数得到三个 S 2层的特征映射图。这些映射图再经过滤波得到 C 3层。这个层级结构再和 S 2一样产生 S 4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,最后得到输出。

C 层为特征提取层,每个神经元的输入与前一层的局

部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与 其他特征间的位置关系也随之确定下来;S 层是特征映射层,网络的每 个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有 神经元的权值相等。

100种卷积核就有100个 Feature Map

C1层是一个卷积层(为什么是卷积?卷积运算一个重要的特

点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音),由6 个特征图 Feature Map 构成。特征图中每个神经元与输入中5*5的邻域 相连。特征图的大小为28*28,这样能防止输入的连接掉到边界之外(是 为了 BP 反馈时的计算,不致梯度损失,个人见解)。C1有156个可训 练参数(每个滤波器5*5=25个 unit 参数和一个 bias 参数,一共6个滤波 器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个连接。

S2层是一个下采样层(为什么是下采样?利用图像局部相关性

的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息), 有6个14*14的特征图。特征图中的每个单元与 C1中相对应特征图的2*2 邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再 加上一个可训练偏置。结果通过 sigmoid 函数计算。可训练系数和偏置 控制着 sigmoid 函数的非线性程度。如果系数比较小,那么运算近似于 线性运算,亚采样相当于模糊图像。如果系数比较大,根据偏置的大小 亚采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。每 个单元的2*2感受野并不重叠,因此 S2中每个特征图的大小是 C1中特

C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层 S2,

然后得到的特征 map 就只有10x10个神经元,但是它有16种不同的卷 积核,所以就存在16个特征 map 了。这里需要注意的一点是:C3中的 每个特征 map 是连接到 S2中的所有6个或者几个特征 map 的,表示本

S4层是一个下采样层,由16个5*5大小的特征图构成。特征图

中的每个单元与 C3中相应特征图的2*2邻域相连接,跟 C1和 S2之间的 连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置) 和2000个连接。

C5层是一个卷积层,有120个特征图。每个单元与 S4层的全部

16个单元的5*5邻域相连。由于 S4层特征图的大小也为5*5(同滤波器 一样),故 C5特征图的大小为1*1:这构成了 S4和 C5之间的全连接。

最后,输出层由欧式径向基函数(Euclidean Radial Basis

Function)单元组成,每类一个单元,每个有84个输入。换句话说,每 个输出 RBF 单元计算输入向量和参数向量之间的欧式距离。输入离参 数向量越远,RBF 输出的越大。一个 RBF 输出可以被理解为衡量输入 模式和与 RBF 相关联类的一个模型的匹配程度的惩罚项。用概率术语 来说,RBF 输出可以被理解为 F6层配置空间的高斯分布的负

log-likelihood。给定一个输入模式,损失函数应能使得 F6的配置与 RBF 参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取 并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1。 虽然这些参数可以以-1和1等概率的方式任选,或者构成一个纠错码, 但是被设计成一个相应字符类的7*12大小(即84)的格式化图片。这种 表示对识别单独的数字不是很有用,但是对识别可打印 ASCII 集中的字 符串很有用。

步骤

:CNN中相邻层之间的神经单元并不是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而不是像BP那样与所有的神经单元相连接。

卷积之后的每一个加权重之后再加偏置,。然后sigmoid,

卷积

1*len卷积4*len

池化

人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

反向传输调整权重

节点数

6

7 Softmax回归

8 必需基因预测的深度学习

12个特征MAP,每一个MAP:一个长串向量192*50.

4*196--(37)--4*160--(0.25)--4*40--(25)--4*16--(0.25)--4*4

9 文献

1 中文文献:

1 基于深度学习的图像检索研究

此文献没有采取取中间为判决值。(硕士)

本文来源:http://www.gbppp.com/jd/508108/

推荐访问:玻尔兹曼大脑的放逐 玻尔兹曼常数

热门文章