FDE Times 数据在招 FDE 职位 863▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 71在招公司 181支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

从 FDE 视角重读吴恩达机器学习课程

新版用 Python 取代 Octave,正是客户现场常见的 notebook,每周 10 小时约两个月学完。

机器学习专项课程讲师吴恩达(Andrew Ng)在旧金山 TechCrunch Disrupt SF 2017 的台上发言。
图片:TechCrunch / CC BY 2.0
分享微博

要点速览

  • DeepLearning.AI 与 Stanford Online 合作的三门入门课程,Coursera 估计每周 10 小时、约需两个月
  • 新版用 Python 重新设计了讲课和作业,取代原课程的 Octave,更贴近客户现场实际使用的工具
  • 对 FDE 来说,第 1、2 门是核心;第 3 门有选择地学,优先学推荐系统部分
斜率图把三个假设模型的准确率与技术类召回率连在一起。神经网络准确率 84%,技术类召回率仅 40%;LogisticRegression 准确率 81%,召回率 47%;DummyClassifier 准确率 70%,召回率 0%。
只看准确率,神经网络是最好的模型;但看“技术”类召回率,它落后于 LogisticRegression。来源:文中的假设结果(1,000 张客服工单,分为 4 类)。

Machine Learning 原版课程上线十年后,DeepLearning.AI 重新设计了讲课和作业。团队在博客中解释,自课程首次推出以来,这一领域已有了很大变化。最明显的改动是:讲课和作业现在改用 Python,不再使用原课程的 Octave。

这看似是个小细节,但对想做前线部署工程师(FDE)的人来说很重要。在客户现场,几乎碰不到 Octave;打开的多半是装着 NumPy、scikit-learn 或 TensorFlow 的 Python notebook。学新版课程,也就顺带练熟了项目第一周就要用到的工具。

一套名副其实的入门课程

课程正式名称是机器学习专项课程(Machine Learning Specialization),由 DeepLearning.AI 与 Stanford Online 联合打造,发布在 Coursera 上。

整套课程共三门,Coursera 定为初学者级别,预计每周 10 小时、约两个月学完。对有全职工作的开发者来说,只要保持稳定的节奏,这个进度完全吃得消。

DeepLearning.AI 称其为一套对初学者友好的三门课程,并明确表示不需要深厚的数学背景:最重要的是你想学 AI 和 ML,其余的他们会在学习过程中帮你补上。对多年没碰过线性代数的开发者来说,这是门槛最低的入口。

按什么顺序学?

按 1、2、3 的顺序学,但不要平均分配时间。第 1 门课教你用 NumPy 和 scikit-learn 构建 ML 模型。第 2 门课教你用 TensorFlow 训练神经网络,完成多分类任务。

第 3 门课名为 Unsupervised Learning, Recommenders, Reinforcement Learning,其中包括构建一个深度强化学习模型。如果目标是 FDE 岗位,把大部分时间投入第 1、2 门课。

第 3 门课里,推荐系统部分值得细学,因为推荐是商业企业常提的需求;强化学习部分掌握概念即可,不必深陷其中。

NumPy 部分不要偷懒

第 1 门课同时用到 NumPy 和 scikit-learn。建议不要为了尽快用上库而略过 NumPy 部分:正是这些手写的计算,让你看清模型内部在做什么。客户问模型为什么给出某个预测时,你要用原理来回答,而不是报一个函数名。

scikit-learn 则让你快速出结果。到客户那里,第一件事就是在第一天下午搭好基线,作为所有更复杂方案都必须超越的基准。

70% 的准确率可能毫无意义

第 2 门课用 TensorFlow 讲多分类,这类问题在部署工作中随处可见。设想一家公司要把 1,000 张客服工单自动分到 4 个类别,其中 700 张属于“账单”类。

一个偷懒的模型把所有工单都猜成“账单”,照样能拿到 70% 的准确率,却一张技术类工单都没分对。在 scikit-learn 里,几行代码就能搭出这个偷懒模型和一个真正的逻辑回归基线,并打印各类别召回率:

from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report

lazy = DummyClassifier(strategy="most_frequent").fit(X_train, y_train)
print(lazy.score(X_test, y_test))   # 约 0.70:起跑线

model = LogisticRegression(max_iter=1000).fit(X_train, y_train)
print(classification_report(y_test, model.predict(X_test)))  # 每个类别的召回率和 F1

下表是一个假设结果,用来说明这个陷阱。神经网络的准确率最高,抓到的技术类工单却比逻辑回归少。

模型(假设) 准确率 “账单”类召回率 “技术”类召回率
DummyClassifier(预测最常见类别) 70% 100% 0%
LogisticRegression 81% 93% 47%
TensorFlow 神经网络 84% 97% 40%

如果客户需要把技术类工单分给对口的人,那么尽管准确率更好看,表中的神经网络反而是更差的选择。所以 FDE 首先要问的是:各类别如何分布,客户真正需要分对的是哪一类。

一条实用规则:只有当神经网络同时胜过 DummyClassifier 和 LogisticRegression,而且不只是准确率更高,在客户关心的类别上召回率或 F1 也更高时,才推荐它。课程给了你训练网络的工具,这张对比表得靠你自己做。

推荐系统是客户真会提的问题

第 3 门课的推荐系统部分,把理论和 FDE 经常遇到的“给用户推荐商品”需求联系了起来。

接到推荐需求时,第一步是要求查看真实的交互数据,然后再承诺任何模型。

适合谁学,简历上怎么写

这门课适合想转做 FDE、从未训练过模型的后端或全栈开发者。有几年 ML 经验的人略读即可。不要在简历上只列一张证书。

不如写这样一行:“使用 TensorFlow 将工单分为 4 类,并以 scikit-learn 基线为对照”,再附上准确率和最重要类别的召回率。这行字说明你不仅会跑模型,还会对照最低基准来评估模型。

这门课不会把你变成数据科学家。但它给你足够的底子,坐在客户身边时不至于手足无措,对 FDE 来说,这已经是不小的优势。

这篇文章对你有帮助吗?

3 个信源
路线图上的下一篇 · 阶段 1: 基础认知哈佛免费 Python 课,FDE 最该精读第 5 周CS50P 第 5 周讲 assert、pytest 和打包:代码要跑在客户数据上,还要交给别人接手,这是底线。