按照惯例,每年年终总结。过去的总结包括《二零一九,GO!》《写在回家之前-研一下半学期总结》《聊聊二零一七半年纪事》,《写在2016年最后一天》

       2019年整体上的节奏是这样的:实习,毕业,拿到驾照,实习,试用,转正,工作,工作,工作,工作……

所以,今年整体上更多的是对技术的理解,对工作的思考。

开源项目上,去年年底,今年年初做的基于BERT的用于序列标注的项目,star+fork数已经>100了。该项目被比较多的公众号,博客,和开源repo引用,估计该repo开源出来的时候,整个github不超过三个类似项目,并且极有可能是最早的项目,所以占据了时间优势吧,尤记得google-bert刚刚放出来,就在实验室实现了用于序列标注的工作,现在基于BERT做序列标注已经满大街了,想想bert刚放出来的时候做,还是有点意思的。

另有两个,分别是基于知识图谱的主动聊天关系抽取,star+fork>100。通过后者,认识很多做关系抽取方向的朋友,看来大家对few-shot learning还是很感兴趣,另外,可能与实现的这个工作是SOTA有关吧,其实也只是实现了一半的工作,但是这一半的工作,在组里一直做到今天,大家在不同的任务上使用,套路基本一样。

可能最受欢迎的还是,所有中文NLP比赛这个repo吧,已经1300+了。虽然在README中,呼吁大家做PR,但是除了在issues区看到要数据的,没收到一个PR,期间有过一次关于合并两个相关repo的讨论。这个repo的初衷是自己来用的,但是慢慢的自己能够从中获取的价值越来越少,已经基本不维护了。现在想想,可能大家都把自己的方案卖给满大街的公众号赚钱去了吧,果然开源还是不赚钱。

除此之外,还有几个50+的repo。没想到,去年关于CV方向上的一个工作,也差不多快过百了。

已经很久没有开源什么东西了,但是现在频繁更新的是PaperReading这个repo,虽然,star数只有5个,但是其实个人认为是所有repo中最有价值的一个repo,这个repo会更新自己每天读的一些NLP方向上的文章,写一些自己认为有价值的东西,或者吐槽,或者新的想法,之后会长期维护和更新。想到之前在学校做研究苦于没有想法,现在真的是不缺想法,但是缺好想法,缺时间。

博客共写了48篇,差不多平均下来,每周一篇。其中,最近的一篇《NLP,吹爆与落地》被一些大佬转发了,还是有点儿成就感的。《论文阅读-文本风格迁移》竟然吸引到了友商的关注,整体上,虽然生成方向上的工作比较难做,但是业界还是有不少的探索工作在做。其中,还有几篇能够被自己组里的同学搜索到并能够有一些帮助,也是蛮开心的一件事情。

除了博客和开源,就基本只剩下技术和工作了。

花了很多的时间读各个方向上的论文,花了很多时间做Trick实现和调参,以至于现在觉得有些论文读多了会腻,同质化有点儿严重,有点儿无聊。Trick实现,模型实现变成了体力活,大多数时候Tensor要对齐,要向量化,要BERT,各种输入和输出端的花式Trick,是有点儿没劲的。重要的是,不仅你自己是这样,你会发现周围人在不同的任务上都是基本这样的玩儿法之后,就会慢慢觉得不是很有趣了。

曾经觉得有趣,重要的,现在似乎发现不是那么有趣了,重要了。那么,一定是有了更有趣,更重要的了。

的确,算法如何输出产品和价值?其实是一个更好的问题。这个问题本质上需要思考的是算法落地。整体上的感受是:算法不好落地。对于NLP领域的一些想法,已经在之前的相关博客中有做分析。

除了被吐槽算法团队普遍工程能力差,还要面对来自产品同学对算法工作的灵魂N问:你需要多少数据量?这个问题算法能解决到什么程度?你的算法什么时候能够上线?咋测试啊?

你这个任务需要多少数据量?(如何评估算法所需的数据量),看这里这里还有

这个问题算法能解决到什么程度?(如何评估算法的效果上限)

你的算法啥时候能上线?(如何评估算法的开发周期)

我的模型上线标准是啥?(如何保证模型被合理测试)看软件测试中如何测试算法?

作为一个算法码农,我太难了。其实上述这些问题,并不是特别容易回答。除此之外,在《业务,工程和算法的互殴现场》中也可以看到一些现象。这里体现的矛盾是:

第一:算法团队有算法团队需要关注的内容,但是业务线相关同学要求算法具备不差的工程能力。虽然一般算法和工程是两个团队,但是实际上,算法是算法+工程团队,工程是工程团队。

第二:业务线相关同学用工程开发的角度来看待算法开发。如此,对于产品同学提的一些问题也就不足为奇了。

重要的是,这种矛盾将是长期的。这里,简单列一些个人目前觉得什么是好的,什么是坏的吧。

好的😊

  • 在数据标注指南上花时间,想办法定义清楚问题,拆分标注难度,考察标注流程和建模流程的一致性问题,标注质量评估和控制,最好自己先标注一定量的数据

  • 先看数据,再决定建模手段。上来就用BERT,无异于耍流氓(民科做法)。当然,如果目标是学习和了解新技术,支持拿着榔头找钉子

  • 花心思定评估指标,模型指标和业务指标。确定系统的上线标准和测试流程。最好定量指标和定性指标(人去看,要体感,成本高了点,效果大大的好)都有

  • 工程上保证可扩展,鲁棒。做好资源预估和分配。

  • badcase分析(无聊是无聊了点,不过好处大大的有)和在线hotfix手段

不好的😅

借桑榆的话,看这里。我自己想说的,

  • 结果差有一万种解释,结果好也有一万种解释,我眼中的DL。所以,唯DL论,不好

由此带来的副作用是,可以糊弄外行人

  • 认为搞业务的都是垃圾,搞模型研究的都是高大上,SB!

另一个重要的问题是:活着这回事儿。

你会发现,正当你写代码的时候,中午和你一块儿吃饭聊天的同事突然告诉你,可能第二天就不来上班了。

你会发现,作为一线普通员工,在维权道路上尚属弱势群体,你以为自己是程序员,智商更高,在维权上会做的更好?鸵鸟。

你会发现,有些同行真的会从11楼跳下去。

你会发现,35岁可能真的是一道坎。

你会发现,同事的一个梦想是:周六或者周日,开一个房间,舒舒服服的就睡一个下午就行,别人都不要找他。为什么不在家里?不在公司?

……

离开校园,生活将它真实残酷的一面赤裸裸地就放在你眼前。收智商税的公众号满天飞,满口胡扯的专家大佬到处乱跑,为名为利,为活着,骗与被骗且不自知,其实多数人真的都挺不容易的,这里并非吐槽。写这段文字的时候,我竟想到了王垠最近的文章《2020新年寄语》,文末写道:

所以在这十年结束的 2020 年,我决定要有一个重大的改变。我将严格的选择我身边的人,不再与风格跟我不搭的人一起,不再妥协。把内心风格一致的人团结在一起,形成自己的小集体,让生活美好起来,就是我 2020 年的愿望。

这种与自己的和解,我读出的是释然和感动。

今年时常和朋友聊到,时间过的太快了,真的太快了。如果要给自己的新年一份寄语,我会这样写道:

专注于技术但不唯技术,多一些对社会的观察和思考,善待自己,认真品尝岁月这壶或新或老的酒,热情认真但不冒失的生活。

2020年,我将迎面所有的挫折和挑战,不畏惧,不退缩。2021年,尚且码字行文,畅谈光阴和故事。