查看: 83004| 回复: 87
跳转到指定楼层
上一主题 下一主题
收起左侧

机器学习`侠`练成记录 Becoming a Machine Learning Practitioner

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Becoming a Machine Learning Practitioner
为什么叫机器学习`侠`,是`调包侠`, `调参侠`的梗


上图来自Google 2015的论文,图片里面很小的黑色矩形是ML算法,其他部分是围绕算法的很多其他成分。

业界做ML,当然有算法的成分,有些公司也有很高深的算法(比如Google),但是工程的成分其实经常会远远,远远的多于算法,在一个激灵想出来的算法能真正落地给业务产生impact之前,有大量的工程方面的设计和考虑。好的大公司也在纷纷构建自家的机器学习平台让ML的投产变得更容易。

但是这些需求在学校ML课程里面很少被提及,给人的印象就是,做ML就是“调包,调参”。但是实际工作里面调包和调参的时间比例可能也就10-20%...


为什么发这篇帖子,也是来自于之前一直在DS领域总结学习,希望持续分享自己学习的历程,求讨论
Why this post
It’s an opinionated list of core skills that I found useful in the daily work of a machine learning practitioner, in the tech industry. I am not a researcher and am not interested in becoming one, so the list does not go in depth into any active research domain.  
需要强调的是,我不是做ML科研的,也不想做科研,所以本文就是于业界做ML的大家交流讨论,并不打算深入任何科研领域,请做科研的大牛轻拍。


I’ll be maintaining this list just as I maintained the learning path for data science in the past here https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=76429&extra=&page=1.
It’s not meant to be exhaustive, and we probably don’t need to know them all.
另外这篇内容也并不会多完备。机器学习领域大牛很多,领域很广,应用更是广阔到难以尽数,所以不求尽善尽美,只是抛砖引玉,求交流学习。
Suggestions/discussions welcome.  


本文适合什么人
## 0. Who is this for

This is a practitioner’s approach. Researchers: This post is not for you. 不是给ML方向做研究的人;牛人路过就好,不喜勿进。



## 1. CS Fundamentals 计算机基础
Design and analysis of algorithms( Coursera Part 1, Coursera Part 2)


Operating System (Book: Modern Operating Systems)



## 2. Programming languages 编程语言
为什么与上一节计算机基础分开来说:因为老是遇到同学说我会numpy啊为什么你说我基础不行。。。。实际上是可以在不太懂基础的情况下楞刷题,或者写些基本能用的代码的。但是稍微深一点的地方会感觉基础知识的缺乏会让人难以在ML道路上上升到一定高度。

Must have :Python, Java
必须一门Python(因为ML好多framework就是python),和一门compiled language.
仅仅只会python,作为scientist是够了,作为engineer就会有显著差距。

Good to have: C++ 不一定是必须的。但是如果做的工作对速度有比较强的要求,那还是需要会C++的

Will likely encounter at work: scala/go/js 这些看每家tech stack不一样,会有不同涉及。遇到了再学即可。

Will likely encounter in academic settings: Matlab/Octave, R, Julia 这些是学校里面用的多,我至今(2018年底)没看见公司里面用julia的。

## 3. Math Fundamentals 数学和统计基础
Linear algebra 线性代数,必须的
Calculus 这个大家应该都上过
Optimization 优化:必须的
Statistics 基础统计(不是概率论 which is also good to have,这里是特指统计)

(real analysis and functional analysis might be useful, but is not required)
有空的话学实分析和泛函也可以,但是不是必须的

## 4. Machine Learning, from intro to advanced
这部分稍微区分一下从入门到进阶


### 4a. Intro 入门
- 这门课可能没有人不知道了  Introductiont to Machine Learning by Andrew Ng
- 这本书是ESL的简单版,作为直觉培养和思路练成,仍然是不错的,但是那里面的编程就很轻很轻了,真的只够本科生用 Very light but still a good book: an introduction to statistical learning


