2016-01-18 17:43:43 Andrewseu 阅读数 13597
  • 深度学习与PyTorch入门实战教程

    亚洲排名第1的新加坡国立大学AI团队倾情打造,资深研究员龙龙老师主讲,帮助人工智能、深度学习初学者快速、深刻理解深度学习算法原理与实践。 【莫烦老师】权威推荐:在教学中,龙龙老师以简短高效的方式,从深度学习的多个角度向我们展开了论述,非常适合想对深度学习有全方位了解的朋友。 【PyTorch中文网】:讲解简单易懂、由浅入深,是一门值得推荐的课程。 课程特色: 1. 通俗易懂,快速入门 对深度学习算法追本溯源、循序渐进式讲解,学员不需要任何机器学习基础,只需要写过代码即可轻松上手。 2. 实用主导,简单高效 使用新手最容易掌握的深度学习框架PyTorch实战,比起使用TensorFlow的课程难度降低了约50%,而且PyTorch是业界最灵活,最受好评的框架。 3. 案例为师,实战护航 基于计算机视觉和NLP领域的经典数据集,从零开始结合PyTorch与深度学习算法完成多个案例实战。 4. 持续更新,永久有效 一次购买,永久有效。深度学习课程会持续更新下去,内容和学术界最前沿算法保持同步。

    3760 人正在学习 去看看 龙良曲

七步理解深度学习

By Matthew Mayo     翻译by Andrewseu


网上有很多的深度学习的免费学习资源,但是可能会对从哪里开始有些困惑。七步内从对深度神经网络的模糊理解到知识渊博的从业者(knowledgeable practitioner)!

深度学习是机器学习的一个分支,拥有很多的相似性,但是却也不同,深度神经网络结构在自然语言处理、计算机视觉、生物信息学和其他领域解决了各种各样的问题。深度学习经历了一场巨大的最近研究的重现,并且在很多领域中已经展现出最先进的成果。

本质上,深度学习是超过一层隐藏神经元的神经网络的执行。但是,这是对深度学习的一个简单的看法,并且不是一个没有争议的观点。这些深层构架也非常不同,对不同任务或目标优化会有不同的执行。在这样一个恒定速率进行着的大量研究在以史上未有的速度展现新的和创新的深度学习模型。


最近的一个白热化的研究课题,深度学习似乎影响着机器学习的所有领域,相关的还有数据科学。粗略看看相关arXiv目录下最近的论文,很容易看出大量正在被发表的论文都是深度学习相关的。鉴于已经产生的令人惊叹的成果,很多研究者,从业者和外行都在想深度学习是否是真正的人工智能的边界。

这系列的阅读材料和教程旨在给深度神经网络的新人提供一条路径去理解这个巨大而复杂的课题。尽管我不假设对神经网络和深度学习真正的理解,但是我假设你对一般的机器学习理论和实践具有某种程度的熟悉度。为了克服在一般机器学习理论和实践的不足,你可以看看最近KDnuggets发布的7 Steps to Mastering Machine Learning With Python。由于我们也看用Python写的例子的执行,对语言有些熟悉会很有用。介绍和综述的资源在previodsly mentioned post也是提供的。


这篇博客将以紧密结合的顺序使用网络上免费提供的材料在理论层面上获得对深度神经网络的一些理解,然后继续转向一些实际的执行。同样的,借鉴过来的引用材料只属于创建者,跟资源会一起被标注。如果你看到有人因为他们的工作没有被正确引用,请告知我,我会很快修改的。


一个完全诚实的免责申明:深度学习是一个复杂而在广度和深度(pun unintended?)变化很快的领域,因此这篇博客不保证包括所有成为深度学习专家的手册;这样的一个转化将会需要更多的时间,很多附加材料和很多实际建立和测试的模型。但是,我相信的是,使用这里的资源可以帮你在这样一个路径下开始。


第一步:介绍深度学习

如果你正在读这个并且对这个课题感兴趣,你可能已经对深度神经网络已经熟悉,甚至在一个很基础的层次。神经网络有一个故事性的历史,但是我们将不会深入。但是,我们需要如果在开始就有一个普遍高层次的理解。

首先,看看DeepLearning .tv精彩的介绍视频。在 写完这个的时候已经有14个视频了;如果你喜欢看完他们,但是一定要看前五个,包含了神经网络的基础和一些更常见的结构。

然后,仔细阅读Geoff Hinton,Yoshua Bengioh和Yann LeCun的NIPS 2015 Deep Learning Tutorial,一个稍微更低层次的介绍。

完成我们的第一步,读the first chapter of Neural Networks and Deep Learning,这个由Michael Nielden写的精妙的,不断更新的在线书,这会更近一步但是依然很粗浅。


第二步:学习技术

深度神经网络依赖代数和微积分的数学基础。然而这篇博客不会产生任何理论上的数学,在继续之前有一些理解将会很有帮助。

第一,看Andrew Ng的linear algebra review videos。但是不是绝对的必要,想要对线性代数了解更深的话,从Ng的斯坦福课程看看Zico Kolter 和Chuong Do写的Linear Algebra Review and Reference.

然后看看Professor LeonardIntroduction to the Derivative of a Function. 视频是很简洁的,例子是很清晰的,并且提供了从数学的视角来看在反向传播的过程中到底发生了什么。一会儿会更多。

接下来迅速浏览下维基Sigmoid function的词条,一个在神经网络中经常通过单个神经元应用的边界差分函数。

最后,从数学上休息下阅读谷歌研究科学家 Quoc LeDeep Learning Tutorial.




第三步:反向传播和梯度下降

神经网络包括现代深度构架重要的一部分是反向传播算法的错误,使用离输入更近的神经元通过网络更新权重。非常坦率的说,这就是神经网络继承他们”力量“(缺乏更好的术语)的地方。反向传播和一个随后分布式的最小化权重的优化方法,为了最小化损失函数。在深度学习中一个常见的优化方法是梯度下降。

首先,看看这些斯图加特大学Marc Toussaint 写的关于梯度下降的介绍笔记

然后,看看Matt Mazur写的this step by step example of backpropagation in action.

继续,阅读Jeremy Kun关于 coding backpropagation in Python的信息博客。仔细看看完整代码也是建议的,尝试自己写一遍代码。

最后,读Quoc Le写的Deep Learning Tutorial的第二部分,为了获取一些更具体更常见的深度结构和他们用途的介绍。


