基础知识

历史背景

  • 人工智能、机器学习和深度学习之间关系?
    • 人工智能:计算机科学的一个分支 → 它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
    • 机器学习:实现人工智能的方法 → 研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
    • 深度学习:实现机器学习的技术 → 学习样本数据的内在规律和表示层次 → 最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
  • 符号主义与连接主义是什么?有什么区别?
    • 符号主义:又称逻辑主义、计算机学派,主张用公理和逻辑体系搭建一套人工智能系统
    • 连接主义:又叫仿生学派,主张模仿人类的神经元,用神经网络的连接机制实现人工智能

模型相关

  • 单层感知机模型是什么?

    • 单层感知机目标是将被感知数据集划分为两类的分离超平面,并计算出该超平面。单层感知机是二分类的线性分类模型,输入是被感知数据集的特征向量,输出时数据集的类别{+1,-1}

      $$
      sign(x)=\begin{cases} +1, x>0\ -1, x<0\end{cases}
      $$

    • 其中单层感知机使用到的激活函数$sign(x)$被称为阶跃函数,与逻辑回归中使用的激活函数$sigmoid(x)$区别:

      • $sign(x)$:大于 0 的分为 1,小于 0 的分为-1
      • $sigmoid(x)$:大于 0.5 的分为 1,小于分为 0.5 的分为 0
    • 单层感知机缺陷:是线性分类模型(不能拐弯),不能解决异或问题

  • 神经元模型是什么样的?

神经元模型

【inputs】:输入参数

【connection weights】:权重

【total input】:总输入

【activation function】:激活函数

【newron output】:神经元输出

神经元训练过程

  • 神经元网络训练过程大概是什么样的?

神经元网络训练过程

  • 前馈神经网络 - 全连接神经网络 - 多层感知机是什么?有什么特点?

    image-20211101162028602

    • 各神经元分别属于不同的层,层内无连接
    • 相邻两层之间的神经元全部两两连接
    • 整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。

卷积神经网络 - CNN

关键点:局部感知、权值共享(Convolution 卷积),下采样(Pooling 池化)

三大重点概念

  • 局部感知:

    • 做法:使用神经元去接受部分的图像信息,在高层将感受不同局部的神经元结合起来得到全局信息
    • 作用:有效降低参数数目
  • 权值共享

    • 做法:每个神经元使用同一个【卷积核】去卷积图像,利用滤波器进行图像不同特征的放映
    • 卷积层的每一个卷积滤波器重复的作用于整个感受野中,每一个卷积滤波器共享相同的参数。
    • 对图像进行特征提取时不用考虑局部特征的位置。
    • 使要学习的卷积神经网络模型参数(w 和 b)数量大大降低。
  • 下采样:通过池化层进行下采样

    • 理解:对卷积层所输出的特征图【进一步特征抽样
    • 池化层分类
      • Max Pooling(最大值池化):取“池化视野”矩阵中的最大值。
      • Mean Pooling(平均值池化):取“池化视野”矩阵中的平均值。

CNN 基本单元

卷积层

卷积层作用

  • 【提取图像特征】:卷积核的权重是可以学习的,由此可以猜测,在高层神经网络中,卷积操作能突破传统滤波器的限制,根据目标函数提取出想要的特征。卷积操作被广泛应用与图像处理领域,不同卷积核可以提取不同的特征,例如边沿、线性、角等特征。在深层卷积神经网络中,通过卷积操作可以提取出图像低级到复杂的特征。
  • 【做到局部感知,参数共享】:该特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合。之所以可以“参数共享”,是因为样本存在局部相关的特性。

