你好,我是方远。

固定的打招呼开头,但是这节课却是咱们这个专栏的最后一节课了。感谢你一路坚持学习到这里,现在有没有感觉要解放了?哈哈。

不过解放之前,让我们一起快速回顾一下这门课程咱们学了什么,我也会像电影点映后的发布会那样,顺便揭秘一下,我为什么要这样讲。

咱们的课程核心是PyTorch实战,但是实战就跟习武一样,得先挑几件趁手的兵器,要不只能秒送人头。

正所谓“工欲善其事,必先利其器”,所以在最开始的时候,我们并没有上来就聊PyTorch本身,而是讲了如何使用NumPy工具,还一起研究了Tensor的数据结构。

如果你是一个算法工程师,很容易就会发现,在非常多的场景下都有NumPy的出现,因为无论从数据操作的便捷性、友好性还是通用性,NumPy都是强大到没朋友。就算你以后不用PyTorch开发,甚至不做深度学习开发,NumPy也是你躲不开的宿命。所以,我希望你在以后的学习中,对于NumPy以及Pandas的内容还是要多多关注。

而我们之所以要花不少篇幅来学习Tensor,也是因为它的通用性。不过咱们以前都习惯了dict、list、set这样的数据结构,以及NumPy中ndarray这样的通用数据处理格式,忽然转变操作数据的方法,肯定是有一个适应的过程,特别是像数据切片、数据变形、维度变化这样看不见、摸不着的操作,你感觉一个脑袋两个大,也是很正常的。

我想和你强调的是,Tensor玩转了之后,在以后的深度学习开发中,无论你使用PyTorch还是TensorFlow亦或是未来新出来的框架,都可以让你快速上手,从青铜迅速变王者。

掌握基础工具的使用,就如同选好了一把大宝剑,接下来就得学习训练模型所需要的招数和心法了。深度学习常用的内容比如卷积、损失函数、优化函数、梯度更新都是重中之重,甚至可以说是缺一不可了,咱们花了不少篇幅来细致地讲解其中的知识点,相信你现在应该也到了张口就来的地步了。

为了聚焦重点,其他类似全连接、池化等简单的结构咱们则是简要带过,你有兴趣可以课后了解,毕竟咱们要快速上手的。既然是实战,咱们就要从实际、客观、高效的角度去借鉴前人的工作成果,于是例如Torchvision、可视化工具、分布式训练方法等内容可以让我们少绕弯路,直达目标。

兵器也有了,武功也会了,就得出门下山历练了,否则光说不做,就全成了嘴上功夫。每一个成就的解锁,都需要我们挑战一个个艰难的任务,所以我特别为你安排了图像和文本算法任务这两个大Boss。

细心的同学不难发现,在每个任务开始之前,我都会向你介绍这个大Boss的背景,比如在NLP部分,我先向你介绍了NLP领域的几大内容、常用算法等,这样你才能更好地理解任务的目的和解决思路。

当你完成了整个课程,就相当于完成了习武历练的过程,从此以后,你就可以独立完成基于PyTorch的深度学习Pipeline了,是不是非常棒?

图片

但是这就是全部吗?不是,还差得远。

通过这样一个PyTorch的专栏,最根本的目的不是让你知道如何使用它,而是希望你借助它高效便捷地了解深度学习。这个链接是PyTorch的官方文档。你会发现这里面的内容浩如烟海,但是我们没有必要把它所有的函数功能都学会,它是一个工具,仅此而已。

所以,临别之际,对于即将踏上AI之途的小伙伴,我有几句话想对你说,简单概括是“五个保持”。

第一,保持好奇。人工智能是一个更新迭代非常快的领域,以前很火的内容,可能没过多久就过时或者很少使用了,比如之前的RNN之于现在的Attention。所以你一定要多看论文,每年的顶会论文都是最好的学习资料。

后面我列出了CV和NLP领域的顶会,供你参考。

图片

看完这份清单,有心人自然知道去搜搜这些会议的时间。会议结束后,你就可以自行查找各种论文的分析介绍了,当然还是建议你尽可能看原版。不过哪怕你看不懂长篇大论的英文论文,没有关系,中文版本的论文分析介绍也不少,这样也可以提高。

除了这些会议,还有不少是比较综合性的人工智能会议,比如IEEE、ICLR等等,你同样可以按需关注。

