Bootstrap

神经网络与深度学习-简要入门

参考引用

1. 绪论

  • 从根源来讲,深度学习是机器学习的一个分支,是指一类问题以及解决这类问题的方法
    • 深度学习问题是一个机器学习问题,指从有限样例中通过算法总结出一般性的规律,并可以应用到新的未知数据上
    • 深度学习采用的模型一般比较复杂,指样本的原始输入到输出目标之间的数据流经过多个线性或非线性的组件,因为每个组件都会对信息进行加工,并进而影响后续的组件,所以当最后得到输出结果时,并不清楚其中每个组件的贡献是多少,这个问题叫作贡献度分配问题,一种可以比较好解决贡献度分配问题的模型是人工神经网络(简称神经网络)
  • 神经网络和深度学习并不等价:深度学习可以采用神经网络模型,也可以采用其他模型(如深度信念网络是一种概率图模型)
  • 因为神经网络模型一般比较复杂,从输入到输出的信息传递路径一般比较长,所以复杂神经网络的学习可以看成是一种深度的机器学习,即深度学习

1.1 机器学习

  • 机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或 “猜测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法
  • 机器学习模型使用步骤
    • (1)数据预处理:对数据的原始形式进行初步的数据清理(比如去掉一些有缺失特征的样本,或去掉一些冗余的数据特征等)和加工(对数值特征进行缩放和归一化等),并构建成可用于训练机器学习模型的数据集
    • (2)特征提取:从数据的原始特征中提取一些对特定机器学习任务有用的高质量特征,比如在图像分类中提取边缘、尺度不变特征变换(Scale Invariant Feature Transform,SIFT)特征,在文本分类中去除停用词等
    • (3)特征转换:对特征进一步加工,如:降维和升维,降维包括特征抽取(Feature Extraction)和特征选择(Feature Selection)两种途径,常用的特征转换方法有主成分分析(Principal Components Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)等
    • (4)预测:机器学习的核心部分,学习一个函数并进行预测

1.2 表示学习

  • 背景与定义

    • 为了提高机器学习系统的准确率,就需要将输入信息转换为有效的特征,或者更一般性地称为表示(Representation)
    • 有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就可以叫作表示学习(Representation Learning)
  • 特征表示方式

    • 局部表示(Local Representation):一种表示颜色的方法是以不同名字(红、绿、蓝)来命名不同的颜色, 这种表示方式叫作局部表示,也称为离散表示或符号表示
    • 分布式表示(Distributed Representation):另一种表示颜色的方法是用 RGB 值来表示颜色,不同颜色对应到 R、G、B 三维空间中一个点,这种表示方式叫作分布式表示
    • 可以使用神经网络将高维的局部表示空间映射到一个非常低维的分布式表示空间
      在这里插入图片描述
  • 结论

    • 要学习到一种好的高层语义表示(一般为分布式表示),通常需要从底层特征开始,经过多步非线性转换才能得到,深层结构的优点是可以增加特征的重用性,从而指数级地增加表示能力
    • 特征的学习是和最终预测模型的学习分开进行的,因此学习到的特征不一定可以提升最终模型的性能

1.3 深度学习

  • 背景

    • 为了学习一种好的表示,需要构建具有一定 “深度” 的模型,并通过学习算法来让模型自动学习出好的特征表示(从底层特征,到中层特征,再到高层特征),从而最终提升预测模型的准确率
      • 所谓 “深度” 是指原始数据进行非线性特征转换的次数
      • 如果把一个表示学习系统看作一个有向图结构,深度也可以看作从输入节点到输出节点所经过的最长路径的长度
  • 定义与关键问题

    • 深度学习(Deep Learning,DL)就是从数据中学习一个 “深度模型”,是机器学习的一个子问题,主要目的:从数据中自动学习到有效的特征表示(通过多层的特征转换,把原始数据变成更高层次、更抽象的表示)
    • 深度学习需要解决的关键问题是贡献度分配问题(Credit Assignment Problem,CAP),即一个系统中不同的组件(component)或其参数对最终系统输出结果的贡献或影响
      在这里插入图片描述
  • 深度学习模型

    • 主要采用神经网络模型,其主要原因是神经网络模型可以使用误差反向传播算法,从而可以比较好地解决贡献度分配问题,只要是超过一层的神经网络都会存在贡献度分配问题,因此可以将超过一层的神经网络都看作深度学习模型
  • 端到端学习

    • 端到端学习(End-to-End Learning),也称端到端训练,是指在学习过程中不进行分模块或分阶段训练,直接优化任务的总体目标
    • 在端到端学习中,一般不需要明确地给出不同模块或阶段的功能,中间过程不需要人为干预
    • 端到端学习的训练数据为“输入-输出”对的形式,无须提供其他额外信息

1.4 神经网络

  • 背景
    • 早期的神经科学家构造了一种模仿人脑神经系统的数学模型,称为人工神经网络,简称神经网络
    • 在机器学习领域,神经网络是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数
  • 人工神经网络
    • 人工神经网络与生物神经元类似,由多个节点(人工神经元)互相连接而成,可以用来对数据之间的复杂关系进行建模
    • 不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小
    • 每个节点代表一种特定函数,来自其他节点的信息经过其相应的权重综合计算,输入到一个激活函数中并得到一个新的活性值(兴奋或抑制)

1.5 常用深度学习框架

  • Caffe
    • 由加州大学伯克利分校开发的针对卷积神经网络的计算框架,主要用于计算机视觉
  • TensorFlow
    • 由 Google 公司开发的深度学习框架,可以在任意具备 CPU 或者 GPU 的设备上运行
    • TensorFlow 的计算过程使用数据流图来表示
  • PyTorch
    • 由 Facebook、NVIDIA、Twitter 等公司开发维护的深度学习框架,其前身为 Lua 语言的 Torch,PyTorch 也是基于动态计算图的框架,在需要动态改变神经网络结构的任务中有着明显的优势
  • PaddlePaddle
    • 由百度开发的一个高效和可扩展的深度学习框架,同时支持动态图和静态图
  • MXNet
    • 由亚马逊、华盛顿大学和卡内基·梅隆大学等开发维护的深度学习框架
    • MXNet 支持混合使用符号和命令式编程来最大化效率和生产率,并可以有效地扩展到多个 GPU 和多台机器

