未来 3~5 年内，哪个方向的机器学习人才最紧缺？
第一次看到这个问题是两年前，那时候感觉功力还不太够，答了怕误人子弟。这两年随着所做项目的范围，自己位置的变化，再加上写作“深度学习推荐系统”这本书的过程中，跟业界诸多非常senior的专家有过大量讨论和交流，觉得可以尝试总结一下自己对这个问题的看法。 先一句话总结，未来3-5年“业界”需要的是： 每一个引号中的词都是重要的。 业界的机器学习和深度学习应用到现在，有一类曾经很吃香的机器学习人才渐渐被淹没了。就是单纯认为模型结构决定一切，对改进各种深度学习模型细节很痴迷的纯研究型的从业者。如果时间回到2016-2017年，改进模型结构的收益是足够大的，加一个product layer，改一个激活函数，都可能对结果产生非常大的影响。但时至今日，几乎所有模型结构上的创新都几乎被遍历，单纯的学术型的改进的收益微乎其微。 这并不是说模型结构不再重要，而是因为这类知识已经是显学，曾经被认为前沿的知识和经验已经成为了从业者的基本素质。 从一个工程师的“技术护城河”的角度，我们也可以看到，现在随便一个拿到头部公司offer的毕业生，都手握三四篇顶会，tensorflow，pytorch用的滚瓜烂熟，这时一个真正可以称得上的senior的工程师的优势在哪里呢？真的要全都被拍死在沙滩上吗？ 显然不是这样的。 一位资深的算法工程师心中一定时刻装着一套“工程体系”的蓝图，你的一个决策，一个改进，甚至一行代码的增删改都是围绕着体系优化的方向进展的。一个模型的改进，一个业务问题的解决，也是在体系之上的综合性应用。 为什么这么讲？ 因为现在的计算广告系统、推荐系统、搜索系统的复杂程度，已经远远超过单纯进行模型改进的范畴，每一个问题的解决，一个模型的实现需要涉及的子系统往往是体系级别的。就拿这两年学界和业界都比较火热，而且已经有诸多成功应用的reinforcement learning来说，你在实验室测试效果，写个模拟的回测系统就可以了，在实际的生产环境中，要部署一个经典的RL模型，要跟多少系统产生关系呢？ 可以说，一个RL模型，如果真正要实现起来，绝不是仅仅在offline环境下改改模型结构，调调参数那么简单的。它几乎涉及到了一个公司的所有工程体系。 事实上，要真正讨论起一个模型的效果，它还跟系统的cache策略，线上特征和离线特征的一致性，离线数据相比线上数据的bias问题，各数据模块的延迟问题等等都有不小的关系。你忽略他们中的任何一块，都有可能得出错误的结论，产生离线和在线结果的巨大反差。 曾经深度学习在效果上的革命性提升其实掩盖了诸多工程问题，但是当模型的改进收益逐渐平缓时，你可以看到大家越来越多的在工程框架上要效果。 比如提高数据流的实时性，比如把推荐系统和边缘计算结合起来，比如越来越多在model serving上下功夫，提出数据蒸馏的诸多方案，比如合理化利用算力，在模型的复杂度和更新频率上做精细的权衡。而这些绝非在实验室可以完成的。 上面的一切要求，就是我所说的要站在体系的高度上，综合考虑“模型结构”和“工程限制”，来制定最终的解决方案。 关于问题目标的理解当然也不可忽视，我在之前的文章里面也说过多次，一定要去针对问题的本质，真正要优化的目标去建模，不能到最后才发现南辕北辙。而这一切又需要产品团队，工程团队，运营团队通力合作，达成一致，硅谷的工程师常说，开会就是生产力，你的项目scope越大，你期望产生的impact越大，越要在实现之前进行充分的沟通，切勿陷进自己技术的愿景之中，用诸多所谓“前沿的”技术实现一个在别人眼里根本不知所谓的东西。单纯去追逐技术的先进性，那是最典型的学生思维，要尽快逃脱这个桎梏，回到技术服务于最终目标的本质上来。 最后一个关键词要再强调一下——“工程师”。一旦你离开校园，就要记住你不再是一个学生或者研究者，你是这个商业社会的一员，你也是驱动你的公司，你的项目达成商业目标的一员。你的目标不是发明一个闪亮无比的算法或模型，那也许可以是你的副产品，你的主目标永远应该是用你的技术去让你的知识落地，最终驱动业务目标的达成。 你看每逢金融危机巨头先裁掉哪个部门，你就知道，好看的技术和想法永远不是公司的核心，真正核心的永远是驱动公司业务和实打实产生利润的部门，而这一切都要求工程师的思维，而不是研究者的思维。如果真的想去探究人类认知的边境，请认认真真读博，踏踏实实找教职，好好在象牙塔里完成这一使命，接受工程师们的仰望，但请不要在一个公司完成这一使命，那不是一个商业主体的第一目标。 最后以阿里 @朱小强 在为“深度学习推荐系统”这本书作序时写的一段话结尾： 这段话当时一语戳进我心，也是本回答核心主旨的又一次提炼。如果你和我一样是一名相关领域的工程师，就一起为“工业级深度学习2.0时代“添砖加瓦吧。
进入工业界时间不长，这里主要讨论一下之前找工作面试，以及自己工作一个月以来的一些想法。先说背景，我在国内读的本科，在德国完成了硕士学习，专业都是通信，然后一年半前开始自学机器学习，深度学习，计算机视觉等方面的知识，同时参加Kaggle 的比赛，找工作期间投的都是欧洲这边Data Scientist 的职位，现在在法兰克福一家创业公司从事数据科学在物联网方面应用的工作。这里主要介绍一些面试期间的情况，因为在欧洲这边找机器学习方面的工作，基本都会在面试期间做一个时间不等的案例分析，案例的方向基本就是公司机器学习应用的业务方向。Adidas总部，申请的第一家公司，前两轮面试之后，会被分配一个一周的案例分析，给的数据是过去两年阿迪达斯各个产品包括，鞋子，衣服等在欧洲各个国家的销售情况，然后一些和产品本身相关的属性信息，任务是给出接下来几个月的各个产品的销售，盈利情况。要求用多种模型实现。Trivago总部，trivago是一个专业于酒店预订服务的全球酒店搜索引擎，該网站对来自很多酒店预订网站、以及酒店的报价进行比较，给出的案例分析时间一周，案例是个比较典型的点击预测Mini project，要求就是对给出的测试集做预测，在给定的Metrics下精度越高越好。Creditech，一家中型的提供信用卡相关服务的公司，给的案例是典型的信用卡欺诈预测，时间24个小时，数据是blind过的，而且要求必须用R实现，因为好像虽然目前在机器学习领域Python占绝对的主导，但是在和经济相关的领域，R还是颇为流行的。EY，也就是国际四大会计事务所之一的安永，案例也是一周，不过案例和机器学习没什么关系，给出的数据是欧洲各个国家进出德国的数据，然后做一些简单的数据分析，没有涉及任何机器学习算法模型。Seamless Machine Learning，一家位于英国剑桥的做算法交易的小创业公司，前面三轮电话视频面试后最后一轮会去他们在剑桥的办公室跟着团队一起工作两天，做一个Mini Project，因为还在等签证期间已经确定了现在这个公司的职位，所以没有去参加最后一轮面试，不过通过之前几轮的面试，大致了解到他们一个业务是构建机器学习模型，预测比赛赔率，比如他们在其中一个面试中问我，如果去构建一个模型，预测网球比赛当中其中一方的胜率，需要搜集哪些数据，可能会用到什么模型。然后我现在的公司，Record Evolution，提供物联网端到端技术方案的数据科学公司，我现在做的一个项目是尝试构建机器学习模型，来预测汽车刹车过程中的某种特定的噪声，分析原因，然后想办法消除噪声。还有一些其他的面试，不过，大体上类似，就不再赘述了。在找工作投简历期间我就发现，如果决定了去工业界之后，可以选择的面特别广，像我上面提到的，你既可以去一个纯互联网公司，去做用户点击预测这样的工作，也可以去会计事务所去做机器学习在税务方面的应用，或者去研究所做某种CT图的分析，然后预测某种疾病发生的概率。在欧洲这边很多很多的传统企业都在试图在本来的产品线中集成机器学习，更好的利用本来积累的数据来开拓增长点，这里不要求你紧跟学术界每天最新研究的进展，也不要求像Kaggle比赛已经在数据已经非常规范的情况下，穷尽一切可能提高百分点，而是去和具体的业务相结合，运用机器学习在业务当中，不清楚国内的情况，不过欧洲这边现在传统企业有点数据的都在试图朝这个方向走。在工业界更多的是需要应用机器学习在一些传统的领域，在这个工程中会需要掌握一些domain的知识，当然并不要求你是这个领域的专家，更多的是去利用本来已经产生却没有被充分利用的数据然后增加可能的销售增长也好，开展新的业务方向也好。不过，接下来才是我要说的重点，我之前的背景主要是机器学习的各种算法，但是，我进现在的公司已经超过一个月了，目前还没接触任何机器学习算法的任何工作，一直都在设计算法，标注数据，搜集，清理数据，配置Cluster，做着Data Engineer的工作，不过这个可能是因为小公司，每个人要做的，负责的面比较广，大公司每个人做的会更加细分一些，这个也是我选择小公司的其中一个原因。不过如果选择进入工业界的话，在纠结算法性能能不能提高0.0001%之余，多去玩玩Spark，跑跑Cluster还是挺有帮助的。 以上。 