03.01 如何才能深度学习呢?

用户67600538


我将从意识与潜意识层次的视角来谈学习。


有一个简单的泛读过程。

挑选一本书,粗略看,不求甚解,如果觉得不好,就淘汰。

如果觉得可以进入深度读书阶段。

深度的精读过程

  • 刻意练习

掌握这本书的知识。【意识层次的学习】

设计知识,使它变成大脑的思维。【意识层次】

  • 刻意实践使用

通过思维使用知识形成潜意识持有的信念,意识层次的反复修炼过程。把新学的知识应用于实际的实践。

方法:大脑模拟回放、思考、行动。

  • 自动化思维层次

意识层次掌握的东西贯彻到潜意识层次。【潜意识层次】。

深度读书的基本方法

意识层次的一些特点,学习要根据意识的特点。

  1. 单任务

  2. 串行

  3. 慢思考

  4. 计算量大

  5. 比较耗能量

  6. 前台运作


  7. 非自动化

学习一本新书,刚开始时,由于在意识层次学习东西,它只能是单任务的,串行、而且计算量大、比较费能量。

要把知识拆解成多个部分,A知识、B知识、C知识。寻找维度拆解、各个击破。

掌握一些意识层次与潜意识层次工作的特点,有助于我们去明明白白学习,并能根据意识与潜意识层次的特点,来规划和安排学习。

结论:

要达到深度学习,要了解意识层次与潜意识层次的特点,这只是深度学习其中最基础的一个视角。


认知框架


看了一圈,大家都是从自我控制层面去讲,那我就来讲讲具体的学习方法好了。

看上面的图片文字,本回答提到的资料学习包都在那个号可以领↑


深度学习是近几年比较热门的科目,如果学好了对自己是大有裨益的。作为一个想初步入门深度学习的渣渣,我一开始是从这些方面去入手的:

一、收集整理身边的人脉资源。

深度学习是一个比较复杂且系统的技术,在刚入门毫无基础的情况下,其实询问师兄师姐或者自己的导师是一个最简单省时的方法,通过询问,建立起自己对深度学习的一个初步认识,以打好基础。近在身边的资源,放着不问就真的很浪费啦~

二、网上资源—资料包学习

现在是互联网时代,只需要敲击键盘就可直接获取到自己想要的东西。网上的很多号,都在无偿分享一些资料包,这些资料包可能不是特别牛,但对于一个初次接触深度学习的研究生来讲,真的足够了。

比如:

  • 谷歌机器学习速成课视频全集,这是谷歌官方为自己内部员工能更好了解AI和机器学习基础知识专门出的一个学习视频,里面不仅包含了课程精华内容,还有便于学习与实践的练习题,重点是,人家还专门出了中文版!你就说贴不贴心!刚入门的话非常推荐看着系列视频去学习!

  • 复旦大学邱锡鹏教授发布教科书《神经网络与深度学习》,全书共446页,从基础到研究前沿介绍了深度学习的核心概念与理论,足够我们了解 DL 的前前后后。

  • 当然了,论文也是必须看的,但是论文那么多,看起来也很头疼怎么办?深度学习 Top100:近 5 年被引用次数最高论文合集送给你,覆盖了优化/训练方法、无监督/生成模型、卷积网络模型和图像分割/目标检测等十大子领域。重要的论文能够超越其应用领域让人获益。

  • 一直看觉得干巴巴的文字阅读我会觉得太枯燥,偶尔会上网选择看视频,YouTube上有一个两分钟读论文的系列视频,我一般是通过这些途径去快速了解全球深度学习的最热门进展。

以上就是我的回答,希望能帮助到你以及其他想学习这方面的同学,如果喜欢的话,记得给我一个赞~

AEIC学术



  1. 机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。

  2. 深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。

  3. 机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

拓展资料:

  • 机器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。传统的机器学习算法在指纹识别、基于Haar的人脸检测、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。

  • 最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法和激活函数等方面做出相应的调整。其实有不少想法早年间也曾有过,但由于当时训练数据量不足、计算能力落后,因此最终的效果不尽如人意。深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。


更多有关人工智能的资讯、深度报道、采访欢迎关注AI中国,无论你是小白还是大神,你想要的这里都有!


AI中国


所谓深度学习,是眼、脑、心三处协同专注于内容,以获得最佳的学习效果,个人关于深度学习提供以下几点心得

  1. 学前自问。向自己提问,学习的目的是什么?内心对内容的渴求程度、学习计划及学习时间、学习后的用途。自问的目的是让自己有更清醒的认知,保证自己在学习时的专注力

  2. 放空大脑。深度学习需要抛出杂念,从而专注于书本的内容,紧跟作者的思维展开联想,才能保证更好的记忆与沉淀

  3. 学习笔记。好记性不如烂笔头,边学习边做笔记,可以加深对学习内容巩固,也便于后续的复习

  4. 学习总结。总结即意味着回顾,将学习内容进行有效提炼,是验证学习成果最有效的手段

  5. 学习实践。实践是巩固学习成果的最佳方式,回到学习的初衷,也是为了最终践行,也将价值最大化。

