×

深度学习

机器学习、深度学习和强化学习的关系和区别是什么?怎样进行深度学习,提高学习效率

jnlyseo998998 jnlyseo998998 发表于2022-09-05 04:31:00 浏览65 评论0

抢沙发发表评论

机器学习、深度学习和强化学习的关系和区别是什么

给亲分享下人工智能、机器学习和深度学习、强化学习的区别与联系。

2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源。这两年在不管在国内还是在国外,人工智能、机器学习仿佛一夜之前传遍大街小巷。机器学习作为人工智能的一种类型,可以让软件根据大量的数据来对未来的情况进行阐述或预判。如今,领先的科技巨头无不在机器学习下予以极大投入。Facebook、苹果、微软,甚至国内的百度,Google 自然也在其中。

去年早些时候 Google DeepMind 的 AlphaGo 项目在举世瞩目的围棋比赛中一举击败了韩国选手李世石,媒体就是使用了人工智能、机器学习和深度学习这几个术语,来解释 DeepMind 获胜的原因,并将它们混为一谈。但是三者其实不是一回事。

区别与联系

本文借助Michael Copeland的讲解,让我们撩开人工智能、机器学习和深度学习的概念,深入理解它们的关系和区别。为了搞清三者关系,我们来看一张图:

如图所示:人工智能最大,此概念也最先问世;然后是机器学习,出现的稍晚;最后才是深度学习。

从低潮到繁荣

自从 1956 年计算机科学家们在达特茅斯会议(Dartmouth Conferences)上确认人工智能这个术语以来,人们就不乏关于人工智能奇思妙想,研究人员也在不遗余力地研究。在此后的几十年间,人工智能先是被捧为人类文明光明未来的钥匙,后又被当作过于自大的异想天开而抛弃。

但是在过去几年中,人工智能出现了爆炸式的发展,尤其是 2015 年之后。大部分原因,要归功于图形处理器(GPU)的广泛应用,使得并行处理更快、更便宜、更强大。另外,人工智能的发展还得益于几乎无限的存储空间和海量数据的出现(大数据运动):图像、文本、交易数据、地图数据,应有尽有。

下面我们从发展的历程中来一一展开对人工智能、机器学习和深度学习的深度学习。

人工智能

人工智能先驱们在达特茅斯开会时,心中的梦想是希望通过当时新兴的计算机,打造拥有相当于人类智能的复杂机器。这就是我们所说的“通用人工智能”(General AI)概念,拥有人类五感(甚至更多)、推理能力以及人类思维方式的神奇机器。在电影中我们已经看过无数这样的机器人,对人类友好的 C-3PO,以及人类的敌人终结者。通用人工智能机器至今只存在 于电影和科幻小说里,理由很简单:我们还实现不了,至少目前为止。

我们力所能及的,算是“弱人工智能”(Narrow AI):执行特定任务的水平与人类相当,甚至超越人类的技术。现实中有很多弱人工智能的例子。这些技术有人类智能的一面。但是它们是如何做到的?智能来自哪里?这就涉及到下一个同心圆:机器学习。

机器学习

机器学习是实现人工智能的一种方法。机器学习的概念来自早期的人工智能研究者,已经研究出的算法包括决策树学习、归纳逻辑编程、增强学习和贝叶斯网络等。简单来说,机器学习就是使用算法分析数据,从中学习并做出推断或预测。与传统的使用特定指令集手写软件不同,我们使用大量数据和算法来“训练”机器,由此带来机器学习如何完成任务。

许多年来,计算机视觉一直是机器学习最佳的领用领域之一,尽管还需要大量的手动编码才能完成任务。研究者会手动编写一些分类器(classifier),如边缘检测筛选器,帮助程序辨别物体的边界;图形检测分类器,判断物体是否有八个面;以及识别“S-T-O-P”的分类器。在这些手动编写的分类器的基础上,他们再开发用于理解图像的算法,并学习如何判断是否有停止标志。

但是由于计算机视觉和图像检测技术的滞后,经常容易出错。

深度学习

深度学习是实现机器学习的一种技术。早期机器学习研究者中还开发了一种叫人工神经网络的算法,但是发明之后数十年都默默无闻。神经网络是受人类大脑的启发而来的:神经元之间的相互连接关系。但是,人类大脑中的神经元可以与特定范围内的任意神经元连接,而人工神经网络中数据传播要经历不同的层,传播方向也不同。

