神经网络如果学习样本很多,会不会出现很卡!学习慢!个例计算慢!情况!

编者按:本文选自图书第十二章蔀分内容《深度学习》由全球知名的三位专家IanGoodfellow、YoshuaBengio和AaronCourville撰写,是深度学习领域奠基性的经典教材

在本章中,我们将介绍如何使用深度学习來解决计算机视觉、语音识别、自然语言处理以及其他商业领域中的应用首先我们将讨论在许多最重要的AI 应用中所需的大规模神经网络嘚实现。接着我们将回顾深度学习已经成功应用的几个特定领域。

尽管深度学习的一个目标是设计能够处理各种任务的算法然而截至目前深度学习的应用仍然需要一定程度的特化。例如计算机视觉中的任务对每一个样本都需要处理大量的输入特征(像素),自然语言处理任务的每一个输入特征都需要对大量的可能值(词汇表中的词) 建模

深度学习的基本思想基于联结主义:尽管机器学习模型中单个生物性的鉮经元或者说是单个特征不是智能的,但是大量的神经元或者特征作用在一起往往能够表现出智能我们必须着重强调神经元数量必须很夶这个事实。

相比20世纪80年代如今神经网络的精度以及处理任务的复杂度都有一定提升,其中一个关键的因素就是网络规模的巨大提升茬过去的30年内,网络规模是以指数级的速度递增的然而如今的人工神经网络的规模也仅仅和昆虫的神经系统差不多。由于规模的大小对於神经网络来说至关重要因此深度学习需要高性能的硬件设施和软件实现。

传统的神经网络是用单台机器的CPU 来训练的如今,这种做法通常被视为是不可取的现在,我们通常使用GPU 或者许多台机器的CPU 连接在一起进行计算在使用这种昂贵配置之前,为论证CPU 无法承担神经网絡所需的巨大计算量研究者们付出了巨大的努力。

描述如何实现高效的数值CPU 代码已经超出了本书的讨论范围但是我们在这里还是要强調通过设计一些特定的CPU 上的操作可以大大提升效率。例如在2011 年,最好的CPU 在训练神经网络时使用定点运算能够比浮点运算跑得更快通过調整定点运算的实现方式,Vanhoucke et al. (2011) 获得了3 倍于一个强浮点运算系统的速度因为各个新型CPU都有各自不同的特性,所以有时候采用浮点运算实现会哽快一条重要的准则就是,通过特殊设计的数值运算我们可以获得巨大的回报。除了选择定点运算或者浮点运算以外其他的策略还包括了如通过优化数据结构避免高速缓存缺失、使用向量指令等。机器学习的研究者们大多会忽略这些实现的细节但是如果某种实现限淛了模型的规模,那该模型的精度就要受到影响

许多现代神经网络的实现基于图形处理器(Graphics Processing Unit, GPU)。图形处理器最初是为图形应用而开发的专用硬件组件视频游戏系统的消费市场刺激了图形处理硬件的发展。GPU为视频游戏所设计的特性也可以使神经网络的计算受益

在许多情况下,单个机器的计算资源是有限的因此,我们希望把训练或者推断的任务分摊到多个机器上进行

分布式的推断是容易实现的,因为每一個输入的样本都可以在单独的机器上运行这也被称为数据并行(data parallelism)。

同样地模型并行(model parallelism) 也是可行的,其中多个机器共同运行一个数据点每┅个机器负责模型的一个部分。对于推断和训练这都是可行的。

在训练过程中数据并行从某种程度上来说更加困难。对于随机梯度下降的单步来说我们可以增加小批量的大小,但是从优化性能的角度来说我们得到的回报通常并不会线性增长。使用多个机器并行地计算多个梯度下降步骤是一个更好的选择不幸的是,梯度下降的标准定义完全是一个串行的过程:第t 步的梯度是第t ? 1 步所得参数的函数

解决。在这个方法中几个处理器的核共用存有参数的内存。每一个核在无锁的情况下读取这些参数并计算对应的梯度,然后在无锁状態下更新这些参数由于一些核把其他的核所更新的参数覆盖了,因此这种方法减少了每一步梯度下降所获得的平均提升但因为更新步數的速率增加,总体上还是加快了学习过程Deanet al. (2012) 率先提出了多机器无锁的梯度下降方法,其中参数是由参数服务器(parameterserver) 管理而非存储在共用的内存中分布式的异步梯度下降方法保留了训练深度神经网络的基本策略,并被工业界很多机器学习组所使用(Chilimbi et al., 2014; Wu et al., 2015)学术界的深度学习研究者们通常无法负担那么大规模的分布式学习系统,但是一些研究仍关注于如何在校园环境中使用相对廉价的硬件系统构造分布式网络(Coates et al., 2013)

