《深度学习介绍》PPT课件.ppt
深度学习简介主要内容神经网络深度学习 介绍 常用方法Stacked Auto-EncoderConvolutional Neural NetworkDeep Belief Network 评价与应用展望神经网络在机器学习与认知识别领域中,人工神经网络是一类模拟生物神经网络(中枢神经网络,特别是大脑)的模型,用来预测(决策问题)或估计基于大量未知数据的函数模型。人工神经网络一般呈现为相互关联的“神经元”相互交换信息的系统。在神经元的连接中包含可根据经验调整的权重,使得神经网络可以自适应输入,并且拥有学习能力。作为机器学习方法的一种,神经网络算法可以用来处理一系列传统方法无法处理或处理难度较大的问题,包括计算机视觉、语音识别方面等。基本结构神经网络的基本单元是神经元。通过对所有输入的加权求和与非线性映射得到该神经元的输出(激活值)。神经网络按照拓扑结构,属于一神经元为节点,以及节点间有向连接为为边的一种图,大体分为层状与网状两大类。常用激活函数:阈值函数 双向阈值函数 S型函数 双曲正切函数 高斯函数神经元模型BP网络前馈网络的逐层计算:输入值从输入层单元通过连接权重加权激活逐层向前传播经过隐层最后到达输出层得到输出。在信号的向前传递过程中,网络的权值是固定不变的,每一层神经元的状态只影响下一层神经元的状态。反向传播算法:网络的实际输出与期望输出之间的差值即为误差信号。误差信号由输出端开始逐层向前传播,这是误差信号的反向传播。在误差信号反向传播的过程中,网络的权值由误差反馈进行调节,通过权值的不断修正使网络的实际输出更加接近期望输出。前馈网络结构说明代价函数 在遇到回归问题时,指定代价函数 以使目标变量的真实值和预测值的距离最小 代价函数描述了网络输出与真实值之间的误差。通过随机梯度下降的方法最小化代价函数以提高网络精度 可以在代价函数中引入其他约束以满足设定要求BP算法反向传播与梯度下降BP算法流程S型函数导数主要问题主要问题 易陷入局部极小而得不到全局最优。训练次数多使得学习效率低,收敛速度慢。对于隐层和隐节点的个数选择,至今还没有一个具体的定论,缺乏理论指导。训练时,学习新样本有遗忘旧样本的趋势常用改进方法 添加动量项 采用改进的梯度下降法 MBP/MFBP算法深度学习深度学习的基础架构来自于前馈神经网络与BP算法,构造多层节点通过最小化代价函数的方法来提高分类精度。对于传统的ANN网络而言,由于多层网络训练的困难,实际使用的多数是只含有一层隐层节点的浅层模型。然而,不同于浅层的神经网络算法,深度学习更侧重于如何通过增加网络的深度,减小每层拟合的参数来提取出数据(尤其是语音与图像数据)的高层特征信息,从而达到更高的测试性能与分类精度。深度学习通过建立类似于人脑的分层模型结构,对输入数据逐级提取从底层到高层的特征,从而能很好地建立从底层信号到高层语义的映射关系。传统的机器学习方法,在训练数据量到达一定规模后,算法的学习能力就饱和了,而深度学习见不到底。深度学习Any continuous function from input to output can be implemented in a three-layer net,given sufficient number of hidden units and proper nonlinearities in activation function and weights.三层网络,足够多的节点,合适的激活函数与权重可以复现任意函数deep models can give better approximation to nonlinear functions than shallow models.深层的模型相较于浅层逼近效果更好深度学习深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,以更少的参数与更深的结构来学习更有用的特征,从而最终提升分类或预测的准确性。所以,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:)强调了模型结构的深度,通常有5层、6层、甚至10多层的隐层节点;)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而分类或预测更加容易。由于含有很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类,深度学习算法逐渐成为分类算法的一个大的分支。然而深度神经网络在训练上难度很大。为此,可以通过“逐层初始化”(layer-wise pre-train)来有效克服预训练与梯度消失现象由于早层的梯度是由后层的梯度项相乘得到,梯度会逐层衰减。而参数的随机初始化意味着未训练前经过权重、偏置的计算后神经元早层丢失了大量的有用信息,从而导致后层的网络学习率超过前层,BP算法收敛缓慢。当神经网络有很多层时,就会面临不稳定的情况。对网络的预训练可以较好地避免这种现象。这是因为:实验表明,在非凸优化问题上初始点的选择十分重要 无监督学习增加了一个深层结构的鲁棒性 预训练神经网络能够学习到数据的不同的高质量特征 单纯增加一个网络的深度,如果没有预训练进行处理,会提高陷于局部极小点的可能性实验对比当数据进行预处理后,神经网络迭代稳定,分类误差保持在一个较低的水平;而当数据没有进行预处理,随着层数的增加分类误差迅速增大,代价函数也保持在一个较高的水平。这是由于预训练提取了图像特征,不容易使得图像限于较高的局部极小点,即更接近于全局的极小点,分类效果要大大优于无预训练的网络。自编码器结构单层自动编码器网络(AutoEncoder)实质上是一个三层的反向传播神经网络。它逐层采用无监督学习的方式,不使用标签调整权值,将输入映射到隐藏层上,再经过反变换映射到输出上,实现输入输出的近似等价。自动编码器的主要思想是利用无监督无监督方式最小化重建误差学习到的权重在分类中提供了一个网络初始化的较好的初始点。无监督学习的主要目的是从无监督的数据集中提取有用的特征,以减少输入信息,保留数据中关键的有效信息。网络通过没有标签的数据学习到潜在的分布信息,有利于它区分有标签的信息。然而,在网络中,权重仍然需要进行微调。因此,需要在神经网络的顶部增加一个线性回归,再对有标签的数据进行处理。网络的微调会采用梯度下降法,对所有层同时进行调整。自编码器的建立建立AutoEncoder的方法是:对于m个数据的输入,有:Code 编码:使用非线性激活函数,将维输入数据映射到维隐含层(隐藏节点表示特征)其中W是一个的权重矩阵,b是一个d维的偏移向量Decode 解码:通过反向映射,对映射后的数据进行重建SAE网络采用相同的权重 ,对数据进行编码与解码。每一次训练输入都会得到映射后的 与解码后的 。通过对代价函数的最优化可以得到训练集上的权重与偏置。节点的稀疏性限制为了模拟人的大脑的识别,增强网络的鲁棒性,避免过拟合的发生,我们需要让少部分中间隐藏神经元的活跃度,也就是输出值大于0,其他的大部分为0(或近似为0),这就是所谓的稀疏性。在人脑中有大量的神经元,但是大多数自然图像通过视觉进入人脑时,只会刺激到少部分神经元,大部分神经元都是出于抑制状态的。而且,大多数自然图像,都可以被表示为少量基本元素(面或者线)的叠加。稀疏性处理能够更加有助于我们用少量的神经元提取出自然图像更加本质的特征。从数学的角度来说,稀疏编码是一种多维数据描述方法,数据经稀疏编码后仅有少数分量同时处于明显激活状态。在实际应用中,稀疏编码有如下几个优点:编码方案存储能力大,具有联想记忆能力,并且计算简便;使自然信号的结构更加清晰;事实上,这一简单的自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。16图像实验原始图像隐含层特征 Randomly pick one of the 10 images from mat-file,then randomly sample an 88 image patch from the selected image,and convert the image patch into a 64-dimensional vector to get a training example可以看到,AE在图像处理的特征提取中可以作为边缘检测器学习到图像边缘信息Stacked AutoEncoder一个AE模型有1个可视层、1个隐含层1个重建层。通过自下而上的映射,实现编码与反编码重建:激活函数Tied Weight有助于等分模型参数minimizeCOST FUNCTIONupdate梯度下降Stacked AutoEncoderIf the subsequent classifier is implemented as a neural network too,parameters throughout the whole network can be adjusted slightly while we are training the classifier.This step is called fine-tuning.For logistic regression,the training is simply back propagation,searching for a minimum in a peripheral region of parameters initialized by the former step.分类层和训练层可以一同进行调整。这一步叫fine-tuning。19参数设置:设置好激活函数、学习率、迭代步数、训练层数等一系列基本参数构建SAE网络:分层建立输入-输出-输入的AE网络,并对权值与偏置初始化SAE预训练:对网络只传入训练数据,在有限迭代步数下进行无监督的学习,以期望学得数据特征,得到权值与偏置的初始值参数微调:将SAE网络转化成输入-输出的NN网络并传入训练标签,即放弃输出到输入的反向映射,进行反向传播学习,减小训练误差测试:对测试数据进行神经网络测试,得到结果SAE构建方法ExampleDefined By User空间去冗余压缩实验总结1.训练时间与迭代步数、层数、节点数、数据量四者成明显的线性关系;而测试时间仅对层数、节点数较敏感,成近似线性2.随着迭代步数的增加,分类精度迅速提高,然而分类有其上限,过多的迭代步数无法提高分类精度;不同的数据所适用的网络层数不一致,并不是层数越高,效果越理想;对节点的实验表明,神经网络更适用于数据的压缩,单层过高的节点数会降低分类效果;同时,数据量也比较明显地影响着分类精度。3.对数据进行降维处理,并与之前的实验结果进行对比。实验表明,向SAE网络中引入降维的数据并不能很好的提高分类效果4.对比其他分类算法SVM与KNN,实验表明,SAE网络更适合于大量数据的学习,而SVM与KNN浅层网络训练与测试所用时间更短,而且可以在较少的数据量下获得比较良好的分类效果。CNN基本知识卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,可以使图像直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者其他形式的变形具有高度不变性。卷积网络的核心思想是将:局部感受野、权值共享以及降采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性,以达到图像降维的特征学习与分类。稀疏连接卷积神经网络采用上下层节点间局部连接的方式构建网络,也就是说每个隐含层的节点只与一部分连续的输入点连接,这样模拟了人大脑皮层中视觉皮层不同位置只对局部区域有响应这一现象。局部连接网络在神经网络中是采用卷积的方法来实现。对于自然图像来说,因为它们具有本身固有的特性,即图像中某个部分的统计特征和其它部位的相似,因此我们学习到的某个部位的特征也同样适用于其它部位。这就在稀疏网络处理图像在神经网络中应用的理论基础。权重共享在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。图像特性同一平面层的神经元权值相同,有相同程度的位移、旋转不变性。每个特征提取后都紧跟着一个用来求局部平均与二次提取的亚取样层。这种特有的两次特征提取结构使得网络对输入样本有较高的畸变容忍能力。也就是说,卷积神经网络通过局部感受野、共享权值和亚取样来保证图像对位移、缩放、扭曲的鲁棒性。池采样在通过卷积获得了特征(features)之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个(96 8+1)*(96 8+1)=7921 维的卷积特征,由于有 400 个特征,所以每个样例(example)都会得到一个 892*400=3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合(over-fitting)。池采样为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值(或最大值)。这些概要统计特征不仅具有低得多的维度(相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化(pooling),有时也称为平均池化或者最大池化(取决于计算池化的方法)。LeNet-5深度置信网络深度置信网络(Deep Belief Net,DBN)是拥有深层架构的前馈神经网络,其中包含多个隐含层,而使用DBN的障碍在于如何训练这样的深层网络。通常情况下,由于网络权值的随机初始化,基于梯度的优化容易陷入局部最小值。Hinton等提出了一种新的贪婪逐层非监督算法来初始化基于受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)的DBN。这个算法提供了网络权值的初始化方法,随后使用基于梯度的算法如梯度下降法来微调网络权值。受限玻尔兹曼机RBM 只有两层神经元,有m个可视节点和n个隐藏节点,其中每个可视节点只和n个隐藏节点相关,和其他可视节点是独立的,就是这个可视节点的状态只受n个隐藏节点的影响,对于每个隐藏节点也是,只受m个可视节点的影响,这个特点使得RBM的训练变得容易。注意这两层间的对称(双向)连接。RBM网络有几个参数,一个是可视层与隐藏层之间的权重矩阵,一个是可视节点的偏移量b,一个是隐藏节点的偏移量c,这几个参数决定了RBM网络将一个m维的样本编码成一个什么样的n维的样本。受限玻尔兹曼机RBM介绍RBM区别于BM的一点是,前者要求层内神经元之间没有连接,而后者允许层内连接定义能量函数联合概率分布性质:给定可见层时,隐藏层神经元激活条件独立;反之亦然给定训练样本训练一个RBM意味着调整参数以拟合给定训练样本。数学推导可知,该问题等价于求下述函数最大值假设每个节点取值都在集合0,1中,即i,j,vi 0,1,hj 0,1。DBN对于给定的x=(x1,x2 xn),隐藏节点的第 j 个特征的取值为 1 的概率为P(hj=1|v)=(wij vi+cj)其中的 v 取值就是 x,hj 的取值就是 yj,也就是说,编码后的样本 y 的第 j 个位置的取值为 1 的概率是p(hj=1|v)。所以,生成 yj 的过程就是:i)先利用公式p(hj=1|v)=(wij vi+cj),根据 x 的值计算概率p(hj=1|v),其中 vi 的取值就是 xi 的值。ii)然后产生一个 0 到 1 之间的随机数,如果它小于p(hj=1|v),yj 的取值就是 1,否则就是 0。DBN反过来,现在知道了一个编码后的样本 y,想要知道原来的样本 x,即解码过程,跟上面也是同理,过程如下:i)先利用公式p(vi=1|h)=(wji hj+bi),根据 y 的值计算概率p(hj=1|v),其中 hj 的取值就是 yj 的值。ii)然后产生一个 0 到 1 之间的随机数,如果它小于p(vi=1|h),hi 的取值就是 1,否则就是 0。RBM训练一般地,链接权重Wij可初始化为来自正态分布N(0,0.01)的随机数,隐单元的偏置cj初始化为0;对于第i个可见单元,偏置bj初始化为logpi/(1-pi)。pi表示训练样本中第i个特征处于激活状态所占的比率 学习率epsilon至关重要,大则收敛快,但是算法可能不稳定。小则慢。为克服这一矛盾引入动量,使本次参数值修改的方向不完全由当前样本似然函数梯度方向决定,而是上一次参数值修改方向与本次梯度方向的结合可以避免过早的收敛到局部最优点k为动量项学习率 开始时k=0.5,重构误差处于平稳增加状态时,k=0.9RBM评估Baidu:Deep Image评价理論上無法證明它為何有效,但是在實際問題上它的確有效。没有形成系统的理论。各个DL模型为什么好用?原理本质是什么?各个模型都适用于什么场合?针对特定数据,特定问题,如何组合搭建模型,各个参数怎么选?如何根据特定模型,特定数据来训练模型?优点:1.在计算机视觉和语音识别方面确实结果超过传统方法一大截;2.具有较好的transfer learning性质,一个模型训练好了拿到另一个问题上做一些简单的refinement就可以用了;3.只要层数够 一个较好的 Feature Set 是可以被学出来的缺点:1.训练耗时,模型正确性验证复杂且麻烦;2.某些深度网络不仅训练而且线上部署也需要GPU支持;3.模型难以诠释 找出来的Feature对人而言并不直观应用图像识别 文本模型 时序相关语音识别+机器翻译Multimodal Learning CTR prediction推荐系统 把深度学习思想应用到其他的模型上展望当前深度学习领域的学术研究可以包含四部分:优化,泛化,表达以及应用。除了应用之外每个部分又可以分成实践和理论两个方面。包括谷歌、百度等都在研究,并产生了很多理论研究与工程应用 Google Brain Google cat深度学习引领了机器学习的方向,相关的机器视觉方向,从理论到产品,导致了这个行业不断的火热参考资料stanford Tutorial http:/ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial http:/openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearninghttp:/