2024-08-08
分享到
神经网络与支持向量机(包含核方法)都是非线年,Rummelhart与McClelland发明了神经网络的学习算法Back Propagation。后来,Vapnik等人于1992年提出了支持向量机。神经网络是多层(通常是三层)的非线性模型,支持向量机利用核技巧把非线性问题转换成线性问题。
这篇综述主要是介绍一些最重要的深度学习算法,并将演示如何用Theano来运行它们。
Theano是一个python库,使得写深度学习模型更加容易,同时也给出了一些关于在GPU上训练它们的选项。
这个算法的综述有一些先决条件。首先你应该知道一个关于python的知识,并熟悉numpy。由于这个综述是关于如何使用Theano,你应该先阅读Theano basic tutorial。一旦你完成这些,阅读我们的Getting Started章节---它将介绍概念定义,数据集,和利用随机梯度下降来优化模型的方法。
需要注意的是大脑中的表示是在中间紧密分布并且纯局部:他们是稀疏的:1%的神经元是同时活动的。给定大量的神经元,任然有一个非常高效地(指数级高效)表示。
学习/发现这些概念(知识工程由于没有反省而失败?)是很美好的。对语言可表达的概念的反省也建议我们一个稀疏的表示:仅所有可能单词/概念中的一个小的部分是可被应用到一个特别的输入(一个视觉场景)。
无监督和半监督学习算法可以用任意顺序阅读(auto-encoders可以被独立于RBM/DBM地阅读):
我们可以将深度架构看做一种因子分解。大部分随机选择的函数不能被有效地表示,无论是用深地或者浅的架构。但是许多能够有效地被深度架构表示的却不能被用浅的架构高效表示(see the polynomials example in the Bengio survey paper)。一个紧的和深度的表示的存在意味着在潜在的可被表示的函数中存在某种结构。如果不存在任何结构,那将不可九游体育科技能很好地泛化。
在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入;
深度学习是关于学习多个表示和抽象层次,这些层次帮助解释数据,例如图像,声音和文本。
从一个输入中产生一个输出所涉及的计算可以通过一个流向图(flow graph)来表示:流向图是一种能够表示计算的图,在这种图中每一个节点表示一个基本的计算并且一个计算的值(计算的结果被应用到这个节点的孩子节点的值)。考虑这样一个计算集合,它可以被允许在每一个节点和可能的图结构中,并定义了一个函数族。输入节点没有孩子,输出节点没有父亲。
2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。
近年来,神经网络一派的大师Hinton又提出了神经网络的Deep Learning算法(2006年),使神经网络的能力大大提高,可与支持向量机一比。
Deep Learning假设神经网络是多层的,首先用Boltzman Machine(非监督学习)学习网络的结构,然后再通过Back Propagation(监督学习)学习网络的权值。
这种流向图的一个特别属性是深度(depth):从一个输入到一个输出的最长路径的长度。
传统的前馈神经网络能够被看做拥有等于层数的深度(比如对于输出层为隐层数加1)。SVMs有深度2(一个对应于核输出或者特征空间,另一个对应于所产生输出的线性混合)。
对于表达sin(a^2b/a)的流向图,可以通过一个有两个输入节点a和b的图表示,其中一个节点通过使用a和b作为输入(例如作为孩子)来表示b/a ;一个节点仅使用a 作为输入来表示平方;一个节点使用a^2 和b/a 作为输入来表示加法项(其值为a^2b/a );最后一个输出节点利用一个单独的来自于加法节点的输入计算SIN。
前言:本文翻译自deeplearning网站,主要综述了一些论文、算法已经工具箱。
引言:神经网络(Neural Network)与支持向量机(Support Vector Machines,SVM)是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机(Perceptron)。感知机是1958年由Rosenblatt发明的线性分类模型。感知机对线性分类有效,但现实中的分类问题通常是非线性的。
例如,视觉皮质得到了很好的研究,并显示出一系列的区域,在每一个这种区域中包含一个输入的表示和从一个到另一个的信号流(这里忽略了在一些层次并行路径上的关联,因此更复杂)。这个特征层次的每一层表示在一个不同的抽象层上的输入,并在层次的更上层有着更多的抽象特征,他们根据低层特征定义。