【研究动态】深度学习进阶线路图(一)

dl2

在应用机器学习的时候,最耗时和重要的阶段是对原始数据进行特征提取。深度学习是一个新的机器学习的分支,他要做的就是跨过整个特征设计阶段,而是直接从数据中学习得到。大部分的深度学习方法都是基于神经网络的,在这些结构中,复杂的高层结构是建立在多个非线性神经元函数的多层叠加上的。

其实最容易的介绍神经网络和深度学习的教程是Geoff Hinton’s Coursera course.(AITMR译者注:我以前上过这个课,需要有一定的基础才能听得懂的。)在这个课程中,你能学习得到一些关键思想并能让你自己完成一些简单的算法。(Geoff是这个领域的先驱者,AITMR注:我们大家都习惯叫他祖师爷,他在06在Nature上发表了一篇关于深度学习的文章,被认为是这个领域的第一篇比较详细的文章,并附有代码。)

其实说白了深度学习就是从基本数据中学习,然后让模型工作得更好。但是这个领域目前来说还没有达到这个阶段,就是可以你把数据输进去,然后模型就完全自动的学习了。目前,你还需要判断很多问题:模型过拟合了吗?优化过程完成了吗?需要增加更多的神经元吗?需要增加更多的层数吗?不幸的是,现在对于这些个问题还没有一个共识,因此你需要不管的思考并做实验。为了达到这个水准,你需要深入理解算法的核心内容,和于此相关的一些机器学习的关键知识。这篇文章就是要根据这些点来给出一个进阶帮助你更好的理解深度学习。

如果你以前没怎么看过Metacademy,你可以在 here找到这个网站内容的基本结构和内容简介。登陆Metacademy,基本概念已经用红色标明了。这些将给你一些基本的认识,例如:

dl1

随着更多的内容加入到Metacademy,学习内容会实时更新的。外链用绿色字体显示,尽管我们已经尽可能的去列得详细,但是你还是要根据自己的情况去选择一些。但是你也不同完全按照我们给出的线路图去完成,因为每个人的情况不一样。

You can also check out one of several review papers, which give readable overviews of recent progress in the field:

【研究动态】深度学习进阶线路图(二)

Supervised models

如果你对使用神经网络感兴趣,意味着你也许喜欢自动的预测。监督学习是一种机器学习的框架,在这个框架里面你有一项特别想完成的任务,计算机通过有标签的数据集合学习得到模型。比如加入你想自动的判别邮件信息是垃圾邮件还是正常邮件,有监督学习框架中,你会有100,000封电子邮件被标注为“垃圾邮件”或者是“非垃圾邮件”,这些数据集合被用来训练分类器,使得它能够判别以前从未遇到过的邮件。

在深入理解神经网络之前,你应该先了解一点浅层网络机器学习算法比如线性回归( linear regression),逻辑回归(logistic regression),支持向量机(support vector machines (SVMs))等。这些算法更容易完成,并且有一些很成熟的软件包可以调用(比如: AITMR译者注:scikit-learn确实是一个非常好的软件包,译者一直以来都是用这个软件包,而且你还可以通过研究软件包的源程序来深入的学习相关的算法。)。这些算法是你实现神经网络的一些基础内容。另外,神经网络的基本组成部分神经元和这些模型有很大的关联。因此,你花时间学习这些模型也是为更深度的理解神经网络打好了基础。

为了能更好的应用监督学习,你需要理解泛化(generalization)的概念,所谓泛化就是在新数据上的预测能力。你需要理解怎样去平衡过拟合与欠拟合之间的权衡:你既要使你的模型能够完全的表达你的数据,又不至于使得你的模型过于复杂使其过拟合。在回归方面,这个可以归结为bias and variance,这提供了一个更为直观的表达。当然cross-validation是一个你可以用来测量泛化能力的算法。

最开始的深度学习模型是前馈神经网络feed-forward neural net它是通过反向传播 backpropagation来学习的。

7

视觉是深度神经网络的一个主要的应用方向,而卷积神经网络convolutional nets在此方面已经取得了突破性的进展。

递归神经网络Recurrent neural nets 是把数据表示成时间结构的一类神经网络。伴随时间的Backpropagation是一种优雅的训练算法,但是在实用性方面还是有一定问题的。

