浅论学习深度学习的四个步骤

电子说

1.3w人已加入

描述

  深度学习
 
  深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
 
  深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。 [1]
 
  深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。
 
  深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。 [2]
 
  同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
 
  假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =》S1=》S2=》…。.=》Sn =》 O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失,设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。现在回到主题Deep Learning,需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设设计了一个系统S(有n层),通过调整系统中参数,使得它的输出仍然是输入I,那么就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。 [3]
 
  对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。 [3]
 
  另外,前面是假设输出严格地等于输入,这个限制太严格,可以略微地放松这个限制,例如只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。 [3]
 
  把学习结构看作一个网络,则深度学习的核心思路如下:
 
  ①无监督学习用于每一层网络的pre-train;
 
  ②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
 
  ③用自顶而下的监督算法去调整所有层
 
  主要技术
 
  线性代数、概率和信息论
 
  欠拟合、过拟合、正则化
 
  最大似然估计和贝叶斯统计
 
  随机梯度下降
 
  监督学习和无监督学习
 
  深度前馈网络、代价函数和反向传播
 
  正则化、稀疏编码和dropout
 
  自适应学习算法
 
  卷积神经网络
 
  循环神经网络
 
  递归神经网络
 
  深度神经网络和深度堆叠网络
 
  LSTM长短时记忆
 
  主成分分析
 
  正则自动编码器
 
  表征学习
 
  蒙特卡洛
 
  受限波兹曼机
 
  深度置信网络
 
  softmax回归、决策树和聚类算法
 
  KNN和SVM
 
  生成对抗网络和有向生成网络
 
  机器视觉和图像识别
 
  自然语言处理
 
  语音识别和机器翻译
 
  有限马尔科夫
 
  动态规划
 
  梯度策略算法
 
  增强学习(Q-learning)
 
  转折点
 
  2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。
 
  2006年的3篇论文改变了这种状况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工作所引领:
 
  Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006
 
  Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
 
  Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
 
  在这三篇论文中以下主要原理被发现:
 
  表示的无监督学习被用于(预)训练每一层;
 
  在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入;
 
  用有监督训练来调整所有层(加上一个或者更多的用于产生预测的附加层);
 
  DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(通过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(类似于稀疏编码)。Auto-encoders和convolutional架构将在以后的课程中讲解。
 
  从2006年以来,大量的关于深度学习的论文被发表。

  步骤1.学习深度学习的基本知识

  (可选的,但是建议你这样做)

  由Andrew Ng的机器学习课程开始https://www.coursera.org/learn/machine-learning.他的课程提供了一些关于各种机器学习算法的介绍,更重要的是,一般的程序/机器学习的方法,包括数据预处理,大参数调优等。

  阅读由Geoff Hinton、Yoshua Bengio和Yann LeCun写的NIPS 2015 深度学习教材,是一个以通俗易懂的介绍。

  步骤2.深入专研深度学习

  我学习的偏好是观看讲座视频,并感谢几个优秀的网上课程,这里有我喜欢的几个课程:

  1.Deep learning at Oxford 2015,Nando de Freitas没有过于复杂的熟练解释基本原理。从讲座9开始,如果你熟悉神经网络并想要再深一点,他在他的例子中使用了火炬框架(Video on Youtube)。

  2.Neural Network for Machine Learning :这是Geoff Hinton的课程。Hinton是一个杰出的研究者,他证明了一般的BP算法的使用并对于深度学习的发展起着至关重要的作用。我尊重他,但是我发现该课程没有组织。更进一步的,课程会由于布置的测试陷入困境。

  3.Neural Networks Class,是由Hugo Larochelle 教授:另外一个极好的课程。

  4.Yaser Abu-Mostafa’s machine learing course:如果你感兴趣更多的理论的话。

  如果你更倾向于书籍,这里有一些极好的资源。

  1.Neural Networks and Deep Learning Book,是由Michael Nielsen撰写:在线书籍并有几个交互式的 JavaScript元素可以玩。

  2.Deep Learning Book,是由Ian Goodfellow, Yoshua Bengio和Aaron Courville撰写:有一些密集。

  步骤3.挑选一个专注领域并深入研究

  确定你所热爱的并深入研究,领域是宽广的,所以列表是一个全面的列表。

  1.计算机视觉

  深度学习已经改变了这一领域。斯坦福CS231课程是我最经历的最好课程,它教会你基础知识和卷积,同时也帮助你在AWS上建立GPU实例,同时,也可以看由Mofstafa S,Ibrahimz制作的课程Getting Started in Computer Vision。

  2.自然语言处理(NLP)

  用于机器翻译,提问和回答,以及情感分析。为了掌握这一领域,深度理解自然语言的算法和基础计算属性是必须的。CS224N/Ling284课程是一个很好的起步课程。CS224d:Deep Learning for Natural Language Processing,是由David Socher教授的另外一门极好的课程,回顾了所有关于自然语言的最新深度学习的研究。更细节的可以看How do I learn Natural Language Processing?

  3.记忆网络(RNN-LSTM)

  最近的工作是将在LSTM复发神经的注意机制与外部可写内存相结合,这意味着在建筑系统中有一些有趣的工作,可以被理解、存储并在以问答的方式检索。这个研究领域是由Dr.Yann Lecun的facebook实验室起步的,原始文字是在arxiv上:Memory Network。这里有许多研究变体、数据集、标准等,比如,Metamind的Dynamic Memory Networks for Natural Language Processing。

  4.深度强化学习

  由AlphaGo出名,围棋系统在历史上击败了最强围棋选手,David Sliver的(谷歌深度思维)视频课程和教授Rich Stutton的书籍是很好的起步。对于关于LSTM的一般介绍可以看Christopher的文章Understand LSTM nework和Andrej karpathy的The Unreasonable Effectiveness of Recurrent Neural Networks。

  5.一般模型

  虽然有辨识率模型试着去检测、区分和分类,它们最终是在一个基本层面上寻找功能分化并不理解数据。除了短期应用之外,生成模型提供了潜在的自动学习的自然特性;类别、维度或者完全不同的东西。三个常用的生成模型——Generative Adversarial Networks(GANs),

  Variational Autoencoders (VAEs) 和Autoregressive models(比如像素RNN),GAN是最流行的。想进一步深入阅读

  1.Original GAN paper.

  2.The Laplacian Adversarial Networks (LAPGAN) Paper.

  3.The Deep Convolutional Generative Adversarial Networks (DCGAN)paper和DCGAN Code(可以被用来学习层次特征而不需要任何监督),也可以参考DCGNN used for Image Superresolution.

  步骤4.建立一些东西

  动手制作是成为一个专家的关键,试着去建立一些吸引你的并匹配你技能等级的。这里有一些建议去启发你。

  1.作为传统,开始是从分类手写数据库MNIST dataset.

  2.试着在数据库ImageNet上进行人脸识别和分类,如果你一直在做这个,可以参加ImageNet Challenge 2016.

  3.使用RNNs或者CNNs做一个Twitter情绪分析。

  4.训练一个神经网络去复制著名画家的艺术风格(A Neural Algorithm of Artistic Style)。

  5.使用RNN制作音乐:Compose Music With Recurrent Neural Networks。

  6.使用深度强化学习打乒乓球:Play ping-pong using Deep Reinforcement Learning。

  7.使用神经网络自拍:Use Neural Networks to Rate a selfie。

  8.使用深度学习自动着色黑白照片:Automatically color Black & White pictures using Deep Learning。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分