举个例子,你可以将一张图片切分为小块,然后输入到神经网络的第一层中。在第一层中做初步计算,然后神经元将数据传至第二层。由第二层神经元执行任务,依次类推,直到最后一层,然后输出最终的结果。

每个神经元都会给其输入指定一个权重:相对于执行的任务该神经元的正确和错误程度。最终的输出由这些权重共同决定。因此,我们再来看看上面提到的停止标志示例。一张停止标志图像的属性,被一一细分,然后被神经元“检查”:形状、颜色、字符、标志大小和是否运动。神经网络的任务是判断这是否是一个停止标志。它将给出一个“概率向量”(probability vector),这其实是基于权重做出的猜测结果。在本文的示例中,系统可能会有 86% 的把握认定图像是一个停止标志,7% 的把握认为是一个限速标志,等等。网络架构然后会告知神经网络其判断是否正确。不过,问题在于即使是最基础的神经网络也要耗费巨大的计算资源,因此当时不算是一个可行的方法。不过,以多伦多大学 Geoffrey Hinton 教授为首的一小批狂热研究者们坚持采用这种方法,最终让超级计算机能够并行执行该算法,并证明该算法的作用。如果我们回到停止标志那个例子,很有可能神经网络受训练的影响,会经常给出错误的答案。这说明还需要不断的训练。它需要成千上万张图片,甚至数百万张图片来训练,直到神经元输入的权重调整到非常精确,几乎每次都能够给出正确答案。不过值得庆幸的是Facebook 利用神经网络记住了你母亲的面孔;吴恩达 2012 年在谷歌实现了可以识别猫的神经网络。

如今,在某些情况下,通过深度学习训练过的机器在图像识别上表现优于人类,这包括找猫、识别血液中的癌症迹象等。谷歌的 AlphaGo 学会了围棋,并为比赛进行了大量的训练:不断的和自己比赛。

强化学习


强化学习(Reinforcement Learning),又称再励学习或者评价学习.也是机器学习的技术之一.所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,由于外部给出的信息很少,强化学习系统必须依靠自身的经历进行自我学习.通过这种学习获取知识,改进行动方案以适应环境.强化学习最关键的三个因素是状态,行为和环境奖励.关于强化学习和深度学习的实例,最典型的莫过于谷歌的AlphaGo和AlphaZero两位了,前者通过深度学习中的深度卷积神经网络,在训练了大约三千万组人类的下棋数据,无数度电的情况下才搞出来的模型,而后者使用强化学习的方式,通过自己和自己下棋的方式搞出来的模型.而最终的实验结果也很让人震撼.AlphaGo干败了人类围棋顶尖高手,而AlphaZero干败了AlphaGo.

强化学习(Reinforcement Learning),就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大。 强化学习不同于连接主义学习中的监督学习,主要表现在教师信号上,强化学习中由环境提供的强化信号是对产生动作的好坏作一种评价(通常为标量信号),而不是告诉强化学习系统RLS(reinforcement learning system)如何去产生正确的动作。由于外部环境提供的信息很少,RLS必须靠自身的经历进行学习。 通过这种方式,RLS在行动-评价的环境中获得知识,改进行动方案以适应环境。

总结

人工智能的根本在于智能,而机器学习则是部署支持人工智能的计算方法。简单的将,人工智能是科学,机器学习是让机器变得更加智能的算法,机器学习在某种程度上成就了人工智能。

_____________________________________________________________

本文由挚金资本原创编译,本文作者 Michael Copeland 曾是 WIRED ,现在是硅谷知名投资机构 Andreessen Horowitz 的合伙人。

怎样进行深度学习,提高学习效率

答案是进入心流状态。

心流状态就是传说中物我两忘的境界。如果你没有在学习中达到过,你一定在打游戏中达到过。

心流状态是一个人在完全专注得做某事中时达到的心理状态。在心流中,做事的效率奇高,也有更好创造力,人还会获得很高的满足感和充实感。其实,深度学习只是在心流中获得幸福感的副产品。

进入心流的过程

