算法工程师修仙之路:Python深度学习(一)

深度学习基础

什么是深度学习


人工智能、机器学习与深度学习

人工智能、机器学习与深度学习的关系

在这里插入图片描述

人工智能

  • 人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。

  • 人工智能是一个综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。

  • 早期的国际象棋程序仅包含程序员精心编写的硬编码规则,并不属于机器学习。

  • 在相当长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。这一方法被称为符号主义人工智能(symbolic AI),从 20 世纪 50 年代到 80 年代末是人工智能的主流范式。

  • 虽然符号主义人工智能适合用来解决定义明确的逻辑问题,比如下国际象棋,但它难以给出明确的规则来解决更加复杂、模糊的问题,比如图像分类、语音识别和语言翻译。于是出现了一种新的方法来替代符号主义人工智能,这就是机器学习(machine learning)。

机器学习

  • 在经典的程序设计(即符号主义人工智能的范式)中,人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案。

  • 利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是
    规则,这些规则随后可应用于新的数据,并使计算机自主生成答案。

  • 机器学习系统是训练出来的,而不是明确地用程序编写出来的。将与某个任务相关的许多示例输入机器学习系统,它会在这些示例中找到统计结构,从而最终找到规则将任务自动化。

  • 虽然机器学习在 20 世纪 90 年代才开始蓬勃发展,但它迅速成为人工智能最受欢迎且最成功的分支领域,这一发展的驱动力来自于速度更快的硬件与更大的数据集。

  • 不同于统计学,机器学习经常用于处理复杂的大型数据集(比如包含数百万张图像的数据集,每张图像又包含数万个像素),用经典的统计分析(比如贝叶斯分析)来处理这种数据集是不切实际的。

  • 机器学习(尤其是深度学习)呈现出相对较少的数学理论(可能太少了),并且是以工程为导向的,这是一门需要上手实践的学科,想法更多地是靠实践来证明,而不是靠理论推导。

从数据中学习表示

  • 给定包含预期结果的示例,机器学习将会发现执行一项数据处理任务的规则,因此,我们需要以下三个要素来进行机器学习:

    • 输入数据点。
      • 例如,你的任务是语音识别,那么这些数据点可能是记录人们说话的声音文件。
      • 如果你的任务是为图像添加标签,那么这些数据点可能是图像。
    • 预期输出的示例。
      • 对于语音识别任务来说,这些示例可能是人们根据声音文件整理生成的文本。
      • 对于图像标记任务来说,预期输出可能是“狗”“猫”之类的标签。
    • 衡量算法效果好坏的方法。
      • 这一衡量方法是为了计算算法的当前输出与预期输出的差距。
      • 衡量结果是一种反馈信号,用于调节算法的工作方式,这个调节步骤就是我们所说的学习。
  • 机器学习模型将输入数据变换为有意义的输出,这是一个从已知的输入和输出示例中进行“学习”的过程。因此,机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。

  • 机器学习模型都是为输入数据寻找合适的表示——对数据进行变换,使其更适合手头的任务(比如分类任务)。

  • 机器学习中的学习指的是,寻找更好数据表示的自动搜索过程。

  • 所有机器学习算法都包括自动寻找这样一种变换:这种变换可以根据任务将数据转化为更加有用的表示。这些操作可能是坐标变换,也可能是线性投影(可能会破坏信息)、平移、非线性操作(比如“选择所有 x>0 的点”)等等。机器学习算法在寻找这些变换时通常没有什么创造性,而仅仅是遍历一组预先定义好的操作,这组操作叫作假设空间(hypothesis space)。

  • 机器学习的技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。

深度学习之“深度”

  • 深度学习是机器学习的一个分支领域

    • 它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。
    • 深度学习中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。
    • 数据模型中包含多少层,这被称为模型的深度(depth)。
    • 这一领域的其他名称包括分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)。
    • 现代深度学习通常包含数十个甚至上百个连续的表示层,这些表示层全都是从训练数据中自动学习的。与此相反,其他机器学习方法的重点往往是仅仅学习一两层的数据表示,因此有时也被称为浅层学习(shallow learning)。
  • 在深度学习中,这些分层表示几乎总是通过叫作神经网络(neural network)的模型来学习得到的,神经网络的结构是逐层堆叠。

  • 就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。

  • 你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高(即对任务的帮助越来越大)。

  • 深度学习的技术定义:学习数据表示的多级方法。

用三张图理解深度学习的工作原理

  • 机器学习是将输入(比如图像)映射到目标(比如标签“猫”),这一过程是通过观察许多输入和目标的示例来完成的。
  • 深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射,而这些数据变换都是通过观察示例学习到的。
  • 神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字。用术语来说,每层实现的变换由其权重来参数化(parameterize)。
  • 权重有时也被称为该层的参数(parameter)。在这种语境下, 学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一 一对应。
  • 神经网络是由其权重来参数化:
    在这里插入图片描述
  • 想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离,这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏。
  • 损失函数用来衡量网络输出结果的质量:
    在这里插入图片描述
  • 深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。
  • 将损失值作为反馈信号来调节权重:
    在这里插入图片描述
  • 一开始对神经网络的权重随机赋值,因此网络只是实现了一系列随机变换。
    • 其输出结果自然也和理想值相去甚远,相应地,损失值也很高。
    • 随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低,这就是训练循环(training loop),将这种循环重复足够多的次数(通常对数千个示例进行数十次迭代),得到的权重值可以使损失函数最小。
    • 具有最小损失的网络,其输出值与目标值尽可能地接近,这就是训练好的网络。

深度学习已经取得的进展

  • 深度学习已经取得了以下突破,它们都是机器学习历史上非常困难的领域:

    • 接近人类水平的图像分类;
    • 接近人类水平的语音识别;
    • 接近人类水平的手写文字转录;
    • 更好的机器翻译;
    • 更好的文本到语音转换;
    • 数字助理,比如谷歌即时(Google Now)和亚马逊 Alexa;
    • 接近人类水平的自动驾驶;
    • 更好的广告定向投放,Google、百度、必应都在使用;
    • 更好的网络搜索结果;
    • 能够回答用自然语言提出的问题;
    • 在围棋上战胜人类。
  • 我们已经开始将其应用于机器感知和自然语言理解之外的各种问题,比如形式推理。如果能够成功的话,这可能预示着深度学习将能够协助人类进行科学研究、软件开发等活动。

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/87275105