zoukankan      html  css  js  c++  java
  • 第2章 什么是深度学习?

     

    1 本章简要记录

             “Deep learning methods are representation-learning methods with multiple levels of representation, obtained by composing simple but nonlinear modules that each transform the representation at one level (starting with the raw input) into a representation at a higher, slightly more abstract level. [. . . ] The key aspect of deep learning is that these layers are not designed by human engineers: they are learned from data using a general-purpose learning procedure” – Yann LeCun, Yoshua Bengio, and Geoffrey Hinton, Nature 2015. [9]

    “深层学习方法是多层次表示的表示学习方法,由简单但非线性的模块组成,每个模块将一个层次(从原始输入开始)上的表示转换为一个更高、更抽象的层次上的表示。[…]。深层学习的关键在于这些层次不是由人类工程师设计的:它们是通过一个通用的学习程序从数据中学习的。”

     

    AI的中心目标是:提供一系列算法和技术集合,它们能够解决人类可以直觉上或接近自动的执行的问题,但是这些问题对计算机是一个挑战。如理解图片内容问题。

    虽然AI包含了与自动机器推理(推理、计划、启发等)有关的大量问题,但是机器学习只与子领域问题:模式识别和从数据中学习感兴趣。

    ANN是机器学习的一个子类,专门从数据中学习且专门致力于模式识别,它受大脑的结构和功能启发。深度学习是ANN的一个子集,大多数下,两种术语等价介绍。

    2         深度学习历史发展

    《神经网络浅讲:从神经元到深度学习》,该文详细讲述了深度学习的历史发展进程,与该系列一的第2章类似,这里将文章地址写在这里,https://blog.csdn.net/chiu1991/article/details/74357828

    第一个神经网络模型是1943年的McCulloch and Pitts模型,该模型手动调整参数。

    之后,在1950s,Rosenblatt 发表seminal Perceptron algorithm,该模型能够自动学习权重,如图所示,这种自动训练过程构成了(Stochastic Gradient Descent) SGD的基础,在今天SGD仍然被用作深度学习模型的训练方法。

     

    在1969年,Minsky发表了基于感知机的模型不能识别简单的XOR问题,遂进入到了冰河期。

     

    幸运的是,Werbos 、Rumelhart和LeCun 研究了(backpropagation algorithm )BP算法。 BP算法的研究可以训练多层前馈网络,如下图:

     

    结合非线性激活函数,现在可以学习非线性函数且能够解决XOR问题,打开了神经网络研究的大门。进一步研究表明,神经网络是通用逼近器,可以逼近任何连续的函数。

    BP算法是现代神经网络的转折。但是由于当时(1)计算性能较低(2)缺乏大量、有标签的训练集,使得不能训练超过两层的神经网络。

    现在,神经网络的最新代表是深度学习(deep learning)。深度学习不同于以往的体现是,我们拥有更快、更专业的硬件和更多可用的训练数据。我们现在可以用更多的隐藏层来训练网络,能够进行分层学习,分层学习即在网络的下层学习简单的概念,在上层学习更抽象的模式。

    3         层次特征学习

    机器学习算法通常分三类:监督、非监督、半监督学习。

    监督学习例子中,机器学习算法的输入和目标输出都给定。监督学习类似于老师指导。

    非监督学习例子中,机器学习算法试着自动发现差异特征,而不需要输入的任何提示。非监督学习类似于自学。

    在机器学习应用到图像分类的例子中,机器学习算法的目标是根据图片集合,识别出模式,该模式可用来区分互相之间不同的图像类别/物体。

    过去,我们手动度量一张图片的内容,现在通过深度学习自动度量。对于数据集中的每张图片,我们执行feature extraction或图片处理的过程,通过一些算法度量它(算法称为feature extractor或image descriptor),之后输出能够度量图片内容的向量(例如,一些数字)。如下图所示:

     

    图 通过颜色、质地、形状image descriptor对处方药品的度量

             我们手工设计的特征倾向于描述质地、形状、颜色。

             其它一些方法,如关键点探测器(FAST, Harris, DoG)和局部不变性描述器(SIFT, SURF, BRIEF, ORB等),描述图像的突出区域(即最感兴趣的区域)。

             其它方法,如HOG则对图像物体检测方面擅长。

             上述这些应用,都是采用手动度量特定的图像内容。

             深度学习,特别是CNNs,采用一种不同的方法。代替从图片中手动设计规则与算法来抽取特征,深度学习从训练过程中自动提取特征。

             使用深度学习,我们依据概念的层次学习来理解它。每一个概念都建立在其它概念之上,在网络中的较下层的概念编码问题的基本表示,而高层将使用这些较下层来构建更抽象的概念。这种层次学习允许我们完全移除手动抽取特征过程,而降CNNs作为端到端的学习者。

             给定一副图片,我们将像素强度值作为输入传递给CNNs,一系列隐藏层用于抽取输入图像的特征,最后输出层用于对图像进行分类并获得输出类标签。输出层直接或间接受到网络中其他节点的影响。

             深度学习和复杂的神经网络的主要好处之一是,它可以让我们跳过特征提取步骤,转而专注于训练我们的网络来学习这些滤波器的过程。然而,正如我们在本书的后面将会发现的那样,在给定的图像数据集下,训练一个网络来获得合理的准确性并不总是一件容易的事情。

  • 相关阅读:
    位运算学习
    C语言从文件中读取数字
    百度网盘视频加速代码
    算法思想
    递归解决全排列问题
    android studio出现offline情况
    二叉树的遍历(递归与非递归)
    (一)为什么要UML
    Logstash详解之——input模块
    解决maven项目update project会更改jdk版本问题
  • 原文地址:https://www.cnblogs.com/paladinzxl/p/9476990.html
Copyright © 2011-2022 走看看