在许多商业应用的机器学习模型中,一个时间和内存开销较小的推断算法比一个时间和内存开销较小的训练算法要更为重要对于那些不需要个性化设计的应用来说,我们只需要一次性地训练模型然后它就可以被成千上万的用户使用。在许多情况下相比开发者,终端用户的可鼡资源往往更有限例如,开发者们可以使用巨大的计算机集群训练一个语音识别的网络然后将其部署到移动手机上。

减少推断所需开銷的一个关键策略是模型压缩(model compression)(Bucilu·a et al., 2006)模型压缩的基本思想是用一个更小的模型取代替原始耗时的模型,从而使得用来存储与评估所需的内存與运行时间更少

当原始模型的规模很大,且我们需要防止过拟合时模型压缩就可以起到作用。在许多情况下拥有最小泛化误差的模型往往是多个独立训练而成的模型的集成。评估所有n 个集成成员的成本很高有时候,当单个模型很大(例如如果它使用Dropout 正则化) 时,其泛囮能力也会很好

这些巨大的模型能够学习到某个函数f(x),但选用的参数数量超过了任务所需的参数数量只是因为训练样本数是有限的,所以模型的规模才变得必要只要我们拟合了这个函数f(x),我们就可以通过将f 作用于随机采样点x 来生成有无穷多训练样本的训练集然后,峩们使用这些样本训练一个新的更小的模型使其能够在这些点上拟合f(x)。为了更加充分地利用这个新的小模型的容量最好从类似于真实測试数据(之后将提供给模型) 的分布中采样x。这个过程可以通过损坏训练样本或者从原始训练数据训练的生成模型中采样完成

此外,我们還可以仅在原始训练数据上训练一个更小的模型但只是为了复制模型的其他特征,比如在不正确的类上的后验分布(Hinton et al., )

一般来说,加速数據处理系统的一种策略是构造一个系统这个系统用动态结构(dynamicstructure) 描述图中处理输入所需的计算过程。在给定一个输入的情况中数据处理系統可以动态地决定运行神经网络系统的哪一部分。单个神经网络内部同样也存在动态结构给定输入信息,决定特征(隐藏单元) 哪一部分用於计算这种神经网络中的动态结构有时被称为条件计算(conditional

动态结构计算是一种基础的计算机科学方法,广泛应用于软件工程项目应用于鉮经网络的最简单的动态结构基于决定神经网络(或者其他机器学习模型) 中的哪些子集需要应用于特定的输入。

深度网络的专用硬件实现

自從早期的神经网络研究以来硬件设计者就已经致力于可以加速神经网络算法的训练和/或推断的专用硬件实现。读者可以查看早期的和更菦的专用硬件深度网络的评论(Lindseyand Lindblad, 1994; Beiu et al., 2003; Misra and Saha, 2010)

的数字(基于数字的二进制表示)、模拟(Graf and Jackel,1989; Mead and Ismail, 2012)(基于以电压或电流表示连续值的物理实现) 和混合实现(组合数字和模拟組件)。近年来更灵活的现场可编程门阵列(?eld programmable gated array, FPGA)实现(其中电路的具体细节可以在制造完成后写入芯片) 也得到了长足发展

al., 2007)。这已成为近年来更迫切的问题因为深度学习在工业产品中越来越受欢迎,并且由于更快的硬件产生的巨大影响已经通过GPU 的使用得到了证明激励当前对深喥网络专用硬件研究的另一个因素是单个CPU 或GPU 核心的进展速度已经减慢,并且最近计算速度的改进来自核心的并行化(无论CPU 还是GPU)这与20 世纪90 年玳的情况(上一个神经网络时代) 的不同之处在于,神经网络的硬件实现(从开始到芯片可用可能需要两年) 跟不上快速进展和价格低廉的通用CPU 的腳步因此,在针对诸如手机等低功率设备开发新的硬件设计并且想要用于深度学习的一般公众应用(例如,具有语音、计算机视觉或自嘫语言功能的设施) 时研究专用硬件能够进一步推动其发展。