第四步:实践

具体的神经网络结构的下一步介绍将会使用在现在研究中最流行的python深度学习库包括实际执行。在一些情况下,一些不同的库的优化是为了某个特定的神经网络结构,并且已经在某些特定的领域立足,我们将会使用三个不同的深度学习库。这不是多余的,在特定领域的实践中与最新的库保持一致时学习时很重要的一步。接下来的训练也将会让你自己评价不同的库,并且形成一个在哪些问题上用哪个的直觉。

现在欢迎你选择一个库或者联合库进行安装,是否继续那些教程取决于你的选择。如果你希望尝试一个库并且使用它来执行接下来步骤的教程,我会推荐TensorFlow,原因如下,我会提到最相关的(至少是在我的眼中):它执行自动分化(autodifferentiation),意味着你不需要担心从头执行反向传播,更可能使代码更容易理解(尤其是对一个初学者来说)。

我写关于TensorFlow的文章是在刚出来的时候TensorFlow Disappoints – Google Deep Learning Falls Shallow,这个标题暗示着比在实际中更失望;我最初关注的是它缺少GPU集丛的网络训练(很可能很快会有它自己的方式).无论如何,如果你没有看列在下面的白皮书但是想看更多关于TensotFlow的材料,我建议读我原始的文章,然后跟着Zachary Lipton's 写的很好的部分,TensorFlow is Terrific – A Sober Take on Deep Learning Acceleration.


TensorFlow

Google的TensorFlow是基于数据流图展现的一个通用的机器i学习库。

Theano
Theano是被蒙特利尔大学的LISA group积极开发的。
Caffe
Caffe是由加州大学伯克利分校的BVLC开发的。Theano和Tensorflow可以认为是通用的深度学习库,Caffe是由一个计算机视觉的组开发的,主要考虑的解决那样的问题;但是,它也是一个通用的库为了为不同领域建立不同的深度学习框架。
记住这些并不仅仅是现在流行的库。事实上,还有很多很多可以选择,这些选择是基于教程的流行性,文档和总体上研究上的接受程度。

其他的深度学习库选择包括:
  • Keras---一个用于Theano和TensorFlow高层、极简Python神经网络库
  • Lasagne---Theano顶上的轻量级python库
  • Torch---Lua机器学习算法库
  • DeepLearning4j---Jaav和Scala开源、分布式深度学习库
  • Chainer---一个灵活的、直观的python神经网络库
  • Mocha---Juliade的一个深度学习框架
安装好这些库,现在我们可以继续实践。

第五步:卷积神经网络和计算机视觉

计算机视觉解决处理和理解图片和它的符号信息。大部分领域最近的突破都是来自于深度神经网络的使用。特别的,卷积神经网络在最近扮演一个很重要的角色。


首先,读Yoshua Bengio的deep learning with computer vision,为了对这个课题有一个理解。
然后。如果你安装好了TensorFlow,阅读并执行这个教程,这个是用卷积i神经网络分类CIFAR-10图片。如果你安装了Caffe,对于上一个教程的替代,执行Caffe中的卷积神经网络分类MNIST数据集图片。
这里是一个粗略等同于Caffe 的练习Theano tutorial.
然后,读Krizhevsky, Sutskever和Hinton的seminal convolutional neural network paper增加额外的视野。

第六步:递归网和语言处理

自然语言处理(NLP)是收益与深度学习的另一个领域。关心理解自然语言,NLP通过运用递归神经网络(RNN)有很多最新的成功。
Andrej Karpathy有一篇很赞的博客,题目是The Unreasonable Effectiveness of Recurrent Neural Networks,列出了RNN在训练字符级语言模型的有效性的大纲。它提到的代码是通过Torch用Lua写的,所以你可以跳过;这个在纯理论层次上依旧很有用。
这个教程为语言处理在TensorFlow上执行RNN.
你也可以用Theano并且用这个教程尝试,用文字嵌套执行了一个RNN.
最后,你可以读Yoon Kim的Convolutional Neural Networks for Sentence Classification,这是CNN在语言处理上的又一个应用。Denny Britz 有一篇博客,题目是Implementing A CNN For Text Clasification in TensorFlow,使用的是电影的评论数据。

第七步:更深入的课题

上面的步骤在深度学习已经从理论上进步到实践。通过在前两步执行卷积神经网络和递归神经网络,希望的是对它们力量和功能性的预先感知。与CNN和RNN一样普遍的有很多其他随着基础研究出现的已经存在的深度结构。
有很多超过前面理论步骤展现的其他的考虑,同样的,下面是这些另外结构和考虑的快速的调研。
为了更深的理解适合时间序列预测的特定类型的RNN,长短项记忆网络,读Christopher Olah写的这篇文章
Denny Britz写的这篇文章是用LSTM和GRUs的 很好的一个关于RNN的教程。看这篇论文更深地讨论GRUs和LSTMs.
很显然这没有包含所有的深度学习构架。限制波尔兹曼机是一个脑中很明显需要排除的,正如antoencoders,和一系列产生的相关的模型包括Generative Adversarial Networks. 但是,必须在某处画一条线,不然这篇将会一直下去。
对那些感兴趣其他深度学习构架的,我建议看看Yshua Bengio的ftml.
对于我们的最终目标和有一些不同的东西,看看Google DeepMindShakir Mohamed A Statistical Analysis of Deep Learning。这个比我们平常看到的材料更理论一些,但是值得用另一种方法看我们熟悉的事物。Shakir对6个月的课程写了一系列文章,展现测试wide-held beliefs,增强数据的连接,并且深度学习中要隐藏的东西。有一个所有发布的PDF集合.

希望足够的信息已经展现,能够给读者一个对深度神经网络介绍性的综述,并且提供一些想对这个课题继续研究的热情。

Bio: Matthew Mayo is a computer science graduate student currently working on his thesis parallelizing machine learning algorithms. He is also a student of data mining, a data enthusiast, and an aspiring machine learning scientist.

相关的:

2019-06-06 09:35:04 weixin_42137700 阅读数 283
  • 深度学习与PyTorch入门实战教程

    亚洲排名第1的新加坡国立大学AI团队倾情打造,资深研究员龙龙老师主讲,帮助人工智能、深度学习初学者快速、深刻理解深度学习算法原理与实践。 【莫烦老师】权威推荐:在教学中,龙龙老师以简短高效的方式,从深度学习的多个角度向我们展开了论述,非常适合想对深度学习有全方位了解的朋友。 【PyTorch中文网】:讲解简单易懂、由浅入深,是一门值得推荐的课程。 课程特色: 1. 通俗易懂,快速入门 对深度学习算法追本溯源、循序渐进式讲解,学员不需要任何机器学习基础,只需要写过代码即可轻松上手。 2. 实用主导,简单高效 使用新手最容易掌握的深度学习框架PyTorch实战,比起使用TensorFlow的课程难度降低了约50%,而且PyTorch是业界最灵活,最受好评的框架。 3. 案例为师,实战护航 基于计算机视觉和NLP领域的经典数据集,从零开始结合PyTorch与深度学习算法完成多个案例实战。 4. 持续更新,永久有效 一次购买,永久有效。深度学习课程会持续更新下去,内容和学术界最前沿算法保持同步。

    3760 人正在学习 去看看 龙良曲

https://www.toutiao.com/a6698879109432345100/

作者:Hafidz Zulkifli编译:ronghuaiyang

导读

把学习率用好,也能提升深度学习模型的性能,一起来看看吧!

这篇文章试图记录我对以下主题的理解:

  • 学习率是什么?它的意义是什么?
  • 如何系统地达到一个良好的学习率?
  • 为什么我们在训练过程中要改变学习率?
  • 在使用预训练的模型时,我们如何处理学习速率?

这篇文章大部分是基于过去fast.ai研究员写的东西。这是它的一个简洁版本,以一种让人快速接触到材料的实质的方式排列。请仔细阅读参考资料以了解更多细节。

首先,什么是学习率?

学习率是一个超参数,它控制着我们根据损失梯度调整网络权重的程度。值越低,我们沿着向下的斜率走得越慢。虽然这可能是一个好主意(使用低学习率),以确保我们不会错过任何局部最小值,但这也可能意味着我们将花费很长时间来收敛—特别是当我们陷入平稳地区。

下面的公式显示了这种关系。

 new_weight = existing_weight — learning_rate * gradient

理解学习率以及如何提升深度学习的性能

学习速率小(上)、大(下)的梯度下降法。

通常情况下,学习速率是由用户随机设置的。最好的情况是,用户可以利用过去的经验(或其他类型的学习材料)来获得关于在设置学习速率时使用什么是最佳价值的直觉。

因此,通常很难把它做好。下图演示了在设置学习率时可能遇到的不同场景。

理解学习率以及如何提升深度学习的性能

不同学习速率对收敛性的影响

此外,学习率影响我们的模型收敛到局部最小值的速度(也就是达到最佳精度的速度)。因此,从一开始就把它做好,意味着我们训练模型的时间会更少。

训练时间越少,花在GPU云计算上的钱就越少。:)

有没有更好的方法来决定学习率?

在“Cyclical Learning Rates for Training Neural Networks.”章节3.3中。Leslie N. Smith提出,你可以用一个非常低的学习率来训练模型,并在每次迭代中以线性或指数的方式增加它,从而估计出一个好的学习率。

理解学习率以及如何提升深度学习的性能

每个mini-batch之后,学习率提升

如果我们记录每次迭代的学习情况,并绘制学习速率(log)与损失的关系图,我们会看到随着学习率的增加,会有一个点损失停止减少并开始增加。在实践中,理想情况下,我们的学习速率应该位于图的最左边(如下图所示)。这里是0.001到0.01。

理解学习率以及如何提升深度学习的性能

 

上面那些东西看起来很有用,我们怎么用呢?

目前它作为函数在fast.ai包中支持,由Jeremy Howard开发的用于抽象pytorch的一个包(很像Keras是Tensorflow的抽象)。

在训练神经网络之前,只需要输入以下命令就可以开始寻找最优的学习速率。

 # learn is an instance of Learner class or one of derived classes like ConvLearner
 learn.lr_find()
 learn.sched.plot_lr()

变得更好

在这一点上,我们已经讨论了学习率的意义,它的重要性,以及当我们开始训练我们的模型时,我们如何系统地得出一个最优值。

接下来,我们将讨论如何使用学习率来改进模型的性能。

传统的思想

通常,当一个人设定他的学习率并训练模型时,他只会等待学习率随着时间的推移而降低,并等待模型最终收敛。

然而,当梯度达到一个平稳区域,训练损失变得更加难以改善。Dauphin等人认为,损失最小化的困难来自鞍点,而不是糟糕的局部极小值。

理解学习率以及如何提升深度学习的性能

误差曲面上的鞍点,鞍点是函数的导数为零的点,但不是所有轴上的局部极值点

我们如何从这里逃脱?

我们可以考虑几个选择。一般来说,

如果训练不再改善我们的损失,我们将根据循环函数f来改变每次迭代的学习率。根据迭代次数,每个周期都有一个固定的长度。该方法使学习速率在合理的边界值之间循环变化。这是有帮助的,因为如果我们被卡在鞍点上,增加学习率可以更快地遍历鞍点平缓区

Leslie提出了一种“三角形”方法,每隔几次迭代就重新启动一次学习速率。

理解学习率以及如何提升深度学习的性能

 

理解学习率以及如何提升深度学习的性能

 

Leslie N. Smith提出的循环学习率的“三角”和“三角2”方法。在左边的图中,min和max lr保持不变。在右边,在每个周期之后,差值减半。

另一种同样流行的方法是由Loshchilov & Hutter提出的带有热重启的随机梯度下降法。该方法基本采用余弦函数作为循环函数,在每个循环中以最大的速度重新开始学习。“热启动”来自这样一个事实:当重新启动学习率时,它不是从头开始,而是从模型在最后一步中收敛到的参数开始。

虽然有一些变化,下面的图展示了它的一个实现,其中每个周期被设置为相同的时间间隔。

理解学习率以及如何提升深度学习的性能

SGDR图,学习率vs迭代。

因此,我们现在有一种减少训练时间的方法,基本上是周期性地在“山脉”周围跳跃(见下图)。

理解学习率以及如何提升深度学习的性能

固定LR与循环LR的比较

除了节省时间,研究还表明,使用这些方法可以在不需要调整和更少迭代的情况下提高分类精度。

迁移学习中的学习率

在fast.ai课程中,在解决人工智能问题时强调利用预训练的模型。例如,在解决图像分类问题时,教授学生如何使用预训练的模型,如VGG或Resnet50,并将其连接到你希望预测的任何图像数据集。

