Python深度学习(深度学习之前:机器学习简史)----学习笔记(二)

1.2 深度学习之前:机器学习简史

  • 深度学习已经得到了人工智能历史上前所未有的公众关注度和产业投资,但这并不是机器学习的第一次成功。可以这样说,当前工业界所使用的绝大部分机器学习算法都不是深度学习算法。深度学习不一定总是解决问题的正确工具:有时没有足够的数据,深度学习不适用;有时用其他算法可以更好地解决问题。
1.2.1 概率建模
  • 概率建模(probabilistic modeling) 是统计学原理在数学分析中的应用。它是最早的机器学习形式之一,至今仍在广泛使用。其中最有名的算法之一就是朴素贝叶斯算法。
  • 朴素贝叶斯是一类基于应用贝叶斯定理的机器学习分类器,它假设输入数据的特征都是独立的。这是一个很强的假设,或者说“朴素的”假设,其名称正来源于此。这种数据分析方法比计算机出现得还要早,在其第一次被计算机实现(很可能追溯到20世纪50年代)的几十年前就已经靠人工计算来应用了。贝叶斯定理和统计学基础可以追溯到18世纪。
  • 另一个密切相关的模型是logistic回归(logistic regression, 简称logreg),它有时被认为是现代机器学习的“Hello world”。logreg是一种分类算法,而不是回归算法。与朴素贝叶斯类似,logreg的出现也比计算机早很长世纪,但由于它既简单又通用,至今仍然很有用。面对一个数据集,数据科学家通常会首先尝试使用这个算法,以便初步熟悉手头的分类任务。
1.2.2 早期神经网络
  • 虽然人们早在20世纪50年代就将神经网络作为玩具项目,并对其核心思想进行研究,但这一方法在数十年后才被人们所使用。在很长一段时间时间内,一直没有训练大型神经网络的有效方法。这一点在20世纪80年代中期发生了变换,当时很多人都独立地重新发现了反向传播算法-一种利用梯度下降优化来训练一系列参数运算链的方法,并开始将其应用于神经网络。
  • 贝尔实验室于1989年第一次成功实现了神经网络的实践应用,当时Yann LeCun将卷积神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题,由此得到名为LeNet的网络,在20世纪90年代被美国邮政署采用,用于自动读取信封上的邮政编码。
1.2.3 核方法
  • 核方法是一组分类算法,其中最有名的就是支持向量机(SVM, support vector machine)
  • SVM的目标是通过在属于两个不同类别的两组数据点之间找到良好的决策边界(decision boundary)来解决分类问题。决策边界可以看作一条直线或一个平面,将训练数据划分为两块空间,分别对应于两个类别。对于新数据点的分类,你只需判断它位于决策边界的哪一侧。
  • SVM通过两步来寻找决策边界。:(1)将数据映射到一个新的高维表示,这时决策边界可以用一个超平面来表示。(2)尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好决策边界(分割超平面),这一步叫作间隔最大化(maximizing the margin)。这样决策边界可以很好地推广到训练数据集之外的新样本。
  • 将数据映射到高维表示从而使分类问题简化,这一技巧可能听起来很不错,但在实践中通常是难以计算的。这时就需要用到核技巧(kernel trick)。要想在新的表示空间中找到良好的决策超平面,你不需要在新空间中直接计算点的坐标,只需要在新空间中计算点对之间的距离,而利用核函数(kernel function)可以高效地完成这种计算。核函数是一个在计算上能够实现的操作,将原始空间中的任意两点映射为这两点在目标表示空间中的距离,完全避免了对新表示进行直接计算。核函数通常是人为选择的,而不是从数据中学到的-对于SVM来说,只有分割超平面是通过学习得到的。
  • SVM很难扩展到大型数据集,并且在图像分类等感知问题上的效果也不好。SVM是一种比较浅层的方法,因此要想将其应用于感知问题,首先需要手动提取出有用的表数(特征工程),这一步很难,而且不稳定。
1.2.4 决策树、随机森林与梯度提升机
  • 决策树(decision tree)是类似于流程图的结构,可以对输入数据点进行分类或根据给定输入来预测输出值。
1.2.5 回到神经网络
  • 自2012年以来,深度卷积神经网络(convnet)已成为所有计算机视觉任务的首选算法。更一般地说,它在所有感知任务上都有效。与此同时,深度学习也在许多其他类型的问题上得到应用,比如自然语言处理。
