深度学习如何避免成为程序员(全职奶爸的一年深度学习之路)

深度学习如何避免成为程序员(全职奶爸的一年深度学习之路)(1)

【新智元导读】零基础学习深度学习是怎样一种体验?本文作者分享了他仅仅一年时间从零基础到成为研究科学家的历程,并且提出了一些有用的建议。

2018年时,我决心开启深度学习之旅。

2017年10月,在阅读了《纽约时报》一篇描述深度学习人才短缺的文章之后,我偶然发现了一个名叫fast.ai的网站。说它改变了我的生活听起来有点陈词滥调,但那时的我很难想象,一年之后,我会在幕后帮助准备这门课程的下一个版本。

因此,在这篇文章中,我将讲述我个人进入深度学习的历程,并且分享一些建议,我认为这些建议在对六个月前可能对我有用。

深度学习如何避免成为程序员(全职奶爸的一年深度学习之路)(2)

使用神经网络将埃菲尔铁塔添加到一幅画中的示例

我是谁?我从哪里来?

我的背景主要是数学。我拥有法国大学硕士学位;并且曾攻读过博士学位,但六个月后就放弃了,因为我觉得这太令人沮丧了。于是接下来的7年,我继续在巴黎教本科生。对于编程,我是自学的。我13岁时,我父亲就给了我一本《Basic语言入门》。

我在三年半前搬到了纽约,成了半个全职奶爸,半个法国出版社的教科书作者。当我第一次发现fast.ai的时候,我对围绕AI的炒作很好奇,我想知道我是否能理解那些似乎只有少数天才才能理解的东西。

我必须承认,我一开始几乎没怎么上这门课;它声称可以向任何只有一年编程经验和高中数学知识的人解释深度学习,这个说法对我来说非常可疑,我想知道它是不是完全是骗人的(剧透警告:不是)。但我还是决定上完它;我每周抽出7个小时来学习这门课程

虽然我在数学方面有明显的优势,但在我称之为“geeky stuff”的东西上苦苦挣扎。我是一名Windows用户,之前从未使用过终端。在终于能够训练自己的狗猫分类器之前,仅仅是设置就花了我一个多星期的时间。每次不得不在终端上运行一些命令时,感觉就像是某种形式的折磨(这一点仍然没有多大改变!)

如果你是这个领域的新手,并且正在其中的某个部分(或全部)挣扎,请记住,没有人能轻松地做到。总有一些事情是你不知道,那会是一个挑战,但如果你坚持下去,你就会克服它。随着时间的推移,它会变得更容易,至少会容易一点……我有一半的bash命令仍然需要帮助,并且在第一节课中两次损坏了文档和课程网站。幸运的是,大家都忙着看Jeremy讲课,没有人注意到这些。

你需要高等数学才能进行深度学习吗?

简单地说,答案是否定的。长篇大论地说,答案仍然是否定的。任何告诉你相反答案的人都只是想吓唬你而已。在深度学习的某些理论研究领域,你可能需要高等数学,但每个人都有自己的空间。

要在实践中训练一个模型,你只需要知道三件事:知道导数是什么,知道误差函数的log和exp,以及知道矩阵乘积是什么。你可以在很短的时间内,利用多种在线资源学习所有这些知识。在课程中,Jeremy推荐了可汗学院学习导数、log和exp,以及3blue1brown网站学习矩阵乘积。

在我看来,你真正需要掌握的是数学是“broadcasting”(有点像数学和编程的交叉领域)。

如果你是认真的,那就制定自己的学习计划

在完成课程的第一部分后,我很清楚我想在这个领域工作(因此我有了很强的决心)。我考虑了各种各样的培训课程,这些培训承诺可以把我变成一名数据科学家,条件是巨额的学费。我在网上找到了很多培训课程的褒奖评价,这让我有点害怕,幸好我很快就放弃了这个想法。

网上有足够多的免费(或廉价)资源,能够教你所需要的一切。所以只要你足够自律,就可以制定自己的学习计划。最好的当然是fast.ai的课程(但我现在fast.ai工作,所以有点偏颇;))。

我以为我不会被选入International Fellowship,免费获得第二部分课程,所以当收到录取邮件时我有点措手不及。我订了一个共享办公的地方,让自己远离有一个婴儿和一个蹒跚学步的小孩的家里,还雇了保姆。然后,每天朝九晚五,加上晚上,我都在学习。我原以为我会接着上其他MOOC,但Jeremy在论坛上布置的挑战性作业,以及那里充满活力的社区,让我一直没有时间去寻找其他地方。

虽然这门课的目的是让人们每周花7个小时做作业,但它绝对足够让你忙更长时间,尤其是在第二部分。如果你认真考虑转行深度学习,那么你应该花七周的时间来努力完成这门课。如果你能负担得起金钱或家庭方面的费用,你也可以自己飞到旧金山,每天去参加南加州大学的学习小组。如果你做不到,那就在你所在的城市里找到一个学习小组(或者成立自己的小组)。无论如何,都要在论坛上保持活跃,不仅要在出现bug时提问题,还要帮助其他人写代码。

展现你的能力

我很害羞,我讨厌交际。认识我的人都知道,我不善于闲聊。幸运的是,有很多方法可以让你在安全的电脑屏幕背后向潜在雇主推销自己。

以下是一些可以提供帮助的事情:

  • 制作你自己的项目,来展示你学到了什么。在转移到另一个项目之前,一定要彻底完善前一个项目。
  • 写博客来解释你学到了什么。不一定要写复杂的新研究文章,可以从模型的基础开始,即使你认为已经有成千上万这样的文章了。仅仅通过尝试解释你认为你已经理解了的东西,就能学到很多。
  • 为深度学习相关的开源项目(比如fastai library)提交贡献。
  • 参加Kaggle竞赛(这条仍然在我的待办事项清单上,也许这将是我2019年的决心)。
  • 建立一个Twitter账户,告诉人们以上所有的事情。

在课程还没结束的时候,我就得到了几份工作offer,这让我非常惊讶。然后, Jeremy提到他要重fastai library,我主动提出帮忙。事情顺水推舟,他设法得到了AWS的赞助,让我成为了fast.ai的研究科学家

学习的三个阶段

在我看来,学习都有三个阶段。首先你要抽象地理解某件事,然后你要能够解释它,最后你要能设法实际做到。这就是为什么你是否能够自己重写一遍课程上看到的代码非常重要。

就深度学习而言,上完了课程是我的第一阶段;第二阶段是在论坛上写博客文章或回答问题;第三阶段就是和Jeremy 一起重建fastai library。

在过去的几个月里,我学到的东西甚至比我在跟着学完课程时还要多。其中有些内容我很快就放弃了,还有很多是在Jeremy的指导下通过重构代码实现的,直到最后得到今天看到的结果。构建一个完全集成的框架意味着你必须实现所有内容,因此你需要掌握流程的每个部分。

总之,这是我一生中学习最多的一年。我将永远感谢Rachel和Jeremy创造了这门神奇的课程,我很自豪能为它做出一点小小的贡献。

原文:

https://www.fast.ai/2019/01/02/one-year-of-deep-learning/

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页