深度学习学习笔记

人工智能的主要领域:

1.感知,模拟人的感知能力。语音信息和计算机视觉

2.学习,模拟人的学习能力。监督学习,无监督学习和强化学习

3认知,模拟人的认知能力。自然语言理解,规划,决策

人工智能的发展历史:

1.推理期:1956年达特茅斯会议

2.知识期:主要是专家系统

3.学习期:从数据中学习,利用率学习到的规律对数据进行预测。即机器学习。

人工智能流派

1.符号主义:信息用符号表示,符号通过显示规则来操作。可解释

2.连接主义:人类的认知是由大量简单的神经网络处理过程,而不是符号运算。不可解释。

机器学习:从有限观测数据中学习出一半规律,并利用这些规律对数据进行预测的方法。可以分为浅层和表示学习。还有无监督学习,强化学习,监督学习等。

浅层学习:传统的机器学习主要关注于如何学习一个预测模型。一般需要首先将数据表示为一组特征(Feature),特征的表示形式可以是连续的数值、离散的符号或其它形式。然后将这些特征输入到预测模型,并输出预测结果。这类机器学习可以看作是浅层学习(Shallow Learning)。浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取。

特征工程:由于特征处理一般都需要人工干预完成,利用人类的经验来选取好的特征,并最终提高机器学习系统的性能。因此,很多的机器学习问题变成了特征工程(Feature Engineering)问题。开发一个机器学习系统的主要工作量都消耗在了预处理、特征提取以及特征转换上。

表示学习:区别于浅层学习,如果有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就是可以叫做表示学习(Representation Learning)。

语义鸿沟:就是我们输入的图片等数据,计算机怎么学到这些图片,如何抽象出高层语义信息。
局部表示:通常可以表示为 one-hot向量的形式。假设所有颜色的名字构成一个词表 V,词表大小为 |V|。我们可以用 one-hot向量。一个 |V|维的 one-hot向量来表示每一种颜色。在第 i种颜色对应的 one-hot向量中,第i维的值为 1,其它都为 0。
分布式表示:向量维度一般都比较低。我们只需要用一个三维的稠密向量就可以表示所有颜色
嵌入
嵌入(Embedding):通常指将一个度量空间中的一些对象映射到另一个低维的度量空间中,并尽可能保持不同对象之间的拓扑关系。比如自然语言中词的分布式表示,也经常叫做词嵌入

深度学习:(Deep Learning, DL)机器学习的一个子问题,其主要目的是从数据中自动学习到有效的特征表示,
进一步输入到预测函数得到最终结果。

贡献度分配问题(Credit Assignment Problem, CAP)深度学习需要解决的关键问题是贡献度分配问题即一个系统中不同的组件(Components)或其参数对最终系统输出结果的贡献或影响。

端到端学习(End-to-End Learning),也称端到端训练,是指在学习过程中不进行分模块或分阶段进行训练,直接优化任务的总体目标。大部分采用神经网络的深度学习也可以看做端到端学习。

神经网络:通过逐层预训练来学习一个深度信念网络,并将其权重作为一个多层前馈神经网络的初始化权重,再用反向传
播算法进行精调。“预训练 + 精调”的方式可以有效地解决深度神经网络难以训练的问题。

模式识别:机器学习问题在早期的工程领域也经常称为模式识别(Pattern Recognition,PR),但模式识别更偏向于具体的应用任务,比如光学字符识别、语音识别、人脸识别等。

机器学习的三个基本要素:

1.模型:线性模型,非线性模型(包括神经网络模型)

2.学习准则:包括:经验风险最小化准则,结构风险最小化准则