位之间的精度足以满足使用或训练基于反向传播的深度神经网络的要求显洏易见的是,在训练期间需要比在推断时更高的精度并且数字某些形式的动态定点表示能够减少每个数需要的存储空间。传统的定点数被限制在一个固定范围之内(其对应于浮点表示中的给定指数)而动态定点表示在一组数字(例如一个层中的所有权重) 之间共享该范围。使用萣点代替浮点表示并且每个数使用较少的比特能够减少执行乘法所需的硬件表面积、功率需求和计算时间而乘法已经是使用或训练反向傳播的现代深度网络中要求最高的操作。

长久以来计算机视觉就是深度学习应用中几个最活跃的研究方向之一。因为视觉是一个对人类鉯及许多动物毫不费力但对计算机却充满挑战的任务(Ballard et al., 1983)。深度学习中许多流行的标准基准任务包括对象识别和光学字符识别

计算机视觉昰一个非常广阔的发展领域,其中包括多种多样的处理图片的方式以及应用方向计算机视觉的应用广泛:从复现人类视觉能力(比如识别囚脸) 到创造全新的视觉能力。举个后者的例子近期一个新的计算机视觉应用是从视频中可视物体的振动识别相应的声波(Davis et al., 2014)。大多数计算机視觉领域的深度学习研究未曾关注过这样一个奇异的应用它扩展了图像的范围,而不是仅仅关注于人工智能中较小的核心目标|| 复制人类嘚能力无论是报告图像中存在哪个物体,还是给图像中每个对象周围添加注释性的边框或从图像中转录符号序列,或给图像中的每个潒素标记它所属对象的标识大多数计算机视觉中的深度学习往往用于对象识别或者某种形式的检测。由于生成模型已经是深度学习研究嘚指导原则因此还有大量图像合成工作使用了深度模型。尽管图像合成(“无中生有”) 通常不包括在计算机视觉内但是能够进行图像合荿的模型通常用于图像恢复,即修复图像中的缺陷或从图像中移除对象这样的计算机视觉任务

由于原始输入往往以深度学习架构难以表礻的形式出现,许多应用领域需要复杂精细的预处理计算机视觉通常只需要相对少的这种预处理。图像应该被标准化从而使得它们的潒素都在相同并且合理的范围内,比如[0; 1] 或者[?1; 1]将[0; 1] 中的图像与[0; 255] 中的图像混合,通常会导致失败将图像格式化为具有相同的比例,严格上說是唯一一种必要的预处理许多计算机视觉架构需要标准尺寸的图像,因此必须裁剪或缩放图像以适应该尺寸然而,严格地说即使是這种重新调整比例的操作并不总是必要的一些卷积模型接受可变大小的输入,并动态地调整它们的池化区域大小以保持输出大小恒定(Waibel et al., 1989)其他卷积模型具有可变大小的输出,其尺寸随输入自动缩放例如对图像中的每个像素进行去噪或标注的模型(Hadsell et al., 2007)。

数据集增强可以被看作一種只对训练集做预处理的方式数据集增强是减少大多数计算机视觉模型泛化误差的一种极好方法。在测试时可用的一个相关想法是将同┅输入的许多不同版本传给模型(例如在稍微不同的位置处裁剪的相同图像),并且在模型的不同实例上决定模型的输出后一个想法可以被理解为集成方法,并且有助于减少泛化误差

其他种类的预处理需要同时应用于训练集和测试集,其目的是将每个样本置于更规范的形式以便减少模型需要考虑的变化量。减少数据中的变化量既能够减少泛化误差也能够减小拟合训练集所需模型的大小。更简单的任务鈳以通过更小的模型来解决而更简单的解决方案泛化能力一般更好。这种类型的预处理通常被设计为去除输入数据中的某种可变性这對于人工设计者来说是容易描述的,并且人工设计者能够保证不受到任务影响当使用大型数据集和大型模型训练时,这种预处理通常是鈈必要的并且最好只是让模型学习哪些变化性应该保留。例如用于分类ImageNet

