精华内容
参与话题
问答
  • 深度学习视频教程,包括经典算法与具体案例实战,该系列教程旨在帮助同学们掌握深度学习基础知识点,对复杂的神经网络模型进行通俗解读,逐步迈向深度学习两大核心模型-卷积与递归神经网络。使用当下主流深度学习...
  • 深度学习常见算法的介绍和比较

    万次阅读 多人点赞 2018-02-08 22:00:06
    很多人都有误解,以为深度...关于深度学习的理论推导,太大太复杂,一些常见的深度学习算法本人也是模模糊糊的,看过好多次的,隔断时间就会忘记,现在对其系统的整理一下(从历史,致命问题出发,再看具体算法的思想,

    很多人都有误解,以为深度学习比机器学习先进。其实深度学习是机器学习的一个分支。可以理解为具有多层结构的模型。具体的话,深度学习是机器学习中的具有深层结构的神经网络算法,即机器学习>神经网络算法>深度神经网络(深度学习)。
    关于深度学习的理论推导,太大太复杂,一些常见的深度学习算法本人也是模模糊糊的,看过好多次的,隔断时间就会忘记,现在对其系统的整理一下(从历史,致命问题出发,再看具体算法的思想,框架,优缺点和改进的方向,又总结了CNN和RNN的比较)。

    一、历史:多层感知机到神经网络,再到深度学习

    神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。(扯一个不相关的:由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的,脑补一下科学家们扯着密密麻麻的导线的样子…)
    心理学家Rosenblatt提出的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”操作)。
    这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人发明的多层感知机解决,多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。
    多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。这就是我们现在所说的【神经网络】,BP算法也叫BP神经网络具体过程可参见我转载的文章(http://blog.csdn.net/abc200941410128/article/details/78708319)。
    但是BP神经网络(多层感知机)面临在致命问题(见下节)。随着神经网络层数的加深,有两个重大问题:一是优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是“梯度消失”现象更加严重。
    2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层,神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮,随后的DBN、CNN、RNN、LSTM等才逐渐出现。
    这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。
    为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今DNN的基本形式。单从结构上来说,全链接的多层感知机是没有任何区别的。

    二、深度神经网络的致命问题

    随着神经网络层数的加深,有三个重大问题:一是非凸优化问题,即优化函数越来越容易陷入局部最优解;二是(Gradient Vanish)梯度消失问题;三是过拟合问题。

    2.1 非凸优化问题

    线性回归,本质是一个多元一次函数的优化问题,设f(x,y)=x+y
    多层神经网络,本质是一个多元K次函数优化问题,设f(x,y)=xy
    在线性回归当中,从任意一个点出发搜索,最终必然是下降到全局最小值附近的。所以置0也无妨(这也是为什么我们往往解线性回归方程时初值为0)。
    而在多层神经网络中,从不同点出发,可能最终困在局部最小值。局部最小值是神经网络结构带来的挥之不去的阴影,随着隐层层数的增加,非凸的目标函数越来越复杂,局部最小值点成倍增长,利用有限数据训练的深层网络,性能还不如较浅层网络。。避免的方法一般是权值初始化。为了统一初始化方案,通常将输入缩放到[−1,1],但是仍然无法保证能够达到全局最优,其实这也是科学家们一直在研究而未解决的问题。
    所以,从本质上来看,深度结构带来的非凸优化仍然不能解决(包括现在的各类深度学习算法和其他非凸优化问题都是如此),这限制着深度结构的发展。

    2.2 (Gradient Vanish)梯度消失问题

    这个问题实际上是由激活函数不当引起的,多层使用Sigmoid系函数,会使得误差从输出层开始呈指数衰减。在数学上,激活函数的作用就是将输入数据映射到0到1上(tanh是映射-1到+1上)。至于映射的原因,除了对数据进行正则化外,大概是控制数据,使其只在一定的范围内。当然也有另外细节作用,例如Sigmoid(tanh)中,能在激活的时候,更关注数据在零(或中心点)前后的细小变化,而忽略数据在极端时的变化,例如ReLU还有避免梯度消失的作用。通常,Sigmoid(tanh)多用于全连接层,而ReLU多用于卷积层。
    Sigmoid
    Sigmoid
    ReLU
    ReLU
    “梯度消失”现象具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。
    幸运的是,这个问题已经被Hinton在2006年提出的逐层贪心预训练权值矩阵变向减轻,最近提出的ReLu则从根本上提出了解决方案。
    2012年,Hinton组的Alex Krizhevsky率先将受到Gradient Vanish影响较小的CNN中大规模使用新提出的ReLu函数。
    2014年,Google研究员贾扬清则利用ReLu这个神器,成功将CNN扩展到了22层巨型深度网络,见知乎。
    对于深受Gradient Vanish困扰的RNN,其变种LSTM也克服了这个问题。

    2.3 过拟合问题

    这就是神经网络的最后一个致命问题:过拟合,庞大的结构和参数使得,尽管训练error降的很低,但是test error却高的离谱。
    过拟合还可以和Gradient Vanish、局部最小值混合三打,具体玩法是这样的:
    由于Gradient Vanish,导致深度结构的较低层几乎无法训练,而较高层却非常容易训练。
    较低层由于无法训练,很容易把原始输入信息,没有经过任何非线性变换,或者错误变换推到高层去,使得高层解离特征压力太大。
    如果特征无法解离,强制性的误差监督训练就会使得模型对输入数据直接做拟合。
    其结果就是,A Good Optimation But a Poor Generalization,这也是SVM、决策树等浅层结构的毛病。
    Bengio指出,这些利用局部数据做优化的浅层结构基于先验知识(Prior): Smoothness
    即,给定样本(xi,yi),尽可能从数值上做优化,使得训练出来的模型,对于近似的x,输出近似的y。
    然而一旦输入值做了泛型迁移,比如两种不同的鸟,鸟的颜色有别,且在图像中的比例不一,那么SVM、决策树几乎毫无用处。
    因为,对输入数据简单地做数值化学习,而不是解离出特征,对于高维数据(如图像、声音、文本),是毫无意义的。
    然后就是最后的事了,由于低层学不动,高层在乱学,所以很快就掉进了吸引盆中,完成神经网络三杀。

    三、深度学习里面的基本模型

    深度学习里面的基本模型大致分为了3类:多层感知机模型;深度神经网络模型和递归神经网络模型。其代表分别是DBN(Deep belief network) 深度信念网络、CNN(Convolution Neural Networks)卷积神经网络、RNN(Recurrent neural network) 递归神经网络。

    3.1 DBN(Deep belief network) 深度信念网络

    2006年,Geoffrey Hinton提出深度信念网络(DBN)及其高效的学习算法,即Pre-training+Fine tuning,并发表于《Science》上,成为其后深度学习算法的主要框架。DBN是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据。所以,我们不仅可以使用DBN识别特征、分类数据,还可以用它来生成数据。

    3.1.1 网络结构

    深度信念网络(DBN)由若干层受限玻尔兹曼机(RBM)堆叠而成,上一层RBM的隐层作为下一层RBM的可见层。
    (1) RBM
    这里写图片描述
    一个普通的RBM网络结构如上图所示,是一个双层模型,由m个可见层单元及n个隐层单元组成,其中,层内神经元无连接,层间神经元全连接,也就是说:在给定可见层状态时,隐层的激活状态条件独立,反之,当给定隐层状态时,可见层的激活状态条件独立。这保证了层内神经元之间的条件独立性,降低概率分布计算及训练的复杂度。RBM可以被视为一个无向图模型,可见层神经元与隐层神经元之间的连接权重是双向的,即可见层到隐层的连接权重为W,则隐层到可见层的连接权重为W’。除以上提及的参数外,RBM的参数还包括可见层偏置b及隐层偏置c。RBM可见层和隐层单元所定义的分布可根据实际需要更换,包括:Binary单元、Gaussian单元、Rectified Linear单元等,这些不同单元的主要区别在于其激活函数不同
    (2) DBN
    这里写图片描述
    DBN模型由若干层RBM堆叠而成,如果在训练集中有标签数据,那么最后一层RBM的可见层中既包含前一层RBM的隐层单元,也包含标签层单元。假设顶层RBM的可见层有500个神经元,训练数据的分类一共分成了10类,那么顶层RBM的可见层有510个显性神经元,对每一训练数据,相应的标签神经元被打开设为1,而其他的则被关闭设为0

    3.1.2 训练过程和优缺点

    DBN的训练包括Pre-training和Fine tuning两步,其中Pre-training过程相当于逐层训练每一个RBM,经过Pre-training的DBN已经可用于模拟训练数据,而为了进一步提高网络的判别性能, Fine tuning过程利用标签数据通过BP算法对网络参数进行微调。
    对DBN优缺点的总结主要集中在生成模型与判别模型的优缺点总结上。
    1、优点:

    • 生成模型学习联合概率密度分布,所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度;
    • 生成模型可以还原出条件概率分布,此时相当于判别模型,而判别模型无法得到联合分布,所以不能当成生成模型使用。

    2、缺点:
    - 生成模型不关心不同类别之间的最优分类面到底在哪儿,所以用于分类问题时,分类精度可能没有判别模型高;
    - 由于生成模型学习的是数据的联合分布,因此在某种程度上学习问题的复杂性更高。
    - 要求输入数据具有平移不变性。

    关于 判别模型与生成模型可以参看(http://blog.csdn.net/erlib/article/details/53585134)

    3.1.3 改进模型

    DBN的变体比较多,它的改进主要集中于其组成“零件”RBM的改进,有卷积DBN(CDBN)和条件RBM(Conditional RBM)等。
    DBN并没有考虑到图像的二维结构信息,因为输入是简单的将一个图像矩阵转换为一维向量。而CDBN利用邻域像素的空域关系,通过一个称为卷积RBM(CRBM)的模型达到生成模型的变换不变性,而且可以容易得变换到高维图像。
    DBN并没有明确地处理对观察变量的时间联系的学习上,Conditional RBM通过考虑前一时刻的可见层单元变量作为附加的条件输入,以模拟序列数据,这种变体在语音信号处理领域应用较多。

    3.2 CNN(Convolution Neural Networks)卷积神经网络

    卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。
    全链接DNN的结构里下层神经元和所有上层神经元都能够形成连接,带来了参数数量的膨胀问题。例如,1000*1000的像素图像,光这一层就有10^12个权重需要训练。此时我们可以用卷积神经网络CNN,对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。图像输入层到隐含层的参数瞬间降低到了100*100*100=10^6个
    卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

    3.2.1 网络结构

    卷积神经网络是一个多层的神经网络,其基本运算单元包括:卷积运算、池化运算、全连接运算和识别运算。
    这里写图片描述

    • 卷积运算:前一层的特征图与一个可学习的卷积核进行卷积运算,卷积的结果经过激活函数后的输出形成这一层的神经元,从而构成该层特征图,也称特征提取层,每个神经元的输入与前一层的局部感受野相连接,并提取该局部的特征,一旦该局部特征被提取,它与其它特征之间的位置关系就被确定。l
    • 池化运算:能很好的聚合特征、降维来减少运算量。它把输入信号分割成不重叠的区域,对于每个区域通过池化(下采样)运算来降低网络的空间分辨率,比如最大值池化是选择区域内的最大值,均值池化是计算区域内的平均值。通过该运算来消除信号的偏移和扭曲。
    • 全连接运算:输入信号经过多次卷积核池化运算后,输出为多组信号,经过全连接运算,将多组信号依次组合为一组信号。
      识别运算:上述运算过程为特征学习运算,需在上述运算基础上根据业务需求(分类或回归问题)增加一层网络用于分类或回归计算。

    3.2.2 训练过程和优缺点

    卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有监督训练,所以其样本集是由形如:(输入信号,标签值)的向量对构成的。

    1、优点:
    - 权重共享策略减少了需要训练的参数,相同的权重可以让滤波器不受信号位置的影响来检测信号的特性,使得训练出来的模型的泛化能力更强;
    - 池化运算可以降低网络的空间分辨率,从而消除信号的微小偏移和扭曲,从而对输入数据的平移不变性要求不高。

    2、缺点:
    - 深度模型容易出现梯度消散问题。

    3.2.3 改进模型

    卷积神经网络因为其在各个领域中取得了好的效果,是近几年来研究和应用最为广泛的深度神经网络。比较有名的卷积神经网络模型主要包括1986年Lenet,2012年的Alexnet,2014年的GoogleNet,2014年的VGG,2015年的Deep Residual Learning。这些卷积神经网络的改进版本或者模型的深度,或者模型的组织结构有一定的差异,但是组成模型的机构构建是相同的,基本都包含了卷积运算、池化运算、全连接运算和识别运算。

    3.3 RNN(Recurrent neural network) 递归神经网络

    全连接的DNN除了以上问题以外还存在着另一个问题——无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,就出现了题主所说的另一种神经网络结构——循环神经网络RNN(不知道为什么很多叫循环的。计算机术语里循环一般是同一层次的,Recurrent 其实是时间递归,所以本文叫他递归神经网络)。
    在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身。
    即:(t+1)时刻网络的最终结果O(t+1)是该时刻输入和所有历史共同作用的结果。RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度!正如我们上面所说,“梯度消失”现象又要出现了,只不过这次发生在时间轴上
    为了解决时间上的梯度消失,机器学习领域发展出了长短时记忆单元(LSTM),通过门的开关实现时间上记忆功能,并防止梯度消失。

    3.3.1 网络结构

    这里写图片描述
    左侧是递归神经网络的原始结构,如果先抛弃中间那个令人生畏的闭环,那其实就是简单“输入层=>隐藏层=>输出层”的三层结构,但是图中多了一个非常陌生的闭环,也就是说输入到隐藏层之后,隐藏层还会输入给自己,使得该网络可以拥有记忆能力。我们说递归神经网络拥有记忆能力,而这种能力就是通过W将以往的输入状态进行总结,而作为下次输入的辅助。可以这样理解隐藏状态:h=f(现有的输入+过去记忆总结)

    3.3.2 训练过程和优缺点

    递归神经网络中由于输入时叠加了之前的信号,所以反向传导时不同于传统的神经网络,因为对于时刻t的输入层,其残差不仅来自于输出,还来自于之后的隐层。通过反向传递算法,利用输出层的误差,求解各个权重的梯度,然后利用梯度下降法更新各个权重。
    1、优点:

    • 模型是时间维度上的深度模型,可以对序列内容建模。

    2、缺点:
    - 需要训练的参数较多,容易出现梯度消散或梯度爆炸问题;
    - 不具有特征学习能力。

    3.3.3 改进模型

    递归神经网络模型可以用来处理序列数据,递归神经网络包含了大量参数,且难于训练(时间维度的梯度消散或梯度爆炸),所以出现一系列对RNN优化,比如网络结构、求解算法与并行化。
    近年来bidirectional RNN (BRNN)与 LSTM在image captioning, language translation, and handwriting recognition这几个方向上有了突破性进展 。

    3.4 混合结构

    除了以上三种网络,和我之前提到的深度残差学习、LSTM外,深度学习还有许多其他的结构。举个例子,RNN既然能继承历史信息,是不是也能吸收点未来的信息呢?因为在序列信号分析中,如果我能预知未来,对识别一定也是有所帮助的。因此就有了双向RNN、双向LSTM,同时利用历史和未来的信息。双向RNN、双向LSTM,同时利用历史和未来的信息。
    事实上,不论是那种网络,他们在实际应用中常常都混合着使用,比如CNN和RNN在上层输出之前往往会接上全连接层,很难说某个网络到底属于哪个类别。
    不难想象随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将被发展出来。尽管看起来千变万化,但研究者们的出发点肯定都是为了解决特定的问题。如果想进行这方面的研究,不妨仔细分析一下这些结构各自的特点以及它们达成目标的手段。

    3.5 CNN和RNN的比较

    RNN的重要特性是可以处理不定长的输入,得到一定的输出。当你的输入可长可短, 比如训练翻译模型的时候, 你的句子长度都不固定,你是无法像一个训练固定像素的图像那样用CNN搞定的。而利用RNN的循环特性可以轻松搞定。
    在序列信号的应用上,CNN是只响应预先设定的信号长度(输入向量的长度),RNN的响应长度是学习出来的。

    CNN对特征的响应是线性的,RNN在这个递进方向上是非线性响应的。这也带来了很大的差别。

    CNN 专门解决图像问题的,可用把它看作特征提取层,放在输入层上,最后用MLP 做分类。
    RNN 专门解决时间序列问题的,用来提取时间序列信息,放在特征提取层(如CNN)之后。

    RNN,递归型网络,用于序列数据,并且有了一定的记忆效应,辅之以lstm。
    CNN应该侧重空间映射,图像数据尤为贴合此场景。

    CNN 卷积擅长从局部特征逼近整体特征,
    RNN 擅长对付时间序列。

    四、一些基本概念和知识

    4.1 线性回归、线性神经网络、Logistic/Softmax回归

    这个参考http://blog.csdn.net/erlib/article/details/53585134
    或者其他资料。

    4.2 关于卷积、池化、激活函数等

    入门参考:http://blog.csdn.net/u010859498/article/details/78794405
    详细了解可自己谷歌百度

    4.3 推荐一个比较好的入门资料

    台大电机系李宏毅教授的讲义《一天搞懂深度学习》
    有人做简略的翻译过
    https://www.jianshu.com/p/c30f7c944b66

    参考资料:
    http://blog.csdn.net/erlib/article/details/53585134
    https://www.zhihu.com/question/34681168/answer/156552873
    http://blog.csdn.net/u010859498/article/details/78794405

    展开全文
  • 深度学习(1): 深度学习简介

    千次阅读 2019-08-09 11:10:29
    文章目录1 什么是深度学习?2 深度学习应用2.1 机器学习的一般方法2.2 深度学习的一般方法3 GPU的迅速发展3.1 GPU与显卡的区别3.2 GPU 与 CPU 区别3.3 GPU种类参考资料 注:转载请标明原文出处链接:...

    在这里插入图片描述

    注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/98944012


    1 什么是深度学习?

    深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
    深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。
    深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。
    (以上均来自百度百科)

    下面了解一下人工智能、机器学习和深度学习之间的关系。下图是三者之间的关系,可以看出三者之间是包含和被包含的关系。

    在这里插入图片描述



    2 深度学习应用

    2.1 机器学习的一般方法

    机器学习按照方法主要可以分为两大类:监督学习和无监督学习。其中监督学习主要由分类和回归等问题组成,无监督学习主要由聚类和关联分析等问题组成。深度学习则属于监督学习当中的一种。下图为监督学习的一般方法。
    在这里插入图片描述

    2.2 深度学习的一般方法

    随着深度学习的爆发,最新的深度学习算法已经远远超越了传统的机器学 习算法对于数据的预测和分类精度。深度学习不需要我们自己去提取特征,而是自 动地对数据进行筛选,自动地提取数据高维特征。下图为深度学习的一般方法,与传统机器学习中的监督学习一般方法(如上图)相比,少了特征工程,节约了工程师们大量工作时间。

    在这里插入图片描述
    神经网络应用的突破领域之一是控制论,神经网络有着一套完美的反馈机制,给控制论增添了不少色彩。而深度学习的出现就 如寒武纪生命大爆发一样,前几年我们或许听到更多的是大数据处理、数据挖掘, 而如今在科技创新的生态中,几乎每个人都在谈论深度学习、人工智能。下面简单 来介绍关于深度学习的应用。

    (1) 图像处理

    在这里插入图片描述

    (2) 自动驾驶

    在这里插入图片描述

    (3) 机器人
    波士顿动力机器人

    在这里插入图片描述


    在这里插入图片描述


    (4) 医疗健康诊断

    在这里插入图片描述


    在这里插入图片描述
    深度学习技术己经开始渗透到每一个领域当中,使得机器学习能够实现更多的应用场景,并且极大地拓展了人工智能的领域范畴。从无人驾驶汽车、无人驾驶飞机,到生物医学的预防性诊断、病理预测,甚至是更加贴近年轻一代的电影推荐、购物指南,几乎所有领域都可以使用深度学习。



    3 GPU的迅速发展

    GPU (Graphics Processing Unit, 图形处理器) 作为硬件加速器之一,通过大量图形处理单元与 CPU 协同工作,对深度学习、数据分析,以及大量计算的工程应用进行加速 。 从 2007 年 NVIDIA 公司发布了第一个支持 CUDA 的 GPU 后, GPU 的应用范围不断拓展,从政府实验室、大学、企业的大型数据中心,到现今非常火热的人工智能汽车、无人驾驶飞机和机器人等嵌入式平台, GPU 都发挥着巨大的作用。
    CUDA (Compute Unified Device Architecture, 统一计算设备架构)。随着显卡的发展, GPU 越来越强大, GPU 开始主要为显示图像做优化,在计算上已经超越了通用的 CPU 。 如此强大的芯片如果只是作为显卡就太浪费了,因此 NVIDIA 推出 CUDA 这一通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题 。

    3.1 GPU与显卡的区别

    GPU只是显卡上的一个核心处理芯片,是显卡的心脏,不能单独作为外接扩展卡使用,GPU因并行计算任务较重,所以功耗较大,只能焊接在显卡的电路板上使用。显卡上都有GPU,它是区分显性能的最主要元件,显卡也叫显示适配器,分为独立显卡和主板上集成显卡,独立显卡主要由GPU、显存和接口电路构成,集成显卡没有独立显存而是使用主板上的内存。
    GPU是图形处理器,一般GPU就是焊接在显卡上的,大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。它们是“寄生与被寄生”关系。GPU本身并不能单独工作,只有配合上附属电路和接口,才能工作。这时候,它就变成了显卡
    参考链接: https://baijiahao.baidu.com/s?id=1607965696317204020&wfr=spider&for=pc

    3.2 GPU 与 CPU 区别

    比较 GPU 和 CPU ,就是比较它们两者如何处理任务。如下图图 1-9 所示, CPU 使用几个核心处理单元去优化串行顺序任务,而 GPU 的大规模并行架构拥有数以千计的更小、更高效的处理单元,用于处理多个并行小任务。
    CPU 拥有复杂的系统指令,能够进行复杂的任务操作和调度,两者是互补关系,而不能相互代替。
    在这里插入图片描述

    GPU 是大规模并行架构,处理并行任务毫无疑问是非常快的,深度学习需要高
    效的矩阵操作和大量的卷积操作, GPU 的并行架构再适合不过。简单来说,确实如此,但是为什么 GPU 进行矩阵操作和卷积操作会比 CPU 要快呢?真正原因是 GPU具有如下特性
    (1) 高带宽
    (2) 高速的缓存性能
    (3) 并行单元多

    在执行多任务时, CPU 需要等待带宽,而 GPU 能够优化带宽。举个简单的例子,我们可以把 CPU 看作跑车, GPU 是大卡车,如下图图 1-10 所示任务就是要把一堆货物从北京搬运到广州。 CPU(跑车〉可以快速地把数据(货物〉从内存读入 RAM 中,然而 GPU (大卡车〉装货的速度就好慢了。不过后面才是重点, CPU (跑车)把这堆数据(货物)从北京搬运到广州|需要来回操作很多次,也就是往返京广线很多次,而 GPU (大卡车)只需要一 次就可以完成搬运(一次可以装载大量数据进入内存)。换言之, CPU 擅长操作小的内存块,而 GPU 则擅长操作大的内存块 。 CPU 集群大概可以达到 50GB/s 的带宽总量,而等量的 GPU 集群可以达到 750GB/s 的带宽量。

    在这里插入图片描述

    如果让一辆大卡车去装载很多堆货物,就要等待很长的时间了,因为要等待大卡车从北京运到广州,然后再回来装货物。设想一下,我们现在拥有了跑车车队和卡车车队(线程并行〉,运载一堆货物(非常大块的内存数据需要读入缓存,如大型矩阵)。我们会等待第一辆卡车,但是后面就不需要等待的时间了,因为在广州会有一队伍的大卡车正在排队输送货物(数据),这时处理器就可以直接从缓存中读取数据了。在线性并行的情况下, GPU 可以提供高带宽,从而隐藏延迟时间。这也就是GPU 比 CPU 更适合处理深度学习的原因。


    3.3 GPU种类

    特别是最近几年,随着 GPU处理能力的飞速进步 ,在 2012 年需要 l 个月才能完成的深度学习训练,在 2015 年只需几天即可完成 。 在这样的背景下,深度学习的发展恰逢其时,将会引发进一步的革新和发展。

    对于深度学习的加速器 GPU,现在市面上主要的品牌有 AMD 、 NVIDIA 、Intel 的 Xeon Phi,如下图所示。
    在这里插入图片描述
    NVIDIA公司的GUP使用最为广泛,NVIDIA 的计算加速标准库 cuDNN 使得工程师在 CUDA 平台中构建深度学习变得非常容易,而且在同 一张显卡的前提下比没有使用 cnDNN 的速度提升 5 倍之多。有良好的生态。下图是NVIDIA公司的三种类型的GPU。
    在这里插入图片描述
    其中,
    (1) GeForce 系列面向大众,常见的有:GeForce GTX 1080, GeForce GTX 1080 Ti, GeForce GTX 2080 Ti
    (2) Tesla 系列面向科学计算
    (3) Tegra 系列面向嵌入式的 GPU 主板



    参考资料

    [1] 图解深度学习
    [2] 深度学习原理与实践
    [3] TensorFlow实战Google深度学习框架(第2版)

    展开全文
  • 深度学习笔记(13) Softmax分类

    万次阅读 2019-06-08 09:24:14
    Softmax 回归、练一个Softmax分类器

    深度学习笔记(13) Softmax分类


    1. Softmax 回归

    有一种logistic回归的一般形式,叫做 Softmax回归
    能在试图识别某一分类时做出预测
    或者说是多种分类中的一个,不只是识别两个分类

    假设不单需要识别猫,而是想识别猫,狗和小鸡
    把猫加做类1,狗为类2,小鸡是类3
    如果不属于以上任何一类,就分到“其它”或者说“以上均不符合”这一类,把它叫做类0

    用大写的C来表示输入会被分入的类别总个数
    建立一个神经网络,其输出层有4个,或者说C个输出单元
    因此n,即输出层也就是L层的单元数量,等于4,或者一般而言等于C
    则输出层单元的数字代表这4种类型中每个的概率

    做到这一点的标准模型要用到Softmax层,以及输出层来生成输出
    对于L层,得到的z值
    在这里插入图片描述用这个元素取幂方法来计算 t:
    在这里插入图片描述
    把四个数字加起来得到176.3
    最终 a[l] = t / 176.3
    第一个节点输出 e5/176.3=0.842,也就是概率84.2%

    Softmax激活函数的特殊之处在于
    因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量
    Softmax分类器还可以代表的决策边界


    2. 练一个Softmax分类器

    简单来说就是用临时变量t将它归一化,使总和为1,于是这就变成了a[L]
    注意到向量z中,最大的元素是5
    而最大的概率也就是第一种概率,Softmax把向量z变成这个向量
    在这里插入图片描述
    在Softmax分类中,一般用到的损失函数是来训练这个神经网络
    这就意味着,如果试图将它变小
    因为梯度下降法是用来减少训练集的损失的
    要使它变小的唯一方式就是使 -logy^\widehat{y}1 变小,即需要使 y^\widehat{y}1 尽可能大
    整个训练集的损失
    在这里插入图片描述


    参考:

    《神经网络和深度学习》视频课程


    相关推荐:

    深度学习笔记(12)Batch归一化网络
    深度学习笔记(11)超参数调试
    深度学习笔记(10)优化算法(二)
    深度学习笔记(9) 优化算法(一)
    深度学习笔记(8) 实践层面(三)


    谢谢!

    展开全文
  • 深度学习图像处理之垃圾分类

    千人学习 2019-09-29 14:32:47
    本课程将使用Pytorch深度学习框架进行实战,并在ubuntu系统上进行演示,包括:不同标注文件下的数据集读取、编写卷积神经网络、训练垃圾分类数据集、测试训练网络模型、网络可视化、性能评估等。 ...
  • 机器学习&深度学习算法及代码实现

    万次阅读 2017-04-05 20:38:50
    最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相互学习交流机器学习简介1、机器学习运用学习算法,利用所给的数据进训练,生成相应的模型。在面对新情况时,根据模型,给出正确的判断。2...

    原文地址:https://blog.csdn.net/qq_31456593/article/details/69340697

    最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相互学习交流

    最新深度学习教程和相关资源,请关注微信公众号:DoitNLP, 后面我会在DoitNLP上,持续更新深度学习、NLP、Tensorflow的相关教程和前沿资讯,它将成为我们一起学习深度学习的大本营。

    机器学习、深度学习入门书籍和资源https://blog.csdn.net/qq_31456593/article/details/90106630

    机器学习简介

    1、机器学习

    运用学习算法,利用所给的数据进训练,生成相应的模型。在面对新情况时,根据模型,给出正确的判断。
    ###2、学习的定义
    针对经验E (experience) 和一系列的任务 T (tasks) 和一定表现的衡量 P,如果随之经验E的积累,针对定义好的任务T可以提高表现P,就说计算机具有学习能力。
    ###3、应用范围
    语音识别、自动驾驶、语言翻译、计算机视觉、推荐系统、无人机、识别垃圾邮件等。
    ###4、相关概念
    训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集
    测试集(testing set/data)/测试样例 (testing examples):用来专门进行测试已经学习好的模型或者算法的数据集
    特征向量(features/feature vector):属性的集合,通常用一个向量来表示,附属于一个实例
    标记(label): c(x), 实例类别的标记
    正例(positive example)
    反例(negative example)

    ###5、分类
    有监督学习(supervised learning): 训练集有类别标记(class label)
    无监督学习(unsupervised learning): 无类别标记(class label)
    半监督学习(semi-supervised learning):有类别标记的训练集 + 无标记的训练集
    ###6、传统机器学习算法
    决策树、K邻近算法、支持向量机、朴素贝叶斯、神经网络、Logistic回归算法,聚类等。
    ###7、当前较火的机器学习方向
    深度学习、强化学习、迁移学习等

    ##算法讲解与代码实现:
    传统机器学习算法及代码实现:
    决策树-机器学习算法及代码实现
    k邻近算法-机器学习算法及代码实现
    支持向量机-机器学习算法及代码实现
    神经网络-机器学习算法及代码实现

    深度学习算法及代码实现:
    感知机-从零开始学深度学习
    CNN入门详解及TensorFlow源码实现–深度学习笔记
    RNN入门详解及TensorFlow源码实现–深度学习笔记
    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记

    Tensorflow 2.0 教程持续更新:

    TensorFlow 2.0 教程- Keras 快速入门
    TensorFlow 2.0 教程-keras 函数api
    TensorFlow 2.0 教程-使用keras训练模型
    TensorFlow 2.0 教程-用keras构建自己的网络层
    TensorFlow 2.0 教程-keras模型保存和序列化
    TensorFlow 2.0 教程-eager模式
    TensorFlow 2.0 教程-Variables
    TensorFlow 2.0 教程–AutoGraph

    TensorFlow 2.0 深度学习实践

    TensorFlow2.0 教程-图像分类
    TensorFlow2.0 教程-文本分类
    TensorFlow2.0 教程-过拟合和欠拟合

    代码实现:

    完整tensorflow2.0教程代码请看tensorflow2.0:中文教程tensorflow2_tutorials_chinese(欢迎star)

    更多机器学习、深度学习算法的笔记
    生成对抗网络介绍与原理分析

    机器学习、深度学习算法之个人见解
    神经网络学习笔记

    深度学习在NLP方面的应用
    经典词嵌入与神经网络语言模型的对比研究

    google机器学习框架Tensorflow学习
    Tensorflow基础知识与神经网络构建–step by step 入门TensorFlow(一)
    深层神经网络实现–step by step 入门TensorFlow(二)
    MNIST 数字识别和数据持久化–step by step 入门TensorFlow(三)

    机器学习入门材料推荐
    机器学习&深度学习入门学习资料大全(一)
    机器学习&深度学习入门学习资料大全(二)
    机器学习该怎么入门
    深度学习如何入门

    更多机器学习深度学习算法笔记持续更新中

    展开全文
  • 深度强化学习1——强化学习深度强化学习

    万次阅读 多人点赞 2018-10-05 22:04:43
    开讲前,先给大家看个深度强化学习的例子,下面是深度学习cnn和强化学习结合玩吃豆人的游戏 看图像我们会发现吃豆人会,吃掉一闪一闪的豆子来消灭怪物,仔细观察会发现,经过训练的吃豆人,甚至会停在某个角落来...
  • Momentum是为了对冲mini-batch带来的抖动。RMSprop是为了对hyper-parameter进行归一,均方根反向...这两个加起来就是Adam看原始的RMSProp算法: 再看算法:其实就是Momentum+RMSProp的结合,然后再修正其偏差。 ...
  • 吴恩达机器学习与深度学习作业目录 [图片已修复]

    万次阅读 多人点赞 2018-10-23 10:03:59
    吴恩达机器学习作业目录 1 吴恩达机器学习作业Python实现(一):线性回归 2 吴恩达机器学习作业Python实现(二):logistic回归 3 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络 4 吴恩达机器学习作业...
  • 机器学习/深度学习算法学习心得

    千次阅读 2018-07-29 00:00:51
    本文的写作目的一方面是总结下自己的学习心得,另一方面是给那些想学习并且想从事算法工程师一点小小的参考,欢迎大家多多交流! 基础学习心得 想要入门机器学习,至少需要提前掌握以下两种技能 必要的数学...
  • 一年一度的校园招聘已经开始了,为了帮助参加校园招聘、社招的同学更好的准备面试,SIGAI整理出了一些常见的机器学习、深度学习面试题。理解它们,对你通过技术面试非常有帮助,当然,我们不能只限于会做这些题目,...
  • 深度学习算法归类

    千次阅读 2017-03-02 20:57:01
    深度学习算法
  • 深度学习与PyTorch实战

    千人学习 2019-12-30 10:00:44
    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP...
  • 吴恩达神经网络与深度学习——深度神经网络

    千次阅读 多人点赞 2018-11-02 23:03:07
    吴恩达神经网络与深度学习——浅层神经网络深层神经网络 深层神经网络
  • 利用高性能计算加速深度学习算法

    千次阅读 2018-02-07 16:09:42
    1. 深度学习  深度学习是机器学习研究中的一个新...(由于本人不是深度学习专业人士,对深度学习理论知识不多介绍,说多了就班门弄斧了,后面主要介绍下这些深度学习算法如何进行并行化设计和优化) 2. CPU+GP
  • ML/DL:关于机器学习、深度学习算法模型的选择 目录 算法思路 算法思路 更新……
  • 深度学习算法及其应用

    万次阅读 2018-03-25 23:01:25
    1、了解深度学习的基本原理,能够解释深度学习原理; 2、能够使用深度学习开源工具tensorflow识别图像中的数字,对实验性能进行分析; 3、了解图像识别的基本原理。 二、实验的硬件、软件平台 硬件:计算机 ...
  • 基于深度学习的人脸识别算法

    万次阅读 多人点赞 2018-12-14 20:41:49
    基于深度学习的人脸识别算法简介Contrastive LossTriplet LossCenter LossA-Softmax Loss参考文献: 简介 我们经常能从电影中看到各种神奇的人脸识别技术,例如图1。人脸识别技术是基于面部特征信息进行身份识别...
  • AI必知的十大深度学习算法

    万次阅读 多人点赞 2018-03-17 15:24:53
    首先先让我们来定义一下什么是“深度学习”。对很多人来说,给“深度学习”下一个定义确实很有挑战,因为在过去的十年中,它的形式已经慢慢地发生了很大的变化。先来在视觉上感受一下“深度学习”的地位。下图是AI、...
  • 深度学习算法评估指标

    千次阅读 2017-08-03 08:07:47
    一、精度: 检测到真实目标:检测到所有目标 二、召回率: 检测到真实目标:所有目标 三、精度-召回率曲线 四、平均精度: 精度-召回率曲线下的归一化面积 ...五、检测时间
  • 深度学习算法面试题总结

    万次阅读 多人点赞 2018-07-08 22:02:52
    1. 什么是凸集、凸函数、凸学习问题? 凸集:若对集合C中任意两点u和v,连接他们的线段仍在集合C中,那么集合C是凸集。 公式表示为:αu+(1-α)v∈C α∈[0, 1] 凸函数:凸集上的函数是凸函数。凸函数的每一个...
  • 机器学习算法已经基本学习完了,在这一系列,佛爷将开始着手学习深度学习的各种算法和应用,由于本身难度偏大,我会不定期的更新,基本清楚和更加深入的研究深度学习。代码方面我基本会使用Tensorflow框架去写,原生...
  • 本人最近专门研究深度学习算法就遥感影像分类研究和智能识别,有同行或者新手们可以一起学习,互相交流。安利一个微博:大数据与人工智能CCNU上面有不少你需要的东西。作为深度学习算法入门和关注AI动态。大家可以...
  • 十个常用深度学习算法

    千次阅读 2019-06-14 15:59:54
    过去十年里,人们对...从根本上讲,机器学习是运用算法从原始数据中提取信息,并用某种类型的模型进行表示,然后使用该模型对一些尚未用模型表示的其他数据来进行推断。 神经网络就是机器学习各类模型中的其中一...
  • 深度学习之BP算法

    万次阅读 多人点赞 2018-05-14 21:43:19
    作为深度学习领域的破冰之作,BP神经网络重新燃起了人们对深度学习的热情.它解决了DNN中的隐层传递中的权重值的计算问题.那么,BP算法思想是什么?它又是如何实现的呢?这就是本节的研究内容. 一.BP算法的提出及其算法...
  • 每周荐书:分布式、深度学习算法、iOS(评论送书)感谢大家对每周荐书栏目的支持,先公布下上周中奖名单 steveygtiny_cellKotlin实战 daMao2 AresCarry架构探险:从零开始写分布式服务框架 FZU_rxd liuhmmjjKeras...
  • 转《零基础学习深度学习算法

    千次阅读 2017-02-23 21:10:32
    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?...
  • 基于深度学习的图像识别算法研究

    万次阅读 2016-10-24 12:34:34
    作者:丰晓霞 ...(1)认真分析了图像识别的方法及存在的问题,对现有的图像识别算法进行了对比研究,详细叙述了深度学习的发展和进展,对比了深度学习结构相比浅层结构的优势所在,总结了深度学习的常用方法,
  • 1.深度神经网络目前有哪些成功的应用?简述原因。(10分)   2.列举不同进程共享数据的方式(至少三种)。(10分)   3.对于N个样本,每个样本为D维向量,采用欧式距离使用KMN做类预测。(10分) 1).给出预测时间...

空空如也

1 2 3 4 5 ... 20
收藏数 181,355
精华内容 72,542
关键字:

深度学习算法