注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
Becoming a Machine Learning Practitioner 为什么叫机器学习`侠`,是`调包侠`, `调参侠`的梗
![]()
上图来自Google 2015的论文,图片里面很小的黑色矩形是ML算法,其他部分是围绕算法的很多其他成分。
业界做ML,当然有算法的成分,有些公司也有很高深的算法(比如Google),但是工程的成分其实经常会远远,远远的多于算法,在一个激灵想出来的算法能真正落地给业务产生impact之前,有大量的工程方面的设计和考虑。好的大公司也在纷纷构建自家的机器学习平台让ML的投产变得更容易。
但是这些需求在学校ML课程里面很少被提及,给人的印象就是,做ML就是“调包,调参”。但是实际工作里面调包和调参的时间比例可能也就10-20%...
为什么发这篇帖子,也是来自于之前一直在DS领域总结学习,希望持续分享自己学习的历程,求讨论
Why this postIt’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的大家交流讨论,并不打算深入任何科研领域,请做科研的大牛轻拍。
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方向做研究的人;牛人路过就好,不喜勿进。
Machine learning scientist: 2, 3, expert knowledge of 4, Machine learning engineer: 1, 2, some 3, good knowledge of 4, 5, some knowledge of 6 Machine learning systems engineer: 1, 2, maybe 3, some knowledge of 4, expert knowledge of 5 and 6
## 1. CS Fundamentals 计算机基础
![]()
## 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 入门![]()
- 深度学习,也是Ng这课来入门还是不错的
- 另外个人比较喜欢Udacity的第一门旗舰课程讲AI的,基于斯坦福的一门本科生课程。会稍微设计一点比前几门入门课更宽广的概念,虽然很浅但是对了解domain很有好处。
### 4b. Advanced 进阶- 前面几门主要还是supervised learning,下面这门稍微宽广一点,并不完全是ML,但是也是因此感觉对知识面和落地有帮助 ![]()
- 这门课可惜没有录像,关于实战的部分讲的还是不错的,而且是其他课程都没有涉及到,但是工作里面的确需要的部分
- Book: ![]()
- 下面看几个应用大方向
- 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
![]()
之前学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: 虽然这个是准备面试用的,但是作为大致入门也是差不多了
![]()
Distributed OLTP and OLAP
## 6. ML Systems & Platforms 机器学习系统和平台
- 这门课还是可惜没有录像只有slides Adv ML systems (Cornell, slides only)
- Book: 这本书我也只有翻过,还不知道到底多好 ![]()
### ML Systems 什么是机器学习系统- tbd
### ML Platforms 机器学习平台- Google: ![]()
- Facebook: ![]()
- Uber: ![]()
- Linkedin: ![]()
- Airbnb: 居然缺logo ![]()
另外这个podcast很不错,建议不要错过 Podcast TwimlAI is featuring a lot of these systems lately, a fantastic listen https://twimlai.com/shows/
其他还有 Amazon, Netflix etc, ...
|