新课上线:fast.ai推出针对程序员的机器学习课程
今天,数据科学家Jeremy Howard发布了fast.ai最新的(也是最全面的)课程:Introduction to Machine Learning for Coders。这门课程在旧金山大学中录制,是数据科学研究生课程的一部分,涵盖了目前机器学习中最重要的使用基础。其中共有12节课,每节课大约2小时。课程要求你有至少一年的编程经验,以及高中数学基础。以下是论智对课程内容的大致编译:
现在网上有很多优秀的机器学习课程了,最出名的Andrew Ng的Coursera课程。但是由于课程推出的时间较早,有些过时,因为其中用到的是Matlab。而我们这次的新课程使用的是现在流行的工具和库,例如Python、pandas、scikit-learn和PyTorch。与很多领域中的教育资料不同,我们的方法是“编程为先”而不是“数学为先”。这很适合每天编写代码的人,但可能不会过多地练习数学知识(我们会在必要的时候穿插讲解数学)。更重要的是,这项课程非常“个性化”,我们并不会讲到各种类型的模型,只是关注在实践中真正有用的东西。
在课程中,我们会讲到两种主要类型的模型:基于决策树的模型(尤其是经过bagging的决策数森林),以及基于梯度下降的模型(逻辑回归和它的变体)。决策树模型搭建的结构如下图所示(实际工作中你可能会用到比这更大的树):
Terence Parr教授和Prince Grover关于决策树可视化技术的研究,利用了他最新的animl可视化库
决策树方法非常灵活易用,用bagging和boosting结合后,可以在很多实用任务上运用。但是,当它们用到训练之外的数据上时,可能有些困难,而且在图像、音频、自然语言等类型的数据上会表现得不太精确。这些问题通常都能用梯度下降的方法解决,这些会在我们课程的下半部分讲到,然后简单地讲些深度学习神经网络的知识作为结尾。(如果你曾经上过我们的Practical Deep Learning for Coders的课程,可能会觉得有些地方概念有重合,但是我们教授的方法是不同的)
你将学会如何从零开始创建完整的决策树森林,并编写自己的深度学习模型,从零开始训练。在这一过程中,你会学到很多有关数据处理、模型测试和产品开发的技巧(包括有关数据产品的道德问题)。
下面是对每节课程的简要介绍。
Lesson 1—Introduction to Random Forests
第一课将向同学们展示如何创建一个随机森林,随机森林也许是应用最广泛的机器学习模型了,其中会以Kaggle竞赛中的Bull Book for Bulldozers项目为例,用随机森林创造出解决方案,结果可以达到Kaggle排行榜的前25%。你将学到如何用Jupyter Notebook创建并分析模型,如何下载数据,以及其他可能在实践中用到的机器学习基础技巧。
Lesson 2—Random Forest Deep Dive
这节课我们将学习尺度(metrics)、损失函数和过度拟合(这可能是最重要的机器学习概念)。我们会讨论如何用验证集和测试集帮助我们衡量过度拟合。
之后,我们讲学习随机森林是如何运行的。首先,观察组成森林的每个决策树,然后学习“bagging”。之后,我们会学习一些能让随机森林更快更精确的有用的技术。
Lesson 3—Performance,Validation and Model Interpretation
这节课我们会讲到如何读取更大的数据集,这个数据集可能都无法在你机器上的RAM中读取。之后,我们还会学习如何从该数据集中创建一个随机森林。之后,还会讲到软件工程中的“profiling”的概念,学习如何加速代码,尤其是在处理大型数据集时。
接着,我们会进一步研究验证集,讲解如何创建好的验证集,之后会从新的数据集中按此标准选择好的验证集。
在这节课的后半部分,我们会讲到“模型的可解释性”——这是用模型理解数据的重要技巧。这里研究可解释性主要是看“特征重要性曲线”,这是该话题下重要的技术。
Lesson 4—Feature Importance,Tree Interpreter
这节课,我们会深入讲解特征重要性,其中会讲到如何才能让重要性曲线含有更丰富信息的多种方法,如何用它们去修整你的特征空间,以及用树状图理解特征关系。
在本节课的后半部分,我们会学到两种重要的解释技术:部分依赖图和树形解释图。
Lesson 5—Extrapolation and RF from Scratch
这节课会学习“树解释器(tree interpreter)”,包括用“瀑布图”分析输出。下一步,我们会解释外推法(extrapolation)的重要概念,这是随机森林的一个弱点,它无法预测输入数据范围之外的值。我们研究了如何能确定这一问题的方法,以及如何应对。
在这节课的后半部分,我们会开始编写自己的随机森林。
Lesson 6—Data Products
在课程的前半部分,我们会学习如何用机器学习模型创建数据产品(data products),基于“The Drivetrain Method”。
接下来,我们会更深入地探究外推问题,顺便会学习几个numpy技巧。
Lesson 7—Introduction to Random Forest
这时我们就要结束对随机森林的介绍了,同时我们还会简单介绍“cython”库,用它对Python代码稍加改造,就能得到和C代码一样的速度。
之后,我们会进入到下一阶段——基于梯度下降的方法,例如神经网络和逻辑回归。
Lesson 8—Gradient Descent and Logistic Regression
继续梯度下降的课程,首先我们会用PyTorch帮助我们从零开始应用逻辑回归,我们会建立一个针对经典手写数字的MNIST数据集的模型。
Lesson 9—Regularization,Learning Rates and NLP
这节课继续建立逻辑回归模型,并且我们在其中增加了重要的特征:正则化。这里会学习L1和L2正则化,以及如何运用它们。同时,我们还会讲到学习率的问题,如何为你的问题选择学习率。
在本节课的后半部分,我们会讨论自然语言的处理。我们会对流行的IMDb文本数据集建立词袋表示,用稀疏矩阵保证良好的性能和内存使用。从中我们建立了多个模型,包括朴素贝叶斯和逻辑回归,同时还会向其中添加ngram特征提高性能。
Lesson 10—More NLP,and Columnar Data
这节课程会继续创建NLP模型,其中结合了朴素贝叶斯和逻辑回归,得出混合的“NB-SVM”模型,它是文本分类的最强基准模型。为了完成这项任务,我们在PyTorch中创建了一个新的类别:nn.Module。
在这节课的后半部分,我们开始用深度学习研究表格和关系数据,借助Kaggle竞赛中的Rossmann数据集。并且开始在这个数据集上研究特征工程。我们会学习连续变量和分分类变量,以及那种特征工程可以完成这些变量。
Lesson 11—Embeddings
首先我们会讲解朴素贝叶斯背后的数学原理,然后深入研究嵌入,二者都是用于分类变量和表格数据,也可以用于NLP中的文字。
Lesson 12—Complete Rossmann,Ethical Issues
在课程的前半部分,我们会把所学到的所有内容进行结合,创造一个针对Rossmann数据集的全面模型,包括分类特征和连续特征,以及各种类别的特征工程。
下半部分,我们会提到在机器学习模型的运用过程中可能出现的一些道德问题,以及为什么机器学习从业者应该有所警觉,如何解决他们。很多学生表示,这是这次课程最重要的部分!
课程地址:course.fast.ai/ml