在这篇文章中,我想与大家分享8个神经网络体系结构,我相信任何一个机器学习的研究人员都应该熟悉这一过程来促进他们的工作。
为什么我们需要机器学习?
机器学习对于那些对人类来说太复杂而不能直接编码的任务是必需的。有些任务非常复杂,因此人类不可能明确地计算出所有细微差别并对其进行编码,这是不切实际的。相反,我们向机器学习算法提供大量数据,让算法通过探索数据并搜索一个能够实现程序员设定的模型来解决这个问题。
我们来看看这两个例子:
- 编写解决问题的程序非常困难,例如在一个混乱的场景中,新的光照条件下,从一个新颖的视角来识别三维物体。我们不知道要写什么程序,因为我们不知道它是如何在我们的大脑中完成的。即使我们知道如何去做,这个程序可能会非常复杂。
- 很难编写一个程序来计算信用卡交易欺诈的可能性。可能没有任何既简单又可靠的规则。我们需要结合大量的弱规则。欺诈是一个移动的目标,而程序需要不断变化。
然后是机器学习方法:我们不是为每个特定任务手动编写程序,而是收集大量的例子来指定给定输入的正确输出。然后,机器学习算法就会使用这些例子,并生成一个执行该任务的程序。学习算法产生的程序可能与典型的手写程序看起来非常不同。它可能包含数百万的数字。如果我们做得对,该计划适用于新案例以及我们训练的案例。 如果数据发生变化,程序也可以通过对新数据进行训练来改变。你应该注意到,大量的计算现在比付钱给某人编写一个特定任务的程序要便宜。
鉴于此,机器学习最能解决的一些任务包括:
- 识别模式:真实场景中的物体,人脸识别或面部表情,口语单
- 识别异常:不寻常的信用卡交易序列,核电站传感器读数异常模式
- 预测:未来股票价格或货币汇率,将会感兴趣的电影
什么是神经网络?
神经网络是通用机器学习文献中的一类模型。举个例子,如果你参加一个关于机器学习的Coursera课程,神经网络很可能会被覆盖。神经网络是一组特定的算法,对机器学习领域发生了革命性的变化。它们受到了生物神经网络的启发,目前所谓的深层神经网络已经被证明非常有效。神经网络本身就是一般的函数逼近,这就是为什么它们几乎可以应用于几乎任何机器学习问题,其中问题的关键是学习从输入到输出空间的复杂映射。
以下是说服你学习神经计算的三个理由:
- 要理解大脑的实际工作原理:它非常庞大而且非常复杂,并且当你戳到它时会死掉。所以我们需要使用计算机模拟。
- 了解受神经元及其适应性连接启发的并行计算风格:这是一种与顺序计算非常不同的风格。
- 用新的学习算法来解决实际问题:学习算法是非常有用的,即使它们不是大脑实际工作的方式。
在完成着名的Andrew Ng的机器学习Coursera课程后,我开始对神经网络和深度学习产生兴趣。因此,我开始寻找最好的在线资源来了解这些主题,并找到了Geoffrey Hinton的机器学习神经网络课程。如果你是一个深度学习实践者或想要进入深度学习/机器学习世界的人,你应该真的参加这门课程。Geoffrey Hinton毫无疑问是深度学习世界的教父。而且他在这门课程中提供了一些特别的东西。在这篇博客文章中,我想分享我认为机器学习研究人员应该熟悉的课程中的8个神经网络架构,以推进他们的工作。
通常,这些体系结构可以分为3个特定的类别:
1.前馈神经网络
这些是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称它们为“深层” 神经网络。它们计算出一系列改变案例之间相似性的转变。每层神经元的活动都是下层中活动的非线性函数。
2.递归神经网络
它们在它们的连接图中有直接的循环。这意味着你有时可以回到你开始的地方。它们可能有复杂的动态,这可能会使它们很难训练。 它们更具生物现实性。
目前在寻找有效的训练回归网方面有很多的兴趣。递归神经网络是建模时序数据的一种非常自然的方法。它们相当于每个时间片具有一个隐藏层的非常深的网络; 除了它们在每个时间片上使用相同的权重并且它们在每个时间片都得到输入。它们有能力长时间记住隐藏状态的信息,但很难训练它们使用这种潜力。
3.对称连接网络
这些就像递归网络,但是单元之间的连接是对称的(它们在两个方向上具有相同的权重)。对称网络比递归网络更容易分析。 因为它们服从能量函数,所以它们在做的事情上也受到更多的限制。没有隐藏单元的对称连接的网络被称为“霍普菲尔德网络”。具有隐藏单元的对称连接网络称为“玻尔兹曼机器”。
1.感知器
考虑到第一代神经网络,感知器只是单个神经元的计算模型。它们是由Frank Rosenblatt在20世纪60年代早期推广的。它们似乎有一个非常强大的学习算法,并且为它们可以学习的东西做了很多重大的宣传。1969年,Minsky和Papers发表了一本名为《感知器》的书,分析了它们可以做什么并展示了它们的局限性。许多人认为这些限制适用于所有的神经网络模型。然而,感知器学习过程在今天仍然被广泛地应用于包含数百万个特性的巨大特征向量的任务。
在统计模式识别的标准范例中,我们首先将原始输入向量转换为特征激活向量。 然后,我们使用基于常识的手写程序来定义特征。 接下来,我们将学习如何对每个特征激活进行加权以获得单个标量数量。如果这个数量高于某个阈值,我们就决定输入向量是目标类的一个正面例子。
标准的感知器体系结构遵循前馈模型,这意味着输入被发送到神经元中,被处理并产生输出。在下面的图中,这意味着网络是自下而上的:输入来自底部,输出从顶部输出。
然而,感知器确实有局限性:如果你遵循手动选择特性并使用足够的特性,那么你几乎可以做任何事情。对于二元输入向量,我们可以为每个指数多的二进制向量分别设置一个特征单元,因此我们可以对二进制输入向量进行任何可能的区分。但是,一旦确定了手工编码的特性,就会对感知器的学习有很大的限制。
这个结果对感知器来说是毁灭性的,因为整个模式识别的重点是识别模式,尽管像翻译这样的转换。Minsky和Papert的“群体不变定理”说,如果转化形成一个群体,学习感知器的部分不能学会这样做。为了处理这种转换,感知器需要使用多个特征单元来识别信息性子模式的转换。所以模式识别的棘手部分必须通过手动编码特征检测器来解决,而不是学习过程。
没有隐藏单元的网络在它们可以学习建模的输入输出映射方面非常有限。更多层次的线性单元不起作用。它仍然是线性的。固定输出非线性是不够的。 因此,我们需要多层自适应非线性隐藏单元。 但我们如何训练这样的网?我们需要一种有效的方法来适应所有的权重,而不仅仅是最后一层。这是很难的。学习进入隐藏单位的权重等同于学习功能。这很难,因为没有人直接告诉我们隐藏单位应该做什么。
2.卷积神经网络
机器学习研究一直以来都集中在对象检测问题上。有很多东西让我们很难识别物体:
分割:真实场景与其他对象混杂在一起。很难分辨哪些部分是同一个对象的一部分。对象的某些部分可以隐藏在其他对象后面。
照明:像素的强度取决于物体的照明程度。
变形:物体以各种非仿射方式变形。一个手写的也可以有一个大的圈,或者只是一个尖头。
可用性:对象类通常由它们的使用方式来定义。例如,椅子是专为坐着而设计的,因此它们具有各种各样的外形。
观点:观点的改变导致标准学习方法无法处理的图像变化。输入维度(即像素)之间的信息跳跃。
设想一个医学数据库,其中患者的年龄有时希望达到通常编码体重的输入维度! 为了应用机器学习,我们首先要消除这种维度跳跃。
复制特征方法是目前神经网络解决目标检测问题的主要方法。它使用不同位置的同一功能检测器的许多不同副本。它也可以在规模和方向上进行复制,这很棘手,也很昂贵。
复制大大减少了要学习的可用参数的数量。它使用了几种不同的特性类型,每个特征类型都有自己的复制检测器映射。它还允许每个图像块以多种方式表示。
那么复制特征探测器是如何实现的?
等效活动:复制的特性不会使神经活动不变量转换。这些活动是等变的。
不变知识:如果在训练过程中某个特性在某些位置有用,那么在测试期间,该特性的检测器将在所有位置都可用。
1998年,Yann LeCun和他的合作者开发出了一种名为LeNet的手写数字识别器。它在具有许多隐藏层的前馈网中使用反向传播,在每层中复制单元的许多映射,汇集附近复制单元的输出,即使它们重叠也能够一次处理几个字符的宽网,以及聪明的训练一个完整的系统,而不仅仅是一个识别器。后来,它被命名为卷积神经网络。 有趣的事实:这个网络用于读取北美地区约10%的支票。
卷积神经网络可以用于所有与物体识别有关的工作,从手写数字到3D对象。然而,从网上下载彩色照片中的真实物体要比识别手写数字复杂得多。有100倍的类(1000比10),100倍的像素(256 x 256色vs 28 x 28灰色),二维图像的三维场景,杂乱的场景需要分割,以及每个对象中有多个对象图片。相同类型的卷积神经网络会起作用吗?
之后,ILSVRC-2012竞赛在ImageNet上进行,该数据集包含大约120万张高分辨率训练图像。测试图像将显示没有初始注释(无分割或标签),算法将不得不产生指定图像中存在什么对象的标签。一些最优秀的计算机视觉方法是通过来自牛津,INRIA, XRCEa的计算机视觉组来测试的。通常,计算机视觉系统使用复杂的多级系统和早期通常是手工调整通过优化几个参数。
大赛的获胜者Alex Krizhevsky(NIPS 2012)开发了一种非常复杂的神经网络,由Yann LeCun首创。它的体系结构包括7个隐藏层,而不包括一些混合池。早期的层是卷积的,而最后两层是全局连接的。激活函数在每个隐藏层中被纠正为线性单位。这些训练比物流单位训练速度更快,表现力更强。除此之外,当附近的单位有更强的活动时,它还使用竞争性标准化来压制隐藏的活动。这有助于强度的变化。
有几个技术诀窍可以显著提高神经网络的泛化程度:
从256 x 256图像中随机抽取224 x 224个补丁,以获得更多的数据,并使用图像的左右反射。在测试时,结合10个不同补丁的意见:4个224 x 224角补丁加上中央224 x 224补丁加上这5个补丁的反射。
使用dropout在全局连接的层中调整权重(包含大多数参数)。中途退出意味着每一个训练实例中,有一半的隐藏单元被随机移除。这阻止了隐藏单位过多地依赖其他隐藏单位。
就硬件要求而言,Alex在2个Nvidia GTX 580 GPU(超过1000个快速小内核)上使用了非常高效的卷积网络实现。GPU非常适合矩阵矩阵乘法,并且还具有非常高的内存带宽。这使他可以在一周内训练网络,并使测试时快速结合10个补丁的结果。如果我们能够以足够快的速度交流状态,我们可以在许多核心上扩展网络。随着核心越来越便宜,数据集越来越大,大型神经网络将比老式计算机视觉系统提高得更快。
下文我们继续介绍另外6种神经网络架构,希望可以给大家带来帮助。