在fast.ai中总结模型构建是如何快速完成的。以下是我们通常会采取的几个步骤:

  • 使用数据增强,并且precompute=True
  • 使用lr_find()来查找最高的学习率,在这个学习率下,损失仍在明显改善
  • 在最后一层上使用预先计算的激活训练1-2个epoch
  • 使用数据增强(即precompute=False)对最后一层进行训练,使用cycle_len=1进行2-3个epoch的训练
  • 解冻所有层
  • 将较早的层的学习率设置为比后面的层的学习率低3~10倍
  • 再使用一次lr_find()
  • 使用cycle_mult=2训练整个网络直到过拟合

从上面的步骤中,我们注意到步骤2、5和7与学习率有关。在本文前面的部分中,我们基本上已经讨论了上面提到的2个步骤—我们在这里讨论了如何在训练模型之前获得最佳的学习率。

在下一节中,我们将介绍如何通过使用SGDR来减少训练时间,并通过不时重新启动学习率来提高准确度,从而避免梯度接近于为零的区域。

在最后一节中,我们将讨论微分学习,以及如何使用它来确定带有预训练模型的训练模型的学习率。

什么是可微分学习?

这是一种方法,你可以在训练过程中为网络的不同层次设置不同的学习速率。这与人们通常配置学习速率的方式相反,人们通常在训练期间在整个网络中使用相同的速率。

理解学习率以及如何提升深度学习的性能

我喜欢Twitter的一个原因是—他自己的直接回答

在写这篇文章的时候,Jeremy和Sebastian Ruder一起发表了一篇论文,深入探讨了这个话题。所以我想微分学习率现在有了一个新名字—可分性微调。:)

为了更清楚地说明这个概念,我们可以参考下面的图,其中将一个预训练的模型分成3个组,其中每个组将配置一个递增的学习率值。

理解学习率以及如何提升深度学习的性能

使用微分学习率的CNN例子

这种配置方法背后的直觉是,前几层通常包含非常细粒度的数据细节,比如线条和边缘—我们通常不希望对它们做太多更改,希望保留它们的信息。因此,不需要太多地改变它们的权重。

相比之下,在后面的层中,比如上面绿色的图层,我们可以得到详细的数据特征,比如眼球、嘴巴或鼻子,我们不一定要保留它们。

这与其他finetune方法相比如何?

Fine-tuned Language Models for Text Classification中有人认为对整个模型进行finetune的成本太高,因为有些模型可能有超过100层。因此,人们通常做的是一次只对模型进行一层finetune。

然而,这引入了顺序需求,阻碍了并行性,并且需要多次遍历数据集,从而导致对小型数据集的过拟合。

同时也证明了Fine-tuned Language Models for Text Classification中引入的方法能够提高各种NLP分类任务的准确率和降低错误率(下图)。

理解学习率以及如何提升深度学习的性能

 

英文原文:https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10

2018-09-13 11:29:26 weixin_39444552 阅读数 294
  • 深度学习与PyTorch入门实战教程

    亚洲排名第1的新加坡国立大学AI团队倾情打造,资深研究员龙龙老师主讲,帮助人工智能、深度学习初学者快速、深刻理解深度学习算法原理与实践。 【莫烦老师】权威推荐:在教学中,龙龙老师以简短高效的方式,从深度学习的多个角度向我们展开了论述,非常适合想对深度学习有全方位了解的朋友。 【PyTorch中文网】:讲解简单易懂、由浅入深,是一门值得推荐的课程。 课程特色: 1. 通俗易懂,快速入门 对深度学习算法追本溯源、循序渐进式讲解,学员不需要任何机器学习基础,只需要写过代码即可轻松上手。 2. 实用主导,简单高效 使用新手最容易掌握的深度学习框架PyTorch实战,比起使用TensorFlow的课程难度降低了约50%,而且PyTorch是业界最灵活,最受好评的框架。 3. 案例为师,实战护航 基于计算机视觉和NLP领域的经典数据集,从零开始结合PyTorch与深度学习算法完成多个案例实战。 4. 持续更新,永久有效 一次购买,永久有效。深度学习课程会持续更新下去,内容和学术界最前沿算法保持同步。

    3760 人正在学习 去看看 龙良曲

零基础直观理解深度学习(零)


导语

为自己开了一个坑,这个系列的文章实际上是关于吴恩达deeplearning.ai课程的学习笔记。对于很多刚进入大学,数学基础没过关的,但对深度学习很感兴趣的童鞋,在理解深度学习上有较大障碍。我基于吴恩达的课程,力求用直白的语言阐述深度学习的各个技巧是如何实现和生效的,让大家对深度学习有一定的了解,所以这将会更像是科普文而不是技术文章。如果对深度学习的实现和数学原理感兴趣(实际上不需要过多理解数学原理也可以训练出一个很好的模型),可以直接在网易云课堂上观看免费的吴恩达课程视频,课后作业可在github上自行寻找。如果只是想对深度学习有一个全貌的了解,这个系列会是你合适的选择。

https://mooc.study.163.com/smartSpec/detail/1001319001.htm
http://www.ai-start.com/

一、深度学习-机器学习-人工智能间的区别

1.1 什么是人工智能

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。

简单来说,人工智能是一个大领域,它包括所有人类想要实现的智能想法,而机器学习则是实现人工智能的途径,深度学习是实现机器学习的其中一个方法。他们之间的关系可以用下图表示:

1.2 深度学习与机器学习的差别

用雕塑家作例子,机器学习就像是技术精湛的雕塑家,掌握了许多不断雕饰出精美雕像的算法,如决策树学习、归纳逻辑程序设计、聚类分析(Clustering)、强化学习、贝叶斯网络等,通过对雕塑的形态的长期理解,提取出雕塑的各种特征,并对特征进行相应分析改良,真正对数据进行解析和学习。简单来说,机器学习是对数据进行挖掘,提取出模型

而深度学习就像是模具大师,这个模具就是神经网络,神经网络通过喂入数据不断优化自身,模具的各个细节(参数)也愈加精细,因而制作出来的雕塑也更加精美。简单来说,深度学习是设计一个有效模型,通过增加数据优化自己

可以看出,两者的最终目的都是得到一个有效模型,不同之处在于机器学习使用各种算法实现模型,其中一种实现方法就是深度学习,深度学习需要预设计出一个神经网络模型。