- 深度学习,也是Ng这课来入门还是不错的
- 另外个人比较喜欢Udacity的第一门旗舰课程讲AI的,基于斯坦福的一门本科生课程。会稍微设计一点比前几门入门课更宽广的概念,虽然很浅但是对了解domain很有好处。

### 4b. Advanced 进阶
- 前面几门主要还是supervised learning,下面这门稍微宽广一点,并不完全是ML,但是也是因此感觉对知识面和落地有帮助
Data mining & other topics: Mining Massive Data Sets http://web.stanford.edu/class/cs246/



- 这门课可惜没有录像,关于实战的部分讲的还是不错的,而且是其他课程都没有涉及到,但是工作里面的确需要的部分

- Book:
经典ESL 不必多说,统计角度 Elements of Statistical Learning

经典不必多说,CS角度 Pattern Recognition and Machine Learning


- 下面看几个应用大方向

- Info retrieval & search engine 信息提取和搜索
Some intro here:


- Recommender systems 推荐系统


- Image: 图像识别,如今主要就是CNN了



- NLP 自然语言处理
others to be added
NLU 暂时不知道哪里有比较好的课

- Reinforcement Learning, Deep Reinforcement Learning 加强学习
(book and course TBD)



- Lots more stuff in DL here

经典课本(但是我觉得读起来还是蛮晦涩。。。不知道我是不是一个人)Deep learning book by Ian Goodfellow and Yoshua Bengio



之前学DL的时候的一些收集  看这里


### 4c. Frameworks
非深度学习,最常用的肯定就是 General ML framework: sci-kit-learn

深度学习的目前很多了 DL: Tensorflow(Keras), Caffe, Pytorch(Caffe2)

TF的看狗家自己的内容,或者Ng那个课;Pytorch的看fast.ai
Up & coming 或者已经下去了的: theano, MXnet, dl4j

## 5. Scaling considerations: Big data, distributed systems etc 数据量大了面临的问题
做小数据ML(笔记本上跑跑regression or classification,产生个报告给别人看)严格来说算不上ML,其实主要只能算是modeling(统计建模)
high dimensional data 是另外一个故事,这里先按下不提。

只说业界,面试会考系统设计的地方,需要用到的机器学习系统:

从最最小白的地方看起:(非科班同学不妨看看,科班的可以绕过)
This blog post: thorough intro to distributed systems
And this

System Design: 虽然这个是准备面试用的,但是作为大致入门也是差不多了
Grokking system design interview (for brushing up fundamentals and case studies)

DDIA 堪称经典 Book Designing Data Intensive Applications : for an in-depth look, refer back to fundamental knowledge in OS

Distributed OLTP and OLAP


## 6. ML Systems & Platforms 机器学习系统和平台

- 这门课还是可惜没有录像只有slides
Adv ML systems (Cornell, slides only)

- Book: 这本书我也只有翻过,还不知道到底多好

- NIPS2018: to find some talks http://learningsys.org/nips18/schedule.html

### ML Systems 什么是机器学习系统
- Prod ML, paper 1 (tech debt) https://ai.google/research/pubs/pub43146,
- tbd

### ML Platforms 机器学习平台
- Google:

- Facebook:

- Uber:
深度学习 Horovod https://eng.uber.com/horovod/

- Linkedin:

- Airbnb:
居然缺logo

另外这个podcast很不错,建议不要错过
Podcast TwimlAI is featuring a lot of these systems lately, a fantastic listen
https://twimlai.com/shows/

其他还有 Amazon, Netflix etc, ...








评分

参与人数 76大米 +172 收起 理由
ChiaSeed + 2 给你点个赞!
jjpanda + 1 给你点个赞!
junojuno + 1 很有用的信息!
caudalienature + 1 很有用的信息!
dya233 + 2 给你点个赞!

查看全部评分


上一篇:金工申请机器学习
下一篇:理论机器学习的公开课件