1.6 深度学习相关学术会议

  • 1、国际表示学习会议(International Conference on Learning Representations,ICLR
    • 主要聚焦于深度学习
  • 2、神经信息处理系统年会(Annual Conference on Neural Information Processing Systems,NeurIPS
    • 交叉学科会议,但偏重于机器学习,主要包括神经信息处理、统计方法、学习理论以及应用等
  • 3、国际机器学习会议(International Conference on Machine Learning,ICML
    • 机器学习顶级会议,深度学习作为近年来的热点,也占据了 ICML 的很大比例
  • 4、国际人工智能联合会议(International Joint Conference on Artificial Intelligence,IJCAI
    • 人工智能领域最顶尖的综合性会议
  • 5、美国人工智能协会年会(AAAI Conference on Artificial Intelligence,AAAI
    • 人工智能领域的顶级会议
  • 6、计算机视觉与模式识别大会(IEEE Conference on Computer Visionand Pattern Recognition,CVPR
  • 7、国际计算机视觉会议(International Comference on Computer Vision,ICCV

2. 机器学习概述

  • 机器学习(Machine Learning,ML)通常指一类问题以及解决这类问题的方法,即如何从观测数据(样本)中寻找规律,并利用学习到的规律(模型)对未知或无法观测的数据进行预测
  • 在早期的工程领域,机器学习也经常称为模式识别(Pattern Recognition,PR),但模式识别更偏向于具体的应用任务,比如光学字符识别、语音识别、人脸识别等
    • 一个可行的方法是设计一个算法可以让计算机自己从有标注的样本上学习其中的规律,并用来完成各种识别任务
    • 另一种思路,即让计算机 “看” 大量的样本(数据),并从中学习到一些经验,然后用这些经验来识别新的样本,这种通过数据来学习的方法就称为机器学习的方法

2.1 基本概念

  • 特征和标签
    • 从市场上随机选取一些芒果,列出每个芒果的特征(Feature),包括颜色、大小、形状、产地、品牌,以及需要预测的标签(Label)
      • 标签可以是连续值(比如关于芒果的甜度、水分以及成熟度的综合打分),也可以是离散值(比如 “好” “坏” 两类标签)
      • 每个芒果的标签可以通过直接品尝来获得,也可以通过请一些经验丰富的专家来进行标记
  • 样本/示例
    • 可以将一个标记好特征以及标签的芒果看作一个样本(Sample),也经常称为示例(Instance)
  • 数据集(训练集和测试集)
    • 一组样本构成的集合称为数据集(Data Set),从数据中学得模型的过程称为 “学习” 或 “训练”
    • 一般将数据集分为两部分:训练集和测试集
      • 训练集(Training Set)中的样本是用来训练模型的,也叫训练样本(Training Sample)
      • 而测试集(Test Set)中的样本是用来检验模型好坏的,也叫测试样本(Test Sample)
      • 训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型
  • 过拟合 (overftting)
    • 当一个模型在训练集上表现良好,但不能推广到测试集时,这个模型被称为过拟合 (overftting) 的,就像在现实生活中,尽管模拟考试考得很好,真正的考试不一定百发百中
  • 泛化能力
    • 学得模型适用于新样本的能力称为泛化能力,具有强泛化能力的模型能很好的适用于整个样本空间

2.2 机器学习三要素

机器学习方法可以粗略地分为三个基本要素:模型、学习准则、优化算法

  • 1. 模型

    • 对于一个机器学习任务,首先要确定其输入空间(默认为样本的特征空间) X X X 和输出空间 Y Y Y,不同机器学习任务的主要区别在于输出空间不同,输入空间 X X X 和输出空间 Y Y Y 构成一个样本空间
    • 对于样本空间中的样本 ( x , y ) ∈ X × Y (x, y) ∈ X × Y (x,y)X×Y,假定 x x x y y y 之间的关系可以通过一个未知的真实映射函数 y = g ( x ) y =g(x) y=g(x) 或真实条件概率分布 p r ( y ∣ x ) p_r(y|x) pr(yx) 来描述,机器学习的目标是找到一个模型来近似真实映射函数 g ( x ) g(x) g(x) 或真实条件概率分布 p r ( y ∣ x ) p_r(y|x) pr(yx)
    • 由于不知道真实的映射函数 g ( x ) g(x) g(x) 或条件概率分布 p r ( y ∣ x ) p_r(y|x) pr(yx) 的具体形式,因而只能根据经验来假设一个函数集合 F \mathcal{F} F,称为假设空间,然后通过观测其在训练集 D 上的特性,从中选择一个理想的假设 f ∗ ∈ F f^*\in\mathcal{F} fF,假设空间 F \mathcal{F} F 通常为一个参数化的函数族
      F = { f ( x ; θ ) ∣ θ ∈ R D } \mathcal{F}=\{f(\boldsymbol{x};\theta)|\theta\in\mathbb{R}^D\} F={f(x;θ)θRD}
    • 其中 f ( x ; θ ) f(\boldsymbol{x};\theta) f(x;θ) 是参数为 θ \theta θ 的函数,也称为模型(Model),D 为参数的数量
  • 2. 学习准则

    • 损失函数:损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异
      • 0-1 损失函数:最直观的损失函数是模型在训练集上的错误率
      • 平方损失函数:经常用在预测标签 𝑦 为实数值的任务中,一般不适用于分类问题
      • 交叉熵损失函数:一般用于分类问题
    • 风险最小化准则
      • 一个好的模型 f ( x ; θ ) f(\boldsymbol{x};\theta) f(x;θ) 应当有一个比较小的期望错误,但由于不知道真实的数据分布和映射函数,实际上无法计算其期望风险.给定一个训练集 D,可以计算的是经验风险(即在训练集上的平均损失),一个切实可行的学习准则是找到一组参数使得经验风险最小
    • 结构风险最小化
      • 过拟合:经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上(测试集)错误率很高,这就是所谓的过拟合,过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的
      • 正则化:为了解决过拟合问题, 一般在经验风险最小化的基础上再引入参数的正则化(Regularization)来限制模型能力,使其不要过度地最小化经验风险
      • 欠拟合:即模型不能很好地拟合训练数据,在训练集上的错误率比较高,欠拟合一般是由于模型能力不足造成的
      • 泛化能力:机器学习中的学习准则并不仅仅是拟合训练集上的数据,同时也要使得泛化错误最低.给定一个训练集,机器学习的目标是从假设空间中找到一个泛化错误较低的 “理想” 模型,以便更好地对未知的样本进行预测,特别是不在训练集中出现的样本
        在这里插入图片描述
  • 3. 优化算法

    • 在确定了训练集 D、假设空间 F \mathcal{F} F 以及学习准则后,如何找到最优的模型 f ( x , θ ∗ ) f(\boldsymbol{x},\theta^*) f(x,θ) 就成了一个最优化(Optimization)问题,机器学习的训练过程其实就是最优化问题的求解过程
    • 参数与超参数
      • 模型 f ( x ; θ ) f(\boldsymbol{x};\theta) f(x;θ) 中的 θ \theta θ 称为模型的参数,可以通过优化算法进行学习
      • 除了可学习的参数 θ \theta θ 之外,还有一类参数是用来定义模型结构或优化策略的,这类参数叫作超参数(Hyper-Parameter),常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化项的系数、神经网络的层数
      • 超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整
    • 批量梯度下降法
    • 提前停止
      • 在梯度下降训练的过程中,由于过拟合的原因,在训练样本上收敛的参数,并不一定在测试集上最优,因此除了训练集和测试集之外,有时也会使用一个验证集来进行模型选择,测试模型在验证集上是否最优
      • 如果在验证集上的错误率不再下降,就停止迭代,这种策略叫提前停止
    • 随机梯度下降法
      • 批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和,当训练集中的样本数量 𝑁 很大时,空间复杂度比较高,每次迭代的计算开销也很大
      • 为了减少每次迭代的计算复杂度,也可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,即随机梯度下降法(也称增量梯度下降法)
    • 小批量梯度下降法
      • 随机梯度下降法的一个缺点是无法充分利用计算机的并行计算能力
      • 小批量梯度下降法是批量梯度下降和随机梯度下降的折中,每次迭代时,随机选取一小部分训练样本来计算梯度并更新参数,这样既可以兼顾随机梯度下降法的优点,也可以提高训练效率

2.3 机器学习算法分类

  • 监督学习(Supervised Learning)
    • 如果机器学习的目标是建模样本的特征 x 和标签 y 之间的关系: y = f ( x ; θ ) y=f(\boldsymbol{x};\theta) y=f(x;θ) p ( y ∣ x ; θ ) p(y|x;\theta) p(yx;θ),并且训练集中每个样本都有标签,那么这类机器学习称为监督学习(Supervised Learning)
    • 根据标签类型的不同,监督学习又可以分为回归问题、分类问题和结构化学习问题
      • 回归问题中的标签和输出都是连续值
      • 分类问题中的标签是离散的类别
      • 结构化学习中的标签通常是结构化的对象,比如序列、树或图等
  • 无监督学习(Unsupervised Learning)
    • 监督学习通常需要大量的有标签数据集,这些数据集一般都需要由人工进行标注,成本很高,而无监督学习则不需要标签
    • 无监督学习是指从不包含目标标签的训练样本中自动学习到一些有价值的信息.典型的无监督学习问题有聚类、密度估计、特征学习、降维等
  • 强化学习(Reinforcement Learning)
    • 是一类通过交互来学习的机器学习算法,在强化学习中,智能体根据环境的状态做出一个动作,并得到即时或延时的奖励,智能体在和环境的交互中不断学习并调整策略,以取得最大化的期望总回报

2.4 数据的特征表示

在实际应用中,数据的类型多种多样,比如文本、音频、图像、视频等,不同类型的数据,其原始特征(Raw Feature)的空间也不相同,为了提高机器学习算法的能力,需要抽取有效、稳定的特征

  • 传统的特征学习

    • 特征选择
      • 特征选择(Feature Selection)是选取原始特征集合的一个有效子集,使得基于这个特征子集训练出来的模型准确率最高.简单地说,特征选择就是保留有用特征,移除冗余或无关的特征
    • 特征抽取
      • 特征抽取(Feature Extraction)是构造一个新的特征空间,并将原始特征投影在新的空间中得到新的表示
    • 特征选择和特征抽取的优点是可以用较少的特征来表示原始特征中的大部分相关信息,去掉噪声信息,并进而提高计算效率和减小维度灾难,因此特征选择和特征抽取也经常称为降维
      在这里插入图片描述
  • 深度学习方法

    • 传统的特征抽取一般是和预测模型的学习分离的,如果将特征的表示学习和机器学习的预测学习有机地统一到一个模型中,建立一个端到端的学习算法,就可以有效地避免它们之间准则的不一致性,这种表示学习方法称为深度学习

2.5 评价指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集中的每一个样本进行预测,并根据预测结果计算评价分数,对于分类问题,常见的评价标准有:准确率、精确率、召回率和 F 值等

  • 给定测试集 T = { ( x ( 1 ) , y ( 1 ) ) , ⋯   , ( x ( N ) , y ( N ) ) } \mathcal{T}=\{(x^{(1)},y^{(1)}),\cdots,(x^{(N)},y^{(N)})\} T={(x(1),y(1)),,(x(N),y(N))},假设标签 y ( n ) ∈ { 1 , ⋯   , C } y^{(n)}\in\{1,\cdots,C\} y(n){1,,C},用学习好的模型 f ( x ; θ ∗ ) f(\boldsymbol{x};\theta^*) f(x;θ) 对测试集中的每一个样本进行预测,结果为 { y ^ ( 1 ) , ⋯   , y ^ ( N ) } \{\hat{y}^{(1)},\cdots,\hat{y}^{(N)}\} {y^(1),,y^(N)}
    • 准确率(Accuracy)
      A = 1 N ∑ n = 1 N I ( y ( n ) = y ^ ( n ) ) \mathcal{A}=\frac1N\sum_{n=1}^NI(y^{(n)}=\hat{y}^{(n)}) A=N1n=1NI(y(n)=y^(n))
    • 错误率(Error Rate)
      E = 1 − A = 1 N ∑ n = 1 N I ( y ( n ) ≠ y ^ ( n ) ) \begin{aligned}\text{E}&=1-\mathcal{A}\\&=\frac1N\sum_{n=1}^NI(y^{(n)}\neq\hat{y}^{(n)})\end{aligned} E=1A=N1n=1NI(y(n)=y^(n))
  • 精确率、召回率和 F 值
    • 准确率是所有类别整体性能的平均,如果希望对每个类都进行性能估计,就需要计算精确率(Precision)和召回率(Recall)

    • 对于类别 c 来说,模型在测试集上的结果可以分为以下四种情况

      • 真正例(True Positive,TP):一个样本的真实类别为 c 并且模型正确地预测为类别 c
      • 假负例(False Negative,FN):一个样本的真实类别为 c,模型错误地预测为其他类
      • 假正例(False Positive,FP):一个样本的真实类别为其他类,模型错误地预测为类别 c
      • 真负例(True Negative,TN):一个样本的真实类别为其他类,模型也预测为其他类
      • 这四种情况的关系可以用下图所示的混淆矩阵(Confusion Matrix)来表示
        在这里插入图片描述
    • 精确率(Precision):也叫精度或查准率,类别 𝑐 的查准率是所有预测为类别 𝑐 的样本中预测正确的比例
      P c = T P c T P c + F P c \mathcal{P}_c=\frac{TP_c}{TP_c+FP_c} Pc=TPc+FPcTPc

    • 召回率(Recall):也叫查全率,类别 𝑐 的查全率是所有真实标签为类别 𝑐 的样本中预测正确的比例
      R c = T P c T P c + F N c \mathcal{R}_c=\frac{TP_c}{TP_c+FN_c} Rc=TPc+FNcTPc

    • F 值(F Measure):是一个综合指标,为精确率和召回率的调和平均,其中 β \beta β 用于平衡精确率和召回率的重要性,一般取值为 1,𝛽 = 1 时的 F 值称为 F1 值
      F c = ( 1 + β 2 ) × P c × R c β 2 × P c + R c \mathcal{F}_c=\frac{(1+\beta^2)\times\mathcal{P}_c\times\mathcal{R}_c}{\beta^2\times\mathcal{P}_c+\mathcal{R}_c} Fc=β2×Pc+Rc(1+β2)×Pc×Rc

3. 线性模型

  • 线性模型(Linear Model)是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型,给定一个 𝐷 维样本 x = [ x 1 , ⋯   , x D ] ⊺ \boldsymbol{x}=[x_1,\cdots,x_D]^\intercal x=[x1,,xD],其线性组合函数为(其中 w = [ w 1 , ⋯   , w D ] ⊺ \boldsymbol{w}=[w_1,\cdots,w_D]^\intercal w=[w1,,wD] 为 𝐷 维的权重向量,𝑏 为偏置)
    f ( x ; w ) = w 1 x 1 + w 2 x 2 + ⋯ + w D x D + b = w ⊤ x + b \begin{aligned} f(\mathbf{x};\boldsymbol{w})& =w_1x_1+w_2x_2+\cdots+w_Dx_D+b \\ &=\boldsymbol{w}^\top\boldsymbol{x}+b \end{aligned} f(x;w)=w1x1+w2x2++wDxD+b=wx+b

  • 在分类问题中,由于输出目标 y 是一些离散的标签,而 f ( x ; w ) f(\boldsymbol{x};\boldsymbol{w}) f(x;w) 的值域为实数,因此无法直接用 f ( x ; w ) f(\boldsymbol{x};\boldsymbol{w}) f(x;w) 来进行预测,需要引入一个非线性的决策/激活函数 g ( ⋅ ) g(⋅) g() 来预测输出目标(其中 f ( x ; w ) f(\boldsymbol{x};\boldsymbol{w}) f(x;w) 也称为判别函数
    y = g ( f ( x ; w ) ) y=g(f(\boldsymbol{x};\boldsymbol{w})) y=g(f(x;w))

  • 1. Logistic 回归

    • Logistic 回归(Logistic Regression,LR)是一种常用的处理二分类问题的线性模型,二分类(Binary Classification)问题的类别标签 𝑦 只有两种取值,通常可以设为 {+1, −1} 或 {0, 1},在二分类问题中,常用正例(Positive Sample)和负例(Negative Sample)来分别表示属于类别 +1 和 −1 的样本
  • 2. Softmax 回归

    • Softmax 回归(Softmax Regression),也称为多项(Multinomial)或多类(Multi-Class)的 Logistic 回归,是 Logistic 回归在多分类问题上的推广,多分类(Multi-class Classification)问题是指分类的类别数 C 大于 2,多分类一般需要多个线性判别函数
    • Softmax 回归中使用的 C 个权重向量是冗余的,即对所有的权重向量都减去一个同样的向量 𝒗,不改变其输出结果,因此,Softmax 回归往往需要使用正则化来约束其参数
  • 3. 感知器

    • 感知器(Perceptron)由 Frank Roseblatt 于 1957 年提出,是一种广泛使用的线性分类器,感知器可谓是最简单的人工神经网络,只有一个神经元,感知器是一种简单的两类线性分类模型
    • 广义感知器:通过引入特征函数 ϕ ( x , y ) \phi(\boldsymbol{x},y) ϕ(x,y),感知器不但可以用于多分类问题,也可以用于结构化学习问题,比如输出是序列形式
  • 4. 支持向量机

    • 支持向量机(Support Vector Machine,SVM)是一个经典的二分类算法,其找到的分割超平面具有更好的鲁棒性,因此广泛使用在很多任务上,并表现出了很强优势
    • 核函数:支持向量机还有一个重要的优点是可以使用核函数(Kernel Function)隐式地将样本从原始特征空间映射到更高维的空间,并解决原始特征空间中的线性不可分问题
  • 总结

    • 线性分类模型一般是一个广义线性函数,即一个或多个线性判别函数加上一个非线性激活函数,所谓 “线性” 是指决策边界由一个或多个超平面组成
      在这里插入图片描述

4. 前馈神经网络

背景

  • 人工神经网络(Artificial Neural Network,ANN)是指一系列受生物学和神经科学启发的数学模型.这些模型主要是通过对人脑的神经元网络进行抽象,构建人工神经元,并按照一定拓扑结构来建立人工神经元之间的连接,来模拟生物神经网络,在人工智能领域,人工神经网络也常常简称为神经网络(Neural Network,NN)或神经模型(Neural Model)
  • 从机器学习的角度来看,神经网络一般可以看作一个非线性模型,其基本组成单元为具有非线性激活函数的神经元,通过大量神经元之间的连接,使得神经网络成为一种高度非线性的模型,神经元之间的连接权重就是需要学习的参数,可以在机器学习的框架下通过梯度下降方法来进行学习

4.1 神经元

  • 典型的神经元结构
    在这里插入图片描述

  • 激活函数

    • 假设一个神经元接收 𝐷 个输入 x 1 , x 2 , ⋯   , x D x_1,x_2,\cdots,x_D x1,x2,,xD,令向量 x = [ x 1 ; x 2 ; ⋯   ; x D ] \boldsymbol{x}=[x_1;x_2;\cdots;x_D] x=[x1;x2;;xD] 来表示这组输入,并用净输入 z ∈ R z\in\mathbb{R} zR 表示一个神经元所获得的输入信号 x \boldsymbol{x} x 的加权和(其中 w = [ w 1 ; w 2 ; ⋯   ; w D ] ∈ R D \boldsymbol{w}=[w_1;w_2;\cdots;w_D]\in\mathbb{R}^D w=[w1;w2;;wD]RD 为 𝐷 维的权重向量,𝑏 为偏置)
      z = ∑ d = 1 D w d x d + b = w T x + b , \begin{aligned}z&=\sum_{d=1}^{D}w_{d}x_{d}+b\\&=\boldsymbol{w}^{\mathsf{T}}\boldsymbol{x}+b,\end{aligned} z=d=1Dwdxd+b=wTx+b,
    • 净输入 𝑧 在经过一个非线性函数 f ( ⋅ ) f(⋅) f() 映射后,得到神经元的活性值(Activation)𝑎,其中非线性函数 f ( ⋅ ) f(⋅) f() 称为激活函数(Activation Function)
      a = f ( z ) a=f(z) a=f(z)
  • 为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质

    • 1、连续并可导(允许少数点上不可导)的非线性函数.可导的激活函数可以直接利用数值优化的方法来学习网络参数
    • 2、激活函数及其导函数要尽可能的简单,有利于提高网络计算效率.
    • 3、激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性
  • 常见激活函数

    • Sigmoid 型函数:Sigmoid 型函数是指一类 S 型曲线函数,为两端饱和函数,常用的 Sigmoid 型函数有 Logistic 函数和 Tanh 函数
    • ReLU 函数:ReLU(Rectified Linear Unit,修正线性单元)是目前深度神经网络中经常使用的激活函数,ReLU 实际上是一个斜坡(ramp)函数,采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效,但 ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率
    • Swish 函数:Swish 函数是一种自门控(Self-Gated)激活函数
    • GELU 函数:GELU(Gaussian Error Linear Unit,高斯误差线性单元)也是一种通过门控机制来调整其输出值的激活函数,和 Swish 函数比较类似
    • Maxout 单元:Maxout 单元也是一种分段线性函数,Sigmoid 型函数、ReLU 等激活函数的输入是神经元的净输入 𝑧,是一个标量,而 Maxout 单元的输入是上一层神经元的全部原始输出,是一个向量

4.2 网络结构

  • 前馈网络
    • 前馈网络中各个神经元按接收信息的先后分为不同的组,每一组可以看作一个神经层,每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元,整个网络中的信息是朝一个方向传播,没有反向的信息传播,可以用一个有向无环路图表示
  • 记忆网络
    • 记忆网络也称为反馈网络,网络中的神经元不但可以接收其他神经元的信息,也可以接收自己的历史信息,和前馈网络相比,记忆网络中的神经元具有记忆功能,在不同的时刻具有不同的状态,记忆神经网络中的信息传播可以是单向或双向传递,因此可用一个有向循环图或无向图来表示
  • 图网络
    • 前馈网络和记忆网络的输入都可以表示为向量或向量序列,但实际应用中很多数据是图结构的数据,比如知识图谱、社交网络、分子网络等
    • 图网络是定义在图结构数据上的神经网络,图中每个节点都由一个或一组神经元构成,节点之间的连接可以是有向的,也可以是无向的,每个节点可以收到来自相邻节点或自身的信息
      在这里插入图片描述

4.3 前馈神经网络

  • 前馈神经网络(Feedforward Neural Network,FNN)是最早发明的简单人工神经网络,前馈神经网络也经常称为多层感知器(Multi-Layer Perceptron,MLP),但多层感知器的叫法并不是十分合理,因为前馈神经网络其实是由多层的 Logistic 回归模型(连续的非线性函数)组成,而不是由多层的感知器(不连续的非线性函数)组成
    • 各神经元分别属于不同的层,每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层
    • 第 0 层称为输入层,最后一层称为输出层,其他中间层称为隐藏层
    • 整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示
      在这里插入图片描述

4.4 反向传播算法

  • 梯度下降法需要计算损失函数对参数的偏导数,如果通过链式法则逐一对每个参数进行求偏导比较低效,在神经网络的训练中经常使用反向传播算法来高效地计算梯度
  • 第 𝑙 层的误差项可以通过第 𝑙 + 1 层的误差项计算得到,这就是误差的反向传播(BackPropagation,BP),反向传播算法的含义是:第 𝑙 层的一个神经元的误差项(或敏感性)是所有与该神经元相连的第 𝑙 + 1 层的神经元的误差项的权重和,然后再乘上该神经元激活函数的梯度
  • 使用误差反向传播算法的前馈神经网络训练过程可以分为以下三步
    • 前馈计算每一层的净输入 z ( l ) \boldsymbol{z}^{(l)} z(l) 和激活值 a ( l ) \boldsymbol{a}^{(l)} a(l),直到最后一层;
    • 反向传播计算每一层的误差项 δ ( l ) \delta^{(l)} δ(l)
    • 计算每一层参数的偏导数,并更新参数

5. 卷积神经网络

卷积神经网络(CNN)原理讲解

  • 卷积神经网络(Convolutional Neural Network,CNN 或 ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络,卷积神经网络最早主要是用来处理图像信息,在用全连接前馈网络来处理图像时,会存在以下两个问题:参数太多局部不变性特征

5.1 卷积

卷积(Convolution),也叫褶积,是分析数学中一种重要的运算,在信号处理或图像处理中,经常使用一维或二维卷积

5.1.1 一维卷积
  • 一维卷积经常用在信号处理中,用于计算信号的延迟累积。假设一个信号发生器每个时刻 t 产生一个信号 x t x_t xt,其信息的衰减率为 w k w_k wk,即在 k − 1 个时间步长后,信息为原来的 w k w_k wk 倍,假设 w 1 = 1 , w 2 = 1 / 2 , w 3 = 1 / 4 w_1 = 1, w_2 = 1/2, w_3 = 1/4 w1=1,w2=1/2,w3=1/4,那么在时刻 t 收到的信号 y t y_t yt 为当前时刻产生的信息和以前时刻延迟信息的叠加
    y t = 1 × x t + 1 / 2 × x t − 1 + 1 / 4 × x t − 2 = w 1 × x t + w 2 × x t − 1 + w 3 × x t − 2 = ∑ k = 1 3 w k x t − k + 1 . \begin{aligned} y_{t}& =1\times x_{t}+1/2\times x_{t-1}+1/4\times x_{t-2} \\ &=w_1\times x_t+w_2\times x_{t-1}+w_3\times x_{t-2} \\ &=\sum_{k=1}^3w_kx_{t-k+1}. \end{aligned} yt=1×xt+1/2×xt1+1/4×xt2=w1×xt+w2×xt1+w3×xt2=k=13wkxtk+1.
  • w 1 , w 2 , ⋯ w_1, w_2, ⋯ w1,w2, 称为滤波器(Filter)或卷积核(Convolution Kernel),假设滤波器长度为 K K K,它和一个信号序列 x 1 , x 2 , ⋯ x_1, x_2, ⋯ x1,x2, 的卷积为
    y t = ∑ k = 1 K w k x t − k + 1 . y_t=\sum_{k=1}^Kw_kx_{t-k+1}. yt=k=1Kwkxtk+1.
  • 信号序列 𝒙 和滤波器 𝒘 的卷积定义为,其中 ∗ ∗ 表示卷积运算,一般情况下滤波器的长度 𝐾 远小于信号序列 𝒙 的长度
    y = w ∗ x \boldsymbol{y}=\boldsymbol{w}*\boldsymbol{x} y=wx
    在这里插入图片描述
5.1.2 二维卷积
  • 卷积也经常用在图像处理中.因为图像为一个二维结构,所以需要将一维卷积进行扩展,给定一个图像 X ∈ R M × N X\in\mathbb{R}^{M\times N} XRM×N 和一个滤波器 W ∈ R U × V W\in\mathbb{R}^{U\times V} WRU×V,一般 𝑈 << 𝑀, 𝑉 << 𝑁,其卷积为
    y i j = ∑ u = 1 U ∑ v = 1 V w u v x i − u + 1 , j − v + 1 y_{ij}=\sum_{u=1}^U\sum_{v=1}^Vw_{uv}x_{i-u+1,j-v+1} yij=u=1Uv=1Vwuvxiu+1,jv+1

  • 输入信息 X \boldsymbol{X} X 和滤波器 W \boldsymbol{W} W 的二维卷积定义为
    Y = W ∗ X \boldsymbol{Y}=\boldsymbol{W}*\boldsymbol{X} Y=WX
    在这里插入图片描述

  • 图像处理中常用的均值滤波(Mean Filter)就是一种二维卷积,将当前位置的像素值设为滤波器窗口中所有像素的平均值,即 w u v = 1 U V w_{uv}=\frac{1}{UV} wuv=UV1

  • 在图像处理中,卷积经常作为特征提取的有效方法,一幅图像在经过卷积操作后得到结果称为特征映射(Feature Map)
    在这里插入图片描述

5.2 互相关

  • 在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征,在计算卷积的过程中,需要进行卷积核翻转,在具体实现上,一般会以互相关操作来代替卷积,从而减少一些不必要的操作或开销
    • 翻转指从两个维度(从上到下、从左到右)颠倒次序,即旋转 180 度
    • 互相关(Cross-Correlation)是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现,互相关和卷积的区别仅仅在于卷积核是否进行翻转,因此互相关也可以称为不翻转卷积

5.3 卷积神经网络

  • 卷积神经网络一般由卷积层、汇聚层和全连接层构成
5.3.1 用卷积来代替全连接
  • 在全连接前馈神经网络中,如果第 𝑙 层有 M l M_l Ml 个神经元,第 𝑙 − 1 层有 M l − 1 M_{l−1} Ml1 个神经元,连接边有 M l × M l − 1 M_l × M_{l−1} Ml×Ml1 个,也就是权重矩阵有 M l × M l − 1 M_l × M_{l−1} Ml×Ml1 个参数.当 M l M_l Ml M l − 1 M_{l−1} Ml1 都很大时,权重矩阵的参数非常多,训练的效率会非常低
  • 如果采用卷积来代替全连接,在卷积层(假设是第 𝑙 层)中的每一个神经元都只和前一层(第 𝑙 − 1 层)中某个局部窗口内的神经元相连,构成一个局部连接网络,卷积层和前一层之间的连接数大大减少,权重共享可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征,因此,如果要提取多种特征就需要使用多个不同的卷积核
    在这里插入图片描述
5.3.2 卷积层
  • 卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器
  • 特征映射(Feature Map)为一幅图像(或其他特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征,在输入层,特征映射就是图像本身
    • 如果是灰度图像,就是有一个特征映射,输入层的深度 𝐷 = 1
    • 如果是彩色图像,分别有 RGB 三个颜色通道的特征映射,输入层的深度 𝐷 = 3
  • 卷积层的三维结构表示
    在这里插入图片描述
5.3.3 汇聚/池化层

卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少,如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合,为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合

  • 汇聚/池化层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行特征选择,降低特征数量,从而减少参数数量
5.3.4 卷积网络的整体结构
  • 一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成,常用卷积网络整体结构如下图
    • 目前,卷积网络的整体结构趋向于使用更小的卷积核(比如 1 × 1 和 3 × 3)以及更深的结构(比如层数大于 50)
    • 此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低,趋向于全卷积网络
      在这里插入图片描述
5.3.4 典型卷积神经网络 AlexNet
  • AlexNet 是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的技术方法,比如使用 GPU 进行并行训练,采用了 ReLU 作为非线性激活函数,使用 Dropout 防止过拟合,使用数据增强来提高模型准确率等
  • AlexNet 的结构如下图所示,包括 5 个卷积层、3 个汇聚层和 3 个全连接层(其中最后一层是使用 Softmax 函数的输出层)
    在这里插入图片描述

6. 网络优化与正则化

虽然神经网络具有非常强的表达能力,但应用神经网络模型到机器学习时依然存在一些问题

  • 1. 优化问题
    • 神经网络的损失函数是一个非凸函数,找到全局最优解通常比较困难
    • 深度神经网络的参数通常非常多,训练数据也比较大,因此也无法使用计算代价很高的二阶优化方法,而一阶优化方法的训练效率通常比较低
    • 深度神经网络存在梯度消失或爆炸问题,导致基于梯度的优化方法经常失效
  • 2. 泛化问题
    • 由于深度神经网络的复杂度比较高,并且拟合能力很强,很容易在训练集上产生过拟合,因此在训练深度神经网络时,同时也需要通过一定的正则化方法来改进网络的泛化能力

6.1 网络优化

网络优化是指寻找一个神经网络模型来使得经验(或结构)风险最小化的过程,包括模型选择以及参数学习等,深度神经网络是一个高度非线性的模型,其风险函数是一个非凸函数,因此风险最小化是一个非凸优化问题

  • 高维变量的非凸优化
    • 低维变量的问题

      • 低维空间的非凸优化问题主要是存在一些局部最优点:基于梯度下降的优化方法会陷入局部最优点,因此在低维空间中非凸优化的主要难点是如何选择初始化参数和逃离局部最优点,深度神经网络的参数非常多,其参数学习是在高维空间中的非凸优化问题
    • 鞍点

      • 在高维空间中,非凸优化的难点并不在于如何逃离局部最优点,而是如何逃离鞍点(Saddle Point),鞍点的叫法是因为其形状像马鞍
      • 鞍点的梯度是 0,但是在一些维度上是最高点,在另一些维度上是最低点,在高维空间中大部分驻点都是鞍点
      • 基于梯度下降的优化方法会在鞍点附近接近于停滞,很难从这些鞍点中逃离,因此,随机梯度下降对于高维空间中的非凸优化问题十分重要,通过在梯度方向上引入随机性,可以有效地逃离鞍点
        在这里插入图片描述
    • 平坦最小值

      • 深度神经网络的参数非常多,并且有一定的冗余性,这使得每单个参数对最终损失的影响都比较小,因此会导致损失函数在局部最小解附近通常是一个平坦的区域,称为平坦最小值(Flat Minima)
      • 一般而言,当一个模型收敛到一个平坦的局部最小值时,其鲁棒性会更好,即微小的参数变动不会剧烈影响模型能力;而当一个模型收敛到一个尖锐的局部最小值时,其鲁棒性也会比较差,具备良好泛化能力的模型通常应该是鲁棒的,因此理想的局部最小值应该是平坦的
        在这里插入图片描述

6.2 优化算法

  • 小批量梯度下降

    • 在训练深度神经网络时,训练数据的规模通常都比较大,如果在梯度下降时,每次迭代都要计算整个训练数据上的梯度,这就需要比较多的计算资源,另外大规模训练集中的数据通常会非常冗余,也没有必要在整个训练集上计算梯度,因此在训练深度神经网络时,经常使用小批量梯度下降法(Mini-Batch Gradient Descent)
    • 影响小批量梯度下降法的主要因素有:1)批量大小 K K K、2)学习率 𝛼、3)梯度估计
  • 1. 批量大小选择

    • 批量大小不影响随机梯度的期望,但是会影响随机梯度的方差
    • 批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率;而批量大小较小时,需要设置较小的学习率,否则模型会不收敛,学习率通常要随着批量大小的增大而相应地增大
    • 批量大小越大,下降效果越明显,并且下降曲线越平滑,如果按整个数据集上的回合(Epoch)数来看,则是批量样本数越小,下降效果越明显,适当小的批量会导致更快的收敛
    • 批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值
      1  回合(Epoch) = ( 训练样本的数量 N 批量大小 K ) × 迭代(Iteration) 1\text{ 回合(Epoch)}=(\frac{\text{训练样本的数量}N}{\text{批量大小}K})\times\text{迭代(Iteration)} 1 回合(Epoch)=(批量大小K训练样本的数量N)×迭代(Iteration)
  • 2. 学习率调整

    • 学习率是神经网络优化时的重要超参数.在梯度下降法中,学习率 𝛼 的取值非常关键,如果过大就不会收敛,如果过小则收敛速度太慢
    • 常用的学习率调整方法包括学习率衰减、学习率预热、周期性学习率调整以及一些自适应调整学习率的方法,比如 AdaGrad、RMSprop、AdaDelta 等
  • 3. 梯度估计修正

    • 在随机(小批量)梯度下降法中,如果每次选取样本数量比较小,损失会呈现振荡的方式下降,随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性
    • 一种有效地缓解梯度估计随机性的方式是:通过使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向,从而提高优化速度
  • 神经网络常用优化方法
    在这里插入图片描述

6.3 参数初始化

  • 神经网络的参数学习是一个非凸优化问题,当使用梯度下降法来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力,参数初始化的方式通常有以下三种
    • 预训练初始化:通常,一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值
    • 随机初始化:对每个参数都随机初始化,使得不同神经元之间的区分性更好
    • 固定值初始化:对一些特殊参数,可根据经验用一个特殊的固定值来进行初始化,如偏置(Bias)通常用 0 来初始化

6.4 数据预处理

  • 一般而言,样本特征由于来源以及度量单位不同,它们的尺度(Scale)(即取值范围)往往差异很大,如果一个机器学习算法在缩放全部或部分特征后不影响它的学习和预测,就称该算法具有尺度不变性
  • 归一化
    • 归一化(Normalization)方法泛指把数据特征转换为相同尺度的方法,比如把数据特征映射到 [0, 1] 或 [−1, 1] 区间内,或者映射为服从均值为 0、方差为 1 的标准正态分布
  • 逐层归一化
    • 逐层归一化(Layer-wise Normalization)是将传统机器学习中的数据归一化方法应用到深度神经网络中,对神经网络中隐藏层的输入进行归一化,从而使得网络更容易训练
    • 几种常用的逐层归一化方法:批量归一化、层归一化、权重归一化和局部响应归一化

6.5 超参数优化

  • 在神经网络中,除了可学习的参数之外,还存在很多超参数,常见超参数有以下三类
    • 网络结构,包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等
    • 优化参数,包括优化方法、学习率、小批量的样本数量等
    • 正则化系数
  • 超参数优化(Hyperparameter Optimization)主要存在两方面困难
    • 1、超参数优化是一个组合优化问题,无法像一般参数那样通过梯度下降方法来优化,也没有一种通用有效的优化方法
    • 2、评估一组超参数配置的时间代价非常高,从而导致一些优化方法(如演化算法)在超参数优化中难以应用
  • 对于超参数的配置,比较简单的方法有网格搜索、随机搜索、贝叶斯优化、动态资源分配和神经架构搜索

6.6 网络正则化

  • 机器学习模型的关键是泛化问题,即在样本真实分布上的期望风险最小化,而训练数据集上的经验风险最小化和期望风险并不一致,由于神经网络的拟合能力非常强,其在训练数据上的错误率往往都可以降到非常低,甚至可以到 0,从而导致过拟合,因此,如何提高神经网络的泛化能力反而成为影响模型能力的最关键因素
  • 正则化(Regularization)
    • 是一类通过限制模型复杂度,从而避免过拟合,提高模型泛化能力的方法,比如:权重衰减、提前停止、数据增强、引入约束、增加先验等
      • 权重衰减是指在每次参数更新时,引入一个衰减系数
      • 在使用梯度下降法进行优化时,可使用一个和训练集独立的样本集合,称为验证集,并用验证集上的错误来代替期望错误,当验证集上的错误率不再下降,就提前停止迭代
      • 在数据量有限的情况下,可以通过数据增强来增加数据量,提高模型鲁棒性,避免过拟合,图像数据的增强方法主要有:旋转、翻转、缩放、平移、加入随机噪声
      • 假设训练集中有一些样本标签是被错误标注的,那么最小化这些样本上的损失函数会导致过拟合,一种改善的正则化方法是标签平滑,即在输出标签中添加噪声来避免模型过拟合

7. 注意力机制

神经网络中可以存储的信息量称为网络容量(Network Capacity),一般来讲,要存储的信息越多,神经元数量就要越多或者网络要越复杂,进而导致神经网络的参数成倍地增加,大脑神经系统有两个重要机制可以解决信息过载问题:注意力和记忆机制

7.1 认知神经学中的注意力

  • 注意力是一种人类不可或缺的复杂认知功能,指人可以在关注一些信息的同时忽略另一些信息的选择能力
    • 人脑可以有意或无意地从大量输入信息中选择小部分的有用信息来重点处理,并忽略其他信息,这种能力就叫作注意力(Attention)
    • 注意力可以作用在外部的刺激(听觉、视觉、味觉等),也可以作用在内部的意识(思考、回忆等)
  • 注意力一般分为两种
    • 自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention),也叫选择性注意力,是指:有预定目的、依赖任务的,主动有意识地聚焦于某一对象的注意力
    • 自下而上的无意识的注意力,称为基于显著性的注意力(Saliency-Based Attention),是指:由外界刺激驱动的注意,不需要主动干预,也和任务无关

7.2 注意力机制

  • 在计算能力有限的情况下,注意力机制也可称为注意力模型,注意力机制(Attention Mechanism)作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段

    • 当用神经网络来处理大量的输入信息时,也可以借鉴人脑的注意力机制,只选择一些关键的信息输入进行处理,来提高神经网络的效率
    • 注意力机制主要是用来做信息筛选,从输入信息中选取相关的信息
    • 注意力机制可以单独使用,但更多地用作神经网络中的一个组件
  • 注意力机制的计算可以分为两步

    • 一是在所有输入信息上计算注意力分布
    • 二是根据注意力分布来计算输入信息的加权平均
  • 注意力机制的变体

    • 硬性注意力:软性注意力选择的信息是所有输入向量在注意力分布下的期望,而硬性注意力(Hard Attention)只关注某一个输入向量
    • 键值对注意力:可以用键值对(key-value pair)格式来表示输入信息,其中 “键” 用来计算注意力分布,“值” 用来计算聚合信息
    • 多头注意力:多头注意力(Multi-Head Attention)是利用多个查询 Q = [ q 1 , ⋯   , q M ] \boldsymbol{Q}=[\boldsymbol{q_1},\cdots,\boldsymbol{q_M}] Q=[q1,,qM],来并行地从输入信息中选取多组信息,每个注意力关注输入信息的不同部分
    • 结构化注意力:如果输入信息本身具有层次(Hierarchical)结构,比如文本可以分为:词、句子、段落、篇章等不同粒度的层次,可以使用层次化的注意力来进行更好的信息选择
  • 自注意力模型

    • 当使用神经网络来处理一个变长的向量序列时,通常可以使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列,基于卷积或循环网络的序列编码都是一种局部的编码方式,只建模了输入信息的局部依赖关系,如果要建立输入序列之间的长距离依赖关系,可以使用以下两种方法
      • 1、增加网络的层数,通过一个深层网络来获取远距离的信息交互
      • 2、使用全连接网络,全连接网络是一种非常直接的建模远距离依赖的模型,但是无法处理变长的输入序列
    • 不同的输入长度,其连接权重的大小也是不同的,这时就可以利用注意力机制来 “动态” 地生成不同连接的权重,这就是自注意力模型(Self-Attention Model),也称内部注意力(Intra-Attention)
    • 为了提高模型能力,自注意力模型经常采用查询-键-值(Query-Key-Value,QKV)模式
      在这里插入图片描述

8. 强化学习

  • 在强化学习中,有两个可以进行交互的对象:智能体和环境

    • 智能体(Agent)可以感知外界环境的状态(State)和反馈的奖励(Reward),并进行学习和决策,智能体的决策功能是指根据外界环境的状态来做出不同的动作(Action),而学习功能是指根据外界环境的奖励来调整策略
    • 环境(Environment)是智能体外部的所有事物,并受智能体动作的影响而改变其状态,并反馈给智能体相应的奖励
  • 强化学习的基本要素

    • 状态 s s s 是对环境的描述,可以是离散的或连续的,其状态空间为 S S S
    • 动作 a a a 是对智能体行为的描述,可以是离散的或连续的,其动作空间为 A A A
    • 策略 π ( a ∣ s ) \pi(a|s) π(as) 是智能体根据环境状态 s s s 来决定下一步动作 a a a 的函数
    • 状态转移概率 p ( s ′ ∣ s , a ) p(s^′|s, a) p(ss,a) 是在智能体根据当前状态 s s s 做出一个动作 a a a 之后,环境在下一个时刻转变为状态 s ′ s^′ s 的概率
    • 即时奖励 r ( s , a , s ′ ) r(s, a, s^′) r(s,a,s) 是一个标量函数,即智能体根据当前状态 s s s 做出动作 a a a 之后,环境会反馈给智能体一个奖励,这个奖励也经常和下一个时刻的状态 s ′ s^′ s 有关
  • 深度强化学习

    • 在强化学习中,一般需要建模策略 π ( a ∣ s ) \pi(a|s) π(as) 和值函数 V π ( s ) , Q π ( s , a ) V^\pi(s),Q^\pi(s,a) Vπ(s),Qπ(s,a),早期的强化学习算法主要关注状态和动作都是离散且有限的问题,可以使用表格来记录这些概率,但在很多实际问题中,有些任务的状态和动作的数量非常多
    • 为了有效地解决这些问题,可以设计一个更强的策略函数(比如深度神经网络),使得智能体可以应对复杂的环境,学习更优的策略,并具有更好的泛化能力
    • 深度强化学习(Deep Reinforcement Learning)是将强化学习和深度学习结合在一起,用强化学习来定义问题和优化目标,用深度学习来解决策略和值函数的建模问题,然后使用误差反向传播算法来优化目标函数
;