深度学习算法_深度学习算法部署 - CSDN
  • )柳猫一直没有更新自己的手记,现在,就让柳猫来讲讲十个常用的深度学习算法。 过去十年里,人们对机器学习的兴趣经历了爆炸式的整长。我们几乎每天都可以在计算机程序、行业会议和媒体上看到机器学习的身影。很多...

    十分抱歉,由于项目太忙(我会说自己懒吗?)柳猫一直没有更新自己的手记,现在,就让柳猫来讲讲十个常用的深度学习算法。

            过去十年里,人们对机器学习的兴趣经历了爆炸式的整长。我们几乎每天都可以在计算机程序、行业会议和媒体上看到机器学习的身影。很多关于机器学习的讨论都混淆了“机器学习能做什么”和“人类希望机器学习能做什么”。从根本上讲,机器学习是运用算法从原始数据中提取信息,并用某种类型的模型进行表示,然后使用该模型对一些尚未用模型表示的其他数据来进行推断。

            神经网络就是机器学习各类模型中的其中一类,并且已经存在了至少50年。神经网络的基本单位是节点,它的想法大致来源于哺乳动物大脑中的生物神经元。生物大脑中的神经元节点之间的链接是随着时间推移不断演化的,而神经网络中的神经元节点链接也借鉴了这一点,会不断演化(通过“训练”的方式)。

            神经网络中很多重要框架的建立和改进都完成于二十世纪八十年代中期和九十年代初期。然而,要想获得较好结果需要大量的时间和数据,由于当时计算机的能力有限,神经网络的发展受到了一定的阻碍,人们的关注度也随之下降。二十一世纪初期,计算机的运算能力呈指数级增长,业界也见证了计算机技术发展的“寒武纪爆炸”——这在之前都是无法想象的。深度学习以一个竞争者的姿态出现,在计算能力爆炸式增长的十年里脱颖而出,并且赢得了许多重要的机器学习竞赛。其热度在2017年仍然不减。如今,在机器学习的出现的地方我们都能看到深度学习的身影。

            这是柳猫自己做的一个小例子,词向量的 t-SNE 投影,通过相似性进行聚类。

    https://img4.mukewang.com/5c06355e0001943706900664.jpg

            最近,我开始阅读关于深度学习的学术论文。根据我的个人研究,以下文章对这个领域的发展产生了巨大的影响:

    • 1998年NYU的文章《基于梯度学习的文档识别》(Gradient-Based Learning Applied to Document Recognition) 介绍了卷积神经网络在机器学习中的应用。

    • Toronto 2009年的文章《深度波兹曼机器》(Deep Boltzmann Machines) 针对波兹曼机提出了一种新的学习算法,其中包含许多隐藏层。

    • Stanford 和 Google 2012年联合发表的文章《使用大规模非监督学习构建高层特征》(Building High-Level Features Using Large-Scale Unsupervised Learning) 解决了仅利用未标记的数据构建高级、特定类的特征检测器的问题。

    • Berkeley 2013年的文章《用于一般视觉识别的深层卷积激活特征》(DeCAF——A Deep Convolutional Activation Feature for Generic Visual Recognition) 发布了名为 DeCAF 的算法,这是深度卷积激活特征的一个开源实现,使用相关的网络参数,视觉研究人员能够利用一系列视觉概念学习范例进行深入实验。

    • DeepMind 2016年的文章《用深度强化学习玩Atari》(Playing Atari with Deep Reinforcement Learning) 提出了第一个可以成功地通过强化学习从高维感官输入中直接学习控制策略的深度学习模型。

            柳猫整理了人工智能工程师 10 个用于解决机器学习问题的强大的深度学习方法。但是,我们首先需要定义什么是深度学习。

            如何定义深度学习是很多人面临的一个挑战,因为它的形式在过去的十年中已经慢慢地发生了改变。下图直观地展示了人工智能,机器学习和深度学习之间的关系。

    https://img3.mukewang.com/5c0635b3000135f406900699.jpg

            人工智能领域广泛,存在时间较长。深度学习是机器学习领域的一个子集,而机器学习是人工智能领域的一个子集。一般将深度学习网络与“典型”前馈多层网络从如下方面进行区分:

    • 深度学习网络具有比前馈网络更多的神经元

    • 深度学习网络连接层之间的方式更复杂

    • 深度学习网络需要有像“寒武纪大爆发”式的计算能力进行训练

    • 深度学习网络能够自动提取特征

            上文提到的“更多的神经元”是指近年来神经元的数量不断增加,就可以用更复杂的模型来表示。层也从多层网络中每一层完全连接,发展到卷积神经网络中神经元片段的局部连接,以及与递归神经网络中的同一神经元的循环连接(与前一层的连接除外)。

            因此,深度学习可以被定义为以下四个基本网络框架中具有大量参数和层数的神经网络:

    • 无监督预训练网络

    • 卷积神经网络

    • 循环神经网络

    • 递归神经网络

            在这篇文章中,我主要讨论三个框架:

    • 卷积神经网络(Convolutional Neural Network)基本上就是用共享权重在空间中进行扩展的标准神经网络。卷积神经网络主要是通过内部卷积来识别图片,内部卷积可以看到图像上识别对象的边缘。

    • 循环神经网络(Recurrent Neural Network)基本上就是在时间上进行扩展的标准神经网络,它提取进入下一时间步的边沿,而不是在同一时间进入下一层。循环神经网络主要是为了识别序列,例如语音信号或者文本。其内部的循环意味着网络中存在短期记忆。

    • 递归神经网络(Recursive Neural Network)更类似于分层网络,其中输入序列没有真正的时间面,但是必须以树状方式分层处理。以下10种方法均可应用于这些框架。

    1、反向传播

            反向传播是一种计算函数偏导数(或梯度)的简单方法,它的形式是函数组合(如神经网络)。在使用基于梯度的方法求解最优化问题(梯度下降只是其中之一)时,需要在每次迭代中计算函数梯度。

    https://img3.mukewang.com/5c0635da00011eee06000460.jpg

            对于一个神经网络,其目标函数是组合形式。那么应该如何计算梯度呢?有2种常规方法:

    • (1)微分解析法。函数形式已知的情况下,只需要用链式法则(基础微积分)计算导数。

    • (2)有限差分法近似微分。这种方法运算量很大,因为函数评估的数量级是 O(N),其中 N 是参数的个数。与微分解析法相比,这种方法运算量更大,但是在调试时,通常会使用有限差分验证反向传播的效果。

    2、随机梯度下降

            梯度下降的一个直观理解就是想象一条源自山顶的河流。这条河流会沿着山势的方向流向山麓的最低点,而这也正是梯度下降法的目标。

            我们所期望的最理想的情况就是河流在到达最终目的地(最低点)之前不会停下。在机器学习中,这等价于我们已经找到了从初始点(山顶)开始行走的全局最小值(或最优值)。然而,可能由于地形原因,河流的路径中会出现很多坑洼,而这会使得河流停滞不前。在机器学习术语中,这种坑洼称为局部最优解,而这不是我们想要的结果。有很多方法可以解决局部最优问题。

    https://img2.mukewang.com/5c06362a00014d8706900512.jpg

            因此,由于地形(即函数性质)的限制,梯度下降算法很容易卡在局部最小值。但是,如果能够找到一个特殊的山地形状(比如碗状,术语称作凸函数),那么算法总是能够找到最优点。在进行最优化时,遇到这些特殊的地形(凸函数)自然是最好的。另外,山顶初始位置(即函数的初始值)不同,最终到达山底的路径也完全不同。同样,不同的流速(即梯度下降算法的学习速率或步长)也会导致到达目的地的方式有差异。是否会陷入或避开一个坑洼(局部最小值),都会受到这两个因素的影响。

    3、学习率衰减

            调整随机梯度下降优化算法的学习速率可以提升性能并减少训练时间。这被称作学习率退火或自适应学习率。训练中最简单也最常用的学习率自适应方法就是逐渐降低学习率。在训练初期使用较大的学习率,可以对学习率进行大幅调整;在训练后期,降低学习率,以一个较小的速率更新权重。这种方法在早期可以快速学习获得较好的权重,并在后期对权重进行微调。 

    https://img1.mukewang.com/5c0636580001f7f106000337.jpg

            两个流行而简单的学习率衰减方法如下: 

    • 线性地逐步降低学习率 

    • 在特定时点大幅降低学习率

    4、Dropout

            拥有大量参数的深度神经网络是非常强大的机器学习系统。然而,在这样的网络中,过拟合是一个很严重的问题。而且大型网络的运行速度很慢,这就使得在测试阶段通过结合多个不同的大型神经网络的预测来解决过拟合问题是很困难的。Dropout 方法可以解决这个问题。

    https://img3.mukewang.com/5c0636700001b21806140328.jpg

            其主要思想是,在训练过程中随机地从神经网络中删除单元(以及相应的连接),这样可以防止单元间的过度适应。训练过程中,在指数级不同“稀疏度”的网络中剔除样本。在测试阶段,很容易通过使用具有较小权重的单解开网络(single untwined network),将这些稀疏网络的预测结果求平均来进行近似。这能有效地避免过拟合,并且相对于其他正则化方法能得到更大的性能提升。Dropout 技术已经被证明在计算机视觉、语音识别、文本分类和计算生物学等领域的有监督学习任务中能提升神经网络的性能,并在多个基准数据集中达到最优秀的效果。

    5、最大池

            最大池是一种基于样本的离散化方法。目标是对输入表征(图像、隐藏层输出矩阵等)进行下采样,降低维度并且允许对子区域中的特征进行假设。

    https://img2.mukewang.com/5c0636870001512e05140406.jpg

            通过提供表征的抽象形式,这种方法可以在某种程度上解决过拟合问题。同样,它也通过减少学习参数的数目以及提供基本的内部表征转换不变性来减少计算量。最大池是通过将最大过滤器应用于通常不重叠的初始表征子区域来完成的。

    6、批量标准化

            当然,包括深度网络在内的神经网络需要仔细调整权重初始值和学习参数。批量标准化能够使这个过程更加简单。 

            权重问题: 

    • 无论怎么设置权重初始值,比如随机或按经验选择,初始权重和学习后的权重差别都很大。考虑一小批权重,在最初时,对于所需的特征激活可能会有很多异常值。

    •  深度神经网络本身就具有病态性,即初始层的微小变化就会导致后一层的巨大变化。

            在反向传播过程中,这些现象会导致梯度的偏移,这就意味着在学习权重以产生所需要的输出之前,梯度必须补偿异常值。而这将导致需要额外的时间才能收敛。

    https://img1.mukewang.com/5c06371e0001d81f06900497.jpg

            批量标准化将这些梯度从异常值调整为正常值,并在小批量范围内(通过标准化)使其向共同的目标收敛。 

            学习率问题:

    • 通常来说,学习率都比较小,这样只有一小部分的梯度用来校正权重,因为异常激活的梯度不应该影响已经学习好的权重。

    • 通过批量标准化,这些异常激活的可能性会被降低,就可以使用更大的学习率加速学习过程。电动叉车轮胎

    7、长短期记忆

            长短期记忆网络(LSTM)和其他递归神经网络中的神经元有以下三个不同点:

    • 它可以决定何时让输入进入神经元

    • 它可以决定何时记住上一个时间步中计算的内容

    • 它可以决定何时让输出传递到下一个时间戳 LSTM的强大之处在于它可以只基于当前的输入就决定上述所有。请看下方的图表:

    https://img3.mukewang.com/5c0637380001003806900394.jpg

            当前时间戳的输入信号 x(t) 决定了上述三点。

    • 输入门(input gate)决定了第一点,

    • 遗忘门(forget gate)决定了第二点,

    • 输出门(output gate)决定了第三点。 只依赖输入就可以完成这三项决定。这是受到大脑工作机制的启发,大脑可以基于输入来处理突然的上下文语境切换。

    8、Skip-gram

            词嵌入模型的目的是针对每个词学习一个高维密集表征,其中嵌入向量之间的相似性显示了相应词语之间语义或句法的相似性。Skip-gram 是一种学习词嵌入算法的模型。 skip-gram 模型(包括很多其它词嵌入模型)背后的主要思想是:如果两个词汇项有相似的上下文,则它们是相似的。

    https://img3.mukewang.com/5c0638020001fcc905950404.jpg

            换句话说,假设有一个句子,比如“cats are mammals”,如果用“dogs”替换“cats”,该句子仍然是有意义的。因此在这个例子中,“dogs”和“cats”有相似的上下文(即“are mammals”)。

            基于以上假设,我们可以考虑一个上下文窗口(包含 K 个连续项)。然后跳过其中一个词,试着学习一个可以得到除了跳过的这个词以外所有词项,并且可以预测跳过的词的神经网络。因此,如果两个词在一个大语料库中多次具有相似的上下文,那么这些词的嵌入向量将会是相似的。

    9、连续词袋模型

            在自然语言处理中,我们希望将文档中的每一个单词表示为一个数值向量,使得出现在相似上下文中的单词具有相似或相近的向量表示。在连续词袋模型中,我们的目标是利用一个特定单词的上下文,预测该词。

    https://img2.mukewang.com/5c06377e000156f406000337.jpg

            首先在一个大的语料库中抽取大量的句子,每看到一个单词,同时抽取它的上下文。然后我们将上下文单词输入到一个神经网络,并预测在这个上下文中心的单词。

            当我们有成千上万个这样的上下文词汇和中心词时,我们就得到了一个神经网络数据集的实例。然后训练这个神经网络,在经过编码的隐藏层的最终输出中,我们得到了特定单词的嵌入式表达。当我们对大量的句子进行训练时也能发现,类似上下文中的单词都可以得到相似的向量。

    10、迁移学习

            我们来考虑一下卷积神经网络是如何处理图像的。假设有一张图像,对其应用卷积,并得到像素的组合作为输出。假设这些输出是边缘,再次应用卷积,那么现在的输出将是边缘或线的组合。然后再次应用卷积,此时的输出将是线的组合,以此类推。可以把它想象成是在每一层寻找一个特定的模式。神经网络的最后一层通常会变得非常特别。

            如果基于 ImageNet 进行训练,那么神经网络的最后一层或许就是在寻找儿童、狗或者飞机之类的完整图像。再往后倒退几层,可能会看到神经网络在寻找眼睛、耳朵、嘴巴或者轮子等组成部分。

    https://img1.mukewang.com/5c0637ac0001ca1306380359.jpg

            深度卷积神经网络中的每一层逐步建立起越来越高层次的特征表征,最后几层通常是专门针对输入数据。另一方面,前面的层则更为通用,主要用来在一大类图片中有找到许多简单的模式。

            迁移学习就是在一个数据集上训练卷积神经网络时,去掉最后一层,在不同的数据集上重新训练模型的最后一层。直观来讲,就是重新训练模型以识别不同的高级特征。因此,训练时间会减少很多,所以在没有足够的数据或者需要太多的资源时,迁移学习是一个很有用的工具。

    总结:

            深度学习是非常注重技术实践,所谓的百看不如一练。当然柳猫这里讲的还是非常肤浅,如果能够引起小伙伴们对深度学习的兴趣,柳猫就觉得很开心了。

    转载于:https://www.cnblogs.com/xyou/p/10112156.html

    展开全文
  • 深度学习(Deep Learning)算法简介

    千次阅读 2018-07-21 18:59:53
    Comments from Xinwei: 最近的一个课题发展到与深度学习有联系,因此在高老师的建议下,我仔细看了下深度学习的基本概念,这篇综述翻译自http://deeplearning.net,与
    原文地址为:深度学习(Deep Learning)算法简介

    Comments from Xinwei: 最近的一个课题发展到与深度学习有联系,因此在高老师的建议下,我仔细看了下深度学习的基本概念,这篇综述翻译自http://deeplearning.net,与大家分享,有翻译不妥之处,烦请各位指正。

     

     

    查看最新论文

    Yoshua Bengio, Learning Deep Architectures for AI, Foundations and Trends in Machine Learning, 2(1), 2009

     

    深度(Depth)

    从一个输入中产生一个输出所涉及的计算可以通过一个流向图(flow graph)来表示:流向图是一种能够表示计算的图,在这种图中每一个节点表示一个基本的计算并且一个计算的值(计算的结果被应用到这个节点的孩子节点的值)。考虑这样一个计算集合,它可以被允许在每一个节点和可能的图结构中,并定义了一个函数族。输入节点没有孩子,输出节点没有父亲。

     

    对于表达1 的流向图,可以通过一个有两个输入节点23 的图表示,其中一个节点通过使用23 作为输入(例如作为孩子)来表示4 ;一个节点仅使用2 作为输入来表示平方;一个节点使用67 作为输入来表示加法项(其值为5 );最后一个输出节点利用一个单独的来自于加法节点的输入计算SIN。

     

    这种流向图的一个特别属性是深度(depth):从一个输入到一个输出的最长路径的长度。

     

    传统的前馈神经网络能够被看做拥有等于层数的深度(比如对于输出层为隐层数加1)。SVMs有深度2(一个对应于核输出或者特征空间,另一个对应于所产生输出的线性混合)。

     

    深度架构的动机

    学习基于深度架构的学习算法的主要动机是:

    不充分的深度是有害的;

    大脑有一个深度架构;

    认知过程是深度的;

     

    不充分的深度是有害的

    在许多情形中深度2就足够(比如logical gates, formal [threshold] neurons, sigmoid-neurons, Radial Basis Function [RBF] units like in SVMs)表示任何一个带有给定目标精度的函数。但是其代价是:图中所需要的节点数(比如计算和参数数量)可能变的非常大。理论结果证实那些事实上所需要的节点数随着输入的大小指数增长的函数族是存在的。这一点已经在logical gates, formal [threshold] neurons 和rbf单元中得到证实。在后者中Hastad说明了但深度是d时,函数族可以被有效地(紧地)使用O(n)个节点(对于n个输入)来表示,但是如果深度被限制为d-1,则需要指数数量的节点数O(2^n)。

     

    我们可以将深度架构看做一种因子分解。大部分随机选择的函数不能被有效地表示,无论是用深地或者浅的架构。但是许多能够有效地被深度架构表示的却不能被用浅的架构高效表示(see the polynomials example in the Bengio survey paper)。一个紧的和深度的表示的存在意味着在潜在的可被表示的函数中存在某种结构。如果不存在任何结构,那将不可能很好地泛化。

     

    大脑有一个深度架构

    例如,视觉皮质得到了很好的研究,并显示出一系列的区域,在每一个这种区域中包含一个输入的表示和从一个到另一个的信号流(这里忽略了在一些层次并行路径上的关联,因此更复杂)。这个特征层次的每一层表示在一个不同的抽象层上的输入,并在层次的更上层有着更多的抽象特征,他们根据低层特征定义。

     

    需要注意的是大脑中的表示是在中间紧密分布并且纯局部:他们是稀疏的:1%的神经元是同时活动的。给定大量的神经元,任然有一个非常高效地(指数级高效)表示。

     

    认知过程看起来是深度的
    • 人类层次化地组织思想和概念;
    • 人类首先学习简单的概念,然后用他们去表示更抽象的;
    • 工程师将任务分解成多个抽象层次去处理;

    学习/发现这些概念(知识工程由于没有反省而失败?)是很美好的。对语言可表达的概念的反省也建议我们一个稀疏的表示:仅所有可能单词/概念中的一个小的部分是可被应用到一个特别的输入(一个视觉场景)。

     

    学习深度架构的突破

     

    2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。

     

    2006年的3篇论文改变了这种状况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工作所引领:

    在这三篇论文中以下主要原理被发现:

    • 表示的无监督学习被用于(预)训练每一层;
    • 在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入;
    • 用无监督训练来调整所有层(加上一个或者更多的用于产生预测的附加层);

    DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(通过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(类似于稀疏编码)。Auto-encoders和convolutional架构将在以后的课程中讲解。

     

    从2006年以来,大量的关于深度学习的论文被发表,一些探讨了其他原理来引导中间表示的训练,查看Learning Deep Architectures for AI

     

     

    本文英文版出处http://www.iro.umontreal.ca/~pift6266/H10/notes/deepintro.html


    转载请注明本文地址:深度学习(Deep Learning)算法简介
    展开全文
  • 深度学习算法总结

    千次阅读 2019-04-16 20:38:55
    LeNet(1998):现在一般指LeNet5,(输入层、卷积、池化...AlexNet(2012):普遍认为深度学习的开端是2006年,但是广泛关注从2012开始。(输入层、5个卷积(其中3个卷积进行最大池化)、3个全连接、输出层共8层)...

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/weixin_44474718/article/details/89288051

    现代雏形:

    LeNet(1998):现在一般指LeNet5,(输入层、卷积、池化、卷积、池化、全连接、输出共5层)
    主要特征:卷积层和下采样层相结合作为网络的基本结构。所有神经元共享权值,但偏置可能不同。激活函数:软最大函数(softmax)。
    原始模型:原始模型
    标准模型:
    标准模型

    突破模型:

    AlexNet(2012):普遍认为深度学习的开端是2006年,但是广泛关注从2012开始。(输入层、5个卷积(其中3个卷积进行最大池化)、3个全连接、输出层共8层)
    对比LeNet的主要改进:ReLU和多个GPU(提高训练速度)、重叠池化(提高精度、缓解过拟合)、局部响应归一化(提高精度、但是会增加内存消耗和计算时间)、数据扩充和丢失数据(减少过拟合)。
    在这里插入图片描述
    ZFNet():AlexNet在上的改进:
    使用较小的掩码以保留更多原始像素信息(将AlexNet的11x11改为7x7大小的卷积核)、只使用一个GPU。

    应变模型:

    SPPNet(空间金字塔池化网络-2014):在ZFNet上的基础上加了个空间金字塔,又称为SPM————————————图像分类加入spp能提高性能。
    主要特征:可以处理输入图像大小不同的情况。在最后一个卷积层和第一个全连接层(因为需要固定大小/长度的输出)之间插入一个空间金字塔池化层。Ⅰ、SPP可以对任意大小的输入都能产生一个固定长度的输出、Ⅱ、使用多级大小空间窗口、Ⅲ、可以在不同尺度上提取特征并且池化。最大优点:能够用固定长度的向量表示不同尺度的空间信息。缺点:实际运行时最好还是固定尺寸大小输入???
    一个SPPNet的网络结构,其中conv5是最后一个卷积层,具有256个卷积核:
    在这里插入图片描述

    加深模型:

    VGGNet(2014):基本类型包括VGGNet-16和VGGNet-19(多了三个卷积层),增加网格的深度------------
    主要特征:利用较小的卷积核来增加网格的深度。全部使用3x3的卷积核和2x2的池化核。使用ReLU激活函数。池化层全部为最大池化。
    在这里插入图片描述
    GoogLeNet(2014):包括V1、V2、V3、V4。增加网格的深度的同时,提出了‘Inception’模块(增加网络的宽度)
    原始Inception’模块:
    原始inception模块
    降维inception模块V1:
    在这里插入图片描述
    v2:
    在这里插入图片描述
    v3:
    在这里插入图片描述
    主要特征:Inception’模块包括:摄入层并行处理层和过滤拼接层。
    V1(2014):加入了9个降维Inception模块。卷积层都为ReLU激活函数。加了2个辅助分类器。
    V2(201-):在V1的基础上,用两个3x3核的卷积层代替5x5核卷积层,减少了一个辅助分类器。同时引入正则化方法(batch normaliza,BN),可以减少甚至取消dropout和LRN的使用,提高精度并且加快训练速度。
    V3(201-):在V2的基础上,卷积分解。将较大的卷积核nxn二维卷积拆成两个较小的一维卷积nx1和1xn。使用1个辅助分类器。
    V4(201-):在V3的基础上,纯粹V4和残差V4。

    跨连模型:

    HighwayNet():
    ResNet(residual network,残差网络,2016):解决退化问题,构造残差模块,引入跨层连接,跨2-3层。深度(50、101、152层)
    WRN(wide residual network,2016):在跨层连接中增加需要训练的卷积层。
    ResNeXt(2017):增加了一个新的基数维度,基数就是并行重复残差模块的个数。
    FPN(feature pyramid network,2017):同时使用多尺度特征代替单一尺度特征进行目标检测。
    DenseNet(densely connected convolutional network,2017):改进ResNet,引入密连模块代替残差模块。
    主要特征:密连模块内部允许任意两个非相连层之间进行跨层连接。优点:缓和梯度消失、加强特征传播、促进特征重用和减少参数数量。
    跨连连接:
    在这里插入图片描述
    CatNet(----):全连接层通过所有的卷积层和池化层通过跨层连接拼接得到。
    主要特征:能够集成不同尺度的图像特征进行分类和识别。
    在这里插入图片描述

    区域模型:(目标检测)

    R-CNN(2013.11):目标检测模型,要求在图像中确定多个可能目标的位置。
    在这里插入图片描述
    主要特征:采用滑动窗口来进行定位。包括:区域推荐、特征提取、区域分类三个模块。
    区域推荐:采用选择性收索,其他推荐的有(目标构成度、类别无关目标推荐、受限参数最小割)
    特征提取:采用卷积网络(比如AlexNet)。
    区域分类:采用类别相关线性支持向量机(SVM)对所提取的特征向量打分。通过贪婪非最大抑制策略进行筛选,保留高分推荐,拒绝与某高分推荐的交并比(IoU)大于一个通过学习得到的阈值。
    缺点:
    训练过程阶段多:首先、然后、最后才进行边框回归学习。
    训练时空费用大:提取特征需要写入硬盘。
    目标检测速度慢:测试阶段,仍然需要从每幅测试图像的每个区域推荐提取特征。
    SPPnet(spatial pyramid pooling network,2014):采用了“空间金字塔池化”。针对一幅图像只需要进行一次卷积操作。
    主要特征:使用一次卷积代替R-CNN中对于候选区域的2000多次卷积操作,将最后提取出来的特征图划分为不同的区域,再将每一个区域的特征图进行卷积操作,将需要提取的区域在原图上的位置映射到卷积层的特征图山。因此,针对一幅图像只需要进行一次卷积操作,再将每个需要提取的区域的卷积特征输入到全连接神经网络中进行全连接操作。
    缺点:经历候选框区域提取,使用CNN进行卷积操作提取特征,使用SVM进行分类,边框回归训练等多个步骤。
    Fast R-CNN(2015):输入是一副完整的图像和多个区域推荐,经过卷积和最大池化得到一个共享卷积特征图。使用softmax代替SVM分类器(直接显存读取)。加入ROI层(满足输出尺寸统一、将图像的候选区域定位到目标特征中的特征区域)(加入了多任务边框回归方法)
    在这里插入图片描述
    主要特征:输入图像和感兴趣区域(RoI)先经过卷积池化层处理产生卷积特征图,在经过RoI池化层处理得到固定大小的特征图,之后被全连接层映射成特征向量。每个RoI都有两个输出向量:softmax概率和边框回归偏移。该结构用多任务损失进行端到端训练。
    优点:检测质量更高、 训练过程统一、网络全层更新、无须硬盘存储。
    缺点:依赖非常耗时的区域推荐算法提供关于目标位置的假设。
    Faster R-CNN(2015):在Fast R-CNN加入了RPN(基于ZF-Net)。
    在这里插入图片描述
    rpn:
    在这里插入图片描述
    主要特征:采用区域推荐网络(Region Proposal Network,RPN),可以与检测网络共享整幅图像的卷积特征,从而产生几乎无代价的区域推荐。由两个模块组成:RPN(采用当前最流行的“注意力”机制)和使用推荐区域的Fast R-CNN检测器。
    结构:
    1、卷积层:卷积操作(conv+ReLU+pooling)。提取目标图像的特征图。(共享给后续的RPN和全连接层)
    2、RPN(region proposal network):全卷积神经网络,主要用来提取候选框,代替前面提到的选择性收索算法。由于没有全连接层,因此可以输入任意大小的图片,而输出是特定大小的。(引入锚点anchor–具有平移不变性)
    3、RoI Pooling部分:将候选区域进行相应的整理,然后计算出候选区域的特征图并送入到下一层。(输入:原始的特征、rpn的特征)
    4、分类:通过全连接层和softmax函数进行分类,同时再次利用边框回归来精确对目标位置标注。
    YOLO(2016):将目标检测设计为回归问题,包括对多个边框和相关类别概率的回归。

    目标检测思路:

    目标检测过程:
    在这里插入图片描述
    网络结构:
    在这里插入图片描述
    主要特征:在googLeNet的基础上建立(使用1x1和3x3的卷积核代替inception。简化版本:快速YOLO,只包含9个卷积层)。最后一层使用线性激活函数,其余层采用Leak ReLU 激活函数。
    YOLO V1(2016):原模型,上面。
    YOLO V2(2017):与 V1相比,优势和特点:①使用了块归一化;②使用了高分辨率分类器;③使用了与锚点边框的卷积;④使用了维数聚类确定5种锚点边框的先验高宽比;⑤使用了无全连接层的新网络结构;⑥使用了直接位置预测;⑦使用了细粒度特征;⑧使用了多尺度训练。(YOLO v2还有一个版本称为YOLO 9000,特指对ImageNet和COCO数据集中的9000多个类别进行目标实时检测的系统。)
    YOLO V3(2018):
    SSD(single shot detector,2016):新型神经网络目标检测器
    YOLO和SSD对比:
    在这里插入图片描述
    SSD框架:
    在这里插入图片描述
    主要特征:不用对边框假设设置采像素或特征,也不会损失精度,但是速度要比Faster R-CNN和YOLO都要快。根本改进措施是消除边框推荐和随后的像素或特征重采样阶段,还包括使用小卷积核在边框位置预测对象的类别和偏移,使用独立预测器(滤波器)负责不同高宽比的检测,并用这些滤波器在网络后期的多个特征图中执行多尺度检测。
    增加了新的辅助结构:多尺度特征图、卷积预测器、默认边框和高宽比。

    分割模型:(语义分割)

    FCN(fully convolutinal network,):没有全连接层的卷积网络。
    在这里插入图片描述
    在这里插入图片描述
    主要特征:是一种没有全连接层的卷积网络[21],但除了卷积层和下采样层,另外还可以包含上采样层和反卷积层等其他具有空间平移不变形式的层。FCN的关键特征在于其所有层的计算都能够表示成某种空间平移不变的变换形式,主要用于图像的语义分割(semantic segmentation)。基于CNN的语义分割方法一般用每个像素周围的图像块作为输入进行分类训练和预测,计算效率相对较低。而FCN则直接把整幅图像作为输入、把人工标签地图(label map)作为输出,训练一个端到端的网络,可以显著提高语义分割的计算效率和预测性能。
    缺点:在于缺少合适的策略来使用全局场景分类线索。
    SegNet(2015) :
    主要特征: SegNet和FCN思路十分相似,只是Encoder,Decoder(Upsampling)使用的技术不一致。此外SegNet的编码器部分使用的是VGG16的前13层卷积网络,每个编码器层都对应一个解码器层,最终解码器的输出被送入soft-max分类器以独立的为每个像素产生类概率。 左边是卷积提取特征,通过pooling增大感受野,同时图片变小,该过程称为Encoder,右边是反卷积(在这里反卷积与卷积没有区别)与upsampling,通过反卷积使得图像分类后特征得以重现,upsampling还原到图像原始尺寸,该过程称为Decoder,最后通过Softmax,输出不同分类的最大值,得到最终分割图。
    在这里插入图片描述
    DeepLab(2016):微调FCN,提出了空洞卷积层(Atrous-结果更精确)和金字塔型空洞池化层(ASPP-兼顾像素的局部关系),接着引入全连接条件随机场(Full connected CRF-分割更为精确)
    在这里插入图片描述在这里插入图片描述
    PSPNet(Pyramid Scene Parsing Network,2016):使用了金字塔池化模块。
    在这里插入图片描述
    主要特征:集成了合适的全局特征进行像素预测。PSPNet在FCN的基础上,将像素级特征扩展到专门设计的全局金字塔池化特征,通过结合局部和全局线索来提高最终预测的可靠性。

    特点:在于使用了金字塔池化模块(pyramid pooling module),其总体结构如图9.9所示。金字塔池化模块在4个不同的粗细尺度上进行特征融合。最粗尺度对特征图进行全局平均池化,产生单格输出,加细尺度则把特征图分成不同子区域并形成不同位置的池化表示。在金字塔模块中,不同尺度级别的输出包含不同大小的特征图,但都采用1×1卷积层把上下文表示的维数降低为原来的1/N,其中N表示加细级别的大小。然后,低维特征图通过双线性插值进行上采样以获得相同大小的特征。最后,不同级别的特征被拼接为最终的金字塔池化全局特征。
    Mask R-CNN(Pyramid Scene Parsing Network,2017):
    在这里插入图片描述
    主要特征:在扩展Faster R-CNN的基础上建立起来的,关键在于创建掩膜分支。掩膜分支是一个用在RoI上的小型全卷积网络,与分类和边框回归分支是平行的,能够在每一个RoI上按像素方式预测生成高质量的分割掩膜,但增加的计算量并不大。Mask R-CNN的优点是很容易在Faster R-CNN的框架上实现和训练,运行速度快,开展实验也方便。。
    两种不同的头部结构:Faster R-CNN的脊柱结构为a)ResNet和b)FPN
    在这里插入图片描述

    特殊模型:

    SiameseNet(孪生网络,2005):本质上是一种判断两个输入模式是否相似的通用框架。
    在这里插入图片描述
    主要特征:传统的分类模型需要确切知道每个样本的标签属于哪个类,而标签的数量通常相对较少。在类别数量特别多、标签相对少的情况下,有些类别可能根本没有标签,比如人类对第一次见到的生物物种往往是叫不出名字的。这时进行分类就可以考虑采用孪生网络(Siamese Network, SiameseNet)。孪生网络不仅能够从给定数据中学习一个相似性度量,而且还能够利用所学到的度量去比较和匹配新样本以确定类别。孪生网络的基本思想是构造一个函数将输入映射到目标空间,在目标空间通过简单的距离(例如,欧氏距离)计算相似度, 孪生网络的总体结构示意图
    孪生网络在本质上是一种判断两个输入模式是否相似的通用框架,优点在于对领域知识的依赖性较低。
    SqueezeNet(挤压网络,2017):简化模型结构、压缩模型参数
    在这里插入图片描述
    火焰模块:
    在这里插入图片描述
    主要特征:1)使用1×1卷积核代替3×3卷积核;
    2)减少3×3卷积核的输入通道数量;
    3)推后下采样,增大卷积层的激活图(activation map)。
    特色:火焰模块(fire module),其结构如图所示。每个火焰模块实际上由两个卷积层组成,一个称为压缩层(squeeze layer),另一个称为扩展层(expand layer)。压缩层只有1×1大小的卷积核(记为S1×1),在经过ReLU函数变换后输入到扩展层。扩展层可以有1×1和3×3大小的两种卷积核(分别记为e1×1和e3×3),在经过ReLU函数后输入到下一层。在火焰模块中,一般要求S1×1的数量小于e1×1与e3×3的数量之和,这样有助于限制卷积核的输入通道数量。
    DCGAN(2015):图片生成合成去噪去水滴等
    NIN(Network In Network, 2013):增加网络的非线性能力,使上层的特征可以更复杂的被映射到下层。
    主要特征:是一种非常特殊的卷积网络模型,其基本思想是使用一个微网络(micro network)卷积核来代替线性卷积核。微网络卷积核实际上是一个小型的多层感知器。与线性卷积核相比,微网络卷积核在理论上能够近似任何局部的非线性函数变换,不仅具有更高的抽象能力水平,而且可以通过反向传播算法进行训练。
    在这里插入图片描述
    一般网中网的结构:
    在这里插入图片描述

    强化学习:Q网络

    DQN(deep Q-Network,2015):------

    待续。。。。。

    展开全文
  • 深度学习总结(一)各种优化算法

    万次阅读 多人点赞 2018-07-03 20:11:11
    参考博文: 码农王小呆:...深度学习最全优化方法总结: https://blog.csdn.net/u012759136/article/details/52302426 超级详细每个算法的讲解,可参考: https://blog.csdn.net/tsyccnh/articl...

    参考博文:
    码农王小呆:https://blog.csdn.net/manong_wxd/article/details/78735439
    深度学习最全优化方法总结:
    https://blog.csdn.net/u012759136/article/details/52302426
    超级详细每个算法的讲解,可参考:
    https://blog.csdn.net/tsyccnh/article/details/76673073

    一.优化算法介绍

    1.批量梯度下降(Batch gradient descent,BGD)

    θ=θ−η⋅∇θJ(θ)
    每迭代一步,都要用到训练集的所有数据,每次计算出来的梯度求平均
    η代表学习率LR

    2.随机梯度下降(Stochastic Gradient Descent,SGD)

    θ=θ−η⋅∇θJ(θ;x(i);y(i))
    通过每个样本来迭代更新一次,以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。

    缺点:

    对于参数比较敏感,需要注意参数的初始化
    容易陷入局部极小值
    当数据较多时,训练时间长
    每迭代一步,都要用到训练集所有的数据。

    3. 小批量梯度下降(Mini Batch Gradient Descent,MBGD)

    θ=θ−η⋅∇θJ(θ;x(i:i+n);y(i:i+n))
    为了避免SGD和标准梯度下降中存在的问题,对每个批次中的n个训练样本,这种方法只执行一次更新。【每次更新全部梯度的平均值】

    4.指数加权平均的概念

    这里写图片描述
    这里写图片描述
    从这里我们就可已看出指数加权平均的名称由来,第100个数据其实是前99个数据加权和,而前面每一个数的权重呈现指数衰减,即越靠前的数据对当前结果的影响较小
    这里写图片描述

    缺点:存在开始数据的过低问题,可以通过偏差修正,但是在深度学习的优化算法中一般会忽略这个问题
    这里写图片描述
    当t不断增大时,分母逐渐接近1,影响就会逐渐减小了

    优点:【相较于滑动窗口平均】
    1.占用内存小,每次覆盖即可
    2.运算简单

    5.Momentum(动量梯度下降法)

    momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。公式如下:
    这里写图片描述
    然而网上更多的是另外一种版本,即去掉(1-β)
    这里写图片描述
    相当于上一版本上本次梯度的影响权值*1/(1-β)
    两者效果相当,只不过会影响一些最优学习率的选取
    优点

    • 下降初期时,使用上一次参数更新,下降方向一致,乘上较大的μ能够进行很好的加速
    • 下降中后期时,在局部最小值来回震荡的时候,gradient→0,β得更新幅度增大,跳出陷阱
    • 在梯度改变方向的时候,μ能够减少更新

    即在正确梯度方向上加速,并且抑制波动方向张的波动大小,在后期本次计算出来的梯度会很小,以至于无法跳出局部极值,Momentum方法也可以帮助跳出局部极值
    参数设置
    β的常用值为0.9,即可以一定意义上理解为平均了前10/9次的梯度。
    至于LR学习率的设置,后面所有方法一起总结吧

    6.Nesterov accelerated gradient (NAG)

    Momentum图解
    NAG图解
    这里写图片描述
    优点:
    这种基于预测的更新方法,使我们避免过快地前进,并提高了算法地响应能力,大大改进了 RNN 在一些任务上的表现【为什么对RNN好呢,不懂啊】
    没有对比就没有伤害,NAG方法收敛速度明显加快。波动也小了很多。实际上NAG方法用到了二阶信息,所以才会有这么好的结果。先按照原来的梯度走一步的时候已经求了一次梯度,后面再修正的时候又求了一次梯度,所以是二阶信息。
    参数设置:
    同Momentum

    其实,momentum项和nesterov项都是为了使梯度更新更加灵活,对不同情况有针对性。但是,人工设置一些学习率总还是有些生硬,接下来介绍几种自适应学习率的方法

    7.Adagrad

    前面的一系列优化算法有一个共同的特点,就是对于每一个参数都用相同的学习率进行更新。但是在实际应用中各个参数的重要性肯定是不一样的,所以我们对于不同的参数要动态的采取不同的学习率,让目标函数更快的收敛。
    adagrad方法是将每一个参数的每一次迭代的梯度取平方累加再开方,用基础学习率除以这个数,来做学习率的动态更新。【这样每一个参数的学习率就与他们的梯度有关系了,那么每一个参数的学习率就不一样了!也就是所谓的自适应学习率
    这里写图片描述

    优点:

    • 前期Gt较小的时候, regularizer较大,能够放大梯度
    • 后期Gt较大的时候,regularizer较小,能够约束梯度
    • 适合处理稀疏梯度:相当于为每一维参数设定了不同的学习率:压制常常变化的参数,突出稀缺的更新。能够更有效地利用少量有意义样本

    参数设置:
    只需要设置初始学习率,后面学习率会自我调整,越来越小

    缺点:
    Adagrad的一大优势时可以避免手动调节学习率,比如设置初始的缺省学习率为0.01,然后就不管它,另其在学习的过程中自己变化。当然它也有缺点,就是它计算时要在分母上计算梯度平方的和,由于所有的参数平方【上述公式推导中并没有写出来是梯度的平方,感觉应该是上文的公式推导忘了写】必为正数,这样就造成在训练的过程中,分母累积的和会越来越大。这样学习到后来的阶段,网络的更新能力会越来越弱,能学到的更多知识的能力也越来越弱,因为学习率会变得极其小【就会提前停止学习】,为了解决这样的问题又提出了Adadelta算法。

    8.Adadelta

    Adagrad会累加之前所有的梯度平方,而Adadelta只累加固定大小的项【其实就是相当于指数滑动平均,只用了前多少步的梯度平方平均值】,并且也不直接存储这些项,仅仅是近似计算对应的平均值【这也就是指数滑动平均的优点】
    这里写图片描述
    优点:
    不用依赖于全局学习率了
    训练初中期,加速效果不错,很快
    避免参数更新时两边单位不统一的问题
    缺点:
    训练后期,反复在局部最小值附近抖动

    9.RMSprop

    这里写图片描述
    特点:

    • 其实RMSprop依然依赖于全局学习率
    • RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
    • 适合处理非平稳目标(也就是与时间有关的)
    • 对于RNN效果很好,因为RMSprop的更新只依赖于上一时刻的更新,所以适合。???

    10.Adam

    Adam = Adaptive + Momentum,顾名思义Adam集成了SGD的一阶动量和RMSProp的二阶动量。
    这里写图片描述
    特点:

    • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
    • 对内存需求较小
    • 为不同的参数计算不同的自适应学习率
    • 也适用于大多非凸优化
    • 适用于大数据集和高维空间

    11.Adamax

    这里写图片描述

    12.Nadam

    这里写图片描述

    13.总结

    提速可以归纳为以下几个方面:
    - 使用momentum来保持前进方向(velocity);
    - 为每一维参数设定不同的学习率:在梯度连续性强的方向上加速前进;
    - 用历史迭代的平均值归一化学习率:突出稀有的梯度;

    Keras中的默认参数

    optimizers.SGD(lr=0.001,momentum=0.9)
    
    optimizers.Adagrad(lr=0.01,epsilon=1e-8)
    
    optimizers.Adadelta(lr=0.01,rho=0.95,epsilon=1e-8)
    
    optimizers.RMSprop(lr=0.001,rho=0.9,epsilon=1e-8)
    
    optimizers.Adam(lr=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-8)

    14.牛顿法——二阶优化方法【待补充】

    二.相关注意问题

    1.关于批量梯度下降的batch_size选择问题

    训练集较小【<2000】:直接使用batch梯度下降,每次用全部的样本进行梯度更新
    训练集较大:batch_size一般设定为[64,512]之间,设置为2的n次方更符合电脑内存设置,代码会运行快一些
    此外还要考虑GPU和CPU的存储空间和训练过程的波动问题
    这里写图片描述
    batch_size越小,梯度的波动越大,正则化的效果也越强,自然训练速度也会变慢,实验时应该多选择几个batch_size进行实验,以挑选出最优的模型。

    2.关于批量梯度下降的weight_decay【似乎与L2正则有关系,待补充】

    3.关于优化算法选择的经验之谈

    1. Adam在实际应用中效果良好,超过了其他的自适应技术。
    2. 如果输入数据集比较稀疏,SGD、NAG和动量项等方法可能效果不好。因此对于稀疏数据集,应该使用某种自适应学习率的方法,且另一好处为不需要人为调整学习率,使用默认参数就可能获得最优值。
    3. 如果想使训练深层网络模型快速收敛或所构建的神经网络较为复杂,则应该使用Adam或其他自适应学习速率的方法,因为这些方法的实际效果更优。
    4. SGD通常训练时间更长,但是在好的初始化和学习率调度方案的情况下,结果更可靠。
    5. Adadelta,RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多。在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果

    4.训练优化器的目的

    加速收敛 2. 防止过拟合 3. 防止局部最优

    5.选用优化器的目的

    在构建神经网络模型时,选择出最佳的优化器,以便快速收敛并正确学习,同时调整内部参数,最大程度地最小化损失函数。

    6.为什么神经网络的训练不采用二阶优化方法 (如Newton, Quasi Newton)?

    这里写图片描述

    7. 优化SGD的其他手段

    这里写图片描述
    这里写图片描述
    这里写图片描述

    附录

    这里写图片描述

    展开全文
  • 深度学习常见算法的介绍和比较

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

    2020-09-16 15:47:09
    在这里,我们将讨论深度顺序模型。它们主要用于处理/预测时间序列数据。 简单递归神经网络(RNN)/ Elman网络 简单的递归神经网络(也称为RNN)将时间序列问题视为计算机视觉的CNN。在时间序列问题中,您将一个值...
  • 深度学习算法及其应用

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

    万次阅读 多人点赞 2018-01-27 10:36:40
    深度学习常常需要大量的时间和机算资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但所需的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的最...
  • 十个常用深度学习算法

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

    万次阅读 2018-11-13 18:32:12
    深度学习CNN算法原理 一 卷积神经网络 卷积神经网络(CNN)是一种前馈神经网络,通常包含数据输入层、卷积计算层、ReLU激活层、池化层、全连接层(INPUT-CONV-RELU-POOL-FC),是由卷积运算来代替传统矩阵乘法运算...
  • AI必知的十大深度学习算法

    万次阅读 多人点赞 2018-04-04 15:30:10
    首先先让我们来定义一下什么是“深度学习”。对很多人来说,给“深度学习”下一个定义确实很有挑战,因为在过去的十年中,它的形式已经慢慢地发生了很大的变化。先来在视觉上感受一下“深度学习”的地位。下图是AI、...
  • vivo 2020届秋招提前批深度学习算法工程师笔经面经前言笔经面经 前言 又到了一年找工作的时节,秋招也是一年比一年早了。在上周结束的vivo秋招提前批,博主参加了深度学习算法工程师岗位的笔试与面试,也是博主人生...
  • 深度学习算法归类

    千次阅读 2017-05-22 20:29:21
    深度学习算法
  • 利用高性能计算加速深度学习算法

    千次阅读 2018-02-07 16:09:42
    1. 深度学习  深度学习是机器学习研究中的一个新...(由于本人不是深度学习专业人士,对深度学习理论知识不多介绍,说多了就班门弄斧了,后面主要介绍下这些深度学习算法如何进行并行化设计和优化) 2. CPU+GP
  • 深度学习算法实践1---开发环境搭建

    千次阅读 2016-08-04 11:01:55
    本文将在Mac环境下,配置深度学习算法的开发环境,我们会采用python3.x作为开发语言,在深度学习框架方面,没有选择最为流行的TensorFlow,而是在研究者中比较流行的Theano。主要是因为TensorFlow虽然很热,但是将...
  • 本人最近专门研究深度学习算法就遥感影像分类研究和智能识别,有同行或者新手们可以一起学习,互相交流。安利一个微博:大数据与人工智能CCNU上面有不少你需要的东西。作为深度学习算法入门和关注AI动态。大家可以...
  • 百度2013深度学习算法工程师笔试题。
  • 深度学习算法预测未来股票走势

    千次阅读 2020-08-21 16:23:50
    最近研究了一下用深度学习算法来预测股票未来的走势,看了网上不少别人分享的案例,也实际进行了测试,感觉用 LSTM 算法比较适用。长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了...
  • 机器学习算法已经基本学习完了,在这一系列,佛爷将开始着手学习深度学习的各种算法和应用,由于本身难度偏大,我会不定期的更新,基本清楚和更加深入的研究深度学习。代码方面我基本会使用Tensorflow框架去写,原生...
  • Tensorflow自谷歌提出...今天给大家分享一份 11 月刚刚出炉的《TensorFlow 2.0 深度学习算法实战》中文版教材。 本书共有 15 章,内容上可分为 4 个部分:第 1~3 章为第 1 部分,主要介绍人工智能的初步认知和背景...
1 2 3 4 5 ... 20
收藏数 251,487
精华内容 100,594
关键字:

深度学习算法