大数据文摘出品
来源:thegradient
编译:Fisher
随着机器学习的日益流行,网上出现了越来越多的在线课程,个个都说自己在教“开创AI职业生涯”的必备技能。
不过,在注册一门课之前,你应该了解你将要get的技能究竟能否直接帮你把机器学习玩得更转。这点不只限于在线课程,也针对很多大学里开设的机器学习课程——学生们趋之若鹜的这些课程,真的能帮他们达成他们的实际目标吗?
机器学习教育的现状
在参与过一所AI方面顶尖大学的机器学习基础课程的主干之后,我发现了大部分此类课程所遵循的大纲:它们倾向以线性分类器开始,在引入回归和分类两个概念的同时介绍损失函数和最优化,随后会有一两周来细讲反向传播,然后就完全进入到神经网络。
如果该课程主要关注深度学习,它会用剩下的大部分时间讨论各种神经网络(循环神经网络RNN,长短期记忆网络LSTM,卷积神经网络CNN,等等)和最近发布的重要架构(比如ResNet,BERT)。
反之,如果该课程更关注一般性的机器学习,它会介绍其他的机器学习方法分支,比如无监督学习和强化学习。
我们可以把这些课程的关键论题提炼出来:先是对有监督学习作一概览,再对有监督学习和神经网络的数学基础做简要介绍,继而或者介绍深度学习的各种方法,或者介绍机器学习的其他领域。
另外,看一看课程作业涵盖的内容,也有助于我们弄清楚该课程的主要目标。
作业通常被组织成如下形式:
- 学生得到一个结构化良好的数据集;
- 介绍一个机器学习中的模型或者核心概念,然后学生把这个模型的基础推演一遍;
- 学生实现这个模型;
- 在给定的数据集上跑模型,做一些轻量化的超参数调试;
- 画出结果来看模型表现如何。
在了解课程内容和作业设计之后,我们基本上知道了这些课程期望学生学到什么。它们希望学生掌握相应领域的关键模型,而它们采取的方法就是简单地涵盖了所述模型的理论基础,然后要求学生在作业里实现其主要的关键功能。
把机器学习用起来需要的技能
通过跟机器学习工业界的行内人士聊天,我了解到有几个关键技能是成功必备的。首要的技能就是学会如何妥善清洗和分析数据。
我的一位同学非常认同这一点,他在最近的一次实习中花了8周时间来收集和处理数据,然后才能着手把模型用到数据集上。机器学习模型极度依赖数据,因此,掌握这项技能非常重要,它将确保你知道如何利用数据集的关键特性。
其次,对工业界的项目而言,大多数任务是找不到大型数据集的。因此,许多深度学习技术无法使用——可能会带来过拟合以及泛化能力差(poor generalization)的问题。相应地,人们常常用更简单的、不需要大量数据的模型来作为替代方案,比如随机森林或者logistic回归。
这样一来,能够用合适的库(比如sci-kit learn)妥善地使用这些模型就成了很有价值的技能。事实上,一个朋友告诉我,他在微软公司的机器学习岗位上实习时,整整一个夏天都只是在跟logistic回归的各种变种打交道。另外,随着计算机视觉和自然语言处理领域的大型预训练模型的出现,深度学习有时候只是一个精细调参的过程。这进一步增加了熟悉简单、基本的模型的重要性。
但是,对学术界的研究来说,大型数据集通常容易得到,时间限制也不是大问题,因此我们可以训练更大的深度学习模型。例如,Open-AI的GPT3模型足足有1750亿个参数。要造出这么大的架构,关键是要知道如何从工程上设计和搭建这样的一个大型深度学习系统。这就需要精通PyTorch和Tensorflow两者中的一个,这项技能让研究者能够快速有效地实现一个理论模型。
把需要的架构造出来很重要,但是大部分模型还需要进行超参数调节才能有良好表现。在搭建实用的机器学习系统时,非常关键的一项技能就是对调节过程的设计有直觉把握,而非盲目地去调节。就拿我一个最近在英伟达实习的朋友来说,他有一段时间死活调不好某模型的参数,直到最后发现是他选择的初始化区间有问题,导致模型中的多数ReLU激活函数处于抑制状态而使得学习迟滞。
缺失何在
既考察了机器学习教育的现状,又讨论了真正的机器学习实践所需要的技能,现在我们可以评论一下教育的缺失何在了。对比课程涵盖的内容和实践的要求,有一点很清楚,学生们所受的关于如何管理数据的教导是有欠缺的。
一方面课程提供的数据集很干净,已经做了很好的预处理,另一方面,除了画出几个数据点,课程也没有鼓励太多的对数据的挖掘。这种对数据集进行清洗和挖掘的一手实践的缺乏,对学生真正上阵时的实践能力非常不利。
另外一点,尽管课堂上提供了对关键理论框架的数学背景的直觉式的讲解,但是为什么特定任务下给定的模型就比其他模型要有更好的表现,这背后的理论给学生们讲得不够。结果就是,尽管学生也熟悉不少模型,他们还是不知道哪些模型最适合给定的数据集和任务。不完全懂得关键模型和技术的数学基础的全部细节,学生没法在特定情境下快速选对模型。
哪些已经做得不错了,哪些还能做得更好
通过对课堂知识到实践技能之间的缺失的分析,我们可以看到大多数课程在传授基础知识上做得不错。课程里讲授的概念可以让你理解一个机器学习算法是如何工作的,它如何才能收敛。课程还让学生能够熟悉适用于不同任务的各种最佳算法,并接触到广泛的学习材料,可助有志者进一步深入。
但是,提升空间还是很大的。很多课把开始的几周时间花在同一个地方:线性分类器和反向传播。这些无疑是关键的主题,但是把将近三分之一的课时花在讲授预备知识上并非最佳选择——把本科生和研究生的内容做个区分会很有用。
研究生课程可以要求学生们已经掌握了预备知识,或者指示学生先去修本科生的同类课程。这样就给课堂留出了充足的时间,可以教授学生们如何处理课堂关注的特定领域的数据,或者进一步细化了解该领域内的关键理论框架。
我相信这样做可以让机器学习的课堂把课堂知识和实践技能更好地联系起来。很明显,作为系列课程的一部分,一门课的孤立改变是做不到这点的,只有整个社群的协调改进才能保证学生们获得最新最有用的知识。
学校为何应当重视?
虽然弥合本文提到的缺失对提升学生的实践能力绝对有用,很多课程还是会表示培养工业界需要的能力不是它们的事。但是,这些技能远不只是工业界需要的,而是具有可迁移性。
事实上,它们在几乎任何情境下都有用。例如,在学术研究中开发新模型的时候,也需要知道如何妥善地处理数据,以及哪些技术能带来更有利的结果。另外,这些技能是如此基本,掌握它们会让学生成为更好的机器学习实践者——对于一门课程来说,任何有益学生知识结构的东西都应当重视和教授。
基于目前的课程现状,我们可以说,AI课程能够带你入门,不管你是想从事前沿研究还是找一份业界工作,但是它们不会教授你需要的一切。要弥合缺失的部分,你需要自己付出大量的课外努力。
相关报道:https://thegradient.pub/the-gap-where-machine-learning-education-falls-short/
【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】