【研究动态】深度学习进阶线路图(三):非监督学习

监督模型中,有标签数据可用来训练模型进行预测。但是在很多情况下,标签数据很难获取,或者是很难定义标签。你有的可能只是些非标签数据。这种情况下的学习叫做非监督学习。例如,你想对邮件进行“垃圾邮件”和“非垃圾邮件”的分类,但是你却没有标签数据集。那么,用这些非标签数据集,你能做些什么事呢?第一,你可以简单的分析数据模式。你的非标签数据也许蕴含着某些潜在的属性,这些潜在属性可以通过主成分分析(principal component analysis)或者是因子分析(factor analysis)得到。第二,你也可以对你的数据进行聚类研究,一类的数据比其他类的数据更为近似,聚类算法主要有 k-meansmixture of Gaussians

在神经网络领域,非监督学习还有另外一种作用:他能对监督学习提供一些帮助。尤其是非标签数据比标签数据更容易获取。假如你正在进行目标识别方面的工作,给图像中的目标做标签是一件非常繁琐的事情,然而非标签的数据却可以从网上成千上万的下载。

非监督预训练(Unsupervised pre-training)已经在很多领域证明了其可极大的提供识别率。他的思想就是你通过非标签数据训练一个非监督神经网络,然后把类似的结构联合起来构成监督神经网络。目的都是为了给原始数据进行建模,而预训练能够为预先提取一些数据的相关结构。另外,深度非监督模型也比深度监督模型更容易训练(当然,关于这一点现在大家还不知道具体原因。)。非监督网络的预训练初始化使得整个网络训练时不至于陷入局部极值。

关于分监督训练好处的证明仍然是复杂的,很多成功应用的深度神经网络已经避免使用它,尤其是在大数据的背景下。但是他也保持者很好的记录,值得我们取关注他。

那哪些是非监督神经网络呢?最基本的就是自编码结构(autoencoder),这是一种预测他自己输入的前馈神经网络。然而这并不是最难的事情,可以一些限制后事情变得有点困难。第一,网络中有一层或者是多层的神经元数量要比数据层的小。另外,还需要限制隐含层的活跃神经元是稀疏的(译者注:只有少部分神经元的输出为非零。)。再着,在输入数据中加入一些噪声,再使网络具有去噪能力(denoising autoencoder)。

关于非监督学习另外一种方法是生成模型。人们假设数据符合某种潜在的分布,然后尝试对这种分布建模。受限玻耳兹曼机Restricted Boltzmann machines (RBMs) 是一种监督的只有一个隐含层的生成模型。而这个模型可以堆积形成多层生成模型,比如深信网络( deep belief nets (DBNs))和深度玻尔兹曼机(deep Boltzmann machines (DBMs))等。

3-1

DBMs can learn to model some pretty complex data distributions:

3-2

Generative modeling is a deep and rich area, and you can find lots more examples in the Bayesian machine learning roadmap.

【研究动态】深度学习进阶线路图(四):优化算法

定义好深度神经网络的机构后,该怎么去训练他们呢?最笨重的训练方法就是随机梯度下降法(stochastic gradient descent (SGD)),这种方法在每次训练中只添加一个训练样本(或者说是少量的训练样本),通过这些训练样本一小步一小步的减小损失函数。也就是说这需要计算损失函数的梯度值,这可以通过反向传播的算法算得。当然在编好程序后要进行“梯度计算检查”(check your gradient computations)来确保你的梯度计算是正确的。SGD算法理解简单,实现也比较容易,用起来也是十分的得心应手。

其他还有很多其他的凸优化(convex optimization)可以解决这个训练问题,在凸问题中,SGD和其他的一些局部搜索算法可以保证找到全局极值。可以找到全局极值是因为函数的形状是“碗状”(即凸函数),因此微调就朝着全局极值的方向走了。很多机器学习的研究就是想去构造一个凸优化问题。然而,深度神经网络却并非都是凸优化问题,因此你仅能保证找到一个局部极小值。这看似令人失望,但是我们也找到了一些解决方法( something we can live with)。对于大部分的前馈网络和生成网络,局部极值其实是挺合理的。(当时递归神经网络是个意外。)