1.2.6 深度学习有何不同
  • 深度学习发展得如此迅速,主要原因在于它在很多问题上都表现出更好的性能。但这并不是唯一的原因。深度学习还让解决问题变得更加简单,因为它将特征工程完全自动化,而这曾经是机器学习工作流程中最关键的一步。
  • 先前的机器学习技术(浅层学习)仅包含将输入数据变换到一两个连续的表示空间,通常使用简单的变换,比如高维非线性投影(SVM)或决策树。但这些技术通常无法得到复杂问题所需要的精确表示。因此,人们必须竭尽全力让初始输入数据更适合用这些方法处理,也必须手动为数据设计好的表示层。这叫作特征工程。与此相反,深度学习完全将这个步骤自动化:利用深度学习,你可以一次性学习所有特征,而无须自己手动设计。这极大简化了机器学习工作流程,通常将复杂的多阶段流程替换为一个简单的、端到端的深度学习模型。
  • 在实践中,如果连续应用浅层学习方法,其收益会随着层数增加迅速降低,因为三层模型中最优的第一表示层并不是单层或双层模型中最优的第一表示层。深度学习的变革性在于,模型可以同一时间共同学习所有表示层,而不是依次连续学习(这被称为贪婪学习)。通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特征都会相应地自动调节适应,无须认为干预。一切都由单一反馈信号来监督:模型中的每一处变换都是为最终目标服务。这种方法比贪婪地叠加浅层模型更加强大,因为它可以通过将复杂、抽象的表数拆解为很多个中间空间(层)来学习这些表示,每个中间空间仅仅是前一个空间的简单变换。
  • 深度学习从数据中进行学习时有两个基本特征:第一,通过渐进的、逐层的方式形成越来越复杂的表示;第二,对中间这些渐进的表示共同进行学习,每一层的变换都需要同时考虑上下两层的需要。

1.3 为什么是深度学习,为什么是现在

  • 硬件、数据集和基准、算法上的改进这三种技术力量推动着机器学习的进行。
  • 由于这一领域是靠实验结果而不是理论指导的,所以只有当合适的数据和硬件用于尝试新想法时(或者将旧想法的规模扩大,事实往往也是如此),才可能出现算法上的改进。机器学习不是数学或物理学,靠一支笔和一张纸就能实现重大进展。它是一门工程科学。
  • 在20世纪90年代和21世纪前十年,真正的瓶颈在于数据和硬件。但在这段时间内发生了:互联网高速发展,并且针对游戏市场的需求开发了高性能图形芯片。
1.3.1 硬件
  • 游戏市场资助了用于下一代人工智能应用的超级计算。
  • 2016年,Google在其年度I/O大会上展示了张量处理器(TPU)项目,它是一种新的芯片设计,其开发目的完全是为了运行深度神经网络。
1.3.2 数据
  • 人工智能有时被称为新的工业革命。如果深度学习是这场革命的蒸汽机,那么数据就是煤炭,即驱动智能机器的原材料,没有煤炭一切皆不可能。就数据而言,除了过去20年里存储硬件的指数增长(遵循摩尔定律),最大的变革来自于互联网的兴起,它使得收集与分发用于机器学习的超大型数据集变得可行。
1.3.3 算法
  • 更好的神经层激活函数(activation function)。
  • 更好的权重初始化方案(weight-initialization scheme),一开始使用逐层预训练方法,不过这种方法很快就被放弃了
  • 更好的优化方案(optimization scheme),比如RMSprop和Adam。
1.3.6 这种趋势会持续吗
  • 深度学习有几个重要的性质,证明了它确实是人工智能的革命,并且能长盛不衰。20年后我们可能不再使用神经网络,但我们那时使用的工具都是直接来自于现代深度学习及其核心概念。
  • 简单。深度学习不需要特征工程,它将复杂的、不稳定的、工程量很大的流程替换为简单的、端到端的可训练模型,这些模型通常只用到五六种不同的张量运算。
  • 可扩展。深度学习非常适合在GPU或TPU上并行计算,因此可以充分利用摩尔定律。此外,深度学习模型通过小批量数据进行迭代来训练,因此可以在任意大小的数据集上进行训练。(唯一的瓶颈是可用的并行计算能力,由于摩尔定律,这一限制会越来越小。)
  • 多功能与可复用。与之前的许多机器学习方法不同,深度学习模型无须从头开始就可以在附加的数据上进行训练,因此可用于连续在线学习,这对于大型生成模型而言是非常重要的特性。此外,训练好的深度学习模型可用于其他用途,因此是可以重复使用的。

你可能感兴趣的:(深度学习,深度学习,神经网络,python)