1.3 深度学习的优势

在早期的机器学习中,对于非结构化的数据(如音频等,具体定义自行百度),机器学习(ML)研究者需要自己构建各种模型的中间件,以语音识别中文为例,ML需要为音频设定汉语拼音,通过拼音构建字的读音,再进行组合词语。而深度学习崇尚的是端到端的学习(end-to-end),即输入一段数据,经过模型,即得到一段输出,具体来说,音频可以表现为一段波频图,将波频图用向量表示,直接将大量的波频图信息及其标签(即你想要的输出)喂入神经网络模型,不需要进行人为的再加工,即可得到想要的输出。因此,深度学习在非结构化的数据学习中起到了很好的效果。
另外,深度学习在无监督学习中也发挥了非常重要的作用,后面会提到。

这里写图片描述

1.4 深度学习为什么会兴起

简单来说,传统的机器学习方法如下图所示,对于规模巨大的数据,机器学习能够实现的效果很有限。也就是说,机器学习在小规模的数据中表现得很好,但不适用于大规模的数据。
这里写图片描述
但在数字化的社会,我们能够遇见的数据量都是非常庞大的,因而深度学习成为我们处理庞大数据的有力工具,深度学习处理庞大数据的有效方法为训练一个更大的神经网络,或喂入更多的数据,数据越多,神经网络的表现越好,当然这又要求计算机的算力达到一个高度。

随着科技的进步发展,我们的gpu和cpu得到了飞速的发展,gpu的超高算力使得训练大规模神经网络成为可能,同时,各界深度学习研究者也在不断对神经网络模型进行优化发展,使得神经网络模型运行得越来越快。快速计算的优势还在于深度学习研究者可以对小规模数据进行试探性实验,短时间内迭代更新模型,省去了以往可能一个实验花好几个星期的时间,现在只需10分钟或几小时就可以完成实验,DL研究者可以更专注更有效率地设计自己的神经网络模型。
这里写图片描述

1.5 学习完吴恩达的深度学习课程可以去打kaggle吗?

很遗憾,以我的观点是比较难,kaggle名义上是数据挖掘和机器学习的竞赛,竞赛所遵循的是机器学习的一套原理,即重视数据,重视特征工程,而吴恩达的深度学习课程仅是工程学的,利于开发搞项目的,不涉及特征工程的学习,如果是抱着打kaggle的心态学习这个课程,我建议可以直接去学习吴恩达的机器学习课程,但对数学基础要求较高。当然,也不是一定就不能打,深度学习的卷积网络模型(CNN)在图像识别方面起到非常好的效果,kaggle有对应的CNN竞赛,可以去尝试一下。

这篇文章主要是一个引言,以后的文章才讲干货,敬请期待。。。

2018-02-02 18:06:59 jzrita 阅读数 979
  • 深度学习与PyTorch入门实战教程

    亚洲排名第1的新加坡国立大学AI团队倾情打造,资深研究员龙龙老师主讲,帮助人工智能、深度学习初学者快速、深刻理解深度学习算法原理与实践。 【莫烦老师】权威推荐:在教学中,龙龙老师以简短高效的方式,从深度学习的多个角度向我们展开了论述,非常适合想对深度学习有全方位了解的朋友。 【PyTorch中文网】:讲解简单易懂、由浅入深,是一门值得推荐的课程。 课程特色: 1. 通俗易懂,快速入门 对深度学习算法追本溯源、循序渐进式讲解,学员不需要任何机器学习基础,只需要写过代码即可轻松上手。 2. 实用主导,简单高效 使用新手最容易掌握的深度学习框架PyTorch实战,比起使用TensorFlow的课程难度降低了约50%,而且PyTorch是业界最灵活,最受好评的框架。 3. 案例为师,实战护航 基于计算机视觉和NLP领域的经典数据集,从零开始结合PyTorch与深度学习算法完成多个案例实战。 4. 持续更新,永久有效 一次购买,永久有效。深度学习课程会持续更新下去,内容和学术界最前沿算法保持同步。

    3760 人正在学习 去看看 龙良曲

原文地址: http://www.yangqiu.cn/aicapital/2382000.html

译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课教程在反复传颂卷积神经网络的好,却都没有讲什么是“卷积”,似乎默认所有读者都有相关基础。这篇外文既友好又深入,所以翻译了过来。文章高级部分通过流体力学量子力学等解释卷积的做法在我看来有点激进,这些领域恐怕比卷积更深奥,所以只需简略看看即可。以下是正文:


卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。但卷积为什么如此强大?它的原理是什么?在这篇博客中我将讲解卷积及相关概念,帮助你彻底地理解它。

网络上已经有不少博客讲解卷积和深度学习中的卷积,但我发现它们都一上来就加入了太多不必要的数学细节,艰深晦涩,不利于理解主旨。这篇博客虽然也有很多数学细节,但我会以可视化的方式一步步展示它们,确保每个人都可以理解。文章第一部分旨在帮助读者理解卷积的概念和深度学习中的卷积网络。第二部分引入了一些高级的概念,旨在帮助深度学习方向的研究者和高级玩家进一步加深对卷积的理解。

什么是卷积

整篇博客都会探讨这个问题,但先把握行文脉络会很有帮助。那么粗略来讲,什么是卷积呢?

你可以把卷积想象成一种混合信息的手段。想象一下装满信息的两个桶,我们把它们倒入一个桶中并且通过某种规则搅拌搅拌。也就是说卷积是一种混合两种信息的流程。

卷积也可以形式化地描述,事实上,它就是一种数学运算,跟减加乘除没有本质的区别。虽然这种运算本身很复杂,但它非常有助于简化更复杂的表达式。在物理和工程上,卷积被广泛地用于化简等式——等会儿简单地形式化描述卷积之后——我们将把这些领域的思想和深度学习联系起来,以加深对卷积的理解。但现在我们先从实用的角度理解卷积。

我们如何对图像应用卷积

当我们在图像上应用卷积时,我们在两个维度上执行卷积——水平和竖直方向。我们混合两桶信息:第一桶是输入的图像,由三个矩阵构成——RGB三通道,其中每个元素都是0到255之间的一个整数。第二个桶是卷积核(kernel),单个浮点数矩阵。可以将卷积核的大小和模式想象成一个搅拌图像的方法。卷积核的输出是一幅修改后的图像,在深度学习中经常被称作feature map。对每个颜色通道都有一个feature map。

