人工智能
什么是人工智能、机器学习与深度学习(见图1-1)?这三者之间有什么关系?
Python深度学习读书笔记-1.什么是深度学习
 
人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。因此,人工智能是一个
综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。
例如,早期的国际象棋程序仅包含程序员精心编写的硬编码规则,并不属于机器学习。在相当
长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现
与人类水平相当的人工智能。这一方法被称为符号主义人工智能(symbolic AI),从20 世纪50
年代到80 年代末是人工智能的主流范式。
在20 世纪80 年代的专家系统(expert system)热潮中,这一方法的热度达到了顶峰。
虽然符号主义人工智能适合用来解决定义明确的逻辑问题,比如下国际象棋,但它难以给
出明确的规则来解决更加复杂、模糊的问题,比如图像分类、语音识别和语言翻译。于是出现
了一种新的方法来替代符号主义人工智能,这就是机器学习(machine learning)。
 
 
机器学习
在经典的程序设计(即符号主义人工智能的范
式)中,人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案
(见图1-2)。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是
规则。这些规则随后可应用于新的数据,并使计算机自主生成答案。
Python深度学习读书笔记-1.什么是深度学习
 
机器学习系统是训练出来的,而不是明确地用程序编写出来的。
机器学习(尤其是深度学习)呈现出相对较少的数学理论(可能太少了),并且是以工程为导向的。这是一门需要上手实践的
学科,想法更多地是靠实践来证明,而不是靠理论推导。
 
从数据中学习表示
我们需要以下三个要素来进行机器学习
  • 输入数据点。
  • 预期输出的示例
  • 衡量算法效果好坏的方法
机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在
于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出
 
机器学习的技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找
输入数据的有用表示。
 
深度学习
深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续
的层(layer)中进行学习,这些层对应于越来越有意义的表示。
 
深度学习模型不是大脑模型。没有证据表明大脑的学习机制与现代深度学习模型所使用的相同
就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。
 
Python深度学习读书笔记-1.什么是深度学习
 
这个网络将数字图像转换成与原始图像差别越来越大的表示,而其中关于
最终结果的信息却越来越丰富。你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过
滤器,其纯度越来越高(即对任务的帮助越来越大)。
这就是深度学习的技术定义:学习数据表示的多级方法。这个想法很简单,但事实证明,
非常简单的机制如果具有足够大的规模,将会产生魔法般的效果。
 
Python深度学习读书笔记-1.什么是深度学习
 
三张图理解深度学习的工作原理
神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字。
学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一一对应
Python深度学习读书笔记-1.什么是深度学习
 
 
想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。
损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏
Python深度学习读书笔记-1.什么是深度学习
 
深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示
例对应的损失值(见图1-9)。这种调节由优化器(optimizer)来完成,它实现了所谓的反向
传播(backpropagation)算法,这是深度学习的核心算法。
Python深度学习读书笔记-1.什么是深度学习
 
 
深度学习不一定总是解决问题的正确工具:有时没有足够的数据,深度学习不适用;有
时用其他算法可以更好地解决问题。
 
概率建模
概率建模(probabilistic modeling)是统计学原理在数据分析中的应用。它是最早的机器学
习形式之一,至今仍在广泛使用。其中最有名的算法之一就是朴素贝叶斯算法。
朴素贝叶斯是一类基于应用贝叶斯定理的机器学习分类器,它假设输入数据的特征都是独
立的。
 
另一个密切相关的模型是logistic 回归(logistic regression,简称logreg),它有时被认为是
现代机器学习的“hello world”。不要被它的名称所误导——logreg 是一种分类算法,而不是回
归算法
 
 
早期神经网络
贝尔实验室于1989 年第一次成功实现了神经网络的实践应用,当时Yann LeCun 将卷积
神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题,由此得到名为
LeNet 的网络,在20 世纪90 年代被美国邮政署采用,用于自动读取信封上的邮政编码。
 
核方法
核方法是一组分类算法,其中最有名的就是支持向量机(SVM,
support vector machine)
SVM 的目标是通过在属于两个不同类别的两组数据点之间找到良好决策边界(decision
boundary,见图1-10)来解决分类问题。决策边界可以看作一条直线或一个平面,将训练数据
划分为两块空间,分别对应于两个类别。对于新数据点的分类,你只需判断它位于决策边界的
哪一侧。
Python深度学习读书笔记-1.什么是深度学习
 
 
 
SVM 通过两步来寻找决策边界。
(1) 将数据映射到一个新的高维表示,这时决策边界可以用一个超平面来表示(如果数据像
图1-10 那样是二维的,那么超平面就是一条直线)。
 
(2) 尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好决策边界(分
割超平面),这一步叫作间隔最大化(maximizing the margin)。这样决策边界可以很好
地推广到训练数据集之外的新样本。
 
核技巧
其基本思想是:要想在新的表示空间中找到良好的决策超平面,你不需要在新空间中直接计算
点的坐标,只需要在新空间中计算点对之间的距离,而利用核函数(kernel function)可以高效
地完成这种计算。核函数是一个在计算上能够实现的操作,将原始空间中的任意两点映射为这
两点在目标表示空间中的距离,完全避免了对新表示进行直接计算。核函数通常是人为选择的,
而不是从数据中学到的——对于SVM 来说,只有分割超平面是通过学习得到的。
 
SVM 刚刚出现时,在简单的分类问题上表现出了最好的性能
但是,SVM 很难扩展到大型数据集,并且在图像分类等感知问题上的效果也不好。SVM
是一种比较浅层的方法,因此要想将其应用于感知问题,首先需要手动提取出有用的表示(这
叫作特征工程),这一步骤很难,而且不稳定。
 
决策树
决策树(decision tree)是类似于流程图的结构,可以对输入数据点进行分类或根据给定输
入来预测输出值(见图1-11)。
 
Python深度学习读书笔记-1.什么是深度学习
 
 
随机森林(random forest)算法
它引入了一种健壮且实用的决策树学习方法,即
首先构建许多决策树,然后将它们的输出集成在一起。
 
 
梯度提升机
梯度提升机(gradient boosting machine)也是将弱预测模型(通常是决策树)集成的机器学习技术。它使用了梯度提升方法,通过迭代地训练新模型来专门解决
之前模型的弱点,从而改进任何机器学习模型的效果。将梯度提升技术应用于决策树时,得到
的模型与随机森林具有相似的性质,但在绝大多数情况下效果都比随机森林要好。它可能是目
前处理非感知数据最好的算法之一
 
深度学习有何不同
两个基本特征:
第一,通过渐进的、逐层的方式形成越来越复杂的表示;
第二,对中间这些渐进的表示共同进行学习,每一层的变化都需要同时考虑上下两层的需要。
总之,这两个特征使得深度学习比先前的机器学习方法更加成功。
 
 
深度学习重要的性质
1. 简单。深度学习不需要特征工程,它将复杂的、不稳定的、工程量很大的流程替换为简
单的、端到端的可训练模型,这些模型通常只用到五六种不同的张量运算。
2. 可扩展。深度学习非常适合在GPU或TPU上并行计算,因此可以充分利用摩尔定律。此外,
深度学习模型通过对小批量数据进行迭代来训练,因此可以在任意大小的数据集上进行
训练
3. 多功能与可复用。与之前的许多机器学习方法不同,深度学习模型无须从头开始就可以
在附加数据上进行训练,因此可用于连续在线学习,这对于大型生产模型而言是非常重
要的特性。此外,训练好的深度学习模型可用于其他用途,因此是可以重复使用的