人一般处在冷认知主导的状态,在做事的时候,自然得分出一部分精力维持对环境的警觉。在进入心流的过程中,由于精力集中于所做的事情,某些非重要的耗精力区域会被依次关闭,如对外在环境的感知,对自我的感知,以及对时间流逝的感知,之后人便进入热认知主导状态, 也就是心流状态。在此状态下,人的思维集中于深入思考,不受任何其它干扰。所以在学习中,进入心流的过程就是让自己的认知集中于学习,从而让其它认知被忽略的过程

进入心流的方法

《盗火》一书中提到了达到心流的三种方法,冥想,协调身体姿态与通过科学手段。

冥想是对注意力的训练,这也是为什么在冥想中,人们往往能找到一个复杂问题的解法的原因。冥想往往能让人醍醐灌顶。宗教仪式中让人进入心流状态,冥想功不可没。

身体姿态会对大脑认知产生影响。例如,科学家发现双手抱头和双手叉腰能让人变得更自信,手护住心口窝让人更有安全感等。所以,找到合适的姿势,甚至呼吸频率,有助于人达到心流。

通过科学手段达到心流并非妄想。美国给海豹突击队吃的药物就有这类效果。但是,在产生美国队长的科技诞生之前,我们能依靠的,只有其他方法。

此外,研究心流的心理学家发现,恰当的设计学习任务难度也有助于学习者达到心流状态。何为恰当,如果你的能力是100,把难度设置为110到120就是恰当的难度。这种难度不会让你觉得太难而无法达成,也不会让你觉得太容易而觉得乏味。其实,这里说的是能力与挑战难度的匹配。各种游戏中的关卡设置,在难度上就很完美。


综上,我们理解了心流是一种集中精力做事的极致状态,所以达到心流首先要排除干扰,其次要加大对学习的投入,以关闭其他感知。

要进入心流状态,一个好的外在环境是十分重要的。不要以为自己在任何环境下都能达到,有些人的抗干扰能力就是不行,虽然真的有在闹市中专注读书的实例。在预备进入心流时,最好有一间安静的屋子,如果要留下手机和平板,最好上面的游戏和新闻类娱乐类APP是卸载的,目的是排除一切干扰,避免让它们把你从进入心流的过程中扯回来。

所以,进入心流的第一步是营造安静舒服的环境,不要太为难自己。


如何才能深度学习呢

在今年的 ICML 上,深度学习理论成为最大的主题之一。会议第一天,Sanjeev Arora 就展开了关于深度学习理论理解的教程,并从四个方面分析了关于该领域的研究:非凸优化、超参数和泛化、深度的意义以及生成模型。

2017 年 12 月 NIPS 的 Test-of-Time Award 颁奖典礼上,Ali Rahimi 这样呼吁人们加深对深度学习的理解:

我希望生活在这样的一个世界,它的系统是建立在严谨可靠而且可证实的知识之上,而非炼金术。 简单的实验和定理是帮助理解复杂大现象的基石。

Ali 的目标不是解散各个领域,而是「展开对话」。这个目标已经实现了,但对于目前的深度学习应被视为炼金术还是工程或科学,人们仍存在分歧。

7 个月后,在斯德哥尔摩举行的国际机器学习会议 (ICML) 上,机器学习社区又聚焦了这个问题。此次大会与会者有 5000 多名,并累计发表论文 629 篇,这是基础机器学习研究的「年度大戏」。而深度学习理论已成为此次会议的最大主题之一。

会议第一天,最大的房间里就挤满了机器学习相关人员,他们准备聆听 Sanjeev Arora 关于深度学习理论理解的教程。这位普林斯顿大学计算机科学教授在演讲中总结了目前的深度学习理论研究领域,并将其分成四类:

  • 非凸优化:如何理解与深度神经网络相关的高度非凸损失函数?为什么随机梯度下降法会收敛?

  • 超参数和泛化:在经典统计理论中,为什么泛化依赖于参数的数量而非深度学习?存在其它较好的泛化方法吗?

  • 深度的意义:深度如何帮助神经网络收敛?深度和泛化之间的联系是什么?

  • 生成模型:为什么生成对抗网络(GAN)效果非常好?有什么理论特性能使模型稳定或者避免模式崩溃?

