0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析深度学习的原理及其架构

ss 来源:网络整理 作者:工程师谭军 2018-10-07 15:13 次阅读
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。 [1]
深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。 [2]
同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =》S1=》S2=》…。.=》Sn =》 O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失,设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。现在回到主题Deep Learning,需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设设计了一个系统S(有n层),通过调整系统中参数,使得它的输出仍然是输入I,那么就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。 [3]
对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。 [3]
另外,前面是假设输出严格地等于输入,这个限制太严格,可以略微地放松这个限制,例如只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。 [3]
把学习结构看作一个网络,则深度学习的核心思路如下:
①无监督学习用于每一层网络的pre-train;
②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
③用自顶而下的监督算法去调整所有层
主要技术
线性代数、概率和信息论
欠拟合、过拟合、正则化
最大似然估计和贝叶斯统计
随机梯度下降
监督学习和无监督学习
深度前馈网络、代价函数和反向传播
正则化、稀疏编码和dropout
自适应学习算法
卷积神经网络
循环神经网络
递归神经网络
深度神经网络和深度堆叠网络
LSTM长短时记忆
主成分分析
正则自动编码器
表征学习
蒙特卡洛
受限波兹曼机
深度置信网络
softmax回归、决策树和聚类算法
KNN和SVM
生成对抗网络和有向生成网络
机器视觉和图像识别
自然语言处理
语音识别和机器翻译
有限马尔科夫
动态规划
梯度策略算法
增强学习(Q-learning)
转折点
2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。
2006年的3篇论文改变了这种状况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工作所引领:
Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006
Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
在这三篇论文中以下主要原理被发现:
表示的无监督学习被用于(预)训练每一层;
在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入;
用有监督训练来调整所有层(加上一个或者更多的用于产生预测的附加层);
DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(通过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(类似于稀疏编码)。Auto-encoders和convolutional架构将在以后的课程中讲解。
从2006年以来,大量的关于深度学习的论文被发表。

深度学习是计算机领域中目前非常火的话题,不仅在学术界有很多论文,在业界也有很多实际运用。本篇博客主要介绍了三种基本的深度学习的架构,并对深度学习的原理作了简单的描述。本篇文章翻译自Medium上一篇入门介绍。

深度学习是计算机领域中目前非常火的话题,不仅在学术界有很多论文,在业界也有很多实际运用。本篇博客主要介绍了三种基本的深度学习的架构,并对深度学习的原理作了简单的描述。翻译自:原文地址

简介

机器学习技术在当代社会已经发挥了很大的作用:从网络搜索到社交网络中的内容过滤到电子商务网站的个性化推荐,它正在快速的出现在用户的消费品中,如摄像机和智能手机。机器学习系统可以用来识别图像中的物体,将语音转变成文字,匹配用户感兴趣的新闻、消息和产品等,也可以选择相关的搜索结果。这些应用越来越多的使用一种叫做“深度学习(Deep Learning)”的技术。

深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。它尝试为数据的高层次摘要进行建模。以一个简单的例子来说,假设你有两组神经元,一个是接受输入的信号,一个是发送输出的信号。当输入层接收到输入信号的时候,它将输入层做一个简单的修改并传递给下一层。在一个深度网络中,输入层与输出层之间可以有很多的层(这些层并不是由神经元组成的,但是它可以以神经元的方式理解),允许算法使用多个处理层,并可以对这些层的结果进行线性和非线性的转换。

译者补充:深度学习的思想与人工神经网络思想是一致的。总的来说,神经网络是一种机器学习架构,所有的个体单元以权重的方式连接在一起,且这些权重是通过网络来训练的,那么它就可以称之为神经网络算法。人工神经网络算法的思想来源于模仿人类大脑思考的方式。人类大脑是通过神经系统得到输入信号再作出相应反映的,而接受外部刺激的方式是用神经元接受神经末梢转换的电信号。那么,我们希望通过人造神经元的方式模拟大脑的思考,这就产生了人工神经网络了。人工神经元组成了人工神经网络的计算单元,而人工神经网络结构描述了这些神经元的连接方式。我们可以采用层的方式组织神经元,层与层之间可以互相连接。以前受制于很多因素,我们无法添加很多层,而现在随着算法的更新、数据量的增加以及GPU的发展,我们可以用很多的层来开发神经网络,这就产生了深度神经网络。而深度学习其实就是深度神经网络的一个代名词。关于人工神经网络算法可以参考人工神经网络(Artificial Neural Network)算法简介。

近些年来,深度学习通过在某些任务中极佳的表现正在改革机器学习。深度学习方法在会话识别、图像识别、对象侦测以及如药物发现和基因组学等领域表现出了惊人的准确性。但是,“深度学习”这个词语很古老,它在1986年由Dechter在机器学习领域提出,然后在2000年有Aizenberg等人引入到人工神经网络中。而现在,由于Alex Krizhevsky在2012年使用卷积网络结构赢得了ImageNet比赛之后受到大家的瞩目。

深度学习架构

1、生成式深度架构(Generative deep architectures),主要是用来描述具有高阶相关性的可观测数据或者是可见的对象的特征,主要用于模式分析或者是总和的目的,或者是描述这些数据与他们的类别之间的联合分布。(其实就是类似与生成模型)

2、判别式深度架构(Discriminative deep architectures),主要用于提供模式分类的判别能力,经常用来描述在可见数据条件下物体的后验类别的概率。(类似于判别模型)

3、混合深度架构(Hybrid deep architectures),目标是分类,但是和生成结构混合在一起了。比如以正在或者优化的方式引入生成模型的结果,或者使用判别标注来学习生成模型的参数。

尽管上述深度学习架构的分类比较复杂,其实实际中对应的模型的例子就是深度前馈网络,卷积网络和递归神经网络(Deep feed-forward networks, Convolution networks and Recurrent Networks)。

深度前馈网络(Deep feed-forward networks)

深度前馈网络也叫做前馈神经网络,或者是多层感知机(Multilayer Perceptrons,MLPs),是深度学习模型中的精粹。

前馈网络的目标是近似某些函数。例如,对于一个分类器,y=f(x)y=f(x)来说,它将一个输入值xx变成对应的类别yy。前馈网络就是定义一个映射y=f(x;θ)y=f(x;θ),并学习出参数θθ使得产生最好的函数近似。

简而言之,神经网络可以定义成输入层,隐含层和输出层。其中,输入层接受数据,隐含层处理数据,输出层则输出最终结果。这个信息流就是接受xx,通过处理函数ff,在达到输出yy。这个模型并没有任何的反馈连接,因此被称为前馈网络。模型如下图所示:

卷积神经网络(Convolution Neural Networks)

在机器学习中,卷积神经网络(简称CNN或者ConvNet)是一种前馈神经网络,它的神经元的连接是启发于动物视觉皮层。单个皮质神经元可以对某个有限空间区域的刺激作出反应。这个有限空间可以称为接受域。不同的神经元的接受域可以重叠,从组成了所有的可见区域。那么,一个神经元对某个接受域内的刺激作出反应,在数学上可以使用卷积操作来近似。也就是说,卷积神经网络是受到生物处理的启发,设计使用最少的预处理的多层感知机的变体。

卷积神经网络在图像和视频识别、推荐系统以及自然语言处理中都有广泛的运用。

LeNet是早期推动深度学习发展的卷积神经网络之一。这是Yann LeCun从1988年以来进行的许多词的成功迭代后得到的开创性工作,称之为LeNet5。在当时,LeNet架构主要用来进行字符识别的工作,如读取邮编,数字等。如下图所示,卷积神经网络主要包含四块:

卷积层(Convolutional Layer)

激活函数(Activation Function)

池化层(Pooling Layer)

全连接层(Fully Connected Layer)

卷积层(Convolutional Layer)

卷积层是基于单词“卷积(Convolution)”而来,这是一种数学上的操作,它是对两个变量f\*gf\*g进行操作产生第三个变量。它和互相关(cross-correlation)很像。卷积层的输入是一个m×m×rm×m×r图像,其中m是图像的高度和宽度,r是通道的数量,例如,一个RGB图像的通道是3,即r=3r=3。卷积层有kk个滤波器【filters】(或者称之为核【kernel】),其大小是n×n×qn×n×q,这里的nn是比图像维度小的一个数值,qq既可以等于通道数量,也可以小于通道数量,具体根据不同的滤波器来定。滤波器的大小导致了

激活函数(Activation Function)

为了实现复杂的映射函数,我们需要使用激活函数。它可以带来非线性的结果,而非线性可以使得我们很好的拟合各种函数。同时,激活函数对于压缩来自神经元的无界线性加权和也是重要的。

激活函数很重要,它可以避免我们把大的数值在高层次处理中进行累加。激活函数有很多,常用的有sigmoid,tanh和ReLU。

池化层(Pooling Layer)

池化是一个基于样本的离散化过程。其目的上降低输入表示的采样(这里的输入可以是图像,隐层的输出等),减少它们的维度,并允许我们假设特征已经被包含在了子区域中。

这部分的作用是通过提供一种抽象的形式表示来帮助过拟合表示。同样的,它也通过减少了参数的数量降低了计算的复杂度并为内部的表示提供一个基本的不变性的转换。

目前最常用的池化技术有Max-Pooling、Min-Pooling和Average-Pooling。下图是2*2滤波器的Ma-Pooling操作示意图。

全连接层(Fully Connected Layer)

“全连接”的意思是指先前的层里面的所有的神经元都与后一个层里面的所有的神经元相连。全连接层是一种传统的多层感知机,在输出层,它使用softmax激活函数或者其他激活函数。

递归神经网络(Recurrent Neural Networks)

在传统的神经网络中,我们假设所有的输入之间相互独立。但是对于很多任务来说,这并不是一个好的主意。如果你想知道一个句子中下一个单词是什么,你最好知道之前的单词是什么。RNN之所以叫RNN就是它对一个序列中所有的元素都执行相同的任务,所有的输出都依赖于先前的计算。另一种思考RNN的方式是它会记住所有之前的计算的信息。

一个RNN里面有很多循环,它可以携带从输入中带来的信息。如下图所示,x_tx_t是一种输入,A是RNN里面的一部分,h_th_t是输出。本质上,您可以从句子中输入文字,甚至还可以从字符串中输入x_tx_t格式的字符,通过RNN可以提供一个h_th_t。 RNN的一些类型是LSTM,双向RNN,GRU等。

由于任何输入和输出都可以在RNN中变成一对一或者多对多的形式,RNN可以用在自然语言处理、机器翻译、语言模型、图像识别、视频分析、图像生成、验证码识别等领域。下图展示了RNN可能的结构以及对模型的解释。

应用

深度学习有很多应用,很多特别的问题也可以通过深度学习解决。一些深度学习的应用举例如下:

黑白图像的着色

深度学习可以用来根据对象及其情景来为图片上色,而且结果很像人类的着色结果。这中解决方案使用了很大的卷积神经网络和有监督的层来重新创造颜色。

机器翻译

深度学习可以对未经处理的语言序列进行翻译,它使得算法可以学习单词之间的依赖关系,并将其映射到一种新的语言中。大规模的LSTM的RNN网络可以用来做这种处理。

图像中的对象分类与检测

这种任务需要将图像分成之前我们所知道的某一种类别中。目前这类任务最好的结果是使用超大规模的卷积神经网络实现的。突破性的进展是Alex Krizhevsky等人在ImageNet比赛中使用的AlexNet模型。

自动产生手写体

这种任务是先给定一些手写的文字,然后尝试生成新的类似的手写的结果。首先是人用笔在纸上手写一些文字,然后根据写字的笔迹作为语料来训练模型,并最终学习产生新的内容。

自动玩游戏

这项任务是根据电脑屏幕的图像,来决定如何玩游戏。这种很难的任务是深度强化模型的研究领域,主要的突破是DeepMind团队的成果。

聊天机器人

一种基于sequence to sequence的模型来创造一个聊天机器人,用以回答某些问题。它是根据大量的实际的会话数据集产生的。想了解详情,可以参考:https://medium.com/shridhar743/generative-model-chatbots-e422ab08461e

结论

从本篇博客来看,由于模仿了人类大脑,深度学习可以运用在很多领域中。目前有很多领域都在研究使用深度学习解决问题。尽管目前信任是个问题,但是它终将被解决。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8129

    浏览量

    130573
  • 深度学习
    +关注

    关注

    73

    文章

    5239

    浏览量

    119922
收藏 人收藏

    评论

    相关推荐

    2023年使用树莓派和替代品进行深度学习

    此页面可帮助您在Raspberry Pi或Google Coral或Jetson Nano等替代品上构建深度学习模式。有关深度学习及其限制的
    的头像 发表于 05-05 09:47 2130次阅读
    2023年使用树莓派和替代品进行<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    深度学习的硬件架构解析

    深度学习在这十年,甚至是未来几十年内都有可能是最热门的话题。虽然深度学习已是广为人知了,但它并不仅仅包含数学、建模、学习和优化。算法必须在优
    发表于 11-18 16:00 5562次阅读

    低功耗蓝牙上层架构浅析

    低功耗蓝牙上层架构浅析低功耗蓝牙架构上层有两个基础的服务就是 GAP和GATT,这个跟android的framework相似,系统提供服务,用户调用接口,设置回调,填充参数就可以完成整个连接和传输
    发表于 04-12 11:31

    基于深度学习的异常检测的研究方法

    异常检测的深度学习研究综述原文:arXiv:1901.03407摘要异常检测是一个重要的问题,在不同的研究领域和应用领域都得到了很好的研究。本文的研究目的有两个:首先,我们对基于深度学习
    发表于 07-12 07:10

    超越英伟达Pascal五倍?揭秘英特尔深度学习芯片架构 精选资料推荐

    在被英特尔收购两年之后,深度学习芯片公司 Nervana 终于准备将代号为「Lake Crest」的架构转化为实际的产品了。对于英特尔来说,现在入局或许有些迟到,英伟达已经占据深度
    发表于 07-26 07:04

    AUTOSAR架构深度解析 精选资料推荐

    AUTOSAR架构深度解析本文转载于:AUTOSAR架构深度解析目录AUTOSAR架构深度解析A
    发表于 07-28 07:40

    AUTOSAR架构深度解析 精选资料分享

    AUTOSAR架构深度解析本文转载于:AUTOSAR架构深度解析AUTOSAR的分层式设计,用于支持完整的软件和硬件模块的独立性(Independence),中间RTE(Runtime
    发表于 07-28 07:02

    如何在交通领域构建基于图的深度学习架构

    学习架构因为这篇文献对于交通领域中的各种问题、方法做了一个比较清楚的综述,所以是一篇很有价值的文献,很适合刚进入这个方向的同学。
    发表于 08-31 08:05

    讨论纹理分析在图像分类中的重要性及其深度学习中使用纹理分析

    纹理就能被更准确地捕捉和分类。  在基于纹理的分类任务重,纹理分析对于深度学习的重要性  由于纹理基于局部模式,而传统的深度学习方法强调复杂的特征,对纹理分类没有帮助,因此,传统的CN
    发表于 10-26 16:57

    什么是深度学习?使用FPGA进行深度学习的好处?

    什么是深度学习为了解释深度学习,有必要了解神经网络。神经网络是一种模拟人脑的神经元和神经网络的计算模型。作为具体示例,让我们考虑一个输入图像并识别图像中对象类别的示例。这个例子对应机器
    发表于 02-17 16:56

    新芯片架构瞄准深度学习和视觉处理

    深度学习本质上是以一组算法为基础,透过具有多个处理层、由线性与非线性交易组成的深度绘图,尝试在数据中建模高层级抽象。ThinCI架构的独特之处似乎就在于其处理
    发表于 11-03 15:17 1795次阅读
    新芯片<b class='flag-5'>架构</b>瞄准<b class='flag-5'>深度</b><b class='flag-5'>学习</b>和视觉处理

    介绍了计算机视觉领域内比较成功的10个深度学习架构

    近年来,深度学习的发展势头迅猛,要跟上深度学习的进步速度变得越来越困难了。几乎每一天都有关于深度学习
    的头像 发表于 01-11 10:49 8986次阅读

    一文详解深度学习的5 种架构

    深度学习由不同拓扑结构的深度网络组成。神经网络已存在很长一段时间,但多层网络(每个层提供一定的功能,比如特征提取)的开发让它们变得更加实用。增加层数意味着各层之间和层内有更多相互联系和更多
    的头像 发表于 05-28 16:49 9807次阅读
    一文详解<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的5 种<b class='flag-5'>架构</b>

    基于深度学习的行为识别算法及其应用

    基于深度学习的行为识别算法及其应用
    发表于 06-16 14:56 20次下载

    什么是深度学习算法?深度学习算法的应用

    什么是深度学习算法?深度学习算法的应用 深度学习算法被认为是人工智能的核心,它是一种模仿人类大脑
    的头像 发表于 08-17 16:03 1489次阅读