中国建设银行春招网站,汕头市公共资源交易中心,初中作文优秀作文,做的最好的手机网站深度网络概览 Contents [hide]1 概述2 深度网络的优势3 训练深度网络的困难 3.1 数据获取问题3.2 局部极值问题3.3 梯度弥散问题 4 逐层贪婪训练方法 4.1 数据获取4.2 更好的局部极值 5 中英文对照6 中文译者 概述 在之前的章节中#xff0c;你已经构建了一个包括输入层、隐… 深度网络概览 Contents [hide] 1 概述2 深度网络的优势3 训练深度网络的困难 3.1 数据获取问题3.2 局部极值问题3.3 梯度弥散问题 4 逐层贪婪训练方法 4.1 数据获取4.2 更好的局部极值 5 中英文对照6 中文译者 概述 在之前的章节中你已经构建了一个包括输入层、隐藏层以及输出层的三层神经网络。虽然该网络对于MNIST手写数字数据库非常有效但是它还是一个非常“浅”的网络。这里的“浅”指的是特征隐藏层的激活值 只使用一层计算单元隐藏层来得到的。 在本节中我们开始讨论深度神经网络即含有多个隐藏层的神经网络。通过引入深度网络我们可以计算更多复杂的输入特征。因为每一个隐藏层可以对上一层的输出进行非线性变换因此深度神经网络拥有比“浅层”网络更加优异的表达能力例如可以学习到更加复杂的函数关系。 值得注意的是当训练深度网络的时候每一层隐层应该使用非线性的激活函数 。这是因为多层的线性函数组合在一起本质上也只有线性函数的表达能力例如将多个线性方程组合在一起仅仅产生另一个线性方程。因此在激活函数是线性的情况下相比于单隐藏层神经网络包含多隐藏层的深度网络并没有增加表达能力。 深度网络的优势 为什么我们要使用深度网络呢使用深度网络最主要的优势在于它能以更加紧凑简洁的方式来表达比浅层网络大得多的函数集合。正式点说我们可以找到一些函数这些函数可以用 层网络简洁地表达出来这里的简洁是指隐层单元的数目只需与输入单元数目呈多项式关系。但是对于一个只有 层的网络而言除非它使用与输入单元数目呈指数关系的隐层单元数目否则不能简洁表达这些函数。 举一个简单的例子比如我们打算构建一个布尔网络来计算 个输入比特的奇偶校验码或者进行异或运算。假设网络中的每一个节点都可以进行逻辑“或”运算或者“与非”运算亦或者逻辑“与”运算。如果我们拥有一个仅仅由一个输入层、一个隐层以及一个输出层构成的网络那么该奇偶校验函数所需要的节点数目与输入层的规模 呈指数关系。但是如果我们构建一个更深点的网络那么这个网络的规模就可做到仅仅是 的多项式函数。 当处理对象是图像时我们能够使用深度网络学习到“部分-整体”的分解关系。例如第一层可以学习如何将图像中的像素组合在一起来检测边缘正如我们在前面的练习中做的那样。第二层可以将边缘组合起来检测更长的轮廓或者简单的“目标的部件”。在更深的层次上可以将这些轮廓进一步组合起来以检测更为复杂的特征。 最后要提的一点是大脑皮层同样是分多层进行计算的。例如视觉图像在人脑中是分多个阶段进行处理的首先是进入大脑皮层的“V1”区然后紧跟着进入大脑皮层“V2”区以此类推。 训练深度网络的困难 虽然几十年前人们就发现了深度网络在理论上的简洁性和较强的表达能力但是直到最近研究者们也没有在训练深度网络方面取得多少进步。 问题原因在于研究者们主要使用的学习算法是首先随机初始化深度网络的权重然后使用有监督的目标函数在有标签的训练集 上进行训练。例如通过使用梯度下降法来降低训练误差。然而这种方法通常不是十分奏效。这其中有如下几方面原因 数据获取问题 使用上面提到的方法我们需要依赖于有标签的数据才能进行训练。然而有标签的数据通常是稀缺的因此对于许多问题我们很难获得足够多的样本来拟合一个复杂模型的参数。例如考虑到深度网络具有强大的表达能力在不充足的数据上进行训练将会导致过拟合。 局部极值问题 使用监督学习方法来对浅层网络只有一个隐藏层进行训练通常能够使参数收敛到合理的范围内。但是当用这种方法来训练深度网络的时候并不能取得很好的效果。特别的使用监督学习方法训练神经网络时通常会涉及到求解一个高度非凸的优化问题例如最小化训练误差 其中参数 是要优化的参数。对深度网络而言这种非凸优化问题的搜索区域中充斥着大量“坏”的局部极值因而使用梯度下降法或者像共轭梯度下降法L-BFGS等方法效果并不好。 梯度弥散问题 梯度下降法以及相关的L-BFGS算法等在使用随机初始化权重的深度网络上效果不好的技术原因是梯度会变得非常小。具体而言当使用反向传播方法计算导数的时候随着网络的深度的增加反向传播的梯度从输出层到网络的最初几层的幅度值会急剧地减小。结果就造成了整体的损失函数相对于最初几层的权重的导数非常小。这样当使用梯度下降法的时候最初几层的权重变化非常缓慢以至于它们不能够从样本中进行有效的学习。这种问题通常被称为“梯度的弥散”. 与梯度弥散问题紧密相关的问题是当神经网络中的最后几层含有足够数量神经元的时候可能单独这几层就足以对有标签数据进行建模而不用最初几层的帮助。因此对所有层都使用随机初始化的方法训练得到的整个网络的性能将会与训练得到的浅层网络仅由深度网络的最后几层组成的浅层网络的性能相似。 逐层贪婪训练方法 那么我们应该如何训练深度网络呢逐层贪婪训练方法是取得一定成功的一种方法。我们会在后面的章节中详细阐述这种方法的细节。简单来说逐层贪婪算法的主要思路是每次只训练网络中的一层即我们首先训练一个只含一个隐藏层的网络仅当这层网络训练结束之后才开始训练一个有两个隐藏层的网络以此类推。在每一步中我们把已经训练好的前 层固定然后增加第 层也就是将我们已经训练好的前 的输出作为输入。每一层的训练可以是有监督的例如将每一步的分类误差作为目标函数但更通常使用无监督方法例如自动编码器我们会在后边的章节中给出细节。这些各层单独训练所得到的权重被用来初始化最终或者说全部的深度网络的权重然后对整个网络进行“微调”即把所有层放在一起来优化有标签训练集上的训练误差. 逐层贪婪的训练方法取得成功要归功于以下几方面 数据获取 虽然获取有标签数据的代价是昂贵的但获取大量的无标签数据是容易的。自学习方法self-taught learning的潜力在于它能通过使用大量的无标签数据来学习到更好的模型。具体而言该方法使用无标签数据来学习得到所有层不包括用于预测标签的最终分类层 的最佳初始权重。相比纯监督学习方法这种自学习方法能够利用多得多的数据并且能够学习和发现数据中存在的模式。因此该方法通常能够提高分类器的性能。 更好的局部极值 当用无标签数据训练完网络后相比于随机初始化而言各层初始权重会位于参数空间中较好的位置上。然后我们可以从这些位置出发进一步微调权重。从经验上来说以这些位置为起点开始梯度下降更有可能收敛到比较好的局部极值点这是因为无标签数据已经提供了大量输入数据中包含的模式的先验信息。 在下一节中我们将会具体阐述如何进行逐层贪婪训练。 中英文对照 深度网络 Deep Networks 深度神经网络 deep neural networks 非线性变换 non-linear transformation 激活函数 activation function 简洁地表达 represent compactly “部分-整体”的分解 part-whole decompositions 目标的部件 parts of objects 高度非凸的优化问题 highly non-convex optimization problem 共轭梯度 conjugate gradient 梯度的弥散 diffusion of gradients 逐层贪婪训练方法 Greedy layer-wise training 自动编码器 autoencoder 微调 fine-tuned 自学习方法 self-taught learning