如果你是一个软件工程师(或者你现在正在学习这一方面),你肯定有机会听说过深度学习(有时候深度学习缩写为"DL")。它现在是一个热门、且快速发展的研究领域,解决工业界的一系列问题,从图像识别、手写识别到机器翻译,更甚于AlphaGo4比1击败了世界围棋冠军。
大部分人认为找与深度学习相关的工作应该具有博士学位或者大量的相关经验,但是如果你已经是一名很好的工程师,那你就可以很快、很好的学习这些必要的技能和技巧。至少,这是我们的观点。(即使你是深度学习的初学者,非常欢迎您加入我们的职位申请)
重点:你对这一行业有着激情与兴趣,且具有很好的编程和解决问题的能力就足够了。
在Deepgram中,我们主要应用深度学习来解决语音搜索的问题。主要是我们教会机器去听、记录电话、在线视频、播客和其他音频等的谈话内容。但听仅仅是其任务的一半。正如我们的大脑是通过你回想起的那些关键词和短语的声音来寻找记忆中的谈话一样,我们也教会机器回想起那些记录中的关键词和短语。(如果你还没有玩弄Deepgram,我们有一个小演示来展示它的一些功能。)
乍看起来,感觉深度学习有点吓人,但好消息是,现在有比以往任何时候都要多的学习资源。(还有大量被禁锢需求的工程师知道如何实现深度学习的软件)。所以,如果你想要找到一份深度学习工作,首先你需要调整你自己的学习速度,那就让这篇成为你深度学习的指导吧!(如果你已经非常了解深度学习,且只是寻找工作信息,那就跳到底部。)
◆ ◆ ◆
什么是深度学习?
总的来说,深度学习包括建立和训练一个大型的人工神经网络,该神经网络在输入和输出之间具有许多隐藏层。正是因为这些隐藏层,我们才称呼这些神经网络为"深度"。至少具有三层隐藏层才能叫深度神经网络,但现有的一些神经网络已具有上百层。
神经网络是一个复杂的统计模型,它通过计算机来对信息进行一个非常准确的抽象表示。你可能会问,什么样的信息?就像我们以前提及的,Deepgram的深度神经网络是专门训练来“理解”并在语音数据上进行操作,但深度神经网络已经应用于大量的其他方面,从医学扫描检测癌症到预测能源价格和气象建模。
在深度学习方向有很多著名的成员。在学术方面,多伦多大学的杰弗里-辛顿的实验室、纽约大学的雅安·勒存小组和斯坦福大学人工智能实验室是深度学习研究领域的引领者。在工业界,谷歌已经率先应用深度学习于搜索和计算机视觉,百度首席科学家AndrewNg,其作为Coursera的主要创始人,在上面贡献了大量深度学习有关的科学文献和教程。
今天学习深度学习为什么如此容易,即便是新手?主要有两个原因:首先,计算硬件设施的快速发展和便宜足以让深度学习技术能在几乎任何一个像样的显卡上运行。(通过我们的测试,发现对于一个正在使用的算法,基于GPU服务器的速度是CPU核的400倍) 其次,大量的深度学习资源开放平台,如TensorFlow、Theano和 Caffe,使实现自己的深度神经网络相当容易,尤其是自己不必从头开始构建一个神经网络。
当然,还有很多深度学习相关的知识需要去学习,但这就是本篇指南的目的!
◆ ◆ ◆
深度学习前的必备知识
说到数学,你肯定对微积分、概率论和线性代数很熟悉。这些知识将帮助你去理解深度学习的理论和规则。
当然了,这也需要一些编程知识。正如你所看到的这个深度学习库列表,大部分流行的深度学习库是用Python和R语言编写的,所以,了解Python和R语言会对你很有帮助。
如果你需要提高你的数学和编程技巧,网上有大量的高质量资源可以学习和使用。
同时,正如我们上面提到的,需要有一个像样的显卡(或通过云计算平台,如Amazon Web服务或这里列出的其他提供商之一来访问GPU实例)。
◆ ◆ ◆
去哪学习深度学习
关于深度学习的探讨和文章
如果你是在全新的领域,且在寻找一些深度学习知识概念后的高层次解释,而不是迷失在数学和编程方面的话,这有一些资料来帮助你对这些专业概念和术语的了解。
-
威斯康星大学有一个one-webpage神经网络的综述。
-
Brandon Rohrer,微软的主要数据科学家,在波士顿开放数据科学会议上做过一个演讲,其主要是通过少量数学和计算机术语来解释和阐明深度学习。这个页面有相关的视频和资料。
-
深度学习的开拓者Geoffrey Hinton,他是第一个演示使用backpropogation算法训练神经网络。他现在不怎么参加多伦多大学的学术,而是领导谷歌的一些人工智能研究工作,我们都很喜欢他的“神经网络实际怎样工作”这么一个简短但却富有启发性的谈话。你还可以在他的教师主页找到他的"没有太多数学"的深度学习论文列表。
-
Steve Jurvetson,DFJ的创始合伙人,硅谷的风险投资公司成员,在深度学习领域领导了一个斯坦福大学商学院的讨论小组。如果你有兴趣从工业界一些创业者和工程师的角度来学习深度学习,看看视频吧。
如果你想深入,熟悉一些数学,有着简单的代码示例,还可以讨论深度学习的应用,可查阅斯坦福毕业生Andrej Karpathy的博文“The Unreasonable Effectiveness of Recurrent Neural Networks”。
在线课程
如果你是那种喜欢和从在线课程获取大量知识的人,你很幸运。这有几个很好的深度学习网上课程。
-
Andrew Ng的斯坦福大学机器学习课程很受欢迎,通常广受好评。它被认为是最好的机器学习入门课程,将给你一些深入研究深度学习的准备。
-
Udacity有一个免费的,十周的机器学习课程,着重于理论与实际的应用。对深度学习感兴趣的人这会是一个全面的预备课程。加州理工学院的Yaser S. Abu-Mostafa自学课程,“Learning From Data”课程在数学上密度涉及较少,但它仍然是一个非常全面的学习机器学习理论和技术的课程。
-
Andrej Karpathy的"CS231n: Convolutional Neural Networks for Visual Recognition",斯坦福大学的课程是具有一定的挑战性,但它是在深度学习上很好的教程,其教学大纲和详细的课程笔记在网上都可以下载。
-
Geoffrey Hinton的课程"Neural Networks for Machine Learning" 也很好,这是一个做为该领域的教父级别课程。
书籍
也许在线学习不是你的菜,或你只是喜欢看讲座和复习幻灯片。我们推荐一些值得阅读的书籍:
-
Andrew Trask的Grokking Deep Learning旨在提供一个可理解、实用指南的深度学习技术。如果你以前了解一些Python和代数知识,那你100%的需要这本书。
-
Ian Goodfellow、 Yoshua Bengio 和 Aaron Courville的Deep Learning,将在麻省理工学院出版社(MIT Press)出版。到目前为止,这是一个早期在线的免费版本、外加一些幻灯片讲座和练习。
其他学习资源和网站
-
Metacademy是一个非常酷的站点,它是一个非常切实可靠的 深度学习概述,且有许多该领域特定主题的大量链接。
-
谷歌Brain team中的Denny Britz,在他的网站WildML上有很全面的深度学习专业术语介绍。他还建了a weekly newsletter,其中还包含了对机器学习和深入学习的技术性与非技术性文章。
◆ ◆ ◆
深度学习在哪实践
一旦你具备了相关的基础知识,你将准备好进行一些实际数据和练习。这有些网站,你能够找到一些简单的数据集和实现时遇到的一些问题:
-
Kaggle有大量的数据集,其从SF/Bay Area Pokemon Go spawn points到Y Combinator companies再到Hillary Clinton's leaked emails的巨大文本语料。
-
UC Irvine收藏了一个大的数据集来训练深层神经网络。
-
对于喜欢Python笔记的人,Alexander Johansen整理了一个很不错的关于如何使用TensorFlow的5个部分教程(与其他的深度神经网络DNN库教程相链接)。
◆ ◆ ◆
在哪寻找也对深度学习感兴趣的人
不管你是一个业余者还是在深度学习研究最前沿的博士生,在社区之间进行交流总是好的。这里提供了一些地方来寻找都对深度学习感兴趣的同道中人:
-
你应该看看你所在的城市是否有一个机器学习或深度学习的小组,比如说Meetup.com。大部分的主要城市是有的。
-
有关于数据深度学习和衍生见解的几个在线社区:
-
Deeplearning.net是一个学习深度学习相关信息的网站。它的资源包括:综合阅读书单,深度学习研究实验室列表和一组优秀的演示,这样你就能发现深度学习的实际应用。
-
Datatau有点像黑客新闻,但特别关注数据和机器学习。它的评论部分不是很活跃但有定期发布的新链接。
-
这有一个非常活跃的机器学习板块,(他们有非常有用的wiki和其他更多资源)。但深度学习板块就稍微要沉闷一点。
-
令人惊讶的是,Google+发展了一个超过30000注册用户的深度学习小组。(谁知道人们现在还用Google+吗?)
-
◆ ◆ ◆
关于深度学习在哪找工作
好消息是,基本上每个人都想招聘懂深度学习的人。
你可能知道去一些大众的地方寻找相关工作:股权众筹平台AngelList,黑客新闻的每月“谁招聘”栏目,*的招聘工作板块和许多求职网站。
一些关于深度学习岗位的工作可在Deeplearning.net的招聘板块上发现,在Kaggle上也有更多的关于机器学习工作的招聘板块。
这绝对是一个重磅消息。大多数公司在寻找深度学习和机器学习的人才时,并不会设置申请人要通过人力资源部门的环节。
当你申请职位了你该怎么做
在你申请这份工作前公司想看你是否做过一些很好、很酷的东西。
如果你没做过那你就没有面试的机会,如果你曾经做过,那无论你的背景怎样都会有一个机会的。当然了,什么是很好、很酷的东西,我们稍后解释。
如果你唯一的经验是构建一点点成功的小型项目,你很可能没有面试机会(尽管它可能会为大公司工作或者一些公司需要这一部分运行机器学习)。但是如果这样:
"我通过使用Theano 建立了一个twitter深度神经网络分析并且对于预测话题有很高的准确率:
-
这是我实验得到的准确率
-
这是我的实验报告链接
-
这是我github上的代码链接"
这样的东西将会使你获得面试的机会。在你面试的时候你就应该发挥出你编代码的魔力与解决问题的能力。
原文发布时间为:2016-10-13
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号