本帖被以下淘专辑推荐:

 楼主| modifiedname 2019-1-9 09:15:13 | 只看该作者
全局:
MIT,和无人车的内容统一更新在这一楼

good stuff here:
https://deeplearning.mit.edu/
lots of practitioner's talk on actual, industry scale systems that's hard to find elsewhere

无人车
Part of MIT course, self driving car (slightly out of date but still good stuff)https://ocw.mit.edu/resources/re ... 5/unit-8.-robotics/

Here's a 2017 talk by Cruise,
https://www.youtube.com/watch?v=s-8cYj_eh8E

百度 Apollohttps://www.youtube.com/watch?v=jiZhSIrmODk

2019 MIT 的最新总结
https://www.youtube.com/watch?v=53YvP6gdD7U


评分

参与人数 1大米 +1 收起 理由
torontotina + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
 楼主| modifiedname 2019-1-28 01:52:06 | 只看该作者
全局:
我只是觉得DS的定义明晰起来了
招人方已经差不多都知道识别analyst,做科研的,和碰production code的人了,三种目前都可以叫data scientist, 且不可彼此替换。

个人意见是
- 看公司AB平台结果,写query做dashboard,平时主要跟PM,finance,BD打交道的,我认为算analyst;要求是go broad,快速做出对公司和产品大方向有用的分析来并说服别人
- 给自己公司做AB平台under the hood部分,或者做特别复杂的use case并且发实验方向论文的,算research;要求是go deep,做出别人做不出的东西来
- 负责production code的算engineer,无论做的是ML算法还是causal inference算法;要求是go practical, 对自己产品负责


从skill set的角度看
- engineer一般可以勉强做做dashboard做一点分析,会在一定程度上暂时弥补analyst 的空缺。很多人做不了research,有部分人仍然可以,研究方面当然phd有优势
- researcher一般受不了做analyst,会觉得不够严谨,和太boring没有挑战;可能也受不了做engineer lol 因为不愿意on call
- analyst 一般做不了engineer,差距是1-2年的专业学习,和full time编程的实战练习。一般也做不了researcher,因为很多是BS/MS背景,没有人带的话,很多的确不具备做科研的素养。我见过的analyst独立”研究“大都是惨不忍睹,里面的错误罄竹难书。一是可能缺phd阶段科研的培训,二是业务要求比较多,也的确没有时间仔细去往深了钻。而且对公司来说,经常也没有必要。


我因为比较看重自己做出来的东西要被用户用到,要进production,要能看见效果,所以选择的Eng这条路。有很多我非常尊重(highly respect)的朋友同事更像research那一支,也是很高大上的,看上去他们也都对工作非常满意。Both are paid well enough that pay can be a non issue in like 5-10 years. Analyst 算是更宽泛的行业,早在大数据时代之前就有,那时候叫business analyst,如果有很好的business sense,并且懂得如何说服别人(影响力), 将来可以往产品,金融,BD方向发展,可能可以走的更远,但是成功路上的工资可能会在初期(first 5-10 years) 低于前两种。但是当了business方向的head之后能走多远,那不是普通的engineer和researcher能达到的。另外如果希望自己开公司或者进初创公司,只有是要么engineer要么business,做科研的人不太适合去。


当然任何行业做好了,都可以是牛人。这里纯个人意见。无意争论。还是做自己喜欢的事情比较容易坚持。






评分

参与人数 2大米 +8 收起 理由
BreeKKK + 3 给你点个赞!
yclu + 5 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
 楼主| modifiedname 2019-1-24 15:27:50 | 只看该作者
全局:
大家不要焦虑的往外扔各种流行的名字(也是说给我自己听的)
抓问题要抓本质。。。。 start from a higher abstraction level, and you will generalize your learning better....
同一个问题下面的实现方案可以有很多种,基本都大同小异,名字太多了,但是原理可能也就 a handful
更不用说很多方法其实已经基本有了clear winner,先学那个winner再看其他,会容易很多 (e.g. docker and k8s)

我自己也是从中不溜的地方开始学起的,感觉浪费时间,还不如直接从fundamentals开始
然后才能理解
compute
storage
stream
batch
这类东西里面各种技术的精妙和差别,不然猛一看就是一堆新名词。。。。

ML算法的难度是“深”和“广”,但是知识被总结的很清楚,被梳理的顺顺溜溜的,只需要去伸手拿来即可。有各大名校名师的公开课,所以只要有心去学并且有基础数学和基础代码能力,自学ML其实真的比较doable....

系统那一套东西却是“广”的要命,很多事情要看经验,资料没有那么通俗易懂和铺天盖地,需要仔细去找。有高人指点会事倍功半,自学还真的不是特别容易。

=======================
这种东西,一定要看兴趣。强按着脖子是不行的。。。。

评分

参与人数 2大米 +4 收起 理由
torontotina + 1 很有用的信息!
BreeKKK + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
BreeKKK 2019-1-23 16:24:55 | 只看该作者
全局:
这个帖子很棒!市场上很多资料聚焦在模型,其实实际的ML系统中model training只是很小的一块,大量的精力花在不fancy的infra上。最近在搭新的ML系统,postgres, mongoDB, S3, 类似于Kafka的RabbitMQ, 公司内部的各个平台的服务,不同部件都要一一用gRPC链接起来,deploy的时候也要用到docker, kubernetes, jenkins, etc, 远远超越了原来DS的知识范畴,很需要小K这个list来不断地补充知识。


----------------

所有有时真的会想,这么辛苦地做硬核ML,和舒舒服服地走business impact的analysis路线比起来,真的更有价值吗?哪个会是职业上更加sustainable的发展方向?怎么判断哪个更适合自己?
回复

使用道具 举报

🔗
yangyijane 2018-12-13 02:35:55 | 只看该作者
全局:
很喜欢会一直跟下去的。
回复

使用道具 举报

🔗
 楼主| modifiedname 2018-12-16 09:08:11 | 只看该作者
全局:
### 顺手的工具们
Docker https://www.docker.com/
Kubernetes https://kubernetes.io/ Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. 目前(end 2018)看起来是同类产品里面完全胜出的那个。
目前(end of 2018) AWS和GCP里面用一种就差不多了。AWS 市场占有比例更高

评分

参与人数 1大米 +5 收起 理由
DL + 5 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
happydreamer 2018-12-19 00:27:49 | 只看该作者
全局:
Great, thanks!
回复

使用道具 举报

🔗
sunson55 2018-12-19 11:09:51 | 只看该作者
全局:
好详细实用,多谢楼主。
回复

使用道具 举报

🔗
 楼主| modifiedname 2018-12-19 15:24:35 | 只看该作者
全局:
Kubeflow https://www.infoworld.com/article/3301549/kubernetes/kubeflow-brings-kubernetes-to-machine-learning-workloads.html

actually quite a lot of other talks at this SciPy 2018 conf is very good, especially good for a general overview on the kind of problem out there, and showing at least one of the solutions out there.
回复

使用道具 举报

🔗
llj20dd 2019-1-1 02:12:57 | 只看该作者
全局:
十分感谢,正准备从DA转到偏ML方向!共同进步!
回复

使用道具 举报

🔗
moernongdu 2019-1-7 05:07:34 | 只看该作者
全局:
关于 - Reinforcement Learning, Deep Reinforcement Learning 加强学习
(book and course TBD)
我贡献一个素材 Deepmind (就是搞alpha狗)的课程
https://www.youtube.com/playlist?list=PLqYmG7hTraZDNJre23vqCGIVpfZ_K2RZs

回复

使用道具 举报

🔗
hjsdssz 2019-1-13 11:00:44 | 只看该作者
本楼:
全局:
非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表