综上5点,个人心得,供参考!不足之处,还请大家积极评论、补充!

更多学习分享,请关注头条号,每天与职场同仁学习总结,一同进步!

【勤聪云课堂 学习促成长】


勤聪云课堂


在今年的 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月被推选为美国国家科学院院士,目前是普林斯顿大学计算机科学系教授。


机器之心Pro


编程基础

  • C++一定要会

  • Python一定要熟练

理论基础

  • 数学功底

  • 图像处理功底

  • 逻辑思考能力

善用工具

  • GitHub

  • 网络视频

  • 数据集

数据集搜索

  • 哪些开源数据集

  • 哪些是好的数据

  • 如何使用数据

如何判断自己是否系统地学习深度学习了呢?

深度学习是一门实践性比较强的课,需要有理论支撑

我从侧面来回答这个问题验证是否系统地学习

几个比较

  • 为什么同样的任务,别人设计的模型比你的小反而快?

  • 这个模型内部参数到底是什么意思

  • 模型收敛拟合,预期问题,自己能否加以判断

  • 什么样的任务用什么样的模型?

(如果您觉得可以,欢迎点赞评论)

人工智能与计算机视觉


深度学习目前主要有几个大的方向,包括:计算机视觉、自然语言处理等。互联网上有大量的免费学习视频,包括斯坦福等名校的公开课等。下面将介绍一些质量非常高的国外名校公开课。

计算机视觉

CS231n近几年一直是计算机视觉领域和深度学习领域最为经典的课程之一。由斯坦福大学李飞飞主讲。

课程链接如下:https://www.bilibili.com/video/av13260183/#page=1

自然语言处理

Stanford大学在2015年开设了一门使用深度学习进行自然语言处理的课程,广受好评。视频课程链接:https://cs224d.stanford.edu/

上述课程都是深度学习最经典的公开课,需要一定的英语能力。


助考笔记


学习和深度学习,是两个完全不同的概念

时下,很多人都会存在一个学习误区:把持有当作拥有,把阅读、学习本身,当作学习的效果。

当说起学习,很多人都会自骄的说,一年读了XX本书,学到了XX个知识,并且附上详尽的学习笔记和思维导图。但他们都弄错了学习本身的含义,学习并不是追求你存货多少,而是需要把学到的东西,运用到生活、工作当中去,或者至少对你个人有所启发。

如何才可以做到深度学习?

不轻易下任何一个断言,永远保持这思考的习惯,寻求事物背后的规律。深度学习要求你不断的主动去思考,把知识做到内化于己。

1.用自己的话复述。所有的知识都不需要死记硬背,而是试着在理解的基础上,把它表达出来,就好像你把它教给一个完全不明白的人一样。这样,通过不断的讲述,让你的大脑保持思考的习惯,把知识点完全内化。

2.

发散联想。学习的过程中,时常会遇到一些很有趣的知识点,或者一些很实用的知识点。此时,你要学会发散性思维,举一反三,把它相关联的知识点都罗列出来,做到系统化、全面化,这是一种更有效的学习方法。

3.用主题去统领内容。因为工作需要,当你需要去学习某个技能或知识时,你可以先罗列出你需要学习的各点各面,再去寻找一切相关的资料,把各种碎片化的信息整合起来,成为自己的知识体系。

4.丰富知识网络。有了以上3个步骤之后,你还要定期对自己的知识进行审视、总结,勾画出一个思维导图,相信我,你又可以得到新的观点,以此不断的进行自我迭代。


阿呆札记


学习的目的在于记忆,记忆之真谛在于全神贯注。

那么如何做到全神贯注,我个人有三点来说一说:

第一就是培养兴趣,兴趣是学习的老师,有了兴趣就会去钻研去思考,去努力,学习自己兴趣的东西也往往会事半功倍。

第二是自身状况,要选择自己好的状态,身体舒适,精神明朗,不要没有休息好感觉困得要死要活了,还想着能深度的学习。

第三是环境,人是环境的产物,没有一个好的环境自己是很难学习的。先说关于人的环境,那就是你周边的人都是做什么的,物以类聚,人以群分,你的朋友亲人都是好学的那么你也多少收影响。在说物质的环境,在马路上看书和在图书馆看书学习的深度也是完全不同。

最后要说,培养兴趣,锻炼身体,保持精力,多交向上的朋友,让自己处在有利的环境。

附图一张罗丹的思考者,找到自己学习的状态,深度随之就来了。


牙刷掉根毛


想要系统学习深度学习,最好从机器学习开始,网上有个斯坦福机器学习的视频,是大牛吴恩达授的课,既有数学理论,也有实践演示,是非常不错的一门入门课程,接着就是网易云课堂上,一个吴恩达的深度学习课程,浅显易懂,学习后,深度学习的基本原理就懂了。然后就是深入啃书本,如花书,周克华一些深度学习方面的书。再深入就是看深度学习框架的源码,如caffe,tensorflow等。一个轮回过来,最终还会回到线性代数和概率论上来。数学基础很重要。


分享到:


相關文章: