我换个标题比较方便未来有人需要的话可以搜寻。
我来抛砖引玉一下台湾业界现况。
我个人 112 CSIE 硕毕,但硕论跟 ML 无关,没有 ML 相关的学术论文。
Kaggle 铜牌以上 x 5 (两次是抱团靠队友)
六年工作经验,算是 deep learning 热潮起来以前就入行。
待过两家五百人规模的新创,工作内容包含将商业问题转换成
ML 可解的问题、将解出来的模型跟系统组的同事合作推上线
有时候也要接一下资料(水管)。
先讲工作上会用到的数学:
一些基本的统计观念,对于观察资料会有帮助。
理解使用到的 ML 模型的概念,了解这个有时候会对参数选择有所帮助。
Deep learning 的话至少看得懂 loss function,有时候会把不同 loss
合起来一起训练。少数几次遇到的问题没有合适的现成 loss ,所以自己
乱写 loss function,写完也是丢给 tf 帮我 optimize。
理解使用到的 metric,关乎到你怎么挑选模型跟 loss function。
我觉得理解 metric 跟 loss 是很重要的,这样模型在 metric 表现不好
的时候才知道要往哪个方向调整。
看 paper 我第一个看它实验怎么做的、结果怎样,看完觉得有机会在我的
dataset 上也够好才会继续看,第二个看有没有现成的 code 可以用,第三
个才是去理解它的方法 (通常是 loss function)。至于里面的定理,很多
假设都跟现实有差距或是它是在证 error bound 这种我知道也不能干嘛的
东西。至于正确性就相信 reviewer 不会偷懒 XD 所以通常都是跳过不看 XD
工作上最需要的就是做的东西要有商业价值,至于后面是什么技术、数学
多难本身不是太重要,跟不懂的人讲什么模型听起来都很厉害。如果 rule
based 的方法成效就足够好,我也会先用它顶着。当然一般来说 ML 的成效
都会比 rule based 更好,所以用到 rule based 的机会还是很少。
数学重要在帮助你选择适合的 metric 跟模型,以及调模型的时候更有效率
,可以不用所有的参数丢下去跑,毕竟这个花时间也花钱,对公司来说这两
个都是大成本。
以这个需求来说,我觉得不需要很艰深的数学,主要是机率统计微分(没有积分)
,如果你说矩阵相乘算线代那有用到,再难的就很少了。
重要的是观念要清楚,用到的都是观念。
最后,工程师 coding 就是基本功,所有的想法都要 coding 才能在真实世
界实现,尤其 ML 常常处理大资料,模型也要上 production。我不知道 ML
要强到什么程度公司才愿意配一个人专门帮你写扣 XD
我的经验是架构方面通常会有专业的同事帮忙设计,inference 的部分就要
自己写。data pipeline 的话同事会将资料整理好,可能是 parquet on s3
,把它转成 feature 到 model training 再将 model 送上 production 机
器这一段要自己写。
实验 code 就是全部自己来,code 有没有效率就关乎你实验跑多久、能跑多
大的 scale。
关于面试,六年来我也应该面过二十几个 ML engineer 的职缺,大小公司都
有,台湾日本新加坡都有。我自己在两家公司也都有帮忙面过 ML engineer。
通常 ML 面试就是给你一个问题,问你怎么用 ML 解。比如说怎么设计推荐系
统之类的,然后再从你的回答问延伸问题。我觉得只要大观念会、对于提出来
解决问题用的模型有一定程度的理解就可以了。我从来没有被问过任何证明推
导的问题。Research scientist 我就没面过了,不清楚。
除了少数几家小公司没有问 coding,其他几乎都有,而且我体感规模越大的公
司问的越难,所以 leetcode 还是要刷,越大间的公司越要刷。
前阵子刚好敝公司比较多 ML 的 headcount,所以我帮忙面了大概有十个人吧,
最后录取三个。我参与的是第二轮面试,所以我不知道第一轮是怎么挑人的。我
们主要想找有 NLP 经验的人,我看到的履历没人有顶会,只有一个有 Kaggle
成绩,一个是硕班做 NLP,其他都是因为相关工作经验被找来。进来以后我觉得
工作能力上也没有什么问题,对公司也能有商业上的贡献。
我自己面试人对于 ML 的基本要求是,知不知道用的模型概念是什么、哪些参数
是重要的、能不能根据问题挑选合适的 metric 以及根据这个 metric 挑选合适
的模型,怎么判断模型好坏、成效不好的怎么 debug 跟调整。
以上跟有没有顶会完全无关,当然发过顶会的人对于上面这些问题一定是都能答
得不错,但没发过顶会也可以。反而因为上面这些问题很重要,我个人是很看重
Kaggle 的,Kaggle 除了 metric 帮你决定好以外,其他能力都要好才能有好成
绩。Kaggle 我只认可有奖金的比赛成绩,铜牌以上我觉得应该就有基本能力可以
找来面试看看,银牌以上应该程度不错,金牌我会觉得很强。
Kaggle 当然 deep learning 相关的比赛有设备有优势,不过也是有人靠免费的
colab 拿到金牌,如果只要求铜牌的话对于拿免费的 colab 顶着用也不是每个比
赛都跑不完,有时候 google 也会赞助 300USD 让你用 GCP,我觉得不求顶尖成
绩的话设备不会是问题。
会找来面试的通常是有相关工作经验,或是硕班做 ML,或是有 Kaggle 成绩。
转领域的话前两项一定是没有的,就去 Kaggle 刷一个铜牌吧!刷不到至少也知
道 ML 是怎么回事,有没有兴趣做下去,探索兴趣对人生来说也是很重要的事情
。我觉得刷 Kaggle 很好玩呀,只是太花时间了,不然我也想天天刷 XD