局部极值最大的问题就是损失函数的曲率会趋向极值。然而神经网络是非凸的,因此曲率的问题就凸显出来了,而解决神经网络的训练的问题都是借鉴的凸优化问题的求解方法。如果你想了解一些相关的背景知识,可以去看看Boyd and Vandenberghe’s写的书凸优化( Convex Optimization):

  • Sections 9.2-9.3 talk about gradient descent, the canonical first-order optimization method (i.e. a method which only uses first derivatives)

  • Section 9.5 talks about Newton’s method, the canonical second-order optimization method (i.e. a method which accounts for second derivatives, or curvature)

牛顿法其实是很适合去处理曲率问题的,但是他处理大尺度的神经网络训练却并不实用,主要有两方面的原因:其一,它是一种批处理方法,因此每次训练都得把全部的训练样本添加进去。其二,他需要构建Hessian矩阵,并且还要求逆,而Hessian矩阵的维数和参数维数相等啊。(译者注:计算量太大了,当你的神经网络结构非常大的时候,这简直就是一场灾难啊!)因此,一直以来他都是作为一种理想的二阶训练方法人们去尝试。实际上用得最多的还是:

相比于一般的神经网络模型,训练RBMs又提出了新的挑战:目标函数需要计算配分函数,而梯度计算需要进行推理(inference)。而这两者貌似都是不可解的(intractable)。在实际操作中Contrastive divergence and persistent contrastive divergence被广泛的用来估计梯度。然而,模型估计依然还是个问题。退火抽样(annealed importance sampling)可以用来估计模型的似然函数( estimate the model likelihood )。但是终究还是显得苍白,对于估计模型的性能还是很难完成的。

4-1

Even once you understand the math behind these algorithms, the devil’s in the details. Here are some good practical guides for getting these algorithms to work in practice:

【研究动态】深度学习进阶线路图(五):应用与相关软件

视觉应用:

计算机视觉是神经网络和深度学习的主要应用领域。早在1998年,卷积神经网络(convolutional nets )就已经在手写数字识别上大显身手,MNIST手写书库( MNIST handrwritten digit dataset )也一直以来都作为神经网络研究的标准数据集。(译者注:卷积神经网络在计算机视觉领域的应用是空前的,据说美国ATM机上支票的识别就是用的CNNs算法,而最近CNNs的研究又进入了一个爆发期,很多新的算法表中出现,比如3D的CNNs等。笔者曾经仔细研读过CNNs的MATLAB代码,确实是一个很好的算法,而且对于图像的识别率也是很高的。)近来,卷积神经网络把数千种类的物体分类问题(classifying between thousands of object categories)大大的推进了一步。仅用行像素来学习打游戏( play Atari games)的DeepMind系统里面就用到了视觉识别。

也有很多的工作是关于图像的生成模型的。而这些研究工作都是关注于学习稀疏表示(learning sparse representations )和图像的局部关系建模(modeling the local covariance structure)。加入你用卷积结构的生成模型对图像建模,那么你能得到更深层次的特征。

5-1

相关软件:

  • Cafe is an increasingly popular deep learning software package designed for image-related tasks, e.g. object recognition. It’s one of the fastest deep learning packages available — it’s written in C++ and CUDA.

  • The University of Toronto machine learning group has put together some nice GPU libraries for Python. GNumPy gives a NumPy-like wrapper for GPU arrays. It wraps around Cudamat, a GPU linear algebra library, and npmat, which pretends to be a GPU on a CPU machine (for debugging).

  • PyLearn is a neural net library developed by the University of Montreal machine learning group. It is intended for researchers, so it is built to be customizable and extendable.

  • PyLearn is built on top of Theano, a Python library for neural nets and related algorithms (also developed at Montreal), which provides symbolic differentiation and GPU support.

  • If for some reason you hate Python, Torch is a powerful machine learning library for Lua.

【研究动态】深度学习进阶线路图(六):深度学习与其他机器学习算法的关系

transparency

Relationships with other machine learning techniques

神经网络和其他的机器学习算法有着千丝万缕的联系。理解他们之间的这些关系可以帮助我们选定神经网络的结构。

很多神经网络结构可以看成是浅层结构的非线性叠加生成。前馈网络就可以看做是逻辑回归( logistic regression)的类比。而自编码网络(Autoencoders)可以看成是降维算法(PCA)的非线性类比。