边缘检测卷积核的效果

这是怎么做到的呢,我们现在演示一下如何通过卷积来混合这两种信息。一种方法是从输入图片中取出一个与卷积核大小相同的区块——这里假设图片为<span class="MathJax" tabindex="0" data-mathml="100×100" role="presentation" style="box-sizing: border-box; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; word-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial;">100×100100×100,卷积核大小为<span class="MathJax" tabindex="0" data-mathml="3×3" role="presentation" style="box-sizing: border-box; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; word-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial;">3×33×3,那么我们取出的区块大小就是<span class="MathJax" tabindex="0" data-mathml="3×3" role="presentation" style="box-sizing: border-box; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; word-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial;">3×33×3——然后对每对相同位置的元素执行乘法后求和(不同于矩阵乘法,却类似向量内积,这里是两个相同大小的矩阵的“点乘”)。乘积的和就生成了feature map中的一个像素。当一个像素计算完毕后,移动一个像素取下一个区块执行相同的运算。当无法再移动取得新区块的时候对feature map的计算就结束了。这个流程可以用如下的动画演示:

RAM是输入图片,Buffer是feature map

你可能注意到这里有个正规化因子m,这里m的值为kernel的大小9;这是为了保证输入图像和feature map的亮度相同。

为什么机器学习中图像卷积有用

图像中可能含有很多我们不关心的噪音。一个好例子是我和Jannek Thomas在Burda Bootcamp做的项目。Burda Bootcamp是一个让学生像黑客马拉松一样在非常短的时间内创造技术风暴的实验室。与9名同事一起,我们在2个月内做了11个产品出来。其中之一是针对时尚图像用深度编码器做的搜索引擎:你上传一幅时尚服饰的图片,编码器自动找出款式类似的服饰。

如果你想要区分衣服的式样,那么衣服的颜色就不那么重要了;另外像商标之类的细节也不那么重要。最重要的可能是衣服的外形。一般来讲,女装衬衫的形状与衬衣、夹克和裤子的外观非常不同。如果我们过滤掉这些多余的噪音,那我们的算法就不会因颜色、商标之类的细节分心了。我们可以通过卷积轻松地实现这项处理。

我的同事Jannek Thomas通过索贝尔边缘检测滤波器(与上上一幅图类似)去掉了图像中除了边缘之外的所有信息——这也是为什么卷积应用经常被称作滤波而卷积核经常被称作滤波器(更准确的定义在下面)的原因。由边缘检测滤波器生成的feature map对区分衣服类型非常有用,因为只有外形信息被保留下来。

彩图的左上角是搜索query,其他是搜索结果,你会发现自动编码器真的只关注衣服的外形,而不是颜色。

再进一步:有许多不同的核可以产生多种feature map,比如锐化图像(强调细节),或者模糊图像(减少细节),并且每个feature map都可能帮助算法做出决策(一些细节,比如衣服上有3个纽扣而不是两个,可能可以区分一些服饰)。

使用这种手段——读入输入、变换输入、然后把feature map喂给某个算法——被称为特征工程。特征工程非常难,很少有资料帮你上手。造成的结果是,很少有人能熟练地在多个领域应用特征工程。特征工程是——纯手工——也是Kaggle比赛中最重要的技能。特征工程这么难的原因是,对每种数据每种问题,有用的特征都是不同的:图像类任务的特征可能对时序类任务不起作用;即使两个任务都是图像类的,也很难找出相同的有效特征,因为视待识别的物体的不同,有用的特征也不同。这非常依赖经验。

所以特征工程对新手来讲特别困难。不过对图像而言,是否可以利用卷积核自动找出某个任务中最适合的特征?

进入卷积神经网络

卷积神经网络就是干这个的。不同于刚才使用固定数字的卷积核,我们赋予参数给这些核,参数将在数据上得到训练。随着卷积神经网络的训练,这些卷积核为了得到有用信息,在图像或feature map上的过滤工作会变得越来越好。这个过程是自动的,称作特征学习。特征学习自动适配新的任务:我们只需在新数据上训练一下自动找出新的过滤器就行了。这是卷积神经网络如此强大的原因——不需要繁重的特征工程了!

通常卷积神经网络并不学习单一的核,而是同时学习多层级的多个核。比如一个32x16x16的核用到256×256的图像上去会产生32个241×241()的feature map。所以自动地得到了32个有用的新特征。这些特征可以作为下个核的输入。一旦学习到了多级特征,我们简单地将它们传给一个全连接的简单的神经网络,由它完成分类。这就是在概念上理解卷积神经网络所需的全部知识了(池化也是个重要的主题,但还是在另一篇博客中讲吧)。

第二部分:高级概念

我们现在对卷积有了一个良好的初步认识,也知道了卷积神经网络在干什么、为什么它如此强大。现在让我们深入了解一下卷积运算中到底发生了什么。我们将认识到刚才对卷积的讲解是粗浅的,并且这里有更优雅的解释。通过深入理解,我们可以理解卷积的本质并将其应用到许多不同的数据上去。万事开头难,第一步是理解卷积原理。

卷积定理

要理解卷积,不得不提convolution theorem,它将时域和空域上的复杂卷积对应到了频域中的元素间简单的乘积。这个定理非常强大,在许多科学领域中得到了广泛应用。卷积定理也是快速傅里叶变换算法被称为20世纪最重要的算法之一的一个原因。

第一个等式是一维连续域上两个连续函数的卷积;第二个等式是二维离散域(图像)上的卷积。这里指的是卷积,指的是傅里叶变换,表示傅里叶逆变换,是一个正规化常量。这里的“离散”指的是数据由有限个变量构成(像素);一维指的是数据是一维的(时间),图像则是二维的,视频则是三维的。

为了更好地理解卷积定理,我们还需要理解数字图像处理中的傅里叶变换。

快速傅里叶变换

快速傅里叶变换是一种将时域和空域中的数据转换到频域上去的算法。傅里叶变换用一些正弦和余弦波的和来表示原函数。必须注意的是,傅里叶变换一般涉及到复数,也就是说一个实数被变换为一个具有实部和虚部的复数。通常虚部只在一部分领域有用,比如将频域变换回到时域和空域上;而在这篇博客里会被忽略掉。你可以在下面看到一个信号(一个以时间为参数的有周期的函数通常称为信号)是如何被傅里叶变换的:

红色是时域,蓝色为频域

你也许会说从没见过这些东西,但我敢肯定你在生活中是见过的:如果红色是一首音乐的话,那么蓝色值就是你在你的MP3播放器屏幕上看到的频谱:

傅里叶域上的图像

我们如何想象图片的频率呢?想象一张只有两种模式的纸片,现在把纸片竖起来顺着线条的方向看过去,就会看到一个一个的亮点。这些以一定间隔分割黑白部分的波就代表着频率。在频域中,低频率更接近中央而高频率更接近边缘。频域中高强度(亮度、白色)的位置代表着原始图像亮度改变的方向。这一点在接下来这张图与其对数傅里叶变换(对傅里叶变换的实部取对数,这样可以减小像素亮度的差别,便于观察更广的亮度区域)中特别明显:

我们马上就可以发现傅里叶变换包含了关于物体朝向的信息。如果物体被旋转了一个角度,从图像像素上可能很难判断,但从频域上可以很明显地看出来。

这是个很重要的启发,基于傅里叶定理,我们知道卷积神经网络在频域上检测图像并且捕捉到了物体的方向信息。于是卷积神经网络就比传统算法更擅长处理旋转后的图像(虽然还是比不上人类)。

频率过滤与卷积

为什么卷积经常被描述为过滤,为什么卷积核经常被称为过滤器呢?通过下一个例子可以解释:

如果我们对图像执行傅里叶变换,并且乘以一个圆形(背景填充黑色,也就是0),我们可以过滤掉所有的高频值(它们会成为0,因为填充是0)。注意过滤后的图像依然有条纹模式,但图像质量下降了很多——这就是jpeg压缩算法的工作原理(虽然有些不同但用了类似的变换),我们变换图形,然后只保留部分频率,最后将其逆变换为二维图片;压缩率就是黑色背景与圆圈的比率。

我们现在将圆圈想象为一个卷积核,然后就有了完整的卷积过程——就像在卷积神经网络中看到的那样。要稳定快速地执行傅里叶变换还需要许多技巧,但这就是基本理念了。

现在我们已经理解了卷积定理和傅里叶变换,我们可以将这些理念应用到其他科学领域,以加强我们对深度学习中的卷积的理解。

流体力学的启发

流体力学为空气和水创建了大量的微分方程模型,傅里叶变换不但简化了卷积,也简化了微分,或者说任何利用了微分方程的领域。有时候得到解析解的唯一方法就是对微分方程左右同时执行傅里叶变换。在这个过程中,我们常常将解写成两个函数卷积的形式,以得到更简单的表达。这是在一个维度上的应用,还有在两个维度上的应用,比如天文学。

扩散

你可以混合两种液体(牛奶和咖啡),只要施加一个外力(汤勺搅拌)——这被称为对流,而且是个很快的过程。你也可以耐心等待两种液体自然混合——这被称为扩散,通常是很慢的过程。

想象一下,一个鱼缸被一块板子隔开,两边各有不同浓度的盐水。抽掉板子后,两边的盐水会逐步混合为同一个浓度。浓度差越大,这个过程越剧烈。

现在想象一下,一个鱼缸被 256×256 个板子分割为 256×256 个部分(这个数字似乎不对),每个部分都有不同浓度的盐水。如果你去掉所有的挡板,浓度类似的小块间将不会有多少扩散,但浓度差异大的区块间有巨大的扩散。这些小块就是像素点,而浓度就是像素的亮度。浓度的扩散就是像素亮度的扩散。

这说明,扩散现象与卷积有相似点——初始状态下不同浓度的液体,或不同强度的像素。为了完成下一步的解释,我们还需要理解传播子。

理解传播子

传播子就是密度函数,表示流体微粒应该往哪个方向传播。问题是神经网络中没有这样的概率函数,只有一个卷积核——我们要如何统一这两种概念呢?

我们可以通过正规化来讲卷积核转化为概率密度函数。这有点像计算输出值的softmax。下面就是对第一个例子中的卷积核执行的softmax结果:

现在我们就可以从扩散的角度来理解图像上的卷积了。我们可以把卷积理解为两个扩散流程。首先,当像素亮度改变时(黑色到白色等)会发生扩散;然后某个区域的扩散满足卷积核对应的概率分布。这意味着卷积核正在处理的区域中的像素点必须按照这些概率来扩散。

在上面那个边缘检测器中,几乎所有临近边缘的信息都会聚集到边缘上(这在流体扩散中是不可能的,但这里的解释在数学上是成立的)。比如说所有低于0.0001的像素都非常可能流动到中间并累加起来。与周围像素区别最大的区域会成为强度的集中地,因为扩散最剧烈。反过来说,强度最集中的地方说明与周围对比最强烈,这也就是物体的边缘所在,这解释了为什么这个核是一个边缘检测器。

所以我们就得到了物理解释:卷积是信息的扩散。我们可以直接把这种解释运用到其他核上去,有时候我们需要先执行一个softmax正规化才能解释,但一般来讲核中的数字已经足够说明它想要干什么。比如说,你是否能推断下面这个核的的意图?

等等,有点迷惑

对一个概率化的卷积核,怎么会有确定的功能?我们必须根据核对应的概率分布也就是传播子来计算单个粒子的扩散不是吗?


是的,确实如此。但是,如果你取一小部分液体,比如一滴水,你仍然有几百万水分子。虽然单个分子的随机移动满足传播子,但大量的分子宏观上的表现是基本确定的。这是统计学上的解释,也是流体力学的解释。我们可以把传播子的概率分布解释为信息或说像素亮度的平均分布;也就是说我们的解释从流体力学的角度来讲是没问题的。话说回来,这里还有一个卷积的随机解释。

量子力学的启发

传播子是量子力学中的重要概念。在量子力学中,一个微粒可能处于一种叠加态,此时它有两个或两个以上属性使其无法确定位于观测世界中的具体位置。比如,一个微粒可能同时存在于两个不同的位置。

但是如果你测量微粒的状态——比如说现在微粒在哪里——它就只能存在于一个具体位置了。换句话说,你通过观测破坏了微粒的叠加态。传播子就描述了微粒出现位置的概率分布。比如说在测量后一个微粒可能——根据传播子的概率函数——30%在A,70%在B。