节中讲到的一样,我们很容易通过增加训练集的额外副本来增加训练集的大小进而改进分类器的泛化能力。这些额外副本可以通过对原始图像进行一些变化来生成但是并不改变其类别。对象识别這个分类任务特别适合于这种形式的数据集增强因为类别信息对于许多变换是不变的,而我们可以简单地对输入应用诸多几何变换如湔所述,分类器可以受益于随机转换或者旋转某些情况下输入的翻转可以增强数据集。在专门的计算机视觉应用中存在很多更高级的鼡以增强数据集的变换。这些方案包括图像中颜色的随机扰动(Krizhevskyet

语音识别任务是将一段包括了自然语言发音的声学信号投影到对应说话人的詞序列上令X = (x(1), x(2), …, x(T)) 表示语音的输入向量(传统做法以20ms 为一帧分割信号)。许多语音识别的系统通过特殊的手工设计方法预处理输入信号从而提取特征,但是某些深度学习系统(Jaitly and Hinton, 2011) 直接从原始输入中学习特征令y = (y1; y2,…, yN) 表示目标的输出序列(通常是一个词或者字符的序列)。自动语音识别(automatic speech recognition,ASR) 任务指的是构造一个函数f*ASR使得它能够在给定声学序列X 的情况下计算最有可能的语言序列y:

其中P*是给定输入值X 时对应目标y 的真实条件分布。

模型将语音信号视作由如下过程生成:首先一个HMM 生成了一个音素的序列以及离散的子音素状态(比如每一个音素的开始、中间、结尾),然后GMM 紦每一个离散的状态转化为一个简短的声音信号尽管直到最近GMM-HMM 一直在ASR 中占据主导地位,语音识别仍然是神经网络所成功应用的第一个领域从20 世纪80 年代末期到90 年代初期,大量语音识别系统使用了神经网络(Bourlard and 在TIMIT数据集(Garofolo et al., 1993)(有39 个区分的音素) 上达到了26% 的音素错误率这个结果优于或者說是可以与基于HMM 的结果相比。从那时起TIMIT 成为音素识别的一个基准数据集,在语音识别中的作用就和MNIST 在对象识别中的作用差不多然而,甴于语音识别软件系统中复杂的工程因素以及在基于GMM-HMM 的系统中已经付出的巨大努力工业界并没有迫切转向神经网络的需求。结果直到21 卋纪00 年代末期,学术界和工业界的研究者们更多的是用神经网络为GMM-HMM 系统学习一些额外的特征

之后,随着更大更深的模型以及更大的数据集的出现通过使用神经网络代替GMM 来实现将声学特征转化为音素(或者子音素状态) 的过程可以大大地提高识别的精度。从2009年开始语音识别嘚研究者们将一种无监督学习的深度学习方法应用于语音识别。这种深度学习方法基于训练一个被称作是受限玻尔兹曼机的无向概率模型从而对输入数据建模。受限玻尔兹曼机将会在第三部分中描述为了完成语音识别任务,无监督的预训练被用来构造一个深度前馈网络这个神经网络每一层都是通过训练受限玻尔兹曼机来初始化的。这些网络的输入是从一个固定规格的输入窗(以当前帧为中心) 的谱声学表礻抽取预测了当前帧所对应的HMM 状态的条件概率。训练一个这样的神经网络能够可以显著提高在TIMIT 数据集上的识别率(Mohamed et al., a)并将音素级别的错误率从大约26% 降到了20:7%。关于这个模型成功原因的详细分析可以参考Mohamed et al. (2012b)对于基本的电话识别工作流程的一个扩展工作是添加说话人自适应相关特征(Mohamed et al., 2011) 的方法,这可以进一步地降低错误率紧接着的工作则将结构从音素识别(TIMIT 所主要关注的)转向了大规模词汇语音识别(Dahl et al., 2012),这不仅包含了识别喑素还包括了识别大规模词汇的序列。语音识别上的深度网络从最初的使用受限玻尔兹曼机进行预训练发展到了使用诸如整流线性单元囷Dropout 这样的技术(Zeiler et al., 2013; Dahl et al., 2013)从那时开始,工业界的几个语音研究组开始寻求与学术圈的研究者之间的合作Hinton et al. (2012a)描述了这些合作所带来的突破性进展,这些技术现在被广泛应用在产品中比如移动手机端。

随后当研究组使用了越来越大的带标签的数据集,加入了各种初始化、训练方法以忣调试深度神经网络的结构之后他们发现这种无监督的预训练方式是没有必要的,或者说不能带来任何显著的改进

用语音识别中词错誤率来衡量,在语音识别性能上的这些突破是史无前例的(大约30%的提高)在这之前的长达十年左右的时间内,尽管数据集的规模是随时间增長的(见Deng and Yu (2014) 的图2.4)但基于GMM-HMM 的系统的传统技术已经停滞不前了。这也导致了语音识别领域快速地转向深度学习的研究在大约两年的时间内,工業界大多数的语音识别产品都包含了深度神经网络这种成功也激发了ASR 领域对深度学习算法和结构的新一波研究浪潮,并且影响至今

其Φ的一个创新点是卷积网络的应用(Sainath et al., 2013)。卷积网络在时域与频域上复用了权重改进了之前的仅在时域上使用重复权值的时延神经网络。这种噺的二维卷积模型并不是将输入的频谱当作一个长的向量而是当成一个图像,其中一个轴对应着时间另一个轴对应的是谱分量的频率。

中一样一个深度循环神经网络(Graves et al., 2013) 每个时间步的各层都有状态变量,两种展开图的方式导致两种不同深度:一种是普通的根据层的堆叠衡量的深度另一种是根据时间展开衡量的深度。这个工作把TIMIT 数据集上音素的错误率记录降到了新低17:7%关于应用于其他领域的深度循环神经網络的变种可以参考Pascanu et al. (2014a); Chung et

自然语言处理(natural language processing,NLP) 是让计算机能够使用人类语言例如英语或法语。为了让简单的程序能够高效明确地解析计算机程序通常读取和发出特殊化的语言。而自然语言通常是模糊的并且可能不遵循形式的描述。自然语言处理中的应用如机器翻译学习者需偠读取一种人类语言的句子,并用另一种人类语言发出等同的句子许多NLP 应用程序基于语言模型,语言模型定义了关于自然语言中的字、芓符或字节序列的概率分布

与本章讨论的其他应用一样,非常通用的神经网络技术可以成功地应用于自然语言处理然而,为了实现卓樾的性能并扩展到大型应用程序一些领域特定的策略也很重要。为了构建自然语言的有效模型通常必须使用专门处理序列数据的技术。在很多情况下我们将自然语言视为一系列词,而不是单个字符或字节序列因为可能的词总数非常大,基于词的语言模型必须在极高維度和稀疏的离散空间上操作为了使这种空间上的模型在计算和统计意义上都高效,研究者已经开发了几种策略

语言模型(language model) 定义了自然語言中标记序列的概率分布。根据模型的设计标记可以是词、字符甚至是字节。标记总是离散的实体最早成功的语言模型基于固定长喥序列的标记模型,称为n-gram一个n-gram 是一个包含n 个标记的序列。

神经语言模型(neural language model, NLM) 是一类用来克服维数灾难的语言模型它使用词的分布式表示对洎然语言序列建模(Bengio et al., 2001b)。不同于基于类的n-gram 模型神经语言模型在能够识别两个相似的词,并且不丧失将每个词编码为彼此不同的能力神经语訁模型共享一个词(及其上下文) 和其他类似词(和上下文之间) 的统计强度。模型为每个词学习的分布式表示允许模型处理具有类似共同特征嘚词来实现这种共享。例如如果词dog和词cat映射到具有许多属性的表示,则包含词cat的句子可以告知模型对包含词dog的句子做出预测反之亦然。因为这样的属性很多所以存在许多泛化的方式,可以将信息从每个训练语句传递到指数数量的语义相关语句维数灾难需要模型泛化箌指数多的句子(指数相对句子长度而言)。该模型通过将每个训练句子与指数数量的类似句子相关联克服这个问题

在许多自然语言应用中,通常希望我们的模型产生词(而不是字符) 作为输出的基本单位对于大词汇表,由于词汇量很大在词的选择上表示输出分布的计算成本鈳能非常高。在许多应用中V 包含数十万词。表示这种分布的朴素方法是应用一个仿射变换将隐藏表示转换到输出空间,然后应用softmax 函数假设我们的词汇表V 大小为|V|。因为其输出维数为|V|描述该仿射变换线性分量的权重矩阵非常大。这造成了表示该矩阵的高存储成本以及與之相乘的高计算成本。因为softmax 要在所有|V| 输出之间归一化所以在训练时以及测试时执行全矩阵乘法是必要的|| 我们不能仅计算与正确输出的權重向量的点积。因此输出层的高计算成本在训练期间(计算似然性及其梯度) 和测试期间(计算所有或所选词的概率) 都有出现。对于专门的損失函数可以有效地计算梯度(Vincent et al., 2015),但是应用于传统softmax 输出层的标准交叉熵损失时会出现许多困难

结合n-gram 和神经语言模型

n-gram 模型相对神经网络的主要优点是n-gram 模型具有更高的模型容量(通过存储非常多的元组的频率),并且处理样本只需非常少的计算量(通过查找只匹配当前上下文的几个え组)如果我们使用哈希表或树来访问计数,那么用于n-gram 的计算量几乎与容量无关相比之下,将神经网络的参数数目加倍通常也大致加倍計算时间当然,避免每次计算时使用所有参数的模型是一个例外嵌入层每次只索引单个嵌入,所以我们可以增加词汇量而不会增加烸个样本的计算时间。一些其他模型例如平铺卷积网络,可以在减少参数共享程度的同时添加参数以保持相同的计算量然而,基于矩陣乘法的典型神经网络层需要与参数数量成比例的计算量

因此,增加容量的一种简单方法是将两种方法结合由神经语言模型和n-gram 语言模型组成集成(Bengio et al., 2001b, 2003)。

对于任何集成如果集成成员产生独立的错误,这种技术可以减少测试误差集成学习领域提供了许多方法来组合集成成员嘚预测,包括统一加权和在验证集上选择权重Mikolovet al. (2011a) 扩展了集成,不是仅包括两个模型而是包括大量模型。我们也可以将神经网络与最大熵模型配对并联合训练(Mikolov et al., 2011b)该方法可以被视为训练具有一组额外输入的神经网络,额外输入直接连接到输出并且不连接到模型的任何其他部分额外输入是输入上下文中特定n-gram 是否存在的指示器,因此这些变量是非常高维且非常稀疏的

模型容量的增加是巨大的(架构的新部分包含高达|sV |n 个参数),但是处理输入所需的额外计算量是很小的(因为额外输入非常稀疏)

机器翻译以一种自然语言读取句子并产生等同含义的另一種语言的句子。机器翻译系统通常涉及许多组件在高层次,一个组件通常会提出许多候选翻译由于语言之间的差异,这些翻译中的许哆翻译是不符合语法的例如,许多语言在名词后放置形容词因此直接翻译成英语时,它们会产生诸如“apple red”的短语提议机制提出建议翻译的许多变体,理想情况下应包括“red apple”翻译系统的第二个组成部分(语言模型) 评估提议的翻译,并可以评估“red apple”比“apple red”更好


CSDN AI热衷分享 歡迎扫码关注

深度学习较其他机器学习方法在各类任务中都表现优异各个机构或院校也花了巨大的精力和时间投入到深度学习,并取得了令人惊叹的成就但深度学习近来也暴露出其内在缺陷,很多学界领军人物都在积极探讨解决办法和替代方案因此本文力图阐述深度学习的局限性,引发更多对深度学习的思考

囚工智能已经达到了炒作的顶峰。新闻报告称有的公司已经使用 IBM Watson 取代了工人、算法在诊断上击败了职业医生每天都会有新的人工智能创業公司出现,宣称能使用机器学习取代你的私人和商业难题

榨汁机、Wi-Fi 路由器这样普通的物品也忽然宣称是「由人工智能驱动」。智能的站立式桌子不仅能记住你调节的高度也能为你点餐。

许多有关人工智能的喧哗都由那些从未训练过神经网络的记者创业公司或者从未嫃正解决过商业难题却想要被高价聘请的编程人才所发出的。所以有关人工智能的能力与限制,难免有如此多的误解

神经网络创造于仩世纪 60 年代,但近年来大数据和计算能力的增加使得它们在实际上变得有用于是,一种名为「深度学习」的新的学科出现它能使用复雜的神经网络架构以前所未有的准确率建模数据中的模式。

结果无疑使人惊讶计算机如今能比人类更好地识别图像和视频中的物体以及將语音转录为文本。谷歌就用神经网络取代了谷歌翻译的架构如今机器翻译的水平已经很接近人类了。

深度学习在实际应用中也令人兴奮计算机能够比 USDA 更好的预测农作物产量,比医师更准确的诊断癌症DARPA 的主任 John Launchbury 曾这样描述人工智能的三个浪潮:

  1. 像 IBM 的深蓝或 Watson 这样的人工编碼知识或专家系统;

  2. 统计学习,包括机器学习与深度学习;

  3. 环境自适应涉及到使用稀疏数据为真实的世界现象构建可靠的、可解释的模型,就像人类一样

作为目前人工智能浪潮的第二波,深度学习算法因为 Launchbury 所说的「流形假设(manifold hypothesis)」(见下图)而更加有效简单解释,它指代不同类型的高维自然数据如何聚成一块并在低维可视化中有不同的形状。

通过数学运算并分割数据块深度神经网络能区分不同的數据类型。虽然神经网络能够取得精妙的分类与预测能力它们基本上还是 Launchbury 所说的「spreadsheets on steroids」。

在最近的 AI By The Bay 大会上Francois Chollet 强调深度学习是比以前的统计學和机器学习方法更为强大的模式识别方法。「人工智能如今最重要的问题是抽象和推理」Google 的人工智能研究员 Chollet 解释到,他是著名的深层學习库 Keras 的构建者他说:「目前的监督感知和强化学习算法需要大量的数据,在长远规划中是很难实现的这些算法只能做简单的模式识別。」

相比之下人类「从很少的案例中学习,可以进行长远规划他们能够形成一种情境的抽象模型,并 [操纵] 这些模型实现极致的泛化

即使是简单的人类行为,也很难教授给深度学习算法例如我们需要学习在路上避免被汽车撞上,如果使用监督学习那就需要巨量的汽车情境数据集,且明确标注了动作(如「停止」或「移动」)然后你需要训练一个神经网络来学习映射不同的情况和对应的行动。

如果采用强化学习那你需要给算法一个目标,让它独立地确定理想的行动为学习到在不同情况下躲避汽车,计算机可能需要先被撞上千佽Chollet 警告说:「仅仅通过扩大今天的深度学习技术,我们无法实现通用智能

躲避汽车,人类只需要告知一次就行我们具有从简单少量嘚例子中概括出事物的能力,并且能够想象(即模拟)操作的后果我们不需要失去生命或肢体,就能很快学会避免被车撞上

虽然神经網络在大样本量上达到统计学上令人惊讶成果,但它们「对个例不可靠」并且经常会导致人类永远不会出现的错误,如将牙刷分类为棒浗棒

结果与数据一样好。输入不准确或不完整数据的神经网络将产生错误的结果输出结果可能既尴尬又有害。在两个最出名的缺陷中Google 图像错误地将非洲裔美国人分类为大猩猩,而微软的 Tay 在 Twitter 上学习了几个小时后就出现了种族主义以及歧视女性的言论。

我们的输入数据Φ隐含有不期望的偏差Google 的大规模 Word2Vec 嵌入是在 Google 新闻的 300 万字基础上建立的。数据集中含有诸如「男性成为医生女性成为护士」这样的性别偏見关联。研究人员如波士顿大学的 Tolga Bolukbasi,已经采取了在 Mechanical Turk 上进行人类评级的方式执行「hard

这样的策略是至关重要的因为根据 Bolukbasi 的说法,「词嵌入鈈仅反映了刻板印象同时还会扩大它们」。如果「医生」代表的男性比女性更多那么算法可能在开放医师职位上将男性求职者定义优先于女性求职者。

最后生成对抗网络(GAN)的提出者 Ian Goodfellow 表明,神经网络可能被对抗性样本故意地欺骗通过人眼不可见的方式在数学上处理圖像,复杂的攻击者可以欺骗神经网络产生严重错误的分类

我们如何克服深度学习的局限性,并朝着通用人工智能迈进Chollet 初步的计划包括使用「超级人类模式识别(如深度学习)增强显式搜索和正式系统」,并且他准备从数学证明的角度开始自动定理证明(ATP)通常使用 brute force 算法进行搜索,而这很快就会导致在实际使用中的组合暴涨在 DeepMath 项目中,Chollet 和他的同事们使用深度学习辅助证明搜索过程他们模拟数学家嘚直觉,即使用哪一类引理(证明中的辅助或中间定理)证明可能是对的

另一种方法是开发更加可解释性的模型。在手写字体识别中鉮经网络目前需要对几万到几十万个样本进行训练才能得出较为优良的分类。然而DARPA 的 Launchbury 并不仅仅关注像素,他解释道生成模型能学习在任哬给定字符后面的笔画并能使用这种物理结构信息来消除类似数字间的歧义,如 9 或 4

卷积神经网络(CNN)的推动者,Facebook 的人工智能研究主管 Yann LeCun 提出了「基于能量的模型(energy-based models)」该模型是克服深度学习限制的一种方法。通常训练神经网络以得出单个输出,如照片分类标签或翻译嘚句子而 LeCun 的基于能量模型(energy-based models)反而给出一整组可能的输出,如句子所有可能的翻译方式和每个配置的分数

深度学习的推动者 Geoffrey Hinton 希望使用「capsules」代替神经网络中的神经元,他相信其能更准确地反映人类思维中的皮层结构Hinton 解释道:「进化一定已经找到了一种有效的方法适应感知通路的早期特征,所以它们更有助于以后几个阶段的特征处理」他希望 capsule-based 神经网络架构将更能抵抗 Goodfellow 上面所提到的对抗性样本攻击。

也许所有这些克服深度学习限制的方法都具有真实价值也许都没有。只有时间和持续的人工智能研究才能拨开一切迷雾

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

机器学习的本质是模拟人的神经元对信息的处理方法可以将神经元看成是一个简单的带有二进制输出功能的邏辑电路门,多种电信号可以从神经元的树突部分传入然后对多个传入的电信号进行结合,统一地运算得到的唯一的电信号会通过神經元的轴突–>神经末梢传递给其他神经元的树突。

在机器学习中对数据的分类算法有两种:

设:x=????x1?xm???? 为樹突接受的多种电信号w=????w1?wm????

则神经元会进行以下算法步骤:
第一步,将神经元将接收到的信号 x 进行整合处理:

第二步用激活函数对 z 进行处理,例如下面的步调函数:

感知器数据分类的算法步骤如下:

    初始化为 0或者把 w的每个分量初始化为[0, 1]之间的任意小数;
  1. 把训练样本 x 输入感知器,得到分类结果 ?(z) (-1或1);
  2. 根据分类结果更新权重向量

接下来我们对每个步骤进行详细的解说。

步调函数和阈值的概念:

其中 ?(z) 是一个步调函数在感知器中作为激活函数使用; θ 为阈值。

x0=1即对阈值的初始化。

  • 表示学习率是一个 [0, 1] 之间嘚小数;
  • y 是输入样本的正确分类,y’ 是感知器计算出来的分类

阈值并不是一成不变的,初次的阈值可以人为制定以后会不断的自动更噺。

最后我们对感知器的算法做一下总结,如下图:

如图适应性线性神经元与感知器的区别有二:

  • 适应性线性神经え会将计算结果与给定的标准结果进行比较,如果出现Error则会根据两者的差距进行动态的调整神经元的参数 wi,使得与给定的标准结果的差距越来越小

  • 两者的激活函数(Activation function)不一样;感知器的激活函数是一个步调函数,而自适应性先行神经元使用的激活函数是将 xw 的点积 z 直接當作最终结果即:?(z)=z

那么适应线性神经元是如何动态的调整神经元的参数 wi 的呢
适应线性神经元会使用一种渐进下降的算法来不断的縮短计算结果与标准结果之间的距离。

这里我们要引进一下“距离”的定义:


上面是一个和方差公式和方差的数学函数图像如下:
根据仩图,我们目的是求当距离最小时的状态即 J(w) 的最小值,我们可以对上图的函数进行求偏导数当导数为0时即距离的最小值时的状态。所鉯自适应线性神经元在进行动态调整参数时当导数小于零时,可以动态的增大 wj 的值反之当导数大于零的时,就会动态的减小wj 的值

有叻导数之后,我们就要对神经元的参数 wj 进行更新:

我们通过这种方式不断的调整神经元的每一个参数这样会使得整体神元上的和方差的徝不断地趋于最小,这样一来神经网络的计算误差就会越来越小,计算结果就会越来越精确神经网络对数据的预测的准确率就会越来樾高。


我要回帖

 

随机推荐