在这一系列的文章中,我们将根据最新的论文(尤其是 ICML2018 的论文),帮助大家直观理解这四个方面。

第一篇文章将重点讨论深度网络的非凸优化问题。

非凸优化

我敢打赌,你们很多人都曾尝试过训练自己的「深度网络」,结果却因为无法让它发挥作用而陷入自我怀疑。这不是你的错。我认为都是梯度下降的错。

Ali Rahimi 在 NIPS 演讲中曾说,随机梯度下降 (SGD) 的确是深度学习的基石,它应该解决高度非凸优化问题。理解它何时起作用,以及为什么起作用,是我们在深度学习的基本理论中一定会提出的最基本问题之一。具体来说,对于深度神经网络的非凸优化研究可以分为两个问题:

  • 损失函数是什么样的?

  • SGD 为什么收敛?

损失函数是什么样的?

如果让你想象一个全局最小值,很可能你脑海中出现的第一幅图是这样的:

二维世界中的全局最小值附近,函数是严格凸的(这意味着 hessian 矩阵的两个特征值都是正数)。但在一个有着数十亿参数的世界里,就像在深度学习中,全局最小值附近的方向都不平坦的可能性有多大?或者 hessian 中一个为零(或近似为零)的特征值都没有的概率有多大?

Sanjeev Arora 在教程中写的第一个评论是:损失函数的可能方向数量会随着维度的增长呈指数增长。

直观上看,全局最小值似乎不是一个点而是一个连接管(connected manifold)。这意味着如果找到了全局最小值,你就能够穿过一条平坦的路径,在这条道路上,所有的点都是最小值。海德堡大学的一个研究团队在论文《Essentially No Barriers in Neural Network Energy Landscape》中证明了这一点。他们提出了一个更常规的说法,即任何两个全局最小值都可以通过一条平坦的路径连接。

在 MNIST 上的 CNN 或在 PTB 上的 RNN 已经是这样的情况,但是该项研究将这种认知扩展到了在更高级的数据集(CIFAR10 和 CIFAR100)上训练的更大网络(一些 DenseNet 和 ResNet)上。为了找到这条路径,他们使用了一种来自分子统计力学的启发式方法,叫做 AutoNEB。其思想是在两个极小值之间创建一个初始路径(例如线性),并在该路径上设置中心点。然后迭代地调整中心点的位置,以最小化每个中心点的损失,并确保中心点之间的距离保持不变(通过用弹簧建模中心点之间的空间)。

虽然他们没有从理论上证明这个结果,但他们对为什么存在这样的路径给出了一些直观的解释:

如果我们扰乱单个参数,比如添加一个小常数,然后让其它部分去自适应这种变化,仍然可以使损失最小化。因此可以认为,通过微调,无数其它参数可以「弥补」强加在一个参数上的改变。

因此,本文的结果可以帮助我们通过超参数化和高维空间,以不同的方式看待极小值。

通俗来说,当考虑神经网络的损失函数时,你应该牢记一个给定的点周围可能有非常多的方向。由此得出另一个结论,鞍点肯定比局部最小值多得多:在给定的关键点上,在数十亿个可能的方向中,很可能会找到一个向下的方向(如果不是在全局最小值上)。这种认知在 NIPS 2014 年发表的论文《Identifying and attacking the saddle point problem in high-dimensional non-convex optimization》中被严格规范化,并得到了实证证明。

为什么 SGD 收敛(或不收敛)?

深度神经网络优化的第二个重要问题与 SGD 的收敛性有关。虽然这种算法长期以来被看做是一种快速的近似版梯度下降,但我们现在可以证明 SGD 实际上收敛于更好、更一般的最小值。但我们能否将其规范化并定量地解释 SGD 脱离局部极小值或鞍点的能力?

SGD 修改了损失函数

论文《An Alternative View: When Does SGD Escape Local Minima?》表明,实施 SGD 相当于在卷积(所以平滑)的损失函数上进行常规梯度下降。根据这一观点并在某些假设下,他们证明了 SGD 将设法脱离局部最小值,并收敛到全局最小值附近的一个小区域。

SGD 由随机微分方程控制