第二,保持平和。作为过来人,我想说,在以后的深度学习开发过程中,你会见识到各种各样奇葩的结果。

比如明明训练过程中各项指标都好好的,一到预测环节就崩盘的情况。这都算常见的。再比如两张差不多的图片,只因为其中一张多了几个色块或者形状,导致最后的结果大相径庭,这种case查起来就非常的“蓝瘦香菇”了。又或者你会因为业务提供的数据资源有限而苦恼,要么量太少、要么太不平衡,这些都是很难用技术的思路去解决的。

所以你要多多参与项目,多接触不同的场景,慢慢的……你就习惯了哈哈。当然,这不意味着破罐子破摔,而是随着历练的增多,你终会找到或者学到解决这些困难的办法。其实每一个深度学习算法工程师的成长,都是靠着一个又一个的狗血问题一路走来的。

第三,保持谦逊。诚然,算法工程师特别是深度学习算法工程师,目前是IT领域第一梯队的存在,也是好多IT人羡慕的工作,但是一定要记住山外有山,要多向别人取经,多向前人借鉴,才能让自己一直有足够的竞争力。

第四,保持童心。实不相瞒,我打小就想当超级英雄拯救世界,一直到今天也这样。这并不可笑,反而这是很真实的自我。保持童心,可以让你时时刻刻充满天马行空式的想象,而AI领域从业者最大的限制恰恰不是技术,而是想象力

有了想象力,你可以开发仿生的阿尔法狗,你可以开发堪比艺术家的创作AI,你可以心血来潮搞一个大变脸AI把自己无缝放入任何好莱坞大片中。在AI的世界,你可以改变世界,就可以成为真正的超级英雄。

还有一条,保持活力。这与技术无关,码农的秃顶、肥胖、腰间盘突出、前列腺炎、啤酒肚、油腻、格子衫……这些已经在网络上被黑了无数次了。其实这一方面是他人的刻板印象,一方面可能真的是咱们的现状。

我建议你跟我一样,能够经常锻炼,参加体育活动,工作之余来几个俯卧撑,下班之后撸撸铁,周六、日的时候约上三五好友,骑骑车、打打球。因为你的人生中,工作只占了非常非常非常小的一个比例,多出去走走,发现更大更好的世界。

五条“保持”我就说完了,还记得开篇词,我是如何高大上地介绍我自己的吗?其实还有一部分我没有说,现在我也愿意跟你分享出来。

作为一名80后,其实小的时候电脑这玩意儿并没有那么普及。一般都是家里条件非常好的同学,才会有一台大头机。所以,那时候每周一节的微机课就成为了我们最期待的、事实上的“游戏课”。电脑对于我来说,就是打打游戏,查查资料,看看电影,仅此而已。

面临高考报志愿这个人生抉择的时候,我听了家长和老师的话,选了制造、自动化、土木相关的超热门专业志愿,分数差了几分没上去,调剂到了计算机,也算是阴差阳错。但之后随着对编程的深入了解,我越来越觉得自己喜欢上了编程,喜欢上了算法。或许是命中注定,我就应该走这条路。

再后来我发现,这个时代是永远在快马加鞭发展着的:人工智能将影响所有人的生活。所以,我选择了AI方向。每个方向都有它独到的魅力,而AI的魅力在于它是没有边界的,就像绿灯侠一样。就像我前面说的那样,AI很多时候没有技术限制,唯一能限制你的,只有你的想象力

当然,学习和提升自己是痛苦且枯燥的,这个过程充满了复杂的公式,难缠的优化方法,还有玄学一般的调参经历。但是这种自我蜕变是极具成就感的:我参与完成的搜索引擎推荐算法项目,时至今日仍然每天在为数亿用户服务;我主导的资讯产品文本算法项目,同样为数以千万计的用户更高效地获取信息而默默运转着;我参加的多模态算法项目,为无数的儿童与青少年提供了纯净的网络环境……

好了,最后一课的鸡汤终于要登场了,请你记住:

阴差阳错是一种选择

命中注定也是一种选择

自我蜕变更是一种选择

人生充满了选择,选择与努力同样重要

时间过得真快,快到让我觉得第一节课也就是几天前的事情。时间过得好慢,慢到使我迫不及待地希望在更多的课程中与你一同进步。

下课,再会。

最后,我希望你可以填一下后面这张毕业问卷,说说你学习这个专栏的感受。