通过量子纠缠,几个粒子就可以同时储存上百或上百万个状态——这就是量子计算机的威力。

如果我们将这种解释用于深度学习,我们可以把图片想象为位于叠加态,于是在每个3*3的区块中,每个像素同时出现在9个位置。一旦我们应用了卷积,我们就执行了一次观测,然后每个像素就坍缩到满足概率分布的单个位置上了,并且得到的单个像素是所有像素的平均值。为了使这种解释成立,必须保证卷积是随机过程。这意味着,同一个图片同一个卷积核会产生不同的结果。这种解释没有显式地把谁比作谁,但可能启发你如何把卷积用成随机过程,或如何发明量子计算机上的卷积网络算法。量子算法能够在线性时间内计算出卷积核描述的所有可能的状态组合。

概率论的启发

卷积与互相关紧密相连。互相关是一种衡量小段信息(几秒钟的音乐片段)与大段信息(整首音乐)之间相似度的一种手段(youtube使用了类似的技术检测侵权视频)。

虽然互相关的公式看起来很难,但通过如下手段我们可以马上看到它与深度学习的联系。在图片搜索中,我们简单地将query图片上下颠倒作为核然后通过卷积进行互相关检验,结果会得到一张有一个或多个亮点的图片,亮点所在的位置就是人脸所在的位置。

这个例子也展示了通过补零来使傅里叶变换稳定的一种技巧,许多版本的傅里叶变换都使用了这种技巧。另外还有使用了其他padding技巧:比如平铺核,分治等等。我不会展开讲,关于傅里叶变换的文献太多了,里面的技巧特别多——特别是对图像来讲。

在更底层,卷积网络第一层不会执行互相关校验,因为第一层执行的是边缘检测。后面的层得到的都是更抽象的特征,就有可能执行互相关了。可以想象这些亮点像素会传递给检测人脸的单元(Google Brain项目的网络结构中有一些单元专门识别人脸、猫等等;也许用的是互相关?)

统计学的启发

统计模型和机器学习模型的区别是什么?统计模型只关心很少的、可以解释的变量。它们的目的经常是回答问题:药品A比药品B好吗?

机器学习模型是专注于预测效果的:对于年龄X的人群,药品A比B的治愈率高17%,对年龄Y则是23%。

机器学习模型通常比统计模型更擅长预测,但它们不是那么可信。统计模型更擅长得到准确可信的结果:就算药品A比B好17%,我们也不知道这是不是偶然,我们需要统计模型来判断。

对时序数据,有两种重要的模型:weighted moving average 和autoregressive模型,后者可归入ARIMA model (autoregressive integrated moving average model)。比起LSTM,ARIMA很弱。但在低维度数据(1-5维)上,ARIMA非常健壮。虽然它们有点难以解释,但ARIMA绝不是像深度学习算法那样的黑盒子。如果你需要一个可信的模型,这是个巨大的优势。

我们可以将这些统计模型写成卷积的形式,然后深度学习中的卷积就可以解释为产生局部ARIMA特征的函数了。这两种形式并不完全重合,使用需谨慎。

C是一个以核为参数的函数,white noise是正规化的均值为0方差为1的互不相关的数据。

当我们预处理数据的时候,经常将数据处理为类似white noise的形式:将数据移动到均值为0,将方差调整为1。我们很少去除数据的相关性,因为计算复杂度高。但是在概念上是很简单的,我们旋转坐标轴以重合数据的特征向量:

现在如果我们将C作为bias,我们就会觉得这与卷积神经网络很像。所以卷积层的输出可被解释为白噪音数据经过autoregressive model的输出。

weighted moving average的解释更简单:就是输入数据与某个固定的核的卷积。看看文末的高斯平滑核就会明白这个解释。高斯平滑核可以被看做每个像素与其邻居的平均,或者说每个像素被其邻居平均(边缘模糊)。

虽然单个核无法同时创建autoregressive 和 weighted moving average 特征,但我们可以使用多个核来产生不同的特征。

总结

这篇博客中我们知道了卷积是什么、为什么在深度学习中这么有用。图片区块的解释很容易理解和计算,但有其理论局限性。我们通过学习傅里叶变换知道傅里叶变换后的时域上有很多关于物体朝向的信息。通过强大的卷积定理我们理解了卷积是一种在像素间的信息流动。之后我们拓展了量子力学中传播子的概念,得到了一个确定过程中的随机解释。我们展示了互相关与卷积的相似性,并且卷积网络的性能可能是基于feature map间的互相关程度的,互相关程度是通过卷积校验的。最后我们将卷积与两种统计模型关联了起来。

个人来讲,我觉得写这篇博客很有趣。曾经很长一段时间我都觉得本科的数学和统计课是浪费时间,因为它们太不实用了(哪怕是应用数学)。但之后——就像突然中大奖一样——这些知识都相互串起来了并且带了新的理解。我觉得这是个绝妙的例子,启示我们应该耐心地学习所有的大学课程——哪怕它们一开始看起来没有用。

上文高斯平滑核问题的答案


2019-08-07 10:25:59 weixin_42137700 阅读数 29
  • 深度学习与PyTorch入门实战教程

    亚洲排名第1的新加坡国立大学AI团队倾情打造,资深研究员龙龙老师主讲,帮助人工智能、深度学习初学者快速、深刻理解深度学习算法原理与实践。 【莫烦老师】权威推荐:在教学中,龙龙老师以简短高效的方式,从深度学习的多个角度向我们展开了论述,非常适合想对深度学习有全方位了解的朋友。 【PyTorch中文网】:讲解简单易懂、由浅入深,是一门值得推荐的课程。 课程特色: 1. 通俗易懂,快速入门 对深度学习算法追本溯源、循序渐进式讲解,学员不需要任何机器学习基础,只需要写过代码即可轻松上手。 2. 实用主导,简单高效 使用新手最容易掌握的深度学习框架PyTorch实战,比起使用TensorFlow的课程难度降低了约50%,而且PyTorch是业界最灵活,最受好评的框架。 3. 案例为师,实战护航 基于计算机视觉和NLP领域的经典数据集,从零开始结合PyTorch与深度学习算法完成多个案例实战。 4. 持续更新,永久有效 一次购买,永久有效。深度学习课程会持续更新下去,内容和学术界最前沿算法保持同步。

    3760 人正在学习 去看看 龙良曲

理解深度学习

阅读数 269

没有更多推荐了,返回首页