单次预测的误差                          损失函数(01损失,平方损失,交叉熵损失)
多次预测的误差均值                   代价函数(经验风险
全部样本预测的误差均值            期望风险,但是期望风险是全局的不可求的,
取而代之的事局部的经验风险  
经验风险+正则项(惩罚项) = 结构风险(目标函数)

3.优化算法:梯度下降,提前停止,

参数和超参数:有一类参数是用来定义模型结构或优化策略的,这类参数叫做超参数(Hyper-Parameter)。 在贝叶斯方法中,超参数可以理解为参数的参数,即控常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化 制模型参数分布的参数。项的系数、神经网络的层数、支持向量机中的核函数等。超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习。因此,超参数优化是机器学习的一个经验性很强的技术。

梯度下降:通过求导求得结果最优的参数。

提前停止:如果在验证集上的错误率不再下降,就停止迭代。这种策略叫提前停止(EarlyStop)。如果没有验证集,可以在训练集上划分出一个小比例的子集作为验证集

批量梯度下降法(Batch Gradient Descent, BGD):目标函数是整个训练集上风险函数,这种方式称为批量梯度下降法。批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和。

随机梯度下降:随机梯度下降相当于在批量梯度下降的梯度上引入了随机噪声。当目标函数非凸时,反而可以使其逃离局部最优点。

批量梯度下降和随机梯度下降之间的区别在于每次迭代的优化目标是对所有样本平均损失函数还是单个样本损失函数

小批量梯度下降法:将全部训练数据分为几部分,计算各个部分的损失函数。

偏差-方差分解(Bias-Variance Decomposition)

如何在模型的拟合能力和复杂度之间取得一个较好的平衡,对一个机器学习算法来讲十分重要。 偏差-方差分解为我们提供一个很好的分析和指导工具。

偏差(Bias),是指一个模型在不同训练集上的平均性能和最优模型的差异,可以用来衡量一个模型的拟合能力

方差(Variance),是指一个模型在不同训练集上的差异,可以用来衡量一个模型是否容易过拟合

当一个模型在训练集上的错误率比较高时,说明模型的拟合能力不够,偏差比较高。这种情况可以通过增加数据特征、提高模型复杂度、减少正则化系数等操作来改进模型。

当模型在训练集上的错误率比较低,但验证集上的错误率比较高时,说明模型过拟合,方差比较高。

词袋模型:词袋模型将文本看做是词的集合,不考虑词序信息,不能精确地表示文本信息。

特征学习:如何让机器自动地学习出有效的特征也成为机器学习中的一项重要研究内容,称为特征学习(Feature Learning),也叫表示学习(Representation Learning)

传统的特征学习:包括特征选择和特征提取

特征选择:

过滤式子集搜索:每次增加最有信息量的特征,或删除最没有信息量的特征,不依赖与具体的机器学习模型。

包裹时子集搜索:每次增加对后续机器学习模型最有用的特征,或删除对后续机器学习任务最无用的特征

特征提取:监督的特征学习:抽取对一个特定的预测任务最有用的特征。无监督的特征学习和具体任务无关,其目标通常是减少冗余信息和噪声
深度学习评价指标:查全率和查准率。

机器学习的理论:

可能近似正确(ProbablyApproximately Correct,PAC)学习理论:一个 PAC 可学习的算法是指该学习算法能够在多项式时间内从合理数量的训练数据中学习到一个近似正确的 f(x)。

没有免费午餐定理(No Free Lunch Theorem, NFL)对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间内)都有效。

奥卡姆剃刀(Occam’s Razor)简单的模型泛化能力更好。如果有两个性能相近的模型,我们应该选择更简单的模型。

归纳偏置(Inductive Bias):在机器学习中,很多学习算法经常会对学习的问题做一些假设,这些假设就称为归纳偏置。(归纳偏置在贝叶斯学习中也经常称为先验(Priors))

线性模型:二分类,多分类。

激活函数(Activation Function),其作用是把线性函数的值域从实数区间“挤压”到了 (0, 1)之间

Logistic回归(Logistic Regression, LR)是一种常用的处理二分类问题的线性模型。y = σ(wTx)连续的线性函数

Softmax 回归(Softmax Regression),也称为多项(Multinomial)或多类(Multi-Class)的 Logistic回归,是 Logistic回归在多分类问题上的推广。y = softmax(wTx),

感知器(Perceptron)由 Frank Roseblatt于 1957年提出,是一种广泛使用的线性分类器。感知器可谓是最简单的人工神经网络,只有一个神经元。y = sgn(wTx),是不连续的线性函数

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

对应的损失函数:

Logistic回归的损失函数可以改写为                L= (1-yf(x;w))^2
感知器的损失函数为:                                      Lp = max (0, -yf(x; w)
软间隔支持向量机的损失函数为                     Lhinge = max( 0, 1 - yf(x; w))
平方损失可以重写为                                       Lsquared =( 1 - yf(x; w))^2.

 

神经网络

 

饱和:对于函数 f(x),若 x → -∞时,其导数 f ′(x) → 0,则称其为左饱和。若 x → +∞时,其导数 f ′(x) → 0,则称其为右饱和。当同时满足左、右饱和时,就称为两端饱和。

零中心化:Tanh 函数的输出是零中心化的(Zero-Centered),而 Logistic函数的输出恒大于 0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降 的收敛速度变慢

激活函数种类

Sigmoid 型函数:

 

 

第二类:relu函数:

 

优点 采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效;相比于 Sigmoid型函数的两端饱和, ReLU函数为左饱和函数,且在 x > 0时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯 度下降的收敛速度

缺点 ReLU函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会ReLU 神经元指采用 ReLU 影响梯度下降的效率。

第三类swish函数:

 

以看作是一种软性的门控机制。当 σ(βx)接近于 1时,门处于“开”状态,激活函数的输出近似于x本身;当σ(βx)接近于 0时,门的状态为“关”,激活函数的输出近似于 0。

第四类: 高斯误差线性单元

当使用 Logistic函数来近似时,GELU相当于一种特殊的 Swish函数。

第五类:MaxOut单元:Maxout单元的输入是上一层神经元的全部原始输出,是一个向量 x = [x1; x2; · · · ; xd]。每个 Maxout单元有K 个权重向量 wk ∈ Rd 和偏置bk

神经网络分类:

1.前馈网络;整个网络中的信息是朝一个方向传播,没有反向的信息传播

2.记忆网络:和前馈网络相比,记忆网络中的神经元具有记忆功能,在不同的时刻有不同的状态信息传播可以是单向或双向传递

3。图网络是定义在图结构数据上的神经网络 。图中每个节点都由一个或一组神经元构成。节点之间的连接可以是有向的,也可以是无向

 

静态计算图动态计算图 计算图按构建方式可以分为静态计算图和动态计算图。静态计算图是在编译时构建计算图,计算图构建好之后在程序运行时不能改变,而动态计算图是在程序运行时动态构建。两种构建方式各有优缺点。静态计算图在构建时可以进行优化,并行能力强,但灵活性比较差。动态计算图则不容易优化,当不同输入的网络结构不一致时,难以并行计算,但是灵活性比较高。在目前深度学习框架里, Theano 和 Tensorflow 采用的是静态计算图,而DyNet、Chainer和 PyTorch采用的是动态计算图。

非凸优化问题  神经网络的优化问题是一个非凸优化问题

梯度消失:由于 Sigmoid 型函数的饱和性,饱和区的导数更是接近于 0。这样,误差经过每一层传递都会不断衰减。当网络层数很深时,梯度就会不停衰减,甚至消失,使得整个网络很难训练。这就是所谓的梯度消失问题(Vanishing Gradient
Problem),也称为梯度弥散问题。,减轻梯度消失问题的方法有很多种。一种简单有效的方是使用导数比较大的激活函数,比如 ReLU等。

卷积神经网络

(Convolutional Neural Network, CNN或 ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络,用 卷积来代替全连接。

局部连接 在卷积层(假设是第 l 层)中的每一个神经元都只和下一层(第 l - 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络

权重共享:作为参数的滤波器 w(l) 对于第 l 层的所有的神经元都是相同的

感受野(Receptive Field)主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号

卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。

卷积神经网络有三个结构上的特性: 局部连接、 权重共享以及汇聚。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少

卷积的主要功能是在一个图像(或某种特征)上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征。在计算卷积
的过程中,需要进行卷积核翻转

互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。

 

二维卷积:

一幅图像在经过卷积操作后得到结果称为特征映射(Feature Map)

卷积的变种:

滤波器的步长(Stride)是指滤波器在滑动时的时间间隔
零填充(Zero Padding)是在输入向量两端进行补零

窄卷积(Narrow Convolution):步长 s = 1,两端不补零 p = 0,卷积后输出长度为 n - m + 1。
• 宽卷积(Wide Convolution):步长 s = 1,两端补零 p = m - 1,卷积后输出长度 n + m - 1。
• 等宽卷积(Equal-Width Convolution
):步长 s = 1,两端补零 p = (m -1)/2,卷积后输出长度 n

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器

汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行特征选择,降低特征数量,从而减少参数数量。汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为这个区域的概括,常用的汇聚函数有最大汇聚和平均汇聚。

总结:卷积是减少连接数,最大池化减少特征数。

几个典型的网络:

 

残差网络(Residual Network, ResNet)是通过给非线性的卷积层增加直连边(的)方式来提高信息的传播效率。

残差网络就是将很多个残差单元串联起来构成的一个非常深的网络

反卷积:我们将低维特征映射到高维特征的卷积操作称为转置卷积(Transposed Convolution,也称为反卷积

循环神经网络:

循环神经网络(Recurrent Neural Network, RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构.

简单循环网络增加了从隐藏层到隐藏层的反馈连接

延时神经网络是在前馈网络中的非输出层都添加一个延时器

有外部输入的非线性自回归模型NARX:是自回归模型的扩展,在每个时刻 t都有一个外部输入 xt,产生一个输出 yt。NARX通过一个延时器记录最近几次的外部输入和输出,第 t个时刻的输出 yt 为yt = f(xt, xt-1, · · · , xt-p, yt-1, yt-2, · · · , yt-q), 其中 f(·)表示非线性函数,可以是一个前馈网络,p和 q 为超参数.

上面两幅图的区别在,第二幅图是第一幅图的具体化。

循环神经网络在学习过程中的主要问题是梯度消失或爆炸问题,很难建模长时间间隔(Long Range)的状态之间的依赖关系

梯度爆炸 一般而言,循环网络的梯度爆炸问题比较容易解决,一般通过权重衰减梯度截断来避免。

基于门控的循环神经网络:

LSTM:长短期记忆(Long Short-Term Memory, LSTM)网络是循环神经网络的一个变体,可以有效地解决简单循环神经网络的梯度爆炸或消失问题.新的内部状态 LSTM 网络引入一个新的内部状态(internal state) ct 专门进行线性的循环信息传递,同时(非线性地)输出信息给隐藏层的外部状态 ht。

记忆单元 c中保存信息的生命周期要长于短期记忆 h,但又远远短于长期记忆, 长短期记忆是指长的“短期记忆”。因此称为长短期记忆.
门控机制 在数字电路中, 门(Gate)为一个二值变量 {0, 1}, 0代表关闭状态,不许任何信息通过;1代表开放状态,允许所有信息通过.

 

门控循环单元(Gated Recurrent Unit, GRU)网络是一种比 LSTM网络更加简单的循环神经网络。GRU 网络引入门控机制来控制信息更新的方式。和 LSTM 不同, GRU 不引入额外的记忆单元, GRU 网络引入一个更新门(Update Gate)来控制当前状态需要从历史状态中保留多少信息(不经过非线性变换),以及需要从候选状态中接受多少新信息。

堆叠循环神经网络:一种常见的做法是将多个循环网络堆叠起来,称为堆叠循环神经网络(StackedRecurrent Neural Network, SRNN)。一个堆叠的简单循环网络(Stacked SRN)也称为循环多层感知器


双向循环神经网络(Bidirectional Recurrent Neural Network, Bi-RNN)由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同。

神经网络的缺点:

优化问题:神经网络模型是一个非凸函数,再加上在深度网络中的梯度消失问题,很难进行优化;另外,深度神经网络模型一般参数比较多,训练数据也比较大,会导致训练的效率比较低。
泛化问题:因为神经网络的拟合能力强,反而容易在训练集上产生过拟合。因此在训练深度神经网络时,同时也需要通过一定的正则化方法来改进网络的泛化能力

优化方法:

小批量梯度下降:

AdaGrad 算法:在标准的梯度下降法中,每个参数在每次迭代时都使用相同的学习率。由于每个参数的维度上收敛速度都不相同,因此根据不同参数的收敛情况分别设置学习率。AdaGrad(Adaptive Gradient)算法是借鉴 ℓ2 正则化的思想,每次迭代时自适应地调整每个参数的学习率.\

RMSprop算法是 Geoff Hinton 提出的一种自适应学习率的方法可以在有些情况下避免 AdaGrad算法中学习率不断单调下降以至于过载衰减的缺点。RMSProp 算法和 AdaGrad 算法的区别在于 Gt 的计算由累积方式变成了指数衰减移动平均。在迭代过程中,每个参数的学习率并不是呈衰减趋势,既可以变小也可以变大。

AdaDelta算法也是 AdaGrad算法的一个改进。和 RMSprop算法类似, AdaDelta 算法通过梯度平方的指数衰减移动平均来调整学习率。此外,AdaDelta算法还引入了每次参数更新差∆θ 的平方的指数衰减权移动平均

梯度截断:在深度神经网络或循环神经网络中,除了梯度消失之外,梯度爆炸也是影响学习效率的主要因素。在基于梯度下降的优化过程中,如果梯度突然增大,用大的梯度更新参数反而会导致其远离最优点。为了避免这种情况,当梯度的模大于一定阈值时,就对梯度进行截断,称为梯度截断

超参数的优化,比较简单的方法有网格搜索、随机搜索、贝叶斯优化、动态资源分配和神经架构搜索

正则化是通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,比如引入约束,增加先验,提前停止,丢弃等。

数据增强:深度神经网络一般都需要大量的训练数据才能获得比较理想的效果。在数据量有限的情况下,可以通过数据增强(Data Augmentation)来增加数据量,提高模型鲁棒性,避免过拟合。包括:旋转,翻转,缩放,平移,加噪声。

注意力机制

注意力机制(Attention Mechanism)作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载问题的主要手段。可以分为:聚焦式注意力和显著的注意力。

一种是自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention)。聚焦式注意力也常称为选择性注意力(Selective Attention)。聚焦式注意力是指有预定目的、依赖任务的,主动有意识地聚焦于某一对象的注意力。

另一种是自下而上的无意识的注意力,称为基于显著性的注意力(SaliencyBased Attention)。基于显著性的注意力是由外界刺激驱动的注意,不需要主动干预,也和任务无关。我们可以将最大汇聚(Max Pooling)、门控(Gating)机制近似地看作是
自下而上的基于显著性的注意力机制。

注意力机制的计算可以分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加
权平均。

注意力分布 为了从N 个输入向量[x1, · · · , xN]中选择出和某个特定任务相关的信息,我们需要引入一个和任务相关的表示,称为查询向量(Query Vector),并通过一个打分函数来计算每个输入向量和查询向量之间的相关性,这叫做注意力分布。

硬注意力分布:只关注某一个输入向量。通常的实现方式有两种:选取最高概率的一个输入向量,通过在注意力分布上随机采样的方式实现。
多头注意力:多头注意力(Multi-Head Attention)是利用多个查询Q = [q1, · · · , qM],来平行地计算从输入信息中选取多组信息。每个注意力关注输入信息的不同部分。

自注意力机制:?????

外部记忆:为了增强网络容量,一种比较简单的方式是引入结构化的记忆模块,将和任务相关的短期记忆保存在记忆中,需要时再进行读取。这种装备外部记忆的神经网络也称为记忆网络

集成学习:如adaboost  通过某种策略将多个模型集成,通过群决策提高准确率。

自测试与协同训练: 自训练不断加入无不爱钱的数据训练,协同指在相同数据上再增加一个维度。

多任务学习:在同一个数据集上,学习一个任务来优化另一个任务。这些任务是相关的。

迁移学习:源领域的知识,帮助目标领域。

终身学习:过去m个任务上学到的知识应用第M+1个任务并积累M+1个任务的知识。

元学习:从不同任务中归纳一种学习方法。





 


 

 

 

 

 

 


 

 


 


 


 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章