连续 SGD 彻底改变了我对这个算法的看法。在 ICML 2018 关于非凸优化的研讨会上,Yoshua Bengio 在他关于随机梯度下降、平滑和泛化的演讲中提出了这个想法。SGD 不是在损失函数上移动一个点,而是一片点云或者说一个分布。

幻灯片摘自 Y. Bengio 在 ICML 2018 发表的演讲。他提出用分布(或点云)代替点来看待 SGD。

这个点云的大小(即相关分布的方差)与 learning_rate / batch_size 因子成正比。Pratik Chaudhari 和 Stefano Soatto 在论文《Stochastic gradient descent performs variational inference, converges to limit cycles for deep networks》中证明了这一点。这个公式非常直观:较低的 batch size 意味着梯度非常混乱(因为要在数据集一个非常小的子集上计算),高学习率意味着步骤混乱。

将 SGD 视为随时间变化的分布可以得出:控制下降的方程现在是随机偏微分方程。更准确地说,在某些假设下,论文表明控制方程实际上是一个 Fokker-Planck 方程。

幻灯片摘自 P. Chaudhari 和 S. Soatto 在 ICML 2018 发表的演讲——《High-dimensional Geometry and Dynamics of Stochastic Gradient Descent for Deep Networks》。他们展示了如何从离散系统过渡到 Fokker-Plank 方程所描述的连续系统。

在统计物理学中,这种类型的方程描述了暴露在曳力 (使分布推移,即改变平均值) 和随机力 (使分布扩散,即增加方差) 下的粒子的演化。在 SGD 中,曳力由真实梯度建模,而随机力则对应算法的内在噪声。正如上面的幻灯片所示,扩散项与温度项 T = 1 /β= learning_rate /(2 * batch_size) 成正比,这再次显示了该比值的重要性!

Fokker-Planck 方程下分布的演化。它向左漂移,随时间扩散。图源:维基百科

通过这个框架,Chaudhari 和 Soatto 证明了我们的分布将单调地收敛于某个稳定的分布(从 KL 散度的意义来说):

Pratik Chaudhari 和 Stefano Soatto 论文的一个主要定理,证明了分布的单调会收敛到稳定状态(在 KL 散度意义中)。第二个方程表明,使 F 最小化相当于最小化某个潜在的ϕ以及扩大熵的分布(温度 1 /β控制的权衡)。

在上面的定理中有几个有趣的观点:

  • SGD 最小化的函数可以写成两项之和(Eq. 11):潜在Φ和熵的分布。温度 1 /β控制这两项的权衡。

  • 潜在Φ只取决于数据和网络的架构(而非优化过程)。如果它等于损失函数,SGD 将收敛到全局最小值。然而, 本文表明这种情况比较少见。而如果知道Φ与损失函数的距离,你将可以知道 SGD 收敛的概率。

  • 最终分布的熵取决于 learning_rate/batch_size(温度)的比例。直观上看,熵与分布的大小有关,而高温会导致分布具有更大的方差,这意味着一个平坦的极小值。平坦极小值的泛化能力更好,这与高学习率和低 batch size 能得到更优最小值的经验是一致的。

因此,将 SGD 看作是一个随时间变化的分布表明,在收敛性和泛化方面,learning_rate/batch_size 比每个独立的超参数更有意义。此外,它还引入了与收敛相关的网络潜力,为架构搜索提供了一个很好的度量。

结论

探索深度学习理论的过程可以分为两部分:首先,通过简单的模型和实验,建立起关于深度学习理论如何及其为什么起作用的认知,然后将这些理念以数学形式呈现,以帮助我们解释当前的结论并得到新的结果。

在第一篇文章中,我们试图传达更多关于神经网络高维损失函数和 SGD 解说的直观认知,同时表明新的形式主义正在建立,目的是建立一个关于深层神经网络优化的真正数学理论。

然而,虽然非凸优化是深度学习的基石并且拥有大量的层数和参数,但它取得的成功大部分源于其优秀的泛化能力。这将是下一篇文章将分享的内容。

Sanjeev Arora:印度裔美国理论计算机科学家,他以研究概率可检验证明,尤其是PCP定理而闻名。研究兴趣包括计算复杂度理论、计算随机性、概率可检验证明等。他于2018年2月被推选为美国国家科学院院士,目前是普林斯顿大学计算机科学系教授。