运算相关

  • 为什么要填充 padding?
    • 在进行卷积运算时,输入矩阵的边缘会比矩阵内部的元素计算次数少,且输出矩阵的大小会在卷积运算中相比较于输入的尺寸变小。因此,可在输入矩阵的四周补零,称为 padding
  • 步幅 Stride 是什么?
    • 卷积窗口的滑动顺序:最左上方开始,按从左往右、从上往下的顺序
    • 每次滑动的行数和列数称为步幅(stride)。
  • 多输入通道(multi-channel)是什么意思?为什么要有多输入通道?
    • 真实数据的维度经常较高,例如:彩色图像:3 维(RGB)3 个颜色通道,假设彩色图像的高和宽分别是 h 和 w,那么它可以表示为一个 3 _ h _ w 的多维数组。大小 3 即为:通道数。
    • 当输入数据含多个通道时,一般需要构造一个输入通道数与输入数据的通道数相同的卷积核,从而能够与含多通道的输入数据做卷积运算。

池化层

池化层作用

  • 用于降低数据体的空间尺寸 → 减少网络中参数数量 → 减少计算资源耗费,也可以有效控制【过拟合】

  • 【不变性】:这种不变性包括 translation(平移),rotation(旋转),scale(尺度)。特征不变性,也就是在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的 resize,平时一张狗的图像被缩小了一倍还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

  • 两种池化层的不同应用场景:

    • 最大池化(max pooling):能很好的保留纹理特征
    • 平均池化(average pooling):能很好的保留背景,但容易使得图片变模糊

归一化层

从数学角度理解

归一化 - 标准化

img

  • 归一化和标准化区别

img

  • 什么时候该用归一化,什么时候该用标准化?

img

回到神经网络中理解

若神经网络训练时遇到收敛速度较慢,或者“梯度爆炸”等无法训练的情况发生时都可以尝试用 BN 来解决。

同时,常规使用情况下同样可以加入 BN 来加速模型训练,甚至提升模型精度。

※批归一化(BatchNorm - BN)

  • 【概念】:对每一批数据进行归一化。
  • 为什么需要 BN?

