李凡丁 (hulu研发工程师)
通往机器学习算法工程师的进阶之路是崎岖险阻的。《线性代数》《统计学习方法》《机器学习》《模式识别》《深度学习》,以及《颈椎病康复指南》,这些书籍将长久地伴随着你的工作生涯。
除了拥有全面、有条理的知识储备,我认为,想成为一名优秀的算法工程师,更重要的是对算法模型有着发自心底的热忱,对研究工作有一种匠心精神。这种匠心精神,直白来讲,可以概括为:发现问题的眼光、解决问题的探索精神以及对问题究原竟委的执着追求。这里,我想给大家分享一个发生在我身边的真实情景。
在微信红包占领家家户户年夜饭的那个时代,我们的小伙伴也没有例外。一群心有猛虎、细嗅蔷薇的算法研究员深切意识到自己不仅手速慢,运气也可谓糟糕。在埋头疯点手机屏幕的间隙,他们查阅了抢红包策略的相关文献,发现国内外对这一理论框架的探究极度匮乏。知识拯救命运,他们决定将红包机制的公平性提升到理论高度。通过大量的模拟实验,统计在不同顺位领到红包的大小。数据分析显示,越后面领到红包的人,虽然红包金额的期望(均值)和前面的人相同,但方差会更大,这也意味着他们更容易获得一些大额红包。从此,掌握这一规律的研究员们在各个群中“屡试不爽”,再也没有抢到过红包,留下的只有“手慢了,红包派完了”几个大字。
新年钟声敲响的时分临近,Boss级别的人物往往会在群里发一些超大金额的红包。最夸张的一次有一位幸运儿在10人红包中领到2角钱,还没来得及在心中完成“老板真抠门”的碎碎念,抬头定睛一看,最佳手气500多元。判若云泥的手气虽没有埋下同事关系间的芥蒂,却让这帮算法工程师们产生了新的思考—如果把大额红包分成多份给大家抢,会减小“人品”因素带来的“贫富差距”吗?理论结合实际,他们不仅通过数学推导确认这一结论,还设计了一系列实验证明了多个红包的确会缩小不同人领到红包金额之间的差异性(方差)。从此,他们组的Leader在发大红包的时候都会刻意平均分成几份,既增加了大家抢红包的乐趣,又避免了有人因运气不佳而扼腕兴叹的愤懑。
当然,故事不止于此。他们还利用红包的特性编写了一系列面试题,筛选着一批又一批的机器学习算法工程师,例如,“用红包产生随机数”“用红包随机选出n个候选人”,诸如此类源自生活的小问题在本书后续章节中亦不难寻其踪迹。
这种探究问题的匠心精神充斥着他们生活的各个角落。每天下楼吃饭等电梯的时候,因担心上厕所错过电梯,他们建立多个模型分析不同时段电梯平均等待时间对应厕所时机的最优选择;在夕阳的余晖下欣赏湖光塔影时,他们会思考为何粼粼波光成了图像编码中的棘手难题;打开购物APP看着目不暇接的喜欢抑或不喜欢的商品,他们反思自己搭建的推荐系统是否也会让用户有着相同的无奈或是欣喜。每一件小事,因为对研究有了热爱,都可以成为工作的一部分,成为开启机器学习大门的钥匙。
工作中的算法工程师,很多时候会将生活中转瞬即逝的灵感付诸产品化。组里的一位同事在看某国产剧的时候,发现可以非常方便地跳过片头和片尾。从消费者的角度出发,这的确是一个大有裨益的产品特征,于是他仔细统计了我们自己平台的视频源数据,发现只有一部分视频含有片头、片尾的时间点信息,而且都是人为标记的。试想,对于一家具有百万量级内容源的视频公司,在所有的剧集上人为标记片头、片尾信息有如天方夜谭。通过广泛的背景调研、方法尝试,攫取前人工作之精华,不断加以创新,依据自己的数据特点量体裁衣,他们的团队设计出了一种基于深度神经网络与浅层特征融合的片尾自动检测模型。经过反复的迭代与充分的实验,得到了令人满意的结果。这一工作也申请了美国发明专利,并一步步走向产品化。
将算法研究应用到工作中,与纯粹的学术研究有着一点最大的不同,即需要从用户的角度思考问题。很多时候,你需要明确设计的产品特征、提升的数据指标,是不是能真正迎合用户的需求,这便要求算法工程师能在多个模型间选择出最合适的那个,然后通过快速迭代达到一个可以走向产品化的结果。这种创新精神与尝试精神便是“匠心”一词在工作中的体现。
当然,匠心精神诚可贵,知识储备作为成功的根底亦必不可少,这也是我们写作《百面机器学习:算法工程师带你去面试》这本书的初衷。
《百面机器学习》一书收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景。本书从日常工作、生活中各种有趣的现象出发,不仅囊括了机器学习的基本知识,而且还包含了成为优秀算法工程师的相关技能,更重要的是凝聚了笔者对人工智能领域的一颗热忱之心,旨在培养读者发现问题、解决问题、扩展问题的能力,建立对机器学习的热爱,共绘人工智能世界的宏伟蓝图。本书将从特征工程、模型评估、降维等经典机器学习领域出发,构建一个算法工程师必备的知识体系;见神经网络、强化学习、生成对抗网络等最新科研进展之微,知深度学习领域胜败兴衰之著;“博观而约取,厚积而薄发”,在最后一章为读者展示生活中各种引领时代的人工智能应用。
扎实的数学基础、完整的算法体系、深入的模型理解,是我们想通过这本书传达给读者的精华之所在。本书前几章内容,如特征工程、模型评估、经典模型等,是机器学习领域的基石,是每个算法工程师应该融会贯通,内化于自己知识体系中的。而想成为一个研究专业或是应用领域的专家,则需要在技能树中的某几个分支不断生长发展。或许大家都听过啤酒与尿布的小故事,但搭建一个成熟、稳定的推荐系统,不仅需要通晓降维(第4章)、优化算法(第7章),更要对神经网络(第9章、第10章)、强化学习(第11章)等新生代模型不断钻研、深入理解,将学术前沿与产品形态紧密结合。例如,若是在技能树中专攻马尔可夫模型、主题模型(第6章),建立完整的概率图模型知识网络,并将循环神经网络(第10章)的理论体系融会贯通,形成自己独到的理解和感悟,便可以在机器翻译、语音聊天助手等自然语言处理的应用场景中驾轻就熟,游刃有余。
成为机器学习算法工程师的道路固然崎岖,却充满着旖旎和壮阔。你需要做的只是想清自己真正想成为的那个角色,踏踏实实地在本书中汲取足够多的养分,然后,静静合上书页,在生活中体会种种细节,感受机器学习的璀璨多姿。
(作者系《百面机器学习》葫芦娃之一,毕业于北京大学智能科学系)