[生活感悟]三年级NLP算法同学的自省
我,是一名三年级NLP算法同学,一年的实习,两年的正式工作。其中,前两年专注基础NLP技术,自己定义为R阶段;后一年专注NLP应用技术,自己定义为D阶段。这篇文章,用点的方式聊一聊自己R&D三年的一些思考。之所以用点的方式,是因为我还不太能连成线。
(1)关于选择,坚持和认知升级
选择大于努力。有一句俗话,“NB和SB的区别是一个向北,一个向南。”。在做选择的时候,follow your heart确是一件非常酷的事情,但是有些时候,也许会吃到一些苦头。人总是要纳入到一个巨大的协作体系中去,除非自己独立能够形成一个闭环,否则要将自己纳入到一个更大的闭环中去思考自己的选择。见过follow your heart的同学做出的自己的选择,也见过没啥想法就做出选择的同学,更见过综合多方面因素思考做出选择的同学。在倡导价值多元化的今天,似乎很难从客观层面上评判一个选择的优劣,但是仍旧希望在做出选择的时候,能够非常的慎重。在选择这件事情上,自己做的并不好。因为太过于follow your heart,导致有些方面的问题很难看到。索性,能够及时深刻认识到选择这件事情的意义。但是,我依然羡慕能够做到遵从自己内心生活的小伙伴,你们是生活的一道光。
坚持是一种力量。道理听了很多,却仍旧过不好这一生。那是因为也许你只是知道,但是不理解。因为热爱,所以坚持。这是理想情况下的条件,但是在很多时候,热爱是有保质期的,那就不坚持了吗?教科书上,有勾践卧薪尝胆,有君子报仇,十年不晚。生活中,有见过身边的小伙伴一直苟着直到爆发的瞬间。坚持是为了什么?想清楚了这件事情,就能够坚持下去。因为热爱,于己而言就没有了坚持的概念,虽然在外人眼中感觉你一直在坚持做一件事情。这种现象身边也有很多,比如你总会看到你身边有一些似乎永远不知疲倦的同学。有没有即使不爱了,也能坚持的情况?一种是道理想明白了,拎得清了,也还行。另一种是暂时想不明白,但是得坚持,用巨大的自我内耗获取未来的价值。互联网发展到今天,贩卖焦虑者肆无忌惮,大家的焦虑情绪也是铺天盖地,急功近利的环境是精致利己主义者的天堂。当断则断,但是认定了,请你一定坚持!时间是一味良药,你的不惑终将在时间的澄澈流淌中看到答案。
认知升级,直到被升级。昨天在听一位业界前辈的分享,很有感触。他说他的认知升级是随着不断负责更大的事情逐步展开的,从负责一个具体模块,到负责一个系统,再到负责一个团队,一个业务方向。从一个舒适区跳出,不断脱离自己的舒适区,不断做更大的事情,这个过程中伴随的是自己的认知不断升级。自己在去年完成了一次被动的认知升级,过程其实还是很痛苦的。不过当完成升级之后,视野确实变得又大了一些。与其被动升级,不如主动出击。所谓舒适区,是指给自己划了一个小圈圈,也在一定程度上是给自己设立了边界。我仍旧清晰地记得,我非常尊敬的一位TL给我讲过,不要给自己设边界的场景。君子不器,见贤思齐,与诸君共勉。
首先,希望你能有一个好的选择,假设这个选择是好的,请你一定要坚持;如果不好,做全盘考虑,再考虑是否要坚持。坚持并不容易,请做好心理准备,尤其是非热爱的坚持。坚持的结果也许是越来越舒适,认知会固化,要适时跳出舒适圈,做更难但是也许也是正确的事情。这是一个迭代升级的过程,舒服,不舒服,舒服,不舒服,直到有一天你决定停止生长了。
(2)关于技术和业务
很多算法同学可能对于算法的日常工作理解,主要是读最新的论文,复现论文,实现各种有效的Trick,模型serving和部署。一方面,论文的工作以模型为导向,另一方面,很多公众号等媒体也倾向于传达模型方面的进展,一些工业界的分享也倾向于介绍组内的模型侧的进展。其实,确实有同学能够做到在工业界做类似的事情,这样的事情本质上是在做一个well-defined的问题,在一个特别细小的方向上能够做到专精。这种事情更加可能发生的地方是在一些大厂的R的比重较高的团队,因为假设做好一个模型,能够赋能多个BU,即使一个模型的工作,也能发挥出相应的影响力,的确是令人羡慕的。但是,相信绝大多数的算法团队,典型的以大厂的业务团队的算法和小厂的算法团队,这样的输出都无法带来相应的影响力和业务结果,这里需要尽可能全链路的能力,需要业务输入的比重更高一些。这里的问题是,你会一直选择做基础模型吗?相信二年级的算法同学对此深有体会。
实际上,算法是强数据依赖的,数据由具体业务场景产生,因此,在一定程度上,工业界的算法应该很靠近业务才对,并不是一个躲在业务背后的角色。脱离业务场景,一个典型的例子是,为了解决这个问题,我需要标注多少的数据,训练一个模型,花多少时间。当深入了解业务的时候,也许,你需要的只是一个词典或者几条规则,再或者,这个问题没有必要去解。 不了解业务,不看业务数据,不修Badcase,即使做了很多看起来fancy的模型,对于该工作的价值,也要打个问号了。在二年级的时候,去面试同学,可能更加偏重于考虑模型能力,但是三年级的时候,已经不会这样了。这里分享一段诸葛越的观点:
工作经验分别为1年、5年、10年的三个工程师在解决同一个问题时的差别是什么呢?结果可能都一样,那就是问题都被解决了,但真正的差别在于大家看问题的角度和维度不一样。作为工作经验久的工程师,你看到的不应该仅仅是问题的表面,更要看到问题的前因后果,以及其他与此相关的事情。为什么会这样呢?因为通过多年的工作积累,资深的工程师已经有了解决问题的框架,可以把问题放在框架下拆解分析,最后找到解决问题的方法。随着工作年限的增加,大家一定要总结并提炼出与工龄相匹配的方法论,否则你是无法对“后浪”形成竞争优势。形成了自己的方法论后,不仅可以更高效的应对老问题,还能从容的面对新问题。为什么会呢?因为老问题可以直接套用现有解决方案,效率肯定提高;面对新问题时,将问题放在现有的方法论下进行拆解,很快也会找到方案。你一定要知道,随着职级增加的不仅是收入,还有需要处理问题的数量。如果没有积累,你在应付激增的问题时会显得很吃力。
实际上,首先保证业务的成功,业务能够反哺算法,继而算法帮助业务成长。当你拒绝业务的时候,你理解的业务就是实际的业务吗?简单的测试方法是,针对给定的业务场景,自己去做业务分析的结果和业务大佬的分析结果做对比,高低立现。我们可能远低估了业务的复杂性。
如果业务本身就是技术,那可能就是技术人的梦想了。在硅谷,可能有很多单纯做单点技术的团队也能活的很好,但是在国内,似乎比较困难。最近发现在杭州的一个做图数据库(nebular)的团队,还是很给力的。
(3)关于NLP算法方向
在大概两年前,笔者写过的一些分析和有意思的文章,今天偶尔还会在某些NLP的公众号和媒体上看到。作为三年级小学生,有了一些新的观察和思考,这里斗胆罗列一些基本的认识。
- NLP较之CV,语音等,是一个脏活儿,累活儿
- NLP很难有独立的应用场景(对话+翻译),是躲在产品背后的能力(搜索,推荐等)
- 学术界和工业界的Gap不但有,还不小,慎重在工业界用学术的观点来看待和解决问题
- 工业界NLU的场景比NLG要大10个火星的距离
- 问答系统和知识图谱作为唯二的在工业界比较好的方向(比较好但是不意味着没有问题,只是相比较下来,还算不错的方向)
- 做算法产品而非算法项目
- 做算法系统而非算法模型
- 闭环思维,不要重模型轻规则的观点,做有用的模型
- 重视数据,真实场景下数据比模型重要的多,到数据丰富的地方去
- 工业界的模型落地门槛再不断地降低,算法同学需要新的能力扩展(一个六年级的NLP算法同学应该比三年级的牛在哪里呢?)
-
NLP很酷,且一直酷;NLP重要,且一直重要,方向一定是正确的
上述认识的得到,是由很多项目和外部信息输入得到的。不够理想,但是却足够真实,三年级的小朋友选择真实。幸运的是,身边总是有一些在某些方面特别强的同学,算法能力,业务能力,产品sense,沟通协作跨组织的能力,特别拼命的Lead,都是一种向上的动力来源。
(4)关于四年级
成长的过程,痛并快乐着。四年级要做的事情,简单列一个不完全清单:
- 技术链路的外延和内涵挖掘:数据和算法工程的拓展
- 非技术能力的提升:产品和运营知识体系
- 软技能:
- 开不完的会议,提升会议能力
- 面试技能提升:面了近50个同学了,同质性很高,很难找到亮点。但是实际情况可能就是这样的,要做出亮点,需要格外的用心和深度的思考。
- 带同学们一块儿搞事情:交流和沟通确实是需要刻意练习的(同理心+同情能力),技术管理能力
三年级的同学,感悟和收获很多,很多内容也不是很适合拿出来和大家交流,但是可以交流的部分,还是尽可能真实的表达出来。简单来说,希望四年级的自己能够不设限,不器,见贤思齐,开放,深广。希望能够认识到更多小朋友,一块儿好好学习,天天向上。
相关引文:
(1)关于算法工程师职业发展的思考:https://zhuanlan.zhihu.com/p/336093952