我们知道网络一旦 train 起来,那么参数就要发生更新,除了输入层的数据外(因为输入层数据,我们已经人为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。以网络第二层为例:网络的第二层输入,是由第一层的参数和 input 计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal Covariate Shift”。BN 的提出,就是要解决在训练过程中,中间层数据分布发生改变的情况。

  • BN 做了什么?

img

  1. 求每一个训练批次数据的均值
  2. 求每一个训练批次数据的方差
  3. 使用求得的均值和方差对该批次的训练数据做归一化,获得 0-1 分布。其中 εε 是为了避免除数为 0 时所使用的微小正数。
  4. 尺度变换和偏移:将 xixi 乘以 γγ 调整数值大小,再加上 ββ 增加偏移后得到 yiyi,这里的 γγ 是尺度因子,ββ 是平移因子。这一步是 BN 的精髓,由于归一化后的 xixi 基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,我们引入两个新的参数:γγ,ββ。 γγ 和 ββ 是在训练时网络自己学习得到的。
  • 例子

使用Batch Normalization

a 中左图是没有经过任何处理的输入数据,曲线是 sigmoid 函数,如果数据在梯度很小的区域,那么学习率就会很慢甚至陷入长时间的停滞。减均值除方差后,数据就被移到中心区域如右图所示,对于大多数激活函数而言,这个区域的梯度都是最大的或者是有梯度的(比如 ReLU),这可以看做是一种对抗梯度消失的有效手段。对于一层如此,如果对于每一层数据都那么做的话,数据的分布总是在随着变化敏感的区域,相当于不用考虑数据分布变化了,这样训练起来更有效率。

那么为什么要有第 4 步,不是仅使用减均值除方差操作就能获得目的效果吗?我们思考一个问题,减均值除方差得到的分布是正态分布,我们能否认为正态分布就是最好或最能体现我们训练样本的特征分布呢?不能,比如数据本身就很不对称,或者激活函数未必是对方差为 1 的数据最好的效果,比如 Sigmoid 激活函数,在-1~1 之间的梯度变化不大,那么非线性变换的作用就不能很好的体现,换言之就是,减均值除方差操作后可能会削弱网络的性能!针对该情况,在前面三步之后加入第 4 步完成真正的 batch normalization。

BN 的本质就是利用优化变一下方差大小和均值位置,使得新的分布更切合数据的真实分布,保证模型的非线性表达能力。BN 的极端的情况就是这两个参数等于 mini-batch 的均值和方差,那么经过 batch normalization 之后的数据和输入完全一样,当然一般的情况是不同的。

  • BN 优点
    • 加快训练速度
    • 可以省去 dropout,L1, L2 等正则化处理方法
    • 提高模型训练精度

循环神经网络 - RNN

  • MLP(多层感知机)存在什么缺陷?

    • 层与层之间有连接,每层的节点之间是【无连接】的
    • 输入和输出的【维数】是固定的,不能随意改变,无法处理边长的序列数据
    • 词汇结点位置无关,无法对语言中的词序进行建模
  • RNN 是什么?说说你的理解

    RNN

    之前学习的人工神经网络和卷积神经网络的元素是相互独立的,输入输出都是独立的,而 RNN 具有“一定的记忆能力”,输入不仅仅依赖与前一个输入,还依赖与前面的“记忆”

  • RNN 存在什么问题?

    • 梯度消失
    • 梯度爆炸
    • 长期依赖问题(Long-Term Dependencies) : 很久以前的输入,对当前时刻的网络影响较小,反向传播的梯度也很难影响很久以前的输入。输出的根据离输出时刻太远,可能会造成梯度消失/梯度爆炸,只能学习到短期的依赖关系。
  • 上述说到的 RNN 的问题,该如何进行改进?

    • 梯度爆炸问题
      • 权重衰减解决方案:通过给参数增加 L1 或 L2 范数的正则化项来限制参数的取值范围。
      • 梯度截断解决方案:当梯度的模⼤于⼀定阈值时,就将它截断成为⼀个较小的数。
    • 梯度消失问题
      • 循环边改为线性依赖关系
      • 增加非线性,使用 Gate 门控机制,把信息想象成水流,用 Gate 去控制水流通过

长短期记忆 LSTM - Long Short-Term Memory

自编码器 Auto-Encoder(AE)

基本意思就是一个隐藏层的神经网络,输入输出都是 x,并且输入维度一定要比输出维度大,属于无监督学习。一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。

可以理解成是一种【数据压缩方式】把数据 X → 有损失的编码为低维的隐向量 Z → 通过隐向量 Z 解码重构回 X

自编码器架构

由两部分组成:【编码器 Encoder】+【解码器 Decoder】

  • 【编码器】:这部分能将输入压缩成潜在空间表征,可以用编码函数 h=f(x)表示。
  • 【解码器】:这部分能重构来自潜在空间表征的输入,可以用解码函数 r=g(h)表示。

自编码器的变种

变分自编码器 - VAE

变分自编码器,是一种深度生成模型,其思想是利用神经网络来分别建模两个复杂的条件概率密度函数。

简单理解:首先有一个能够学习到数据的分布信息的模块,称之为【编码器】。这个编码器不仅含有数据分布信息,还融入了一些随机性因素,这个随机性因素称之为【高斯噪声】,

生成对抗网络 GAN

在该网络中有两个模型:【生成模型】+ 【判别模型】

  • 生成模型 G:接受一个随机的噪声 𝑧,通过噪声 𝑧 生成图片记做 𝐺(𝑧)。G 的目标就是生成假的图片去骗过判别网络 D
  • 判别模型 D:判别一张图片是“real”或“fake”。输入 𝑥 代表一张图片,输出 𝐷(𝑥)代表 𝑥 为真实图片的概率,如果为 1,代表是真实的图片,而输出为 0,则代表不是真实的图片。

强化学习 - LR

  • 强化学习 - Reinforcement Learning

简介

强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。(目的)

其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。(来源)

由这个例子,我们可以很自然联系到一个著名实验 —— 巴甫洛夫的条件反射实验

它从动物行为研究和优化控制两个领域独立发展,最终经 Bellman 之手将其抽象为【马尔科夫决策过程(MarkovDecisionProcess,MDP)】。

  • 强化学习具有【普适性】

特点

  • 基本是以一种闭环的形式
  • 不会直接指示选择哪种行动(actions);
  • 一系列的 actions 和奖励信号(reward signals)都会影响之后较长的时间;

决策步骤

决策步骤

强化学习决策实现过程需要设定一个 agent(图中大脑部分),agent 能够接收当前环境的一个 observation,agent 还能接收当它执行某个 action 后的 reward,而环境(environment)则是 agent 交互的对象,它是一个行为可控的对象,agent 一开始不知道环境会对不同的 action 做出什么样的反应,而环境会通过 observation 告诉 agent 当前的环境状态,同时环境能够根据可能的最终结果反馈给 agent 一个 reward,它表明了 agent 做出的决策有多好或者不好,整个强化学习优化的目标就是最大化积累 reward。

就像巴甫洛夫的狗一样,对象 A 通过做出行为得到的奖励改变自己的决策从而最大化奖励。而这个奖励是由环境对象接受了对象 A 的行为后给予的反馈;

迁移学习 TL

人在实际生活中有很多迁移学习,比如学会骑自行车,就比较容易学摩托车,学会了 C 语言,在学一些其它编程语言会简单很多。那么机器是否能够像人类一样举一反三呢?

image-20211123214620845

  1. 研究可以用哪些知识在不同的领域或者任务中进行迁移学习,即不同领域之间有哪些共有知识可以迁移。
  2. 研究在找到了迁移对象之后,针对具体问题所采用哪种迁移学习的特定算法,即如何设计出合适的算法来提取和迁移共有知识。
  3. 研究什么情况下适合迁移,迁移技巧是否适合具体应用,其中涉及到负迁移的问题。

当领域间的概率分布差异很大时,上述假设通常难以成立,这会导致严重的负迁移问题。
负迁移是旧知识对新知识学习的阻碍作用,比如学习了三轮车之后对骑自行车的影响,和学习汉语拼音对学英文字母的影响
研究如何利用正迁移,避免负迁移

基于实例的迁移

基于实例的迁移学习研究的是,如何从源领域中挑选出,对目标领域的训练有用的实例,比如对源领域的有标记数据实例进行有效的权重分配,让源域实例分布接近目标域的实例分布,从而在目标领域中建立一个分类精度较高的、可靠地学习模型。
因为,迁移学习中源领域与目标领域的数据分布是不一致,所以源领域中所有有标记的数据实例不一定都对目标领域有用。戴文渊等人提出的 TrAdaBoost 算法就是典型的基于实例的迁移。
基于实例的迁移

基于特征的迁移

  • 特征选择

基于特征选择的迁移学习算法,关注的是:如何找出源领域与目标领域之间共同的特征表示,然后利用这些特征进行知识迁移。

  • 特征映射

基于特征映射的迁移学习算法,关注的是如何将源领域和目标领域的数据从原始特征空间映射到新的特征空间中去。
这样,在该空间中,源领域数据与的目标领域的数据分布相同,从而可以在新的空间中,更好地利用源领域已有的有标记数据样本进行分类训练,最终对目标领域的数据进行分类测试。

特征映射

基于共享参数的迁移

基于共享参数的迁移研究的是如何找到源数据和目标数据的空间模型之间的共同参数或者先验分布,从而可以通过进一步处理,达到知识迁移的目的,假设前提是,学习任务中的的每个相关模型会共享一些相同的参数或者先验分布。

基于共享参数的迁移

深度学习需要大量的高质量标注数据,Pre-training + fine-tuning 是现在深度学习中一个非常流行的 trick,尤其是以图像领域为代表,很多时候会选择预训练的 ImageNet 对模型进行初始化。

深度学习应用 - CV

目标检测 - Object Detection

目标检测中的核心问题:

  • 【分类问题】:即图片(或某个区域)中的图像属于哪个类别。
  • 【定位问题】:目标可能出现在图像的任何位置。
  • 【大小问题】:目标有各种不同的大小。
  • 【形状问题】:目标可能有各种不同的形状。

目标检测算法类别:Two StageOne Stage

目标检测算法

从图中我们可以看出,Two Stage 与 One Stage 对比中,多出来的 Stage 是:生成Regional Proposal过程

选择性搜索

  • 选择搜索算法的主要思想:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取 bounding boxes。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做 bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。

  • 具体步骤:

  1. step0:生成区域集 R
  2. step1:计算区域集 R 里每个相邻区域的相似度 S={s1, s2,…}
  3. step2:找出相似度最高的两个区域,将其合并为新集,添加进 R
  4. step3:从 S 中移除所有与 step2 中有关的子集
  5. step4:计算新集与所有子集的相似度
  6. step5:跳至 step2,直至 S 为空

【交并比 - Intersection-over-Union,IoU】

交并比为目标检测中一个重要的概念,来进行预测框(ground truth)与标注框的重合率来对检测的正确率进行比较。

交并比

【非极大值抑制- Non Maximum Suppression】

非极大值抑制

R-CNN 与其中的缺陷

R-CNN 网络主要依靠:Regional Proposal NetWork(后面我们简称为 RPN)

RPN 的作用:首先在图片上将我们不感兴趣的区域忽视掉,留下一些【可能】感兴趣的区域,接着在留下的区域中进一步挑选,分类。

  • 【缺陷】:
    • 重复计算,每个 regionproposal(候选区域),都需要经过一个 AlexNet 特征提取,为所有的 RoI(regionof interest)(即感兴趣的区域)提取特征大约花费 47 秒,占用空间
    • selectivesearch 方法生成 regionproposal,对一帧图像,需要花费 2 秒
    • 三个模块(提取、分类、回归)是分别训练的,并且在训练时候,对于存储空间消耗较大

Fast R-CNN 与其中缺陷

img

  • 【Classification loss】与【Bounding-box regression loss】

NLP(Natural Language Processing)

NLP - 自然语言处理

旨在教授机器如何处理和理解人类的语言,从而在人与机器之间建立一个简单的沟通渠道。

NLP - 概述

  • 深度学习在 NLP 领域中有哪些应用呢?
    • 自动文摘
    • 文本分类
    • 自动问答
    • 机器翻译
  • 如何理解 NLP?

NLP概念

  • 自然语言处理的处理流程是怎么样的?

自然语言处理 - 处理流程

  1. 语料获取(获取基本的数据,用爬虫获取等)
  2. 数据预处理(进行语料清洗,标注词性等)
  3. 特征工程(将分词后的字、词表示成计算机能够计算处理的类型,比如将中文分词的字符串转成向量矩阵)
  4. 特征选择(选择合适的、表达能力强的特征)
  5. 模型选择(选择合适的机器学习,深度学习模型)
    1. 机器学习模型:KNN,SVN,决策树….
    2. 深度学习模型:CNN,RNN,LSTM….
  6. 模型训练
  7. 模型评估(评估准确率,精准度等指标..)
  8. 投产上线
  • 自然语言处理的两大核心是什么?

    • 自然语言理解(NLU):理解给定文本的含义,将人类的自然语言输入进行分析、计算,产生计算机可以理解和处理的统一形式,需要解决以下几个歧义性
      • 词法歧义性:单词有多重含义
      • 句法歧义性:句子有多重解析树
      • 语义歧义性:句子有多重含义
      • 回指歧义性:前后相同的词不同义
    • 自然语言生成(NLG):将计算机产生的语义表达结果转化为人类可以读懂的自然语言的过程,大致可以分为三个阶段
      • 文本规划:完成结构化数据中基础内容的规划
      • 语句规划:从结构化数据中组合语句,来表达信息流
      • 实现:产生语法通顺的语句
  • 自然语言处理的研究内容是什么?

    • 词法(Lexical)学:研究词的词素(morphemes)构成、词性等
    • 句法(Syntax)学:研究句子结构成分之间的相互关系和组成句子序列的规则
    • 语义(Semantics)学:研究如何从一个语句中词的意义,以及这些词在该语句的句法结构中的作用来推导出该语句的意义。
    • 语用(Pragmatics)学:研究在不同上下文中的语句的应用,以及上下文对语句理解所产生的影响。

NLP - 应用

文本分类 - Text Classification

文本分类(Text Classification) 根据给定文档的内容或主题,自动分配预先定义的类别标签。

  • Text CNN - 基于卷积神经网络(CNN)

TextCNN

  • TextING - 基于图神经网络(GNN)

机器翻译 - Machine Translation

机器翻译(machine translation, MT) 是用计算机把一种语言(源语言,source language)翻译成另一种语言(目标语言,target language)的一门学科和技术。

机器翻译

三个阶段

基于【规则】的翻译方法 → 基于【统计】的翻译方法 → 基于【神经网络】的翻译方法

  • 基于规则的翻译方法:人类语言不遵循一套固定的规则,当增加更多复杂的规则时,翻译结果对于真实世界的文档并不可靠。
  • 基于统计的翻译方法:构建基于统计的翻译系统需要大量的训练数据,其中完全相同的文本被翻译成至少两种语言。
  • 基于神经网络的翻译方法:seq2seq 和 Transformer,都需要 encoder 和 decoder,机器翻译问题某种程度上可以看作是编码问题,即将一种语言编码为另一种语言

自动问答

检索式自动问答的结构如下:

  1. 问句理解
    1. 问题分类:对输入的问题进行处理分类并确定问题类型
    2. 主题焦点提取:实现用户问题的信息需求的精确定位。
    3. 问题扩展:分析问题中的潜在信息,提高答案的召回率
  2. 信息检索:从用户的问题中得到的关键词,对于数据库中的文档与关键词的计算匹配程度,从而获取若干个可能包含答案的候选文章,并且根据它们的相似度进行排序。
  3. 答案抽取:先从文章中提取出可能包含答案的段落,再对段落进行语义分析,抽取段落中所包含的答案。引入诸如语义词典(WordNet),知识库(Freebase)等外部语义资源。

理解问题 → 检索信息 → 答案抽取

生成式问答系统

  • 答案生成模式

生成式问答系统

图神经网络

背景

  • 为什么要研究图神经网络?

因为:卷积神经网络(CNN)无法处理 NonEuclideanStructure 的数据,在 NonEuclideanStructure 的数据上无法保持平移不变性。

  • 什么意思?怎么理解无法保持平移不变性?

通俗理解就是在拓扑图中每个顶点的相邻顶点数目都有可能不同,那么当然无法使用一个同样尺寸的卷积核来进行卷积运算。

我们希望在这样的数据结构(拓扑图)上有效地提取空间特征来进行机器学习,所以图神经网络(GNN)成为了研究的重点。

相关任务

图的组成由小到大可以分为:节点 → 边 → 图,那么我们的任务也可以根据这三个特征层面进行区分:

  • 节点层面(Node Level)的任务

节点层面的任务主要包括分类任务和回归任务。节点层面的任务有很多,学术上使用较多对论文引用网络中的论文节点进行分类,工业界在线社交网络中用户标签的分类、恶意账户检测等。

  • 边层面(Link Level)的任务

边层面的任务主要包括边的分类和预测任务。边的分类是指对边的某种性质进行预测;边预测是指给定的两个节点之间是否会构成边。目前,边层面的任务主要集中在推荐业务中。

  • 图层面(Graph Level)的任务

图层面的任务不依赖于某个节点或者某条边的属性,而是从图的整体结构出发,实现分类、表示和生成等任务。目前,图层面的任务主要应用在自然科学研究领域,比如对药物分子的分类、酶的分类等。