我在阿里妈妈做风控算法——摘自【阿里妈妈招聘】公众号
我的最后一段校园生活是在中科院自动化所度过的,那里也是国内最早从事AI相关工作的地方。只是早些时候人工智能没那么火的时候,更多是用机器学习、模式识别等子领域来对外介绍自己的方向,比如我所在的实验室就叫做模式识别实验室。之后随着图像分类、人脸识别等智能算法的大规模落地,才统一用AI(Artificial Intelligence)来称呼。
读研期间,我的研究方向为目标检测,包含人脸、行人和通用物体检测等,这也跟我现在的工作内容息息相关。在实验室的生活,简单却也有些枯燥,每天都是看论文、找问题、想idea和实现idea,如果work的话,就写个论文或者专利。学术界评价算法模型的方式也很简单,看公开数据集上谁的算法指标更高或者模型性能更好。研二上学期,我在地平线(Horizon Robotics)实习,那是第一次进入工业界,见识到了工业界和学术界的gap。在学术界,所有问题都是明确定义好的,数据集、模型和评价指标都是确定的,我们只需要优化模型就能解决问题。但是在工业界,很多时候问题都是不明确的,没有数据集和可参考方案,甚至连评价都很难评价。例如风控领域,如何评价算法的召回率就是一个老大难问题,因为你永远无法知道大盘的真实风险数量。这也使得很多高逼格模型在实践中都很难落地,许多paper里的idea在实际任务中都不work。相比于实验室的科研生活,工业界有着更多待解决的更具挑战的任务,尽管艰难,但每一次算法突破都能带来真实的业务提升。
2019年7月份,我开始了自己的实习工作,负责的内容是品牌logo检测算法的研发。当时阿里妈妈在品牌识别方面,主要依靠接入集团的算法能力,但该算法仍是基于传统特征算子,在模型效果和性能方面都不太能满足日益复杂的业务管控需求。而利用深度学习来实现品牌logo的检测,在当时也算是一个比较新的尝试,因为品牌logo的款式、类型变异极大,相较于人脸、行人等高确定性特征物体,识别难度还是很大的,也不太确定能否达到预期效果。不过好在毕竟是自己的研究方向,在模型的选型、方案设计和模型优化等方面,还是比较擅长的。前后耗时将近3个月的时间,完成了全套算法的构建,并在工程同学的帮助下,赶在双十一之前完成了模型的部署,并取得了极为显著的业务效果。该模型自2019年10月份上线之后,一直支撑着品牌风险识别的需求,直到去年才被我用更加先进的模型所替换。
这是我在阿里开发的第一个模型,也是自己第一次尝试去解决一个未明确定义的问题,确实收获了许多不一样的认知。实习结束之后,我也更加明确后续加入阿里的决心和信心。
2020年对我来说是极不平凡的一年,因为新冠疫情,整个研三下半年都是在家里度过的,远程开会、写毕业论文、远程答辩等,没有毕业典礼,也没有离别送行,校园生活就此结束。2020年7月13日,我正式入职阿里,但团队当时正在经历变化,实习期间带我的师兄和主管都刚刚离职,我对自己接下来要做的事情非常不确定。不过所幸团队里的师兄都很nice,热心帮我解决问题和融入工作,从校园生活转变到工作中,倒也没有太多的不适。
对于刚入职的新同学来说,融入到团队中,找到自己的团队价值和业务价值是非常重要的事情。谁都想要那种被需要的感觉,谁都不想自己是可有可无的。不论是业务需求还是团队建设需求,找到被需要的感觉对新人来说是很重要的。
我刚入职的第1个月也是挺迷茫的,找不到自己在团队中的定位和价值。自己做的事情,都是基于团队已有算法框架的应用,谁都能做,渐渐的也有点迷茫和担心。因此我也在思考,有什么东西是别人没做的,而我能去尝试做一下的。后来在和主管的闲聊中,了解到当时团队最急缺的算法需求为人脸识别,虽然临时对接了集团的识别能力,但不论是计算吞吐,还是业务灵活度方面,都还不能满足需求,迫切需要有一个自研的人脸识别算法。这对于当时的我来说,确实是个很好的机会,但面对的压力也很大。冷启动阶段,没有数据,没有模型,甚至连知识储备都是欠缺的。和其他算法不同,人脸识别是一个非常复杂的算法系统,牵扯到的算法包括人脸检测、关键点定位、人脸校正、人脸特征提取、特征检索等多个环节,每一个环节都是一个独立的完整模块,不像分类还是检测任务,一个模型就能cover。这对当时的自己既是挑战,也是机会,我也需要这个机会去证明自己。之后经过两个多月的折磨之后,所幸人脸识别模型赶在双十一之前如期完成。上线之时,也受到过运营的质疑,毕竟要用一个新人开发的模型,替换一个稳定运行的成熟模型,谁都觉得不靠谱。不过好在最后一切顺利,2020年双十一,新模型正式上线;2021年双十一,经历多版本优化后,完成全场景的替换。看着日常上亿级别的模型调用量,一切都是值得的。
按照阿里的年陈文化,入职满一年之后,叫做一年香。我是在2021年的7月份拿到的一年香徽章,工牌卡带也变成了黄色,还剩下橙色、红色和金色卡带,希望自己能集齐四色卡带,到时候一定会再写个10年回忆总结,哈哈。
左边为新人卡带,右边为一年香卡带
——算法壁垒,简单有效原理。算法没有壁垒,真正的壁垒在于数据和领域知识。模型没有高低之分,简单有效即为合理。
——对齐目标,做好预期管理。定期和主管对齐目标,确保你做的事情,和团队建设大方向保持一致。对业务方不过高承诺,实事求是。
——业务思考很重要。来源于业务思考的模型,才能真正解决业务问题。
对于算法工程师来说,壁垒不在于模型,而在于数据。对于同一批数据集,尽管不同的算法工程师能训练得到不同效果的模型,但在业务中,这些指标的差异并不会带来肉眼可见的业务效果变化。随着各种算法模型和框架的开源,算法的复制成本是很低的,因此算法很难成为壁垒,能形成壁垒的就是数据和领域知识了。很多情况下,数据集的完备性和纯净度,才是制约模型效果的关键。日常的很多工作,其实都在如何获取更多有价值的样本,样本量不足,再简单的任务都很难拟合。对业务部门来说,数据和业务是紧密相关的,了解业务的本质就是了解数据和构建领域知识的过程。算法的学习成本很低,但领域知识的学习和数据获取的成本很高。
对于算法同学,特别是刚踏入工作岗位的同学来说,容易陷入一种盲目的技术憧憬中。模型设计阶段,喜欢构建非常复杂的模型,堆砌各种高大上的算法,但在实际业务中的收益并不明显,且容易带来不必要的工程计算压力。这时候就应该遵循经典的奥卡姆剃刀原理,简单有效即为合理。这就如同数学建模一样,对于给定的复杂问题,通过各种抽象和特征定义,将复杂的问题简单化,用简单的方法解决复杂的问题,对业务的帮助才能最大化。
在考核阶段,很重要的前提是你的产出和主管的预期目标能保持一致,这点对于新同学来说很重要。否则你可能努力工作了一年,结果辛苦产出的结果却并不是主管想要的,这就容易导致最终的结果和自己预期会有比较大的gap。在做事情之前,一定要和主管对齐目标,确保自己后续的工作和团队大方向、主管预期保持一致,避免劳而无功。
在业务部门,对业务思考的深度和带来的业务价值非常重要,这点对于算法和开发岗的同学同样重要。不论何种形式的考核,都会先看个人的业务思考深度,以及为业务发展带来的价值。而这两点在很多情况下,容易被算法或者开发同学所忽略。因为在技术人的惯性思维里,解决了棘手问题,设计了高大上的算法所获得的成就感,比业务成就带来的满足感要高的多。这也使得有时候我们会陷入到这种思维里,一味追求创新,追求算法的先进性,却忽略了很多跟业务效果更加紧密相关的环节,如数据准备/清洗,模型迭代等。最终使得模型效果大打折扣。
为了避免上述问题,在模型设计阶段,需要提前了解业务背景,了解制约当前业务发展最紧迫的环节,再针对性地设计算法,实现真正的头痛医头脚痛医脚,带来最明确的业务效果提升。在内容风控领域,业务思考非常重要。特别是对于一些底限类风险,如何设计出更加具有安全感,更具完备性的识别算法,离不开个人对业务风险的深刻理解和思考。单纯依靠运营输入的知识远远不够,不要让运营告诉你有哪些类型的风险,以及需要哪些识别能力。他们的建议只是参考,更重要的是要从全局的角度去对问题进行拆解,多想多看,运营的管控需求始终只是你模型识别能力的子集。有些类型的风险并不是不管,只是他们没有想到,要尝试创造管控需求。以我的品牌logo识别工作为例,我之前的工作重心都是投入到风险的召回方面,却忽略了业务管控的标准要求。尽管模型的识别精度很高,但是很多无关商品、山寨相关的风险在业务中是不管控的,使得模型精度和业务精度存在极大的gap。之后重新分析了这部分人审通过的风险数据之后,设计了无关商品自动过滤模型,才真正解决了业务上精度不足的问题。