深度学习
深度学习复习
1.Introduction
1.1 AI、ML、DL
人工智能:研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新兴学科
机器学习:让计算机具有像人一样的学习和思考能力的技术的总称。具体来说是从已知数据中获得规律,并利用规律对未知数据进行预测的技术
- 有监督:分类/回归
- 无监督:聚类/降维
1.2 DL起源和发展
1.3 DL研究机构和科学家
1.4 DL定义、理论和方法
深度学习:一般是指通过训练多层网络结构对未知数据进行分类或回归
有监督学习方法(深度判别模型):深度前馈网络、卷积神经网络、循环神经网络等
深度前馈网络(Deep Feedforward Neural Network, D-FNN)
卷积神经网络(Convolutional Neural Network, CNN)
循环神经网络(Recurrent Neural Network, RNN)
胶囊网络(CapsuleNet)
深度森林(Deep Forest)
无监督学习方法(深度生成模型):深度信念网、深度玻尔兹曼机,深度自编码器等
- 深度信念网络(Deep Belief Network, DBN)
- 深度玻尔兹曼机(Deep Boltzmann Machine, DBM)
- 深度自编码器(Deep Auto-Encoder, DAE)
- 栈式自编码器(Stacked Auto-Encoder, SAE)
- 生成对抗网络(Generative Adversarial Networks,GAN)
- 非参数贝叶斯网络(Non-parametric Bayesian networks)
ML是基于手工特征的,而DL可以自动提取特征
1.5 DL主要应用
图像处理
语音识别
自然语言处理
综合应用
2.Foundations
2.1 数学基础
线性代数:标量、向量、矩阵、张量Tensor
概率和统计:随机变量、常见概率分布、多个随机变量概率分布
信息论:熵、互信息、KL散度
常见统计量:期望、方差
最优化估计方法:最小二乘
2.2 ML基础
数据集(训练集、验证集、测试集)
误差分析
误差:训练误差、泛化误差、测试误差
过拟合、合适、欠拟合
泛化误差分析
交叉验证
2.3 神经元模型
2.4 感知器及MLP(多层感知器/前馈网络/正向传播网络)
与M-P 模型需要人为确定参数不同,感知器能够通过训练自动确定参数。训练方式为有监督学习,即需要设定训练样本和期望输出,然后调整实际输出和期望输出之差的方式(误差修正学习)
单层感知器只能解决线性可分问题,而不能解决线性不可分问题,为了解决线性不可分问题,我们需要使用多层感知器
2.5 BP算法
3.CNN
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层(池化层)构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征图(featureMap),每个特征图由一些矩形排列的的神经元组成,同一特征图的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。 ———————————————— 版权声明:本文为CSDN博主「CharlesOAO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42570457/article/details/81458077
3.1 卷积的基本概念
3.2 Hubel-Weisel实验/神经认知机
感受野
3.3 CNN基本原理
基本结构:
卷积层
- 卷积的步长(stride): 卷积核移动的步长
- 卷积的模式:Full, Same和Valid
数据填充
输出维度
感受野计算
卷积层的深度(卷积核个数)
特征图
- 浅层卷积层:提取的是图像基本特征,如边缘、方向和纹理等特征
- 深层卷积层:提取的是图像高阶特征,出现了高层语义模式,如“车轮”、“人脸”等特征
激活函数
激活函数是用来加入非线性因素,提高网络表达能力
卷积神经网络中最常用的是ReLU(使用较小的学习率防止神经元死亡),Sigmoid使用较少(sigmoid和tanh会梯度消失)
常见激活函数总结:
ReLU失效时,可考虑Leaky ReLU、PReLU、ELU或Maxout
ReLU的优点:
- 计算速度快,ReLU函数只有线性关系,比Sigmoid和Tanh要快很多
- 输入为正数的时候,不存在梯度消失问题
ReLU的缺点:
- 强制性把负值置为0,可能丢掉一些特征
- 当输入为负数时,权重无法更新,导致“神经元死亡”(学习率不要太大)
池化层
- 池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化(max-pooling)和均值池化(average-pooling)
- 池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步幅以及池化类型
- 作用:
- 减少网络中的参数计算量,从而遏制过拟合
- 增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/平均值)
- 帮助我们获得不因尺寸而改变的等效图片表征。这非常有用,因为这样我们就可以探测到图片里的物体,不管它在哪个位置
全连接层
输出层
3.4 经典CNN
3.5 CNN主要应用
CV:图像分类、物体检测、图像分割、图像回归
语音识别
NLP:情感分析
4.RNN
4.1 计算图
计算图:描述计算结构的一种图
元素:节点(变量)、边(操作/函数)
链式法则
参数共享
4.2 RNN(序列数据建模)
文本、语音、视频、时态数据
RNN定义:循环神经网络是一种人工神经网络,它的节点间的连接形成一个遵循时间序列的有向图
RNN一般结构
RNN示例
训练算法:BPTT(BP Through Time)
4.3 LSTM
RNN的梯度消失问题
原因:BPTT算法,激活函数Tanh
解决方案:ReLU函数、门控RNN(LSTM)
4.4 其他典型RNN
GRU
Peephole LSTM等LSTM变种
双向RNN
Continuous Time RNN
4.5 RNN主要应用
语言模型、语音识别、自动作曲、机器翻译、自动摘要、自动写作、图像描述
5.DGN
5.1 深度生成模型概述
5.2 Hopfield神经网络
神经网络分类:
多层神经网络:模式识别
相互连接型网络:通过联想记忆去除数据中的噪声(Hopfield神经网络是最典型的相互连结型网络)
Hopfield网络的优点:
- 单元之间的连接权重对称(𝑤𝑖𝑗=𝑤𝑗𝑖)
- 每个单元没有到自身的连接(𝑤𝑖𝑖=0)
- 单元的状态采用随机异步更新方式,每次只有一个单元改变状态
- n个二值单元做成的二值神经网络,每个单元的输出只能是0或1的两个值
联想记忆:当输入模式为某种状态时,输出端要给出与之相应的输出模式(自联想记忆/异联想记忆)
Hopfield神经网络计算
串扰:相互干扰、不能准确记忆的情况
Hopfield神经网络能够记忆的模式数量有限,大约是网络单元数的15%左右,为了防止串扰,可以采用先把模式正交化再进行记忆等方法
5.3 玻尔兹曼机BM和受限玻尔兹曼机RBM
BM:可以通过让每个单元按照一定的概率分布发生状态变化,来避免陷入局部最优解
保持了Hopfield神经网络的假设:
- 权重对称
- 自身无连接
- 二值输出
模拟退火算法
BM训练过程
RBM由可见单元和隐藏单元共同构成
- 由可见层和隐藏层构成
- 层内单元之间无连接
- 信息可双向流动
Gibbs采样
对比散度算法
5.4 深度玻尔兹曼机DBM和深度信念网络DBN
深度玻尔兹曼机DBM(由受限玻尔兹曼机RBM堆叠组成)
- 采用对比散度算法训练,逐层调整连接权重和偏置(与多层神经网络不同)
- 既可以当作生成模型又可以当成判别模型(顶层加softmax实现分类)
深度信念网络DBN(RBM+最底层directed)
完全非监督?
5.5 自编码器及其变种
AutoEncoder
- 是一种有效的数据维度压缩算法,主要应用:
- 构建一种能够重构输入样本并进行特征表达的神经网络
- 训练多层神经网络时,通过自编码器训练样本得到参数初始值
- 是一种基于无监督学习的神经网络,目的在于通过不断调整参数,重构经过维度压缩的输入样本
- 训练:
- 权值共享,目的:尽可能重构输入
- BP,误差:最小二乘误差/交叉熵代价
降噪自编码器
- 降噪自编码器把通过向训练样本中加入随机噪声得到的样本\(\tilde{x}=x+\epsilon\)输入给输入层
- 保持输入样本不变的条件下,能够更好地反映样本属性的特征
- 消除输入样本中包含的噪声
稀疏自编码器
- 在多层自编码器中,中间层的单元数太少会导致神经网络很难重构输入样本,而单元数太多又会产生单元冗余,降低压缩效率。为了解决这个问题,人们将稀疏正则化引入到自编码器中,提出了稀疏自编码器(Sparse Autoencoder)
- 通过增加正则化项,大部分单元的输出都变成了0,就能利用少数单元完成压缩或重构
- 平均激活度
栈式自编码器(无监督的pre-training+有监督的fine tuning)逐层训练:
- 首先训练第一个自编码器,然后保留第一个自编码器的编码器部分
- 把第一个自编码器的中间层作为第二个自编码器的输入层进行训练
- 反复地把前一个自编码器的中间层作为后一个编码器的输入层,进行迭代训练
6.others
6.1 生成对抗网络GAN
6.2 胶囊网络
CNN现存问题:池化操作提供了局部不变性,错误解决了需要解决的等变性问题,从而丢失了位置等信息
平移等变性:对于一个函数,如果对其输入施加的变换也会同样反应在输出上,那么这个函数就对该变换具有等变性
平移不变性:对于一个函数,如果对其输入施加的某种操作丝毫不会影响到输出,那么这个函数就对该变换具有不变性
CapsNet:
6.3 注意力机制Attention
6.4 记忆网络
6.5 深度强化学习DRL
6.6 深度森林
7.Generalization
7.1 正则化方法概述
7.2 参数范数正则化
7.3 数据增强
7.4 Batch Normalization
7.5 Bagging
7.6 Dropout和DropConnect
7.7 提前终止
8.tools
8.1 深度学习平台概览
8.2 Tensorflow
8.3 PyTorch
8.4 Keras
8.5 PaddlePaddle
8.6 Huawei平台
9.Applications in CV
9.1 图像/视频处理
9.2 图像/视频压缩
9.3 传统的计算机视觉处理
9.4 图像分类
9.5 目标检测
9.6 图像分割
9.7 图像回归
2021试题
一、名词解释
2021
1.CNN
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一 。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络”
2.RNN
循环神经网络是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。
3.SVD
奇异值分解是线性代数中一种重要的矩阵分解,也是在机器学习领域广泛应用的算法,可用于降维算法中的特征分解、推荐系统和NLP领域
4.Cross Entropy
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。
5.DBN
2020
1.DL
深度学习是实现人工智能的一个工具或者技术手段
深度学习:一般是指通过训练多层网络结构对未知数据进行分类或回归
2.稀疏自编码器(L5
3.正则化
广泛应用于机器学习和深度学习中的技术
可以改善过拟合,降低结构风险,提高模型的泛化能力
在经验风险项后面加上正则罚项,使得通过最小化经验风险求解模型参数转变为通过最小化结构风险求解模型参数,进而选择经验风险小并且简单的模型
4.集成学习
集成学习(ensemble learning),并不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器(基学习器,Base learner)来完成学习任务。集成学习往往被视为一种元算法(meta-algorithm)。
对于训练集数据,我们通过训练若干个个体弱学习器(weak learner),通过一定的结合策略,就可以最终形成一个强学习器(strong learner),以达到博采众长的目的。
5.Dropout
Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果
在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。
这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,如图1所示。
二、简答
2021
1.BP,图&公式(L2
BP算法就是通过比较实际输出和期望输出得到误差信号,把误差信号从输出层逐层向前传播得到各层的误差信号,再通过调整各层的连接权重以减小误差。权重的调整主要使用梯度下降法
2.过拟合&欠拟合,解决(L2
3.Yolo
YOLO算法的朴素思想:特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标。
YOLO算法处理步骤:
第一步,输入图像
第二步,YOLO将图像划分为SxS的网格
第三步,对每个网格应用图像分类和定位处理,获得预测对象的Bounding box及其对应的类概率
4.GRU,图&公式
5.胶囊网络,图&公式
胶囊网络是为了解决CNN存在的问题而提出的。不同于CNN用标量记录局部信息,胶囊网络使用向量特征状态的重要信息。
6.GAN,公式
generator 和 discriminator相互博弈:
- discrimiator最大化真实样例与generator样例之间的差异
- generator根据discriminator“反馈的指导信息”,更新参数,生成“更靠谱”的样例,减小与真实样例的差异
2020
1.BP(L2
2.CNN主要结构模块及功能
输入层(INPUT):用于数据的输入。模型需要输入的进行预处理操作,常见的输入层中预处理方式有:去均值、归一化、PCA/SVD降维等。
卷积层(CONV):使用卷积核进行特征提取和特征映射。
- 提取图像的特征,并且卷积核的权重是可以学习的,由此可以猜测,在高层神经网络中,卷积操作能突破传统滤波器的限制,根据目标函数提取出想要的特征。
- “局部感知,参数共享”的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合,之所以可以“参数共享”,是因为样本存在局部相关的特性。
激励函数(RELU):由于卷积也是一种线性运算,因此需要增加非线性映射。
如果不用激励函数(其实就相当于激励函数是f(x)=x),这种情况下,每一层的输出都是上一层输入的线性函数。容易得出,无论有多少神经网络层,输出都是输入的线性组合,与没有隐层的效果是一样的,这就是最原始的感知机了。
池化层(POOL):进行下采样,对特征图稀疏处理,减少数据运算量。 池化,也称为欠采样或下采样。要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。
根据计算出来的值不一样就分为均值池化层与最大值池化层,一般常见的多为最大值池化层。池化的时候同样需要提供filter的大小、步长。
pooling池化的作用则体现在降采样:保留显著特征、降低特征维度,增大kernel的感受野。另外一点值得注意:pooling也可以提供一些旋转不变性。
池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避免过拟合的出现;一方面进行特征压缩,提取主要特征。
全连接层(FC):也称它为输出层,用于输出卷积计算后的结果。 经过前面若干次卷积+激励+池化后,终于来到了输出层,模型会将学到的一个高质量的特征图片全连接层。其实在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。因此,可以引入dropout操作,来随机删除神经网络中的部分神经元,来解决此问题。还可以进行局部归一化(LRN)、数据增强等操作,来增加鲁棒性。
3.LSTM,为什么能够解决长时依赖问题
LSTM依靠贯穿隐藏层的细胞状态实现隐藏单元之间的信息传递,其中只有少量的线性操作
LSTM引入了“门”机制对细胞状态信息进行添加或删除,由此实现长程记忆
4.DL中常见避免过拟合的方法(L2
5.GAN及其训练过程
6.胶囊网络
三、计算
四、设计
2021
姿态估计
图像描述
2020
机器阅读理解
对大量图像进行目标检测
循环神经网络的Dropout:
通过dropout可以让卷积神经网络更加健壮。类似,再循环神经网络中使用dropout也有同样的功能。
如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。Dropout可以有效的缓解过拟合的发生,在一定程度上达到正则化的效果。
Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少隐层结点间的相互作用,隐层节点相互作用是指某些隐层结点依赖其他隐层结点才能发挥作用。
Dropout通俗讲,即:在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,
类似卷积神经网络只在全连接层中使用dropout,循环神经网络一般只在不同层循环体结构之间使用dropout,不在同一层循环结构之间使用。即:从时刻t-1传递到时刻t,循环神经网络不会进行状态的dropout;而在同一时刻t中,不同层循环体之间会使用dropout。
CNN参数计算:
一、卷积层
CNN中,每一层都有两种参数:权重和偏差
二、最大池化层
没有与最大池化层相关联的参数。池的大小、步长和填充都是超参数。
三、全连接(FC)层
在CNN中有两种完全连接的层。
第一种是该全连接层的前面连接着最后一个卷积层(Conv-FC)
第二种是该全连接层的前面连接着其他全连接层(FC-FC)