RBMs和所有的高斯单元可以看成是类似于因子分析(equivalent to Factor analysis)。RBMs也可以看成是另外一种指数族分布(exponential family)。

核方法是另外一种把线性算法转为非线性算法的技术。神经网络和核方法之间其实有着很微妙的关系:贝叶斯神经网络其实就是有无限多个隐含神经元的高斯过程。(SeeChapter 2 of Radford Neal’s Ph.D. thesis. Background: Gaussian processes)

Relationship with the brain

If these models are called “neural” nets, it’s natural to ask whether they have anything to do with how the brain works. In a certain sense, they don’t: you can understand and apply the algorithms without knowing anything about neuroscience. Mathematically, feed-forward neural nets are just adaptive basis function expansions. But the connections do run pretty deep between practical machine learning and studies of the mind and brain.

Unfortunately, Metacademy doesn’t have any neuroscience content (yet!), so the background links in this section will be fairly incomplete. Doubly unfortunately, neuroscience and cognitive science seem not to have the same commitment to open access that machine learning does, so this section might only be useful if you have access to a university library.

When trying to draw parallels between learning algorithms and the brain, we need to be precise about what level we’re talking about. In “The philosophy and the approach” (Chapter 1 of Vision: a Computational Investigation), David Marr argued for explicitly separating different levels of analysis: computation, algorithms, and implementation. (This is worth reading, even if you read nothing else in this section.) While not all researchers agree with this way of partitioning things, it’s useful to keep in mind when trying to understand exactly what someone is claiming.

Neuroscience

Jeff Hawkins’s book On Intelligence aims to present a unifying picture of the computational role of the neocortex. While the theory itself is fairly speculative, the book is an engaging and accessible introduction to the structure of the cortex.

Many neural net models have learned similar response properties to neurons in the primary visual cortex (V1).

  • Olshausen and Field’s sparse coding model (background) was the first to demonstrate that a purely statistical learning algorithm discovered filters similar to those of V1. (Whether or not this is a neural net is a matter of opinion.) Since then, a wide variety of representation learning algorithms based on seemingly different ideas have recovered similar representations.

  • Other statistical models [TODO] have learned topological representations similar to the layout of cell types in V1.

  • Karklin and Lewicki fit a more sophisticated statistical model which reproduced response properties of complex cells.

  • While the connection between V1 and learned filters may seem tidy, Olshausen highlights a lot of things we still don’t understand about V1.

For more on the neuroscience of the visual system, check out Eye, Brain, and Vision, a freely available book written by David Hubel, one of the pioneers who first studied V1. (Chapters 3, 4, and 5 are the most relevant.)

There have also been neural nets explicitly proposed as models of the brain. Riesenhuber and Poggio’s HMAX model is a good example. Jim DiCarlofound that deep convolutional networks yield neurons which behave similarly to those high up in the primate visual hierarchy.

Cognitive science

It’s not just at the level of neurons that researchers have tried to draw connections between the brain and neural nets. Cognitive science refers to the interdisciplinary study of thought processes, and can be thought of a study of the mind rather than the brain. Connectionism is a branch of cognitive science, especially influential during the 1980s, which attempted to model high-level cognitive processes in terms of networks of neuron-like units. (Several of the most influential machine learning researchers came out of this tradition.)

McClelland and Rumelhart’s book Parallel Distributed Processing (volumes 1 and 2) is the connectionist Bible. Other significant works in the field include:

One of the most perplexing questions about the brain is how neural systems can model the compositional structure of language. Linguists tend to model language in terms of recursive structures like grammars, which are very different from the representations used in most neural net research. Paul Smolensky and Geraldine Legendre’s book The Harmonic Mind presents a connectionist theory of language, where neurons implement a system of constraints between different linguistic features.

转自:http://www.aitmr.com/index.php/airesearch/373.html

http://www.aitmr.com/index.php/airesearch/401.html

http://www.aitmr.com/index.php/airesearch/417.html

http://www.aitmr.com/index.php/airesearch/425.html

http://www.aitmr.com/index.php/airesearch/442.html

http://www.aitmr.com/index.php/airesearch/448.html

原文翻译自:http://metacademy.org/roadmaps/rgrosse/deep_learning