深度神经网络是机器学习文献中的一类模型,受到生物神经网络的启发。一般来说,深度神经网络可分为以下几类:
深度神经网络具有以下特点和应用:
在其发展过程中,如感知机的出现推动了机器学习的问世,展示了其对简单形状分类的学习能力。神经网络本质上是多层感知机,早期只有输出层,而典型应用如分辨手写数字。
同时,在深度神经网络的研究中,还涉及到如深度玻尔兹曼机、受限玻尔兹曼机、深度信念网络等相关内容。但使用反向传播等方法存在需要有标签的训练数据、学习时间不理想、可能陷入局部最小等问题。
神经网络是机器学习文献中的一类模型。例如,如果你参加了Coursera的机器学习课程,很可能会学到神经网络。神经网络是一套特定的算法,它彻底改变了机器学习领域。他们受到生物神经网络的启发,目前深度神经网络已经被证实效果很好。神经网络本身是一般的函数逼近,这就是为什么它们几乎可以应用于任何从输入到输出空间复杂映射的机器学习问题。以下是说服你学习神经计算的三个理由:了解大脑是如何工作的:它非常大且很复杂,一旦破坏就会脑死亡,所以我们需要使用计算机模拟。了解受神经元及其适应性连接启发的并行计算风格:这种风格与序列计算截然不同。使用受大脑启发的新颖学习算法来解决实际问题:即使不是大脑的实际工作方式,学习算法也非常有用。在完成吴恩达的Coursera机器学习课程后,我开始对神经网络和深度学习产生兴趣,因此寻找最好的网上资源来了解这个主题,并找到了Geoffrey Hinton的机器学习神经网络课程。如果你正在做深度学习的工程或想要踏入深度学习/机器学习的领域,你应该参加这个课程。Geoffrey Hinton毫无疑问是深度学习领域的教父,在课程中给出了非凡的见解。在这篇博客文章中,我想分享我认为任何机器学习研究人员都应该熟悉的八个神经网络架构,以促进他们的工作。一般来说,这些架构可分为三类:1.前馈神经网络这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为「深度」神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。2.循环网络循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。
在普通玻尔兹曼机中,单元的随机更新需要连续。有一个特殊的体系结构允许更有效的交替并行更新(层内没有连接,没有跳层连接)。这个小批量程序使玻尔兹曼机的更新更加并行。这就是所说的深度玻尔兹曼机(DBM),一个缺失很多连接的普通玻尔兹曼机。2014年,Salakhutdinov和Hinton为他们的模型提出了一个升级版,称之为受限玻尔兹曼机(RBM)。他们通过限制连通性使推理和学习变得更容易(隐藏单元只有一层,隐藏单元之间没有连接)。在RBM中,当可见单元被钳位时只需要一步就能达到热平衡。另一个有效的小批量RBM学习程序是这样的:对于正相位,首先将可见单元的数据矢量钳位。然后计算所有可见和隐藏单元对的<ViHj>的确切值。对于每个连接的单元对,对小批量中的所有数据<ViHj>求平均。对于负相位,也保留一组「幻想粒子」(就是一对(Vi,Hj)形成的系统?)。然后交替并行更新几次每个幻想粒子中的所有单元。对于每一个连接的单位对,所有幻想粒子ViHj求平均。7.深度信念网络反向传播被认为是人工神经网络中的标准方法,用于在处理一批数据之后计算每个神经元的误差贡献。但是,使用反向传播存在一些重要的问题。首先,它需要有标签的训练数据;而几乎所有的数据都没有标签。其次,学习时间不够理想,这意味着隐藏层数多的网络很慢。第三,它可能会陷入局部最小的局面,所以对于深度网络来说,它们还差得很远。
这个过程很简单,产生了一个简单的结果:一个输入线性函数(加权和),正如线性回归被非线性激活函数「压扁」了一样(对带权重求和设定阈值的行为)。当函数的输出值是一个有限集时(例如逻辑函数,它只有两个输出值True/1和False/0),给带权重的和设置阈值是没问题的,所以问题实际上不在于要对任何输入数据集生成一个数值上连续的输出(即回归类问题),而在于对输入数据做好合适的标签(分类问题)。康奈尔航天实验室的Mark I感知机,第一台感知机的硬件罗森布拉特用定制硬件的方法实现了感知机的想法(在花哨的编程语言被广泛使用之前),展示出它可以用来学习对20×20像素输入中的简单形状进行正确分类。自此,机器学习问世了——建造了一台可以从已知的输入输出对中得出近似函数的计算机。在这个例子中,它只学习了一个小玩具般的函数,但是从中不难想象出有用的应用,例如将人类乱糟糟的手写字转换为机器可读的文本。很重要的是,这种方法还可以用在多个输出值的函数中,或具有多个类别的分类任务。这对一台感知机来说是不可能完成的,因为它只有一个输出,但是,多输出函数能用位于同一层的多个感知机来学习,每个感知机接收到同一个输入,但分别负责函数的不同输出。实际上,神经网络(准确的说应该是「人工神经网络(ANN,Artificial Neural Networks)」)就是多层感知机(今天感知机通常被称为神经元)而已,只不过在这个阶段,只有一层——输出层。所以,神经网络的典型应用例子就是分辨手写数字。输入是图像的像素,有10个输出神经元,每一个分别对应着10个可能的数字。在这个案例中,10个神经元中,只有1个输出1,权值最高的和被看做是正确的输出,而其他的则输出0。