1. 聚能聊>
  2. 话题详情

深度学习真的可以零基础入门吗?

有人如是问

  1. 深度学习——我该从哪里开始呢?
  2. TensorFlow 是现在最流行的吧?
  3. 我听说 Caffe 很常用,但会不会太难了?

TensorFlow

对于那些听说过深度学习但还没有太过专门深入的人来说,TensorFlow 是他们最喜欢的深度学习框架,但在这里我要澄清一些事实。
在 TensorFlow 的官网上,它被定义为「一个用于机器智能的开源软件库」,但我觉得应该这么定义:TensorFlow 是一个使用数据流图(data flow graphs)进行数值计算的开源软件库。在这里,他们没有将 TensorFlow 包含在「深度学习框架」范围内,而是和 Theano 一起被包含在「图编译器(graph compilers)」类别中。
在结束了 Udacity 的 Deep Learning 课程(https://www.udacity.com/course/deep-learning--ud730)之后,我的感觉是 TensorFlow 是一个非常好的框架,但是却非常低层。使用 TensorFlow 需要编写大量的代码,你必须一遍又一遍地重新发明轮子。而且我并不是唯一一个这么想的人。

Theano

Theano 是最老牌和最稳定的库之一。据我所知,深度学习库的开端不是 Caffe 就是 Theano。
和 TensorFlow 类似,Theano 是一个比较低层的库。也因此它并不适合深度学习,而更适合数值计算优化。它支持自动的函数梯度计算,带有 Python 接口并集成了 Numpy,这使得它从一开始就成为了通用深度学习领域最常使用的库之一。

Keras

「You have just found Keras.」
上面这句话是你打开文档页面时看到的第一句话。在起步时就已经有了足够的深度学习知识,但我没有时间自己手动编写功能,也没有时间探索和学习一个新的库(截止时间不到 2 个月,而我还有课要上)。然后我发现了 Keras。
我真的很喜欢 Keras,因为它的句法是相当明晰的,它的文档也非常好(尽管相对较新),而且它支持我已经掌握的语言 Python。它的使用非常简单轻松;我们也能很直观地了解它的指令、函数和每个模块之间的链接方式。
Keras 是一个非常高层的库,可以工作在 Theano 和 TensorFlow(可以配置)之上。另外,Keras 强调极简主义——你只需几行代码就能构建一个神经网络。

Lasagne

Lasagne 是一个工作在 Theano 之上的库。它的使命是简化一点深度学习算法之下的复杂计算,同时也提供了一个更加友好的接口(也是 Python 的)。这是一个老牌的库,并且很长时间以来它都是一个扩展能力很强的工具;但在我看来,它的发展速度赶不上 Keras。它们的适用领域都差不多,但 Keras 有更好的文档、也更完整。

Caffe

Caffe 不只是最老牌的框架之一,而是老牌中的老牌。
在我看来,Caffe 有非常好的特性,但也有一些小缺点。起初的时候它并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。在我们实验室的实验中,CaffeNet 架构的训练时间在 Caffe 中比在 Keras 中(使用了 Theano 后端)少 5 倍。Caffe 的缺点是它不够灵活。如果你想给它来一点新改变,那你就需要使用 C++ 和 CUDA 编程,不过你也可以使用 Python 或 Matlab 接口进行一些小改变。
Caffe 的文档非常贫乏。你需要花大量时间检查代码才能理解它(Xavier 初始化有什么用?Glorot 是什么?)
Caffe 的最大缺点之一是它的安装。它需要解决大量的依赖包……我曾经安装过 Caffe 两次,真正痛苦至极。
但要清楚,Caffe 并不是一无是处。在投入了生产的计算机视觉系统的工具上,Caffe 是无可争议的领导者。它非常稳健非常快速。我的建议是:用 Keras 进行实验和测试,然后迁移到 Caffe 中进行生产。

DSSTNE

DSSTNE 的发音同 Destiny,是一个酷劲十足的框架却总是被忽略。为什么?除去其他的因素不谈,原因在于这个框架不具有普适性,不是为一般常见任务所设计的。DSSTNE 框架只做一件事——推荐系统,但把这件事做到了极致。既不是为研究而设计,也不是为测试 idea 而设计(来源其官方网站的宣传语),DSSTNE 框架是为量产而设计。
我们已在 BEEVA 上做一些实验测试了,目前我已经感觉到这是一个运行非常快的工具并且能够得到非常好的运行结果(平均准确率均值——mAP 很高)。为了达到这一速度,DSSTNE 框架用 GPU 运行,这也是它的弊端之一:不同于篇中分析的其他框架或者库,这个框架不支持使用者随意在 CPU 和 GPU 中切换,而这可能会对有些尝试有用,但我们在 DSSTNE 里做这样的尝试时是不被框架所允许的。
还想说明一点,这个框架对编程能力没有要求。DSSTNE 框架通过其终端的命令行来执行相关操作。
到目前为止,很多我知道也很流行的框架和库我还没有用过,我不能给出更多具体的细节。

Torch

在这个世界上每天仍有很多战争,但是一个优秀的「勇士」(西班牙语「Guerrero」)必须熟知哪些战争是需要去参加作战的,哪些是可以选择不参与的。
Torch 是一个很著名的框架,因巨头 Facebook 的人工智能研究所用的框架是 Torch,并且在被谷歌收购之前 DeepMind 也是用的 Torch(收购之后 DeepMind 转向了 TensorFlow)。Torch 的编程语言是 Lua,这就是我刚才所谈的「战争」的具体所指。在目前深度学习编程语言绝大部分以 Python 实现为主的大趋势下,一个以 Lua 为编程语言的框架的最大劣势莫过于此。我从未用使用过这个语言,如果我想使用 Torch 这个工具,毫无疑问我需要先学习 Lua 语言然后才能使用 Torch。这固然是一个合理的过程,但就我个人情况来说,我偏向于用 Python、Matlab 或者 C++的实现。

MXNet

mxnet 是一个支持大多数编程语言的框架之一,包括 Python,R,C++,Julia 等。但我觉得使用 R 语言的开发者会特别偏爱 mxnet,因为至今为止还是 Python 以不可置疑的态势称霸深度学习语言的(Python 与 R 的对决,猜猜我会站哪边?:-p)
老实说,在此之前我并没有很关注 mxnet。但是当亚马逊 AWS 宣布选择 mxnet 作为其深度学习 AMI 的库时触发我开始关注 mxnet。我必须去了解一下。后来我获知亚马逊把 mxnet 列为其深度学习的参考库并宣称其巨大的横向扩展能力。我感觉到这里面有一些新的改变发生而且我必须深入了解。这也是为什么我们 2017 的 BEEVA 的技术测试名单里有 mnxet 的原因。
我对多 GPU 的扩展能力有点疑虑并且我很原意去了解这样实验的更多细节,但目前我还是对 mxnet 持怀疑态度。

DL4J

我接触这一库,是因为它的 documentation。当时我正在寻找受限玻尔兹曼机、自编码器,在 DL4J 中找到了这两个 documentation。里面的文件很清楚,有理论,有代码案例。我必须得说 DL4J 的 documentation 简直是艺术品,其他库在记录代码的时候需要向它学习。
DL4J 背后的公司 Skymind 意识到,虽然在深度学习圈内 Python 是老大,但大部分程序员起自 Java,所以需要找到一个解决方案。DL4J 兼容 JVM,也适用 Java、Clojure 和 Scala,随着 Scala 的起起落落,它也被很多有潜力的创业公司使用,所以我还会继续紧追这个库。
此外,Skymind 的 twitter 账户非常活跃,不断公开最新的科学论文、案例和教程,及其推荐大家关注。

Cognitive Toolkit

认知工具包(Cognitive Toolkit)之前被大家所知的缩略是 CNTK,但是最近又重命名回归到 Cognitive Toolkit,很可能是想沾最近微软认知服务(Microsoft Cognitive services)的光。在公开的基准测试上的表现来看,这个工具似乎很强劲,支持纵向和横向的推移。
目前为止,Cognitive Toolkit 似乎不是很流行。我并没有读到很多关于使用这个库的博客、在线实验案例或者在 Kaggle 里的相关评论。但是对我来说,一个背靠微软研究的框架特别强调自己的推移能力让我觉得有些奇怪,毕竟微软研究团队可是在语音识别上打破世界纪录并逼近人类水准。
我在查看他们项目百科的一个范例的时候了解到 Cognitive Toolkit 在 Python 上的语法和 Keras 是非常相类似的(Cognitive Toolkit 也支持 C++),这不禁让我在想(并不是确认)Keras 才是正确的方式。

如果你想进入这一领域,你应该首先学习 Python。尽管这一领域还支持其它很多语言,但 Python 是应用范围最广而且最简单的一个。
如果你是初学者,使用 Keras,如果不是初学者,也可以使用它。如果你参加过 Kaggle 比赛,你肯定注意到了 Kaggle 的两大巨星:Keras 和 XGBoost。

  • 您怎么看待最近关于深度学习的热潮?
  • 上面提到的这些库,你中意哪个?为什么?
  • 深度学习真的可以零基础入门吗? 你怎么看?
参与话题

奖品区域 活动规则 19天后 结束

  • 奖品一

    优酷VIP季卡 x 2

  • 奖品二

    定制笔记本 x 1

  • 奖品三

    手机话费 x 3

14个回答

1

海洋的云 已获得手机话费

您怎么看待最近关于深度学习的热潮?
其实深度学习的热潮是紧跟在云计算、大数据的火热之后的,深度学习是趋势,但是深度学习的门槛不低,所以人才缺口还很大,希望能有更多热爱技术的人参与到这场技术变革中。
上面提到的这些库,你中意哪个?为什么?
目前在用的是TF,其他的还没有用,所以没有所谓的中意不中意的啦,不过精力有限的话还是以一个为主比较好,其他的时间精力充裕的话还是会接触学习下的。
深度学习真的可以零基础入门吗? 你怎么看?
我觉得除非是天才,否则普通人应该很难零基础入门的吧,至少一些基本的数学和机器学习算法需要有一定的学习和理解,同时有比较好的动手能力。而且我觉得如果想对深度学习有很深的理解和应用,想在深度学习的路上走得更长远的话,需要读不少paper,所以理论基础还是很有必要的。还有就是业务需求,更多的深度学习,在于实际业务需求相结合的时候,才能更大的发挥它的价值。

happycc 回复

可以说说你哪个专家认证的V 是怎么来的吗?

评论
1

北方的郎 已获得手机话费

您怎么看待最近关于深度学习的热潮?
现在的深度学习主要是神经网络,神经网络的概念已经起起伏伏好几次了。现在深度学习重新火爆是因为硬件突破了瓶颈,再加上算法优化,解决了很多实际的问题。就像有人总结的深度学习的十大成果:
1、还在为一张像素低的图片头疼吗?Deep Learning可以预测出此图片在高像素环境下的呈现,并且加上缺失的细节。
2、Deep Learning使得文字转语音系统与真人声音几乎无差异。想想这个功能能带来的可能性!
3、Deep Learning可以创作一首古典乐曲,你会以为它是由真人创作的。
4、Deep Learning可以将你自由选择的一幅图片转化成你喜欢的画家的创作风格。
5、Deep Learning可以生成很多字体!
6、Deep Learning可以通过预测一幅画缺失部分应该有的样子,来自动补全这幅画。
7. Deep Learning可以训练机器人像人类一样行走。
8、Deep Learning可以理解并为图片添加描述,就像人类一样。
9、想要画一幅风景画但心有余而力不足?不用担心,Deep Learning可以帮你画出来。
10、Deep Learning最棒的在于无人驾驶,你可以训练深层神经网络来控制一辆轿车,就像人类驾驶一样。
上面提到的这些库,你中意哪个?为什么?
Tensorflow,功能全面,强大。
深度学习真的可以零基础入门吗? 你怎么看?
这个还是需要一些基础的吧,数学的,编程的,还是要有一点基础的。否则学起来肯定很累。

0

达摩250 已获得优酷VIP季卡

近来,深度学习成为一个流行词。有分析师认为,它会削弱现有机器学习方法的地位。实际上,深度学习并不是一个新概念,它是上世纪90年代就已经出现的人工神经网络(ANN)算法的一种扩展。由于ANN需要极大的数据集用于训练,所以被边缘化了。深度学习算法为ANN带来了新生,它会训练多层ANN,而所需的数据比先前的预期要少。近日,数据科学家Anubhav Srivastava撰文分享了一些有关深度学习的看法。

深度学习可以更好地通过增加数据集的规模来改善学习结果,这是人们需要这种算法的原因。在实际的解决方案中,深度学习更适合于未标记数据,而这超出了自然语言处理的范畴,后者更多限于实体识别。与传统的机器学习工具相比,深度学习挖掘了神经网络的潜力。基于强大的特征提取,它比其他工具更适合模式识别(图像、文本、音频)。

但是,深度学习并不会取代其他所有的机器学习算法。对于许多应用而言,一些简单点的算法(如逻辑回归、支持向量机)就已经足够。支持者之所以为深度学习而兴奋,一个基本的原因是,它是一种不同于线性或内核模型的元算法。这意味着,深度学习没有任何损失函数的特性,而且不受特定的公式限制,可以为科学家提供更大的灵活性。

有分析师认为,深度学习是最像大脑的算法,但Anubhav认为这种观点有些片面,并以Numenta为例进行了进一步的阐述。Numenta“皮质(cortical)”算法基于分级时序记忆(HTM)模型,而后者是在“稀疏分布记忆(sparse distributed memory)”概念的基础上发展而来,那是一种学习人类长期记忆的数学模型。皮质算法既可以从空间维度,也可以从时间维度进行特征提取,使它更像是大脑的仿制品。

有鉴于此,Anubhav认为,目前围绕深度学习和Numenta的一些争论不甚合理。有种观点是,Numenta HTM适合无监督学习,并将此视为其相对于深度学习算法的一个重大优势。还有一种观点是,Numenta可以视为一种时间-内存需求更小的在线学习算法。Anubhav指出,有一个很重要的事实被忽略了,就是深度学习是一个多层模型。在多数情况下,神经网络模型一次只能求解一种问题类型,面对多种问题类型时,就需要使用混合模型。在这方面,深度学习算法的多层模型是一个巨大的优势,即使Numenta也无法与其相比

0

无神

每天逛逛社区,也能收获不少

浮生递归 回复

你这是灌水

无神 回复

嗯~ o(* ̄▽ ̄*)o,这可是收获之后,发自肺腑的感概。

浮生递归 回复
回复@无神:

发自肺腑的灌水

happycc 回复

洪涝

评论
0

1826595204426902

现在在RNA研究上,老板开始让我们学人工智能框架,说是以后八成会用上,还把实验室的主流语言从Java换成了Python。
然后我不知为何就跳进了Django的大坑,现在感觉自己快变成前端了。。。

0

1772105689816201

谁可以告诉我这里是干嘛用的,我一点也不懂?

0

1166804685104417

我想学习,但是时间不允许,家人,想结婚的女朋友 ,经济负担不起的学了

0

29231148

不错

0

kouryoushine

其实我想知道,如果智能时代来临,还需要码农吗?

0

1049503386799567

我还在入门机器学习了,看样子,我还有很长的路要走啊。

0

uileader

这要看你学习的态度,不过你要是有基础知识的情况学起来会比较有思路,不然你学习的时候都不知道哪方面是你现阶段需要学习的。

0

快看耶灰机

深度学习的现在的各个方面的知识太多了,能推荐下主流的不?

0

硬木头

我属于入门级别的菜鸟,全部看完,学到不少。感谢

0

1158505197325598

好难

1971
浏览
0
收藏
邀请他人互动
关注
17
粉丝
80
话题
20

简介:

千年老司机--自虐之旅

专利:

2017年 2月 1

著作:

2003年 2月 1
阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的方式可视化的操作组件来进行试验,...

在云上签发Symantec、WoSign、CFCA证书,实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听...

帮助您基于阿里云构建出一个隔离的网络环境。您可以完全掌控自己的虚拟网络,如选择自有 IP 地址范围、划分网段、配...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...