[关闭]
@rg070836rg 2017-03-29T11:19:03.000000Z 字数 6582 阅读 1334

绪论

dlbook笔记


章 1

一、 介绍

1. representation

  1. 深度学习:计算机从经验中学习,以层次化的概念(concept)理解世界。

    • 从经验中学习避免了人类操作者需要指定计算机学习所需的所有知识
    • 层次化的概念运行计算机通过从更简单的概念来构建学习更复杂的概念

    如果我们绘制一张图来显示这些概念的关系,那么这张图是一个深度的层次结构。因此我们称这种方法为深度学习。

  2. 一个人的日常生活需要大量的关于世界的知识,这些知识大部分是主观的和直观的,因此很难以正式的方式表达。计算机需要获取同样的知识才能以人工智能的方式行动。关键在于:如何将这些知识带给计算机。

    • 一种方式是知识库(knowledge base):通过形式化语言硬编码关于真实世界的知识。计算机使用逻辑推理规则地自动推理这些形式化语言中的语句。最出名的项目是Cyc,但是这些项目都没有取得重大成功。
    • 一种方式为机器学习:AI系统通过从原始数据中提取模式来获得自己的知识的能力。它让计算机解决涉及真实世界知识的问题,并作出看起来主观的决策。如通过朴素贝叶斯算法分离正常的电子邮件和垃圾邮件。
  3. 传统的机器学习算法的性能严重依赖于数据的表述方式(representation)。如对病人的诊断中,AI系统并不是直接接触病人,而是由医生告诉AI系统关于病人的一些信息(如身高、体重等)。这些信息称作特征(feature)。

    • 传统的机器学习算法无法确定特征的种类和方式(如是直接给身高和体重,还是给出肥胖系数)
    • 某些信息,比如给出一份核磁共振的影像,传统的机器学习算法无法学习。核磁共振影像中,每一个像素点与诊断结果相关性非常微小。

    这种对representation的依赖是计算机科学甚至生活中的一般现象。例如人们很容易对阿拉伯数字进行算术运算,但是对于罗马数字的算术运算更费时间。下图是给出了一个线性分类任务。图中:左图我们采用笛卡尔坐标系,右图我们采用极坐标系。可以看到数据的不同表示(坐标系的不同)导致左图无法线性分类,右图可以轻松线性分类(用一根竖线分类)
    representation

  4. 在传统的机器学习应用中,我们通常针对特定的任务来设计一套专用的、有效的特征集,然后我们采集这些特征描述下的数据。比如语音识别中, 一个有效的特征就是讲话者的声音的声道(vocal tract)。但是大多数任务中,我们很难给出有效的特征是哪些。比如从图片中检查汽车:我们可能想使用是否有轮子作为一个特征。但是很不幸:我们很难根据像素点来准确描述轮子。因此可能由于阴影、光照条件、观察角度等导致轮子的像素集合非常复杂。

    该问题的一个解决方案是:通过机器学习来发现representation。即我们不仅学习representation到输出的映射(即模型),我们也学习representation本身。这称作表达学习(reprensentation learning

    使用reprensentation learning的优点:

    • 往往比人为设计的reprensentation的性能要好得多
    • 允许AI系统快速适应新任务,用最少的人工干预
    • 对于简单任务它可以在几分钟内学到一组好的特征;对于复杂任务可以在几小时到几个月的时间内学到一组好的特征。而对于复杂任务,人工设计reprensentation需要消耗大量的人力和时间。
  5. reprensentation learning经典的案例就是autoencoderautoencoder包含了编码器和解码器:

    • 编码器encoder:将输入数据转换成不同的reprensentation
    • 解码器decoder:将reprensentation转换成原始的格式

    autoencoder要求:

    • 输入数据在通过编码器解码器之后,尽量不丢失信息(保留尽可能多的信息)
    • reprensentation要具有各种不同的、良好的属性
  6. 在设计特征或者特征学习时,我们的目标是:把解释观察数据的那些变化因子(factors of variation)分隔。通常这些因子factor不是直接观察到的量,而是影响那些能够直接观察到的量。如语音识别中,变化因子就是:讲话者的年龄、性别、口音、讲话的单词等。在汽车相关的图片识别中,变化因子就是:汽车的位置、汽车的颜色、观察角度等。

    • 但是有个问题是:大多数因子仅仅影响我们观察到的数据的某个部分。如观察角度不同,则汽车轮廓的形状也不同。大多数应用中,我们需要解耦这些变化因子,然后丢弃其中我们不关心的因子。
    • 另外,从原始数据中提取某些高级的、抽象的特征可能非常困难。如说话者的口音只能用接近人类的、抽象的概念来表达。这样使得提取这种特征几乎和解决原始问题一样难。
  7. 深度学习在reprensentation learning中采用的解决方案是:representaions以更简单的representations来表示。因此深度学习通过组合简单的概念(concept)来构建复杂的概念。如下所示的图片识别任务中,如果直接学习从一组像素到物体的映射是困难的,深度学习通过将所需的复杂映射分解成一系列嵌套的简单映射来解决该问题。每个映射由模型的不同层来描述:

    • 可见层为输入,因为它包含了我们能够观察到的变量
    • 第一层隐层描述了边(edge)的概念:通过比较相邻像素的亮度,则容易地识别边缘
    • 第二层隐层描述了角(corner)和轮廓(contour)的概念:通过识别边的集合
    • 第三层隐层描述了特定物体整体(如:人物)的概念(物体由特定的角/等高线集合组成):通过识别轮廓和角的特点集合。

      隐层称为“隐”,因为它们的值不在数据中给出,而是由模型确定哪些概念concept可以用于解释观察数据中的关系


    concepts

  8. 深度学习的一个经典案例是多层感知机(multilayer perceptron:MLP)。一个多层感知机就是一个函数:它将一组输入值映射到输出值。而这个函数由许多更简单的函数组成。我们认为:每个函数都给出了输入的一个新的representation。因此它给出了深度学习的一个视角:深度学习就是学习数据的正确representaion

    深度学习的另一个观点是:深度学习允许计算机学习多步计算程序:

    • 每一层的representaion被认为是在并行执行一组指令之后,计算机的存储器的状态
    • 更深层的网络可以按顺序地执行更多的指令
    • 顺序的指令功能强大,因为序列后面的指令可以参考序列前期指令的结果

    根据这种观点,每一层中,并非所有的信息都对应了输入数据的变化因子的编码,representaion还存储了有助于程序执行的状态信息。这种状态信息类似于传统计算机程序中的计数器或者指针,它与输入的内容无关,但是有助于模型的组织处理过程。

2. 深度

  1. 深度学习的“深度”有两种度量方式:

    • 第一种度量方式为:框架中必须执行的顺序指令的数量。我们可以视作为通过流程图的最长路径的长度,该流程图描述了如何根据输入来计算模型的输出。

      提供不同的函数单元,同一个模型可能具有不同的深度。下图给出的是logistic regression模型的深度。其中输出 sigmoid函数。

      • 左图中:我们将加法、乘法、sigmoid函数作为基本运算单元,则模型深度为 3
      • 右图中:我们将logistic regression模型本身作为基本运算单元,则模型深度为 1
        depth
    • 另一种度量方式为:概念concept图的深度。此时,计算概念图的流程图的深度可能远远大于概念图本身。因为如果给定了复杂概念,则简单的概念可以得到更好的理解。如:一个面部识别应用中,如果一只眼睛在阴影中,那么AI最初只能看到一只眼睛。在检测到面部的存在后,AI可以推断出第二只眼睛很可能存在。在这个例子中,概念图只有两层:眼睛为一层;面部为第二层。但是计算概念图的流程图可能为 2n层,其中n为我们对每个概念进行改进的次数。

    对于模型的深度,并没有一个正确的值,也没有说哪种度量方式是合适的。究竟模型的深度值为多少才能称作“深”,也没有标准答案。通常深度学习被认为是涉及大量的概念concept的模型的学习。

3. 深度学习与 AI

  1. deep learning是机器学习的一种。

    • 它是构建可以在复杂的、真实世界环境中操作的AI系统的唯一可行的方法。
    • 它是一种特定类型的机器学习,通过学习将世界表示为层次化嵌套的概念。每个概念都定义为更简单的概念,更抽象的representation由不那么抽象的representation来计算。

    下图给出了深度学习的隶属关系:深度学习 < representation learning < 机器学习 < 人工智能AI
    venn_diagram

    下图给出了不同AI系统中,不同部分的关联。阴影方框表示从数据中学习获得的部分。
    AI_system

二、历史

1. 历史简介

  1. 深度学习的一些关键趋势:

    • 深度学习历史悠久,兴衰交替。深度学习在历史上有不同的名字,这些名字反映了不同的哲学观点。
    • 随着可用的训练数据量的增加,深度学习越来越有效
    • 深度学习模型随着计算基础设施(硬件和软件)的发展而不断改善
    • 深度学习以一个跨越式的精度解决了许多复杂的问题
  2. 深度学习分为三个时期:

    • 1940s-1960s:这时它被称作控制论cybernetics
    • 1980s-1990s:这时它被称作连接机制connectionism
    • 2006--:这时被称作deep learning

    下图展示了神经网络研究的三个历史浪潮中的两个(因为第三波太近了)。第一波随着生物学习理论的发展和第一个模型的出现(如感知机神经元);第二波用反向传播训练一层或者两层隐层神经网络。
    history

  3. 早期的人工智能算法的意图是模拟生物的学习过程:对大脑的学习过程建模。此时的深度学习被称作人工神经网络artificial neural networks:ANNs,深度学习模型被认为是受生物大脑启发的工程系统。 而现代的深度学习超越了神经科学的观点,它是一种多层次学习的、通用的机器学习框架啊,而不必是从神经科学中获取灵感。

  4. 早期的深度学习研究的是线性模型:给定 个输入 和对应的输出 ,学习权重 ,来计算输出

    • 线性模型可以用于识别二类分类问题。根据 是正数还是负数来判别。这就是感知机 perceptron出现的历史。
    • 线性模型有个著名的缺陷:它无法学习XOR函数。这导致了神经网络的第一次衰落。 XOR函数 要求:

      如果 为线性的,则 无解
  5. 第二波浪潮:连接机制的中心思想是:大量简单的计算单元在连接时可以实现智能行为。这种观点适用于生物神经系统中的神经元,以及深度网络模型中的隐层神经元。

    在连接机制期间,有一些核心思想仍然影响了后续的神经网络:

    • 分布式表达distributed representation:系统的每个输入应该由许多特征表示,每个特征描述了输入的一个部分。如一个视觉识别系统可以识别:汽车、卡车、鸟;这些对象可以为红色、蓝色、绿色。表达这些输入的一种方式为:9个神经元分别表示红色卡车、红色汽车、红色鸟、绿色汽车...等等。如果使用分布式表达,则使用6个神经元:3个神经元来表示卡车、汽车、鸟;3个神经元来表示红色、绿色、蓝色。
    • 逆向传播算法back-propagation。它是当前主要的训练深度模型的算法。
    • long short-term memory:LSTM网络:它是一种序列模型,解决了许多自然语言处理任务。
  6. 第三波浪潮从2006年开始突破。Geoffrey Hinton给出了一种称作深度信念网络(deep belief network),该网络可以使用 greedy layer-wise pre-training策略来有效地训练。

2. 目前状况

  1. 深度学习的成功的关键有两个:

    • 训练集大小的增长
    • 硬件和软件的发展。包括更快的 CPU、通用的GUP发展、更大内存、更快的网络连接、更好的软件基础
  2. 训练集大小:早期的深度学习需要一些技能才能从算法中获得良好的性能。随着训练数据量的增加,所需的技能在降低。

    • 截止2016年,一个粗略的经验法则是:在深度学习的监督学习中,要想获取可接受的性能,那么每个分类集合需要大约5000个标记样本;要想匹配甚至超越人类的性能,则训练集至少包含 1000 万个标记样本。
    • 对于小于这个数量的数据集,如何获取良好的性能是个重要的研究领域。尤其关注如何使用未标记样本(通过无监督学习或者半监督学习)。

    下图显示了benchmark数据集大小随时间的变化。这种变化趋势是由于整个社会的数字化的推动。

    • 20 世纪初,统计学家使用数百或者数千的手工编制的数据来研究
    • 20世纪50年代到80年代,从生物大脑获取灵感的机器学习先驱采用较小的、合成的数据集。如低分辨率的位图的字母。从而证明神经网络能够完成特定任务
    • 20世纪80年代到90年代,机器学习本质上更具有统计性。人们开始利用包含成千上万个例子的大数据集,如MNIST数据集
    • 21世纪前十年,继续产生了同样大小的更复杂的数据集,如CIFAR-10数据集
    • 2010年以来,更大的数据集包含了数十万到数千万的样本,深刻地改变了深度学习的可行性。
      dataset_size
  3. 神经网络最近成功的另一个关键原因是:我们有充足的计算资源来运行更大的模型。连接主义的主要观点是:单个神经元或者少量的神经元集合没什么用处,只有许多神经元一起工作才产生智能。更大的模型有两层含义:

    • 单个神经元的连接数量更多
    • 模型的神经元的数量更大
  4. 生物的神经元的连接并不是非常密集,下图给出了一些动物和人的大脑中,每个神经元的连接数量。早期人工神经网络神经元之间的连接数受到硬件能力的限制。今天神经元之间的连接数量多数出于设计考虑。目前一些人工神经网络的单个神经元的连接数量已经和猫相同。

    con_per_neurons

  5. 在神经元总量上,早期的神经网络非常的小。直到最近才有较强的改观。自从引入了隐层以来,人工神经网络的大小大约每隔 2.4年翻一番。这种增长是由更大内存、更快的计算机(更快的CPU、通用GPU的出现、更快的网络连接、更好的软件基础)和更大的数据集来驱动的。更大的神经网络能够在更复杂的任务上实现更高的精度。按照目前的趋势,大约2050年,人工神经网络将具有与人类大脑相同数量的神经元。但是生物神经元可能拥有比人工神经元更复杂的功能。

    num_neurons

3. 取得成绩

  1. 早期的深度模型用于识别紧凑裁剪的图像中的单个物体,且只能识别两种对象(或者说,某个对象存在与否)。现在的深度网络在每年举行的ImageNet大规模视觉识别挑战赛ImageNet Large Scale Visual Recognition Challenge :ILSVRC中异军突起。在2012年,卷积神经网络首次将state-of-the art top-5 error从 26.1% 下降到 15.3%。此后卷积神经网络不断进步,将该错误率下降到 3.6%。

    state-of-the art top-5 error:为每个图像产生可能类别的排名列表,该错误率表征的是:正确的分类位于排名前5个类别之外

    error_rate

  2. 其他成就:

    • 20世纪90年代之后,语音识别的错误率一直在改进,直到2000年开始停滞。深度学习的引入使得语音识别的错误率突然下降。
    • 深度学习在行人检测、图像分割、交通标志分类方面取得了惊人的成功
    • Goodfellow等人表明神经网络能够从图像中学习并输出一个字符序列,而不仅仅是识别单个对象。循环神经网络Recurrent neural network,如LSTM序列模型可以用于对序列和序列之间的关系建模(而不仅仅是固定的输入)。这种序列到序列的学习将带来机器翻译领域的革命性变化。
    • 深度学习的另一个成就是它扩展到强化学习的领域。DeepMind公司表明,基于深度学习的强化学习系统能够学习Atari视频游戏,在许多任务上达到人类的表现。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注