深度学习(Deeplearning)综述

深度学习(Deeplearning)综述
⼀、深度学习介绍
深度学习是以不少于两个隐含层的神经⽹络对输⼊进⾏⾮线性变换或表⽰学习的技术,通过构建深层神经⽹络,进⾏各项分析活动。深层神经⽹络由⼀个输⼊层,数个隐层,以及⼀个输出层构成。每层有若⼲个神经元,神经元之间有连接权重。每个神经元模拟⽣物的神经细胞,⽽结点之间的连接模拟神经细胞之间的连接。
深度学习实践的四个关键要素:计算能⼒、算法、数据和应⽤场景,就像四⼤护法神兽⼀样保证了深度学习的应⽤和实践,缺⼀不可。
计算能⼒
⾸先,深度神经⽹络复杂,训练数据多,计算量⼤。深度神经⽹络中神经元多,神经元间连接数量也相当惊⼈。从数学的⾓度看,每个神经元都要包含数学计算(如Sigmoid、ReLU或者Softmax函数),需要估计的参数量也极⼤。语⾳识别和图像识别应⽤中,神经元达数万个,参数数千万,模型复杂导致计算量⼤。所以计算能⼒是深度学习应⽤的基础。
冷气机组计算能⼒越强,同样时间内积累的经验就越多、迭代速度也越快,计算能⼒这种对于深度学习的⽀撑与
台球杆架推动作⽤是不可替代的。
算法
在计算能⼒变得⽇益廉价的今天,深度学习试图建⽴⼤得多也复杂得多的神经⽹络,我们可以把算法理解为深度学习的神经⽹络或是计算思维,这种神经⽹络越复杂,捕捉到的信号就越精确,⽬前⽐较常见的算法包括深度信念⽹络(Deep Belief Networks)、卷积神经⽹络(ConvolutionalNeural Networks)、受限玻尔兹曼机(Restricted BoltzmannMachine)和堆栈式⾃动编码器(Stacked Auto-encoders),以深度卷积神经⽹络为代表的监督学习⽅法⽬前来说是最有效也是使⽤最多的。
数据
如今深度学习正迅速成为⾼级数据分析领域的热门话题,⽽数据的绝对量是促进深度学习⼯具和技术发展的⼀个关键因素。
应⽤场景
深度学习技术⽬前应⽤的场景不多,最普遍也是最成功的领域就是语⾳识别和图像处理这两个应⽤场景了,之前提到的三⼤神兽——计算能⼒、算法和数据属于开发端,应⽤场景则属于消费端层⾯,随着未来深度学习技术的不断发展以及⽤户的需求提升,深度学习的应⽤场景将越来越多,⽐如许多智
能⼿机内置的⼈脸识别功能来对照⽚进⾏分类,已经可以达到相当的准确率;⽀付宝等⾦融⼯具也很可能采⽤⼈脸识别以提⾼安全性……未来的深度学习⼀定不仅仅局限于语⾳识别和图像识别这两个领域,还有更多的可能性。
⼆、模型优化
调参⽅法
1.样本要随机化,防⽌⼤数据淹没⼩数据
2.样本要做归⼀化。关于归⼀化的好处请参考:为何需要归⼀化处理
3.激活函数要视样本输⼊选择(多层神经⽹络⼀般使⽤relu)
4.mini batch很重要,⼏百是⽐较合适的(很⼤数据量的情况下)
5.学习速率(learning rate)很重要,⽐如⼀开始可以lr设置为0.01,然后运⾏到loss不怎么降的时候,学习速率除以10,接着训练
6.权重初始化,可⽤⾼斯分布乘上⼀个很⼩的数,这个可以看:权值初始化
7.Adam收敛速度的确要快⼀些,可结果往往没有sgd + momentum的解好(如果模型⽐较复杂的话,sgd是⽐较难训练的,这时候adam的威⼒就体现出来了)
8.Dropout的放置位置以及⼤⼩⾮常重要
9.early stop,发现val_loss没更新,就尽早停⽌
模型压缩与优化加速
模型压缩算法能够有效降低参数冗余,从⽽减少存储占⽤、通信带宽和计算复杂度,有助于深度学习的应⽤部署,具体可划分为如下⼏种⽅法:堆栈式
1. 线性或⾮线性量化:1/2bits, int8 和 fp16等;
2. Op-level的快速算法:FFT Conv2d (7x7, 9x9), Winograd Conv2d (3x3, 5x5) 等;做指挥中心控制台
3. Layer-level的快速算法:Sparse-block net [1] 等;
4. 优化⼯具与库:TensorRT (Nvidia), Tensor Comprehension (Facebook) 和 Distiller (Intel) 等;
5. 通道剪枝(channel pruning):结构或⾮结构剪枝:deep compression, channel pruning 和 network s
limming等; 在CNN⽹络中,通过对特征图中的通道维度进⾏剪枝,可以同时降低模型⼤⼩和计算复杂度,并且压缩后的模型可以直接基于现有的深度学习框架进⾏部署。
6. 权重稀疏化(weight sparsification):通过对⽹络权重引⼊稀疏性约束,可以⼤幅度降低⽹络权重中的⾮零元素个数;压缩后模型的⽹络权重可以以稀疏矩阵的形式进⾏存储和传输,从⽽实现模型压缩。
7. 权重量化(weight quantization):通过对⽹络权重引⼊量化约束,可以降低⽤于表⽰每个⽹络权重所需的⽐特数;我们同时提供了对于均匀和⾮均匀两⼤类量化算法的⽀持,可以充分利⽤ARM和FPGA等设备的硬件优化,以提升移动端的计算效率,并为未来的神经⽹络芯⽚设计提供软件⽀持。无人机自动机场
8. ⽹络蒸馏(network distillation):对于上述各种模型压缩组件,通过将未压缩的原始模型的输出作为额外的监督信息,指导压缩后模型的训练,在压缩/加速倍数不变的前提下均可以获得0.5%-2.0%不等的精度提升。
9. 多GPU训练(multi-GPU training):深度学习模型训练过程对计算资源要求较⾼,单个GPU难以在短时间内完成模型训练,因此我们提供了对于多机多卡分布式训练的全⾯⽀持,以加快使⽤者的开发流程。⽆论是基于ImageNet数据的Resnet-50图像分类模型还是基于WMT14数据的Transformer机器翻译模型,均可以在⼀个⼩时内训练完毕。
10. 超参数优化(hyper-parameter optimization)部分可以通过强化学习或者AutoML,在整体压缩率⼀定的情况下,搜索出每⼀层最合适的压缩⽐例使得整体的精度最⾼。多数开发者对模型压缩算法往往了解较少,调节压缩算法参数需要长期的学习和实验才能有所经验, 但超参数取值对最终结果往往有着巨⼤的影。
三、神经⽹络模型
1、卷积神经⽹络(CN N)
卷积神经⽹络(Convolutional Neural Networks, CNN)是⼀类包含卷积计算且具有深度结构的前馈神经⽹络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之⼀ 。卷积神经⽹络具有表征学习(representation learning)能⼒,能够按其阶层结构对输⼊信息进⾏平移不变分类(shift-invariant classification),因此也被称为“平移不变⼈⼯神经⽹络。
1)卷积:对图像元素的矩阵变换,是提取图像特征的⽅法,多种卷积核可以提取多种特征。⼀个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。⼀次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出⽐较全局的特征,因此需要在⼀层卷积基础上继续做卷积计算
,这也就是多层卷积。
2)池化:降维的⽅法,按照卷积计算得出的特征向量维度⼤的惊⼈,不但会带来⾮常⼤的计算量,⽽且容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”⼀点,那么⼀种⽅法就是把图像中局部区域的特征做⼀个平滑压缩处理,这源于局部图像⼀些特征的相似性(即局部相关性原理)。
3) 全连接:softmax分类
训练过程:
卷积核中的因⼦(×1或×0)其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。⼀个特征如果有9个值,1000个特征就有900个值,再加上多个层,需要学习的参数还是⽐较多的。
对卡在局部极⼩值的处理⽅法:
1. 调节步伐:调节学习速率,使每⼀次的更新“步伐”不同;
2. 优化起点:合理初始化权重(weights initialization)、预训练⽹络(pre-train),使⽹络获得⼀个较好的“起始点”,如最右侧的起始点就⽐最左侧的起始点要好。常⽤⽅法有:⾼斯分布初始权重(Gaussian distribution)、均匀分布初始权重(Uniform distribution)、Glorot 初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)。
浅层VS深层:
浅层神经⽹络可以模拟任何函数,但数据量的代价是⽆法接受的。深层解决了这个问题。相⽐浅层神经⽹络,深层神经⽹络可以⽤更少的数据量来学到更好的拟合。深层的前提是:空间中的元素可以由迭代发展⽽来的。
1.  为什么神经⽹络⾼效:并⾏的先验知识使得模型可⽤线性级数量的样本学习指数级数量的变体
2.  学习的本质是什么:将变体拆分成因素和知识(Disentangle Factors of Variation)
i.  为什么深层神经⽹络⽐浅层神经⽹络更⾼效:迭代组成的先验知识使得样本可⽤于帮助训练其他共⽤同样底层结构的样本。
ii.  神经⽹络在什么问题上不具备优势:不满⾜并⾏与迭代先验的任务
3.    ⾮迭代:该层状态不是由上层状态构成的任务(如:很深的CNN因为有max pooling,信息会逐渐丢失。⽽residual network再次使得迭代的先验满⾜)
详细内容请参看:
2、循环神经⽹络(R ec urrent N eur a l N etw o rk,R N N)
urr ent N eura
尽管从多层感知器(MLP)到循环神经⽹络(RNN)的扩展看起来微不⾜道,但是这对于序列的学习具有深远的意义。循环神经⽹络(RNN)的使⽤是⽤来处理序列数据的。在传统的神经⽹络中模型中,层与层之间是全连接的,每层之间的节点是⽆连接的。但是这种普通的神经⽹络对于很多问题是⽆能为⼒的。⽐如,预测句⼦的下⼀个单词是什么,⼀般需要⽤到前⾯的单词,因为⼀个句⼦中前后单词并不是独⽴的。循环神经⽹络(RNN)指的是⼀个序列当前的输出与之前的输出也有关。具体的表现形式为⽹络会对前⾯的信息进⾏记忆,保存在⽹络的内部状态中,并应⽤于当前输出的计算中,即隐含层之间的节点不再⽆连接⽽是有链接的,并且隐含层的输⼊不仅包含输⼊层的输出还包含上⼀时刻隐含层的输出。理论上,循环神经⽹络能够对任何长度的序列数据进⾏处理,但是在实践中,为了减低复杂性往往假设当前的状态只与前⾯的⼏个状态相关。
下图展⽰的是⼀个典型的循环神经⽹络(RNN)结构。
图1 循环神经⽹络(RNN)结构
将循环神经⽹络(RNN)可视化的⼀种有效⽅法是考虑将其在时间上进⾏展开,得到如图2结构。
图2 循环神经⽹络(RNN)在时间上展开
3、双向长短时记忆循环神经⽹络详解(Bi-direc tio na l LSTM R N N)
双向循环神经⽹络(BRNN)的基本思想是提出每⼀个训练序列向前和向后分别是两个循环神经⽹络
(RNN),⽽且这两个都连接着⼀个输出层。这个结构提供给输出层输⼊序列中每⼀个点的完整的过去和未来的上下⽂信息。下图展⽰的是⼀个沿着时间展开的双向循环神经⽹络。六个独特的权值在每⼀个时步被重复的利⽤,六个权值分别对应:输⼊到向前和向后隐含层(w1, w3),隐含层到隐含层⾃⼰(w2, w5),向前和向后隐含层到输出层(w4, w6)。值得注意的是:向前和向后隐含层之间没有信息流,这保证了展开图是⾮循环的。
图3 双向循环神经⽹络(BRNN)在时间上展开
对于整个双向循环神经⽹络(BRNN)的计算过程如下:向前推算(Forward pass):对于双向循环神经⽹络(BRNN)的隐含层,向前推算跟单向的循环神经⽹络(RNN)⼀样,除了输⼊序列对于两个隐含层是相反⽅向的,输出层直到两个隐含层处理完所有的全部输⼊序列才更新:向后推算(Backward pass):双向循环神经⽹络(BRNN)的向后推算与标准的循环神经⽹络(RNN)通过时间反向传播相似,除了所有的输出层δδ项⾸先被计算,然后返回给两个不同⽅向的隐含层。
图4 32层RNN及对应的展开
BRNN和LSTM相⽐,另⼀个⽤的最成功的RNN就是BRNN了,该结构中,有2层隐藏层,其中每个隐藏层都连接到输出和输⼊。这2个隐藏层可以微分,且都有⾃循环连接,不过⼀个是朝着下⼀个时间步连接的,另⼀个是朝着上⼀个时间步连接的。
包覆胶水
图5  BRNN⽰意图
给定⼀个输⼊序列和⼀个⽬标序列,BRNN可以先基于时间维度展开,然后采⽤传统的BP⽅法来训练。BRNN的训练相对RNN稍微有点计算量,⼤致是2倍。BRNN的⼀个限制是他不能连续的运⾏,因为他需要在序列的开始和结束都各有⼀个固定的占位符,⽽且该模型也没法⽤在ML中的在线环境,因为你没法得到未来的数据。不过对于如词性标注任务,或者给定⼀个句⼦,⽤来做其中某个单词基于其前后单词基础上是否合理的评价等任务还是很好的。
4、长短期记忆模型(LSTM)

本文发布于:2024-09-21 22:58:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/338228.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学习   神经   深度   模型   计算   循环   卷积
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议