恩佐2登录 > SEO算法 > 2017年深度学习优化算法最新综述

2017年深度学习优化算法最新综述

admin SEO算法 2020年02月05日

  是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现。

  这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用。

  详细对比了梯度下降算法中的不同变种,并帮助使用者根据具体需要进行使用。 近日Ruder在针对2017年优化算法的一些新方法,在之前综述的基础上,整理出2017深度学习优化研究亮点,值得关注。

  深度学习的终极目标是找到一个能够很好进行泛化的最小值,如果可以快速而可靠地找到这个值当然更好了。主要的方法是随机梯度下降(SGD)法,该算法已有60年历史(Robbins and Monro,1951),它对于当前的深度学习的反向传播算法来说是非常重要的。

  近年来提出了不同的优化算法,分别利用不同的公式来更新模型的参数。Adam(Kingma and Ba,2015)自从2015年被推出后,一直到今天仍然是最常用的优化算法之一。这表明从机器学习从业者的角度来看,深度学习的优化的最好的方法在很大程度上并没有多大改变。

  然而,今年已经产生了一些新的想法来改进深度学习的优化方法,这可能会成为未来我们模型的优化方式。在这篇博文中,我将深入探讨深度学习最令人激动的亮点和最有前景的方向。请注意,这篇博文事先假定你已经熟悉SGD和自适应学习速率方法。要想提高学习的速度,请先了解现有梯度下降优化算法,可参阅我的另一个博客文章()。

  优化与泛化密切相关,因为模型收敛的最小值定义了模型泛化的程度。因此,提升优化与理解这种极小值泛化行为的理论进展密切相关,更普遍的是,对深度学习的泛化能力有更深的理解。

  然而,我们对深度神经网络泛化行为的理解仍然很浅。 最新工作表明,可能的局部极小值数量随参数的数量呈指数增长(Kawaguchi,2016)。考虑到目前深度学习架构的参数数量巨大,这样的模型能收敛并且泛化的还不错,看起来很神奇,尤其是考虑到他们可以完全记住随机输入(Zhang等,2017)。

  Keskar等(2017)将最小值的清晰度确定为不良泛化的一个来源:特别的,他们表明,批量梯度下降发现的明确的极小值具有较高的泛化误差。这是直观的,因为我们通常会希望我们的函数是平滑的,明确的最小值表示相应误差曲面具有高度不规则性。 然而,近期工作表明,清晰度可能并不是一个好的指标,因为它表明局部最小值能够很好地泛化(Dinh et al,2017)。 Eric Jang的quora问答也讨论了这些文章。

  一份ICLR 2018投稿论文通过一系列消融分析表明,一个模型在激活空间中对单个方向的依赖(即单个单元或特征图的激活)是其泛化性能的良好表现。他们证明了这种模式适用于不同数据集的模型,以及不同程度的标签损坏。 同时他们发现dropout并没有帮助解决这个问题,而批量规范化阻碍了单方向依赖。

  虽然这些发现表明我们在深度学习优化方面仍然有许多不知道的,但重要的是要记住,收敛保证和存在于凸优化中的大量工作,在一定程度上现有的想法和见解也可以应用于非凸优化。 NIPS 2016的大规模优化教程提供了该领域更多理论工作的精彩概述。

  其中,每次使用全部训练集样本计算损失函数的梯度,然后使用学习速率朝着梯度相反方向去更新模型的每个参数。

  批量梯度下降每次学习都使用整个训练集,因此其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且批量梯度下降不能进行在线模型参数更新。

  批量梯度下降算法每次都会使用全部训练样本,因此计算是冗余的,因为每次都使用完全相同的样本集。

  而随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。

  随机梯度下降最大的缺点在于每次更新可能并不会按照正确的方向进行,因此可以带来优化波动,如下图:

  不过从另一个方面来看,随机梯度下降所带来的波动有个好处就是,对于类似盆地区域(即很多局部极小值点)那么这个波动的特点可能会使得优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样便可能对于非凸函数,最终收敛于一个较好的局部极值点,甚至全局极值点。

  不过最终其会和全量梯度下降算法一样,具有相同的收敛性,即凸函数收敛于全局极值点,非凸损失函数收敛于局部极值点。

  SGDR(Loshchilov andHutter,2017)是近期提出的一个有效的方法,这是一种使用热重启替代学习速率退火的SGD方法。在每次重新启动时,学习速率被初始化为某个值,并且将减少。重要的是,重启是热重启,因为优化不是从头开始,而是从最后一个步骤中模型收敛的参数开始。关键因素是用积极的余弦退火方案使学习率下降,这会迅速降低学习率,如下所示:

  重新启动后的初始的高学习率用于基本上将参数从它们先前收敛的最小值弹射到不同的损失表面(loss surface)。激进的退火使模型能够快速收敛到一个新的更好的解决方案。作者根据经验发现,热重启的SGD需要的时间比学习速率退火少2〜4倍,并且能达到相当或更好的性能。

  学习率退火与热重启也称为周期性学习率,最初由Smith(2017)提出。 fast.ai(最近开始教这个方法)的学生还有两篇文章讨论热启动和循环学习的速率,其地址在()和()。

  Mini-batch梯度下降综合了batch梯度下降与stochastic梯度下降,在每次更新速度与更新次数中间取得一个平衡,其每次更新从训练集中随机选择m(其中mn)个样本进行学习,即:

  相对于随机梯度下降,Mini-batch梯度下降降低了收敛波动性,即降低了参数更新的方差,使得更新更加稳定。

  相对于批量梯度下降,其提高了每次学习的速度。并且其不用担心内存瓶颈从而可以利用矩阵运算进行高效计算。

  一般而言每次更新随机选择[50,256]个样本进行学习,但是也要根据具体问题而选择,实践中可以进行多次试验,选择一个更新速度与更新次数都较适合的样本数。

  mini-batch梯度下降虽然可以保证收敛性。mini-batch梯度下降常用于神经网络中。

  虽然梯度下降算法效果很好,并且广泛使用,但同时其也存在一些挑战与问题需要解决:

  如果学习速率过小,则会导致收敛速度很慢。如果学习速率过大,那么其会阻碍收敛,即在极值点附近会振荡。

  试图在每次更新过程中,改变学习速率,如退火。一般使用某种事先设定的策略或者在每次迭代中衰减一个较小的阈值。无论哪种调整方法,都需要事先进行固定设置,这边便无法自适应每次学习的数据集特点[10]。

  最近的语言建模实例证明,与更复杂的模型相比,仅仅调整LSTM参数(Melis等,2017)[20] 和正则化参数(Merity等,2017)就可以产生更好的结果。  学习速率η是深度学习中一个重要的优化超参数。实际上,SGD已经被证明需要一个学习率退火方案,以收敛到一个好的最小值。人们经常认为,像Adam这样的自适应学习速率方法对于不同的学习速率更具有鲁棒性,因为他们自己更新了学习速率。但是,即使对于这些方法,好的学习速率和最佳的学习速率之间也可能有很大的差别。

  Zhang等(2017)表明,具有调整学习率退火方案和动量参数的SGD不仅可以与Adam竞争,而且收敛速度更快。另一方面,虽然我们可能认为Adam学习速率的适应性可以模仿学习速率退火,但是明确使用退火方案仍然是有益的:如果我们对Adam增加SGD的学习速率退火,它在机器翻译任务中(Denkowski和Neubig,2017)收敛速度更快。

  事实上,学习速率退火方案似乎是新的特征工程,因为我们经常可以找到改进的学习速率退火方案,来改善了我们模型的最终收敛行为。一个有趣的例子如Vaswani等(2017)。

  其中,dmodel是模型参数的数量,且 warmup_steps=4000  史密斯等人最近的另一篇论文(2017)展示了学习率和batch大小之间有一定的联系,两个超参数通常被认为是相互独立的:他们表明,衰减学习率相当于增加batch大小,然而batch可以并行的增加。

  相反,我们可以减少模型更新次数,从而通过提高学习速度和缩放batch来加快训练速度。这对于大规模的深度学习有影响,现在可以重新调整现有的训练方案,而不需要调整超参数。

  如果数据特征是稀疏的或者每个特征有着不同的取值统计特征与空间,那么便不能在每次更新中每个参数使用相同的学习速率,那些很少出现的特征应该使用一个相对较大的学习速率。

  下面将讨论一些在深度学习社区中经常使用用来解决上诉问题的一些梯度优化方法,不过并不包括在高维数据中不可行的算法,如牛顿法。

  如果在峡谷地区(某些方向较另一些方向上陡峭得多,常见于局部极值点)[1],SGD会在这些地方附近振荡,从而导致收敛速度慢。这种情况下,动量(Momentum)便可以解决[2]。动量在参数更新项中加上一次更新量(即动量项),即:

  加上动量项就像从山顶滚下一个球,球往下滚的时候累积了前面的动量(动量不断增加),因此速度变得越来越快,直到到达终点。

  同理,在更新模型参数时,对于那些当前的梯度方向与上一次梯度方向相同的参数,那么进行加强,即这些方向上更快了;对于那些当前的梯度方向与上一次梯度方向不同的参数,那么进行削减,即这些方向上减慢了。因此可以获得更快的收敛速度与减少振荡。

  从山顶往下滚的球会盲目地选择斜坡。更好的方式应该是在遇到倾斜向上之前应该减慢速度。

  Nesterov accelerated gradient(NAG,涅斯捷罗夫梯度加速)不仅增加了动量项,并且在计算参数的梯度时,在损失函数中减去了动量项,即计算∇θJ(θ−γνt−1),这种方式预估了下一次参数所在的位置。即:

  详细介绍可以参见Ilya Sutskever的PhD论文[9]。假设动量因子参数γ=0.9,首先计算当前梯度项,如上图小蓝色向量,然后加上动量项,这样便得到了大的跳跃,如上图大蓝色的向量。这便是只包含动量项的更新。而NAG首先来一个大的跳跃(动量项),然后加上一个小的使用了动量计算的当前梯度(上图红色向量)进行修正得到上图绿色的向量。这样可以阻止过快更新来提高响应性,如在RNNs中[8]。

  通过上面的两种方法,可以做到每次学习过程中能够根据损失函数的斜率做到自适应更新来加速SGD的收敛。下一步便需要对每个参数根据参数的重要性进行各自自适应更新。

  Adagrad[3]也是一种基于梯度的优化算法,它能够对每个参数自适应不同的学习速率,对稀疏特征,得到大的学习更新,对非稀疏特征,得到较小的学习更新,因此该优化算法适合处理稀疏特征数据。Dean等[4]发现Adagrad能够很好的提高SGD的鲁棒性,google便用起来训练大规模神经网络(看片识猫:recognize cats in Youtube videos)。Pennington等[5]在GloVe中便使用Adagrad来训练得到词向量(Word Embeddings), 频繁出现的单词赋予较小的更新,不经常出现的单词则赋予较大的更新。

  在前述中,每个模型参数θi使用相同的学习速率η,而Adagrad在每一个更新步骤中对于每一个模型参数θi使用不同的学习速率ηi,设第t次更新步骤中,目标函数的参数θi梯度为gt,i,即:

  其中,Gt∈Rd×d是一个对角矩阵,其中第i行的对角元素eii为过去到当前第i个参数θi的梯度的平方和,epsilon是一个平滑参数,为了使得分母不为0(通常ϵ=1e−8),另外如果分母不开根号,算法性能会很糟糕。

  进一步,将所有Gt,ii,gt,i 的元素写成向量Gt,gt,这样便可以使用向量点乘操作:

  Adagrad主要优势在于它能够为每个参数自适应不同的学习速率,而一般的人工都是设定为0.01。同时其缺点在于需要计算参数梯度序列平方和,并且学习速率趋势是不断衰减最终达到一个非常小的值。

  其实RMSprop是Adadelta的中间形式,也是为了降低Adagrad中学习速率衰减过快问题,即:

  Adaptive Moment Estimation(Adam) 也是一种不同参数自适应不同学习速率方法,与Adadelta与RMSprop区别在于,它计算历史梯度衰减方式不同,不使用历史平方衰减,其衰减方式类似动量,如下:

  mt与vt分别是梯度的带权平均和带权有偏方差,初始为0向量,Adam的作者发现他们倾向于0向量(接近于0向量),特别是在衰减因子(衰减率)β1,β2接近于1时。为了改进这个问题,对mt与vt进行偏差修正(bias-corrected):

  论文中建议默认值:β1=0.9,β2=0.999,ϵ=10−8。论文中将Adam与其它的几个自适应学习速率进行了比较,效果均要好。

  从上图可以看出, Adagrad、Adadelta与RMSprop在损失曲面上能够立即转移到正确的移动方向上达到快速的收敛。而Momentum 与NAG会导致偏离(off-track)。同时NAG能够在偏离之后快速修正其路线,因为其根据梯度修正来提高响应性。

  从上图可以看出,在鞍点(saddle points)处(即某些维度上梯度为零,某些维度上梯度不为零),SGD、Momentum与NAG一直在鞍点梯度为零的方向上振荡,很难打破鞍点位置的对称性;Adagrad、RMSprop与Adadelta能够很快地向梯度不为零的方向上转移。

  从上面两幅图可以看出,自适应学习速率方法(Adagrad、Adadelta、RMSprop与Adam)在这些场景下具有更好的收敛速度与收敛性。

  如果你的数据特征是稀疏的,那么你最好使用自适应学习速率SGD优化方法(Adagrad、Adadelta、RMSprop与Adam),因为你不需要在迭代过程中对学习速率进行人工调整。

  RMSprop是Adagrad的一种扩展,与Adadelta类似,但是改进版的Adadelta使用RMS去自动更新学习速率,并且不需要设置初始学习速率。而Adam是在RMSprop基础上使用动量与偏差修正。RMSprop、Adadelta与Adam在类似的情形下的表现差不多。Kingma[15]指出收益于偏差修正,Adam略优于RMSprop,因为其在接近收敛时梯度变得更加稀疏。因此,Adam可能是目前最好的SGD优化方法。

  有趣的是,最近很多论文都是使用原始的SGD梯度下降算法,并且使用简单的学习速率退火调整(无动量项)。现有的已经表明:SGD能够收敛于最小值点,但是相对于其他的SGD,它可能花费的时间更长,并且依赖于鲁棒的初始值以及学习速率退火调整策略,并且容易陷入局部极小值点,甚至鞍点。因此,如果你在意收敛速度或者训练一个深度或者复杂的网络,你应该选择一个自适应学习速率的SGD优化方法。

  如果你处理的数据集非常大,并且有机器集群可以利用,那么并行或分布式SGD是一个非常好的选择,因为可以大大地提高速度。SGD算法的本质决定其是串行的(step-by-step)。因此如何进行异步处理便是一个问题。虽然串行能够保证收敛,但是如果训练集大,速度便是一个瓶颈。如果进行异步更新,那么可能会导致不收敛。下面将讨论如何进行并行或分布式SGD,并行一般是指在同一机器上进行多核并行,分布式是指集群处理。

  Niu[23]提出了被称为Hogwild的并行SGD方法。该方法在多个CPU时间进行并行。处理器通过共享内存来访问参数,并且这些参数不进行加锁。它为每一个cpu分配不重叠的一部分参数(分配互斥),每个cpu只更新其负责的参数。该方法只适合处理数据特征是稀疏的。该方法几乎可以达到一个最优的收敛速度,因为cpu之间不会进行相同信息重写。

  Downpour SGD是Dean[4]提出的在DistBelief(Google TensorFlow的前身)使用的SGD的一个异步变种。它在训练子集上训练同时多个模型副本。这些副本将各自的更新发送到参数服务器(PS,parameter server),每个参数服务器只更新互斥的一部分参数,副本之间不会进行通信。因此可能会导致参数发散而不利于收敛。

  TensorFlow[13]是Google开源的一个大规模机器学习库,它的前身是DistBelief。它已经在大量移动设备上或者大规模分布式集群中使用了,已经经过了实践检验。其分布式实现是基于图计算,它将图分割成多个子图,每个计算实体作为图中的一个计算节点,他们通过Rend/Receive来进行通信。具体参见这里。

  接下来介绍更多的SGD优化策略来进一步提高SGD的性能。另外还有众多其它的优化策略,可以参见[22]。

  另一方面,在很多情况下,我们是逐步解决问题的,而将训练集按照某个有意义的顺序排列会提高模型的性能和SGD的收敛性,如何将训练集建立一个有意义的排列被称为Curriculum Learning[16]。

  Zaremba与Sutskever[17]在使用Curriculum Learning来训练LSTMs以解决一些简单的问题中,表明一个相结合的策略或者混合策略比对训练集按照按照训练难度进行递增排序要好。

  为了方便训练,我们通常会对参数按照0均值1方差进行初始化,随着不断训练,参数得到不同程度的更新,这样这些参数会失去0均值1方差的分布属性,这样会降低训练速度和放大参数变化随着网络结构的加深。

  Batch normalization[18]在每次mini-batch反向传播之后重新对参数进行0均值1方差标准化。这样可以使用更大的学习速率,以及花费更少的精力在参数初始化点上。Batch normalization充当着正则化、减少甚至消除掉Dropout的必要性。

  在验证集上如果连续的多次迭代过程中损失函数不再显著地降低,那么应该提前结束训练,详细参见NIPS 2015 Tutorial slides,或者参见防止过拟合的一些方法。

  对梯度增加随机误差会增加模型的鲁棒性,即使初始参数值选择地不好,并适合对特别深层次的负责的网络进行训练。其原因在于增加随机噪声会有更多的可能性跳过局部极值点并去寻找一个更好的局部极值点,这种可能性在深层次的网络中更常见。

  在上文中,对梯度下降算法的三种框架进行了介绍,并且mini-batch梯度下降是使用最广泛的。随后,我们重点介绍了SGD的一些优化方法:Momentum、NAG、Adagrad、Adadelta、RMSprop与Adam,以及一些异步SGD方法。

  希望这篇文章能给你提供一些关于如何使用不同的梯度优化算法方面的指导。如果还有更多的优化建议或方法还望大家提出来?或者你使用什么技巧和方法来更好地训练SGD可以一起交流?Thanks。

  之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。最优化问题在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定...博文来自:cpongo1的测试

  VS作为宇宙第一编辑器,特别是2017发布后应该吸引了无数的程序员使用,但是vs2017启动速度较慢,所以特地研究了下vs2017加速启动的方法。以下方法均为微软官方提供的建议,大家可以尝试一下。卸载...博文来自:Leonc的博客

  深度学习是机器学习和人工智能领域的最新趋势之一,为计算机视觉和机器学习带来了深刻的变革。新的深度学习正在不断诞生,甚至已经超越了最先进的机器学习技术。近年来,全世界在深度学习领域取得了许多重大突破。“...博文来自:慧安金科的博客

  一、优化问题的挑战绝大多数深度学习中的目标函数都很复杂。因此,很多优化问题并不存在显示解(解析解),而需要使用基于数值方法的优化算法找到近似解。这类优化算法一般通过不断迭代更新解的数值来找到近似解。优...博文来自:Man

  新高考模式下遗传算法在排课问题中的应用背景: 随着新高考改革在各个省份的推行,提出了“3+3模式”,即高中阶段的学生,不再区分文理科目,学生可以自主的从政治、历史、地理、物理、化学、生物和技术这7门课...博文来自:loveC__的博客

  深度学习已经运用到多个领域,为人们生活带来极大便利。然而,为特定任务构造一个高质量的深度学习系统不仅需要耗费大量时间和资源,而且很大程度上需要专业的领域知识。因此,为了让深度学习技术以更加简单的方式应...博文来自:AI 研习社的博客

  智能优化算法:受人类智能、生物群体社会性或自然现象规律的启发。主要包括:(1)遗传算法:模仿自然界生物进化机制(2)差分进化算法:通过群体个体间的合作与竞争来优化搜索(3)免疫算法:模拟生物免疫系统学...博文来自:我是Frank

  作者:Walker在机器学习的世界中,通常我们会发现有很多问题并没有最优的解,或是要计算出最优的解要花费很大的计算量,面对这类问题一般的做法是利用迭代的思想尽可能的逼近问题的最优解。我们把解决此类优化...博文来自:TensorFlowNews

  梯度下降优化算法概述梯度下降是优化过程中最流行的方法之一并且并广泛运用在优化神经网络的过程中....博文来自:一次人间也匆忙的专栏

  深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结1. 引言在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数,从而使模型参数不断...博文来自:生命在于折腾!

  导言对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化学习,最后一般都归结为求解最优化问题。因此...博文来自:喜欢打酱油的老鸟

  翻译 AI科技大本营(微信ID:rgznai100)梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎当前每一个先进的(state-of-the-art)...博文来自:AI科技大本营

  原作 Sebastian Ruder王小新 编译自 ruder.io 量子位 出品 公众号 QbitAI深度学习的基本目标,就是寻找一个泛化能力强的最小值,模型的快速性和可靠性也是一个加分点。随机...博文来自:量子位

  课程描述:这是一门讲解深度学习方法入门课程,深度学习主要应用于机器翻译,图像识别,游戏,图像生成等等。课程同时设置了两个非常有趣的实战项目:(1)基于RNN生成音乐(2)基于X光的基本检测,GitHu...博文来自:lqfarmer的博客

  译者 林椿眄编辑 明 明出品 AI 科技大本营(公众号ID:rgznai100)【AI 科技大本营导读】本文,我们将讨论近期两篇有意思的论文,论文的大致思路是......博文来自:AI科技大本营

  目标:学到新数据特征的同时,保持旧网络固有的性能,避免“灾难性遗忘”,增量学习,迁移学习的一种...博文来自:luckyqiong

  深度学习综述1.简介1.1机器学习机器学习并不是一个离大众很遥远的技术,相反,它已经渗透到了当今社会的方方面面,比如说音乐软件的音乐推荐系统、购物网站的商品推荐、社交媒体的内容筛选与推送、智能手机的人...博文来自:的博客

  注:单纯个人愚见,只是大概讲个作用,欢迎指正!详细的网上许多大牛都有解释。优化算法种类:一:最小二乘法函数真值与估计值之间残差最小。是一种数学优化技术。利用最小二乘法可以简便地求得未知的数据,并使得这...博文来自:的博客

  我们总结了ICRA 2019 SLAM相关论文,分为四个部分:深度学习+传统SLAM 传统的SLAM / 3D视觉 基于深度学习的SLAM SLAM评估和数据集本文介绍:基于深度学习的SLAM1.E2...博文来自:图像算法Imalg的博客

  年,达特茅斯人工智能夏季研究计划首次提出“人工智能”一词,标志着这一学科的正式诞生,并鼓舞了一代又...博文来自:喜欢打酱油的老鸟

  LeNet(1998):现在一般指LeNet5,(输入层、卷积、池化、卷积、池化、全连接、输出共5层)主要特征:卷积层和下采样层相结合作为网络的基本结构。所有神经元共享权值,但偏置可能不同。激活函数:...博文来自:weixin_44474718的博客

  本文内容整理自MIT教育视频,讲解的是近两年来深度学习一些方面最现今的进展,类似于综述。本文将列举出内容的纲要,视频连接资源和PPT资源下载链接。视频的纲要Deep Learning: State o...博文来自:蜗牛爱上星星

  之前整了一篇花朵授粉算法,本来打算最终应用的时候用那个,结果发现花朵授粉算法还是参数比较多的。所以选择了这个正弦余弦优化算法(Sine and Cosine Algorithm)。这个算法具体实现的时...博文来自:weixin_42115852的博客

  好长时间没有写博客了,草稿箱里未完成的文章成堆了,不论之前是什么原因,是时间清理一下了,拖延可不是个好习惯,好了,废话不多说了。原意是要做一个综述性的文章,鉴于笔者能力有限,不会包含所有的OCR/ST...博文来自:陶将的博客

  LSTM(LongShort-TermMemory)算法作为深度学习方法的一种,在介绍LSTM算法之前,有必要介绍一下深度学习(DeepLearning)的一些基本背景。目前在机器学习领域,最大的热点...博文来自:xuanyuansen的专栏

  本文基于目前深度学习中使用较多的优化学习算法进行总结。1 深度学习中的优化算法优化算法之前讨论两个问题: (1) 局部最小值问题 在深度学习中,最优化问题其实并不容易困在局部最小值点。...博文来自:王琨的博客

  很多人都有误解,以为深度学习比机器学习先进。其实深度学习是机器学习的一个分支。可以理解为具有多层结构的模型。具体的话,深度学习是机器学习中的具有深层结构的神经网络算法,即机器学习神经网络算法深度神...博文来自:abc8的博客

  通过这种名叫SAC(柔性致动/评价)的强化学习算法,机器人能很快地完成...博文来自:喜欢打酱油的老鸟

  拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了。不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了,这出来的口味可是千差万别。火小了夹生,火大了易...博文来自:u013385018的专栏

  粒子群算法属于智慧算法的一类,与该类算法类似的还有蚁群算法,遗传算法等。大家可以将这几种算法进行比较。粒子群优化算法(Particle Swarm Optimization,PSO)属于进化算法的一种...博文来自:Auraros的博客

  智能优化算法目录智能优化算法目录遗传算法(GeneticAlgorithm)理论特点领域算法流程差分进化算法(DifferentialEvolutionAlgorithm)理论特点领域算法流程免疫算法...博文来自:的博客

  首先先让我们来定义一下什么是“深度学习”。对很多人来说,给“深度学习”下一个定义确实很有挑战,因为在过去的十年中,它的形式已经慢慢地发生了很大的变化。先来在视觉上感受一下“深度学习”的地位。下图是AI...博文来自:的博客

  文末没有公众号,只求 点赞 + 关注 搞学习 知乎:大学资源网:简答题:博文

  我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案...

  在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次...

  由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,...

  最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态...

  大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频...

  目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、...

  《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱

  此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!...

  11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 区块链技术被认为...

  引子 Hacker(黑客),往往被人们理解为只会用非法手段来破坏网络安全的计算机高手。但是,黑客其实不是这样的,真正的“网络破坏者”是和黑客名称和读音相似的骇客。 骇客,是用黑客手段进行非法操作并为己...

  不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、QT,目前仍处于...

  作者  胡书敏 责编 刘静 出品 CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官...

  知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为...

  引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工...

  作者  许向武 责编 屠敏 出品 CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此...

  欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文...

  今天咱们第一课,来讲讲大家一直很关注的数据中台。其实,数据中台也是企业数据管理的一部分,甚至可以说是很重要的一部分。 一、什么是中台? 这其实是一个老生常谈的概念了,中台,顾名思义,就是在起中间作...

  我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买ma...

  二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到...

  今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全...

  目录 一、前言 二、redis基础知识 2.1 从“处理器-缓存-内存”到“后台-redis-数据库” 2.2 不使用缓存与使用缓存(读操作+写操作) 2.3 redis典型问题:缓存穿透...

  本文十天后设置为粉丝可见,喜欢的提前关注 不要白嫖请点赞 不要白嫖请点赞 不要白嫖请点赞 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,新宝7登录可以评论邮箱发给你。 文...

  第8章 IO库 部分IO库设施: istream:输入流类型,提供输入操作。 ostream:输出流类型,提供输出操作。 cin:istream对象,从标准输入读取数据。 cout:ostream对...

  每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退...

  软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并...

  依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,恩佐2登录很多人都叫我大...

  作者 胡巍巍 出品 CSDN(ID:CSDNnews) 世界500强中,30%的掌舵人,都是印度人。 是的,你没看错。这是近日《哈佛商业评论》的研究结果。 其中又以微软CEO萨提亚·纳...

  栈 在邂逅了完线性结构的数组和队列后, 我们便偶遇了栈这个东东, 他到底是个啥? 就让我们慢慢揭开它的神秘面纱吧~~~ 需求介绍 栈的介绍 栈的英文为(stack) 栈是一个先入后出(FILO...

  前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、熟悉Sping了解SpringMVC、S...

  CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是...

  提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议。 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创。 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup...

  很遗憾,这个春节注定是刻骨铭心的,恩佐2登录新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些...

  今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,...

  受疫情影响,道路几乎都被封闭,短时间回京是没有希望了。整天待在家里无所事事,倒不如早些开工。今天初三,早上起来便开始着手工作。写这篇文章只是聊聊对最近发生的一些事情的看法,锻炼一下思辨能力。 学习思辨...

标签: