深度学习笔记
Target:深度学习的定义深度学习与传统机器学习的区别深度学习的由来梯度下降算法的不同种类以及各类的优缺点不同类型的激活函数的优缺点对比和激活函数的作用L1正则、L2正则、数据集合扩充、Dropout优化器深度学习简介传统机器学习和深度学习深度学习,是一种基于无监督特征学习和特征层次结构学习的模型,在计算机视觉,语音识别,自然语言处理等领域有着突出的优势。深度学习深度学习一般指深度神经网络,深度
Target:
- 深度学习的定义
- 深度学习与传统机器学习的区别
- 深度学习的由来
- 梯度下降算法的不同种类以及各类的优缺点
- 不同类型的激活函数的优缺点对比和激活函数的作用
- L1正则、L2正则、数据集合扩充、Dropout
- 优化器
- 深度学习不同神经网络的架构和核心思想
深度学习简介
传统机器学习和深度学习
深度学习,是一种基于无监督特征学习和特征层次结构学习的模型,在计算机视觉,语音识别,自然语言处理等领域有着突出的优势。
深度学习
深度学习一般指深度神经网络,深度指神经网络的层数(多层)。
神经网络层数越多,那它的结构越深。在处理高纬度的数据时,深层次的网络能够得到比较好的性能。
深度学习使用的网络实质上是一种类脑的算法,在不能解决复杂的数据时,可以将隐含层增加更多的层数来增加模型的复杂度。
一般神经网络的设计和应用中,主要考虑:
- 神经元的作用函数
- 神经元之间的连接方式
- 网络如何学习
神经网络
目前,关于神经网络的定义尚不统一,按美国神经网络学家Hecht Nielsen的观点,神经网络的定义是:“神经网络是由多个非常简单的处理单元彼此按某种方式相互连接而形成的计算机系统,该系统靠其状态对外部输入信息的动态响应来处理信息”。
综合神经网络的来源、特点和各种解释,它可简单地表述为︰人工神经网络是一种旨在模仿人脑结构及其功能的信息处理系统。
人工神经网络(简称神经网络)∶是由人工神经元互连组成的网络,它是从微观结构和功能上对人脑的抽象、简化,是模拟人类智能的一条重要途径,反映了人脑功能的若干基本特征,如并行信息处理、学习、联想、模式分类、记忆等。
单层感知器
XOR问题
1969年,美国数学家及人工智能先驱Minsky在其著作中证明了感知器本质上是一种线性模型,只能处理线性分类问题,无法处理非线性数据。
前馈神经网络
在神经网络中,各个神经元都是分层排列的,收入节点并没有计算功能,只是为了输入特征向量。输入特征向量后,具有计算功能的神经元都在隐含层,隐含层具有一些激活函数,激活函数通过计算传递给下一层,直到计算出的结果通过输出层。
神经元之间相互连接只接收前一层的输出,并且计算结果传给下一层。这是单向的多层结构,每一层都包含着若干神经元,同一层神经元之间不存在相互的联系。层与层之间的信息只沿着一个方向。
解决异或问题
隐藏层数对神经网络的影响
隐含层数对神经网络的性能有巨大的影响。层数越多,分辨能力越强。
训练法则
梯度下降与损失函数
损失函数的极值
目的:损失函数E(W)是定义在权值空间上的函数。我们的目的是搜索使得E(W)最小的权值向量W。
深度学习中常用的损失函数
交叉熵误差刻画了两个概率分布之间的距离,是分类问题中使用较多的一种损失函数。
一般均方误差更多得用于回归问题,而交叉熵误差更多的用于分类问题。
均方误差的弊端:在深度学习神经网络中的梯度饱和现象。
全局梯度下降算法(BGD)
终止条件即阈值。需要设置阈值和迭代次数。
随机梯度下降算法(SGD)
BGD和SGD的区别在于随机选取了样本。
SGD有可能找不到最小值。由于太快导致容易陷入局部最小值。
小批量梯度下降(MBGD)
反向传播算法
正向传播通过预测值计算了全局误差,反向传播计算每层产生了多少误差,
存在数个隐含层也可以使用求导的链式法则逐层求导,迭代求解最优参数。
激活函数
激活函数(Activation functions)对于神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用,激活函数的存在将非线性特性引入到我们的网络中。
如果我们不运用激活函数,则输出信号将仅仅是个简单的线性函数。线性函数的复杂性有限,从数据中学习复杂函数映射的能力更小。
Sigmoid函数
一般来说,如果网络在五层以内,产生梯度退化为0的现象,叫做梯度消失问题。这是Sigmoid函数的缺点。
tanh函数
Softsign函数
Rectified Linear Unit(RELU)函数
大大减缓了梯度消失问题,但是仍然无法彻底解决。RELU计算简单且计算量小。
由于X小于0的部分值为0,相当于做了特征选择。
RELU激活函数导数是常数,永远不会趋于0,不会出现饱和问题,所以能够很快更新参数。
做回归时,没法很好预测预测值,因为在X=0处出现折点。
Softplus函数
Softmax函数
Softmax函数体:
Softmax函数的功能就是将一个K维的任意实数向量映射成另一个K维的实数向量,其中向量中的每个元素取值都介于(o,1)之间。新的向量所有维度模长之和为1。
Softmax函数经常用作多分类任务的输出层。
正则化
正则化是机器学习中非常重要并且非常有效的减少泛化误差的技术,特别是在深度学习模型中,由于其模型参数非常多非常容易产生过拟合。因此研究者也提出很多有效的技术防止过拟合,比较常用的技术包括:
- 参数添加约束,例如L1、L2范数等。
- 训练集合扩充,例如添加噪声、数据变换等。
- Dropout
- 提前停止。
参数惩罚
目标函数的目的是让误差逐渐约等于0,证明预测值和真实值相等。
如果惩罚因子特别大,则参数非常小。这样就会约束参数,更新出现一个最小的值,防止过拟合。
偏置项Bias,一般需要较少的数据就能够精确的进行拟合了。因此主要关注权重。
L1正则
让w取绝对值可以让weight值逐步减小,weight值为0即进行了特征选择。
L2正则
w平方形式可以使参数左边约等于小的值接近0,但是不能等于0.
L1与L2的区别:
通过上面的分析,L1相对于L2能够产生更加稀疏的模型,即当L1正则在参数w比较小的情况下,能够直接缩减至0,因此可以起到特征选择的作用。
如果从概率角度进行分析,很多范数约束相当于对参数添加先验分布,其中L2范数相当于参数服从高斯先验分布;L1范数相当于拉普拉斯分布。
数据集合扩充
防止过拟合最有效的方法是增加训练集合,训练集合越大过拟合概率越小。数据集合扩充是一个省时有效的方法,但是在不同领域方法不太通用。
Dropout
Dropout是一类通用并且计算简洁的正则化方法,在2014年被提出后广泛的使用。简单的说,Dropout在训练过程中,随机的丢弃一部分输入,此时丢弃部分对应的参数不会更新。相当于Dropout是一个集成方法,将所有子网络结果进行合并,如图通过随机丢弃输入可以得到各种子网络。
优点:更有效、计算复杂度低、可以构造不变的屏蔽参数。
提前停止训练
在训练过程中,插入对验证集数据的测试。当发现验证集数据的Loss上升时,提前停止训练。
优化器
在梯度下降算法中,有各种不同的改进版本。在面向对象的语言实现中,往往把不同的梯度下降算法封装成一个对象,称为优化器。
算法改进的目的,包括但不限于:
------加快算法收敛速度;
------尽量避过或冲过局部极值;
------减小手工参数的设置难度,主要是Learning Rate ( LR)
常见的优化器如∶普通GD优化器、动量优化器、Nesterov、Adagrad、Adadelta 、RMSprop、Adam、AdaMax、Nadam。
动量优化器
使得梯度方向不变的维度速度越来越快,梯度方向改变的维度上,更新速度逐渐变慢。加快收敛且缩减震荡。
Adagrad优化器
随机梯度下降算法(SGD)、小批量梯度下降算法(MBGD)、动量优化器的共同特点是:对于每一个参数都用相同的学习率进行更新。
从Adagrad优化算法中可以看出,随着算法不断迭代,r会越来越大,整体的学习率会越来越小。这样做的原因是随着更新次数的增大,我们希望学习率越来越慢。因为我们认为在学习率的最初阶段,我们距离损失函数最优解还很匹,随有史新人效的日加,题个越接近最解,所以学习率也随之变慢。
优点:
------学习率自动更新,随着更新次数增加,学习率随之变慢
缺点:
------分母会不断累积,这样学习率就会后所并最终变得非常小,算法会失去效用,即提前停止模型。
RMSprop优化器
RMSprop优化器是一种改进的Adagrad优化器,通过引入一个衰减系数,让r每回合都都衰减一定的比例。
Adam优化器
优化器性能比较
Adagrad,Adadelta,Rmsprop能够更好更快地找到最优解,工程实验时尽量使用这三种自适应优化器,可以更好地收敛,
神经网络模型
卷积神经网络
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于图像处理有出色表现。它包括卷积层(convolutionallayer),池化层(pooling layer)和全连接层(fully_connected layer)。
20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络( ConvolutionalNeural Networks-简称CNN)。
现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。
卷积神经网络核心思想
局部感知:一般认为,人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。
参数共享: 对输入的图片,用一个或者多个卷积核扫描照片,卷积核自带的参数就是权重,在同一个卷积核扫描的图层当中,每个卷积核使用同样的参数进行加权计算。权值共享意味着每一个卷积核在遍历整个图像的时候,卷积核的参数是固定不变的。
卷积神经网络架构
单卷积核计算
卷积计算描述
卷积计算结果演示
padding可以保留边缘信息。
卷积层
卷积神经网络的基本结构,就是多通道卷积(由多个单卷积构成)。上一层的输出(或者第一层的原始图像),作为本层的输入,然后和本层的卷积核卷积,作为本层输出。而各层的卷积核,就是要学习的权值。和FCN类似,卷积完成后,输入下一层之前,也需要经过偏置和通过激活函数进行激活。
池化层
池化(Pooling),它合并了附近的单元,减小了下层输入的尺寸,起到降维的作用。常用的池化有最大池化(Max Pooling)和平均池化(Average Pooling),顾名思义,最大池化选择一小片正方形区域中最大的那个值作为这片小区域的代表,而平均池化则使用这篇小区域的均值代表之。这片小区域的边长为池化窗口尺寸。下图演示了池化窗口尺寸为2的一般最大池化操作。
误差是由两部分导致的,一个是局部邻域的大小,另一个卷积层产生的误差会造成估计值的均值的偏差,平均池化会保留背景上面的部分信息,最大池化能缓解卷积层的误差,可以更注重图片的纹理。
全连接层
全连接层实质上就是一个分类器,将前面经过卷积层与池化层所提取的特征,拉直后放到全连接层中,输出结果并分类。
通常我们使用Softmax函数作为最后全连接输出层的激活函数,把所有局部特征结合变成全局特征,用来计算最后每一类的得分。
循环神经网络
循环神经网络(Recurrent neural networks,简称RNN)是一种通过隐藏层节点周期性的连接,来捕捉序列化数据中动态信息的神经网络,可以对序列化的数据进行分类。因为CNN卷积神经网络不能利用上下文或者是利用够一定时序的一些内容中。
和其他前向神经网络不同,RNN可以保存一种上下文的状态,甚至能够在任意长的上下文窗口中存储、学习、表达相关信息,而且不再局限于传统神经网络在空间上的边界,可以在时间序列上有延拓,直观上讲,就是本时间的隐藏层和下一时刻的隐藏层之间的节点间有边。
RNN广泛应用在和序列有关的场景,如如一帧帧图像组成的视频,一个个片段组成的音频,和一个个词汇组成的句子。
循环神经网络架构
在记忆单元使用相同的W这个权重。
循环神经网络类型
时序反向传播(BPTT)
时序反向传播(BPTT):
------·传统反向传播(BP)在时间序列上的拓展
------·t时刻的梯度是前t-1时刻所有梯度的累积
------·时间越长,梯度消失越明显
循环神经网络问题
长短记忆性网络
Gated Recurrent Unit ( GRU )
将忘记门、输入门合成更新门。比LSTM模型简单。LSTM于1997年提出,GRU于2014年提出,都是为了解决RNN梯度消失问题。
由于GRU减少了一个门,大大减少了计算量和时间成本。
生成对抗网络
生成对抗网络(Generative Adversarial Nets)是一种框架,通过对抗过程,通过训练生成器G和判别器D。两者进行的博弈,最终使判别器无法区分样本是来自生成器伪造的样本还是真实样本。训练GAN框架采用成熟的BP算法。
1)生成器G∶输入“噪声”z(z服从一个人为选取的先验概率分布,如均匀分布、高斯分布等)。采用多层感知机的网络结构,用最大似然估计(MLP)的参数来表示可导映射G(z),将输入空间映射到样本空间,生成伪样本。
2)判别器D:输入为真实样本x和伪造样本G(z),并分别带有标签real和fake。判别器网络可以用带有参数多层感知机。输出为判别样本是否为真实样本数据的概率D(G(z))。如果判别器无法判别则证明生成器生成的样本可行。
生成对抗网络可应用于图像生成、语义分割、文字生成、数据增强、聊天机器人和信息检索,排序等场景。
生成对抗网络架构
生成器(Generator)/判别器(Discriminator)
生成模型与判别模型
生成对抗网络训练法则
需要好的判别器
深度学习常见问题
数据不平衡问题
问题描述:在分类任务的数据集中,各个类别的样本数目不均衡,出现巨大的差异,预
测的类别里有一个或者多个类别的样本量非常少。
比如:图像识别实验中,在4251个训练图片中,有超过2000个类别中只有一张图片。还有一些类中有2-5个图片。
导致问题:
对于不平衡类别,我们不能得到实时的最优结果,因为模型/算法从来没有充分地考察隐含类。
它对验证和测试样本的获取造成了一个问题,因为在一些类观测极少的情况下,很难在类中有代表性。
解决方案:
1.随机欠采样:删除类中多的样本(不精确)
2.随机过采样:拷贝样本(加大过拟合)
3.合成样本:提取样本、合成样本(类重叠性)
梯度消失问题
梯度消失: 当网络层数越多时,进行反向传播求导值越小,导致梯度消失。
梯度爆炸:当网络层数越多时,进行反向传播求导值越大,导致梯度爆炸。
梯度剪切:给予一个阈值,超过后使它归于取值范围之内
过拟合问题
问题描述:模型在训练集表现优异,但在测试集上表现较差。
根本原因: 特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。
解决方法:(1)数据增强;(2)正则化,降低参数值;(3)限制训练时间;(4)Dropout。
更多推荐
所有评论(0)