当前位置: 首页 > 科技观察

从反向传播到迁移学习,盘点人工智能从业者必备的10种深度学习方法

时间:2023-03-12 23:53:47 科技观察

近日,软件工程师JamesLe在Medium上发表了一篇题为《The 10 Deep Learning Methods AI Practitioners Need to Apply》的文章,从反向传播到From***pooling***tomigration学习方面,他分享了主要适用于卷积神经网络、循环神经网络和递归神经网络的Top10深度学习方法。机器之心整理了这篇文章,原文链接在文末。在过去十年中,人们对机器学习的兴趣有增无减。你几乎每天都在计算机科学项目、行业会议和华尔街日报上看到机器学习。对于所有关于机器学习的讨论,许多人混淆了机器学习可以做什么和他们想要它做什么。从根本上说,机器学习是使用算法从原始数据中提取信息并通过模型来实现。我们使用此模型来推断我们尚未建模的其他数据。神经网络是一种已经存在50多年的机器学习模型。它的基本单元是一个非线性变换节点,其灵感来自于哺乳动物大脑中的生物神经元。神经元之间的连接也以生物大脑为模型,并通过训练随着时间的推移而发展。80年代中期和90年代初期,神经网络的许多重要架构都取得了重大进展。然而,获得良好结果所需的时间和数据量阻碍了它的应用,因此人们的兴趣一度减弱。2000年代初期,计算能力呈指数级增长,业界见证了以前不可能实现的计算技术“寒武纪大爆发”。在计算爆炸式增长的这十年中,深度学习成为该领域的有力竞争者,赢得了许多重要的机器学习竞赛。深度学习的热度在2017年达到顶峰,在机器学习的各个领域都可以看到深度学习的身影。为了深入了解这种热潮,我学习了Udacity的深度学习课程,该课程很好地介绍了深度学习的起源以及通过TensorFlow从复杂和/或大型数据集中学习的智能系统的设计。对于课程项目,我使用并开发了用于图像识别的卷积神经网络、具有嵌入式表示的NLP神经网络以及具有RNN和LSTM的基于字符的文本生成神经网络。所有JupiterNotebook代码都可以在以下位置找到:https://github.com/khanhnamle1994/deep-learning。下面是一个赋值的结果,一个按相似度聚类的词向量的t-SNE投影。最近,我开始阅读相关的学术论文。根据我的研究,这里有一些对该领域的发展产生重大影响的作品:《Gradient-Based Learning Applied to Document Recognition》(1998)来自纽约大学,介绍机器学习中的卷积神经网络:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf?(2009)在多伦多大学,提出了一种新的具有多层隐藏变量的玻尔兹曼机学习算法:http://proceedings.mlr.press/v5/salakhutdinov09a/salakhutdinov09a.pdf斯坦福大学和谷歌的《Building High-Level Features Using Large-Scale Unsupervised Learning》(2012),解决了仅从未标记数据构建高阶、类特定特征检测器的问题:http://icml.cc/2012/papers/73.pdf伯克利的《DeCAF—A Deep Convolutional Activation Feature for Generic Visual Recognition》(2013),其中介绍了DeCAF,一种深度卷积激活函数和所有相关网络参数的开源实现,可以帮助视觉研究人员在一系列视觉概念中进行深度表示实验学习范式:http://proceedings.mlr.press/v32/donahue14.pdfDeepMind的《Playing Atari with Deep Reinforcement Learning》(2016),它展示了通过强化学习直接从高维感知输入学习控制策略的成功***深度学习models:https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf经过大量的研究和学习,我想分享10个强大的深度学习方法,工程师可以用它们来解决自己的机器学习问题。在我们开始之前,让我们定义什么是深度学习。深度学习对许多人来说是一个挑战,因为它在过去十年中慢慢改变了形态。为了直观地定义深度学习,下图展示了人工智能、机器学习和深度学习之间的关系。人工智能领域最为广泛,已经存在了60多年。深度学习是机器学习的一个子领域,机器学习是人工智能的一个子领域。深度学习不同于传统前馈多层网络的原因通常有以下几点:更多的神经元层数和更复杂的训练计算能力之间的连接“寒武纪大爆发”自动特征提取当我说“更多更多的神经元”时,我的意思是神经元的数量逐年增长,以表达更复杂的模型。层也从多层网络中的每一层完全连接到卷积神经网络中各层之间局部连接的神经元块,以及与循环神经网络中相同的神经元(除了与前一层的连接)周期性连接。深度学习则可以定义为以下四种基本网络架构之一中具有大量参数和层的神经网络:无监督预训练网络卷积神经网络递归神经网络递归神经网络本文将重点关注后三种架构。卷积神经网络基本上是一个标准的神经网络,它通过共享权重来跨空间缩放。卷积神经网络旨在通过内部卷积来识别图像,在识别图像上看到物体的边缘。递归神经网络通过将边缘馈送到下一个时间步而不是同一时间步中的下一层来跨时间扩展。递归神经网络旨在识别序列,例如语音信号或文本序列,其内部循环在网络中存储短期记忆。递归神经网络更像是一个层次网络,其中输入序列没有实时维度,但输入必须以树状方式分层处理。以下10种方法可用于上述所有架构。1.反向传播反向传播只是一种计算函数(以神经网络中复合函数的形式)的偏导数(或梯度)的方法。当使用基于梯度的方法(梯度下降只是其中一种)解决优化问题时,需要在每次迭代时计算函数的梯度。在神经网络中,目标函数通常采用复合函数的形式。这时候怎么计算梯度呢?有两种方式:(i)解析微分(Analyticdifferentiation),函数的形式已知,直接用链式法则求导即可。(ii)使用有限差分的近似微分,这在计算上是昂贵的,因为函数评估的数量等于O(N),其中N是参数的数量。与解析微分相比,计算量要大得多。调试期间经常使用有限差分来验证反向传播实现。2.随机梯度下降理解梯度下降的一种直观方法是想象河流从山上流下的路径。梯度下降的目标正是河流要达到的目标——即到达***点(山脚下)。假设山的地形是这样的,河流在到达***点之前不需要任何停留(理想情况下,在机器学习中,它意味着从初始点到达全局最小/***解)。然而,也有许多凹坑的地形导致河流在途中停滞不前。在机器学习术语中,这些缺口称为局部最小值,是要避免的情况。有很多方法可以解决这个问题(本文不涉及)。因此,梯度下降往往会停滞在局部最小值,这取决于地形的性质(或机器学习中的函数)。然而,当山地地形是一种特殊类型,即碗形地形,在机器学习中称为凸函数时,算法可以保证找到最优解。凸函数是机器学习优化中最理想的函数。而且,从不同的山顶(起始点)出发,到达***点之前的路径也不同。同样,河流流速的不同(梯度下降算法中的学习率或步长)也会影响路径的形状。这些变量会影响梯度下降是陷入局部解决方案还是避免它们。3.Learningratedecay在随机梯度下降优化过程中调整学习率可??以提高性能和减少训练时间,称为学习率退火(annealing)或自适应学习率。训练期间最简单且可能最常用的学习率调整技术是随着时间的推移降低学习率。这有利于在训练开始时使用较大的学习率以获得较大的变化,并在后期使用较小的学习率来微调权重。两种简单常用的学习率衰减方法如下:随着epoch的增加降低学习率;在特定时期间歇性地降低学习率。4.Dropout具有大量参数的深度神经网络是一个非常强大的机器学习系统。然而,这样的网络存在严重的过度拟合问题。而且大型网络的运行速度很慢,使得在测试阶段结合多个不同大型神经网络的预测来解决过拟合的过程也很慢。Dropout正是应用于此问题的技术。关键思想是在训练过程中随机删除神经网络的单元和对应的连接,从而防止过拟合。在训练期间,dropout将从指数数量的不同稀疏网络中采样。在测试期间,通过使用单个未缠绕网络(具有较小的权重)对这些稀疏网络的预测进行平均来很容易地近似结果。与其他正则化方法相比,这可以显着减少过度拟合并带来更大的性能提升。Dropout已被证明可以提高神经网络在计算机视觉、语音识别、文本分类和计算生物学等监督学习任务中的性能,并在多个基准数据集上取得最先进的结果。5.***Pooling***Pooling是一种基于样本的离散化方法,旨在对输入表示(图像、隐藏层的输出矩阵等)进行降采样,降维,让假设包含在Droppedfeatures中次区域。通过提供一种抽象的表示形式,这种方法在一定程度上有助于解决过度拟合问题。同样,它还通过减少学习参数的数量和提供底层内部表示的变换不变性来减少计算量。***池化通过在初始表示的子区域(通常是不重叠的)取最大值来提取特征并防止过拟合。6.批量归一化神经网络(包括深度网络)通常需要仔细调整权重初始化和学习参数。批量归一化可以使这个过程更容易。权值问题:无论是随机选择还是经验选择等权值初始化,这些权值与学习到的权值相差很大。考虑到初始时期的小批量,所需的特征激活中可能存在许多异常值。深度神经网络本身是病态的,即初始层的一个小变化会引起下一层的巨大变化。在反向传播过程中,这些现象会导致梯度发散,这意味着梯度需要在学习权重以生成所需输出之前补偿异常值,因此需要额外的epoch才能收敛。批量归一化将梯度系统化,避免异常值引起的偏差,从而直接导致几个小批量的共同目标(通过归一化)。学习率问题:学习率通常保持较小,因此梯度对权重的校正很小,因为离群值激活的梯度不应该影响学习到的激活。通过批量归一化,这些离群值激活减少,允许更大的学习率来加速学习过程。7.长短期记忆长短期记忆(LSTM)网络的神经元不同于其他RNN中常用的神经元,具有以下三个特点:神经元;对上一个时间步计算内容的存储有决定权;它决定何时将输出传递到下一个时间步。LSTM的强大之处在于它可以仅根据当前输入确定上述所有值。看下图:当前时间步的输入信号x(t)决定了以上3个值。输入门决定第一个值,遗忘门决定第二个值,输出门决定第三个值。这是受到我们大脑处理输入中突然情境变化的方式的启发。8.Skip-gram词嵌入模型的目标是为每个词汇项学习高维密集表示,其中嵌入向量的相似性表示相关词的语义或句法相似性。skip-gram是学习词嵌入算法的模型。skip-gram模型(以及许多其他词嵌入模型)背后的主要思想是,如果两个词项具有相似的上下文,则它们是相似的。换句话说,假设你有一个像“猫是哺乳动物”这样的句子,如果你用“狗”替换“猫”,这个句子仍然有意义。所以在这个例子中,“狗”和“猫”有相似的上下文(即“是哺乳动物”)。基于上述假设,我们可以考虑一个上下文窗口,即一个包含k个连续项目的窗口。然后我们应该跳过一些单词来学习一个神经网络来获取除跳过的项目之外的所有项目,并使用该神经网络来尝试预测跳过的项目。如果两个词在大型语料库中共享相似的上下文,那么这些嵌入向量将具有非常接近的向量。9.Continuousbag-of-wordsmodel在自然语言处理中,我们希望学习将文档中的每个词表示为一个数值向量,让出现在相似上下文中的词具有非常相似或相似的向量。在连续词袋模型(CBOW)中,我们的目标是使用特定词的上下文来预测特定词的概率。我们可以通过在大型语料库中抽取大量句子来做到这一点。每当模型看到一个词时,我们都会对出现在该特定词周围的上下文词进行采样。然后将这些提取的上下文词输入神经网络,以预测给定上下文的中心词的概率。当我们有数以万计的上下文词和中心词时,我们就有了训练神经网络的数据集样本。在训练神经网络时,最后编码的隐藏层输出特定于单词的嵌入。这种表达方式意味着相似的上下文有相似的词向量,正好可以用这样的向量来表示一个词的意思。10.迁移学习现在让我们考虑一下图像究竟是如何流经卷积神经网络的,这有助于我们将我们从一般CNN学到的知识迁移到其他图像识别任务中。假设我们有一张图像,我们将它提供给第一个卷积层,然后我们得到像素组合的输出,这些像素可能是一些已识别的边缘。如果我们再次使用卷积,我们可以得到这些边和线的组合,得到一个简单的图形轮廓。通过这种方式,可以使用重复卷积来分层查找特定模式或图像。因此,最后一层会结合前面的抽象特征,找到一个非常具体的模式。如果我们的卷积网络是在ImageNet上训练的,那么最后一层会结合之前的抽象特征来识别具体的1000个类别。如果我们用我们想要识别的类别替换最后一层,它可以非常有效地训练和识别。深度卷积网络的每一层都会构建越来越高级的特征表示。最后几层通常特定于我们输入网络的数据,因此早期层获得的特征更通用。迁移学习是通过修改我们训练好的CNN模型获得的。我们一般把最后一层剪掉,然后用新的数据重新训练新建的最后一个分类层。这个过程也可以解释为使用高级特征重新组合成我们需要识别的新对象。这样训练时间和数据都会大大减少,我们只需要重新训练最后一层就可以完成整个模型的训练。深度学习是非常有技术含量的,很多技术并没有太多具体的解释或者理论推导,但是大部分的实验结果都证明了它们是有效的。因此,也许我们以后需要做的是从头开始了解这些技术。原文:https://towardsdatascience.com/the-10-deep-learning-methods-ai-practitioners-need-to-apply-885259f402c1