打开京东ME,显示在职天数三十九天。

三十九天,并没有实质性的工作产出。从DM/ML转向DL/CV,曾经一度联系李凯东老师,想去他部门打比赛。聊天中李老师说了一句令人印象深刻的话:“真的不喜欢再放弃,至少不会遗憾。”。也许在公司这段时间,做了很多自己从没有做过,但是觉得难度有点大的事情,在做事情之前,我就会问自己“要做到最好还是做到问心无愧?”。事实上,在认为超出自己能力的事情面前,我选择问心无愧,不留遗憾,确实这样自己从心理上会感到很舒服。但是很快会达到矛盾的另一面,因为对自己能力上限的判断似乎每个人都不是那么在行,所以,最终常常是在纠结中完成要做的事情,但是结果通常也很不错。就在写这段文字的时候,我才意识到,或许做到最好以至于问心无愧才是一种正确的态度。

和带我的老大聊了聊,基本确定了发论文和写Faster-RCNN的CUDA扩展两件事情。“真的不喜欢再放弃,至少不会遗憾。”,我选择相信李老师这句话,选择尽力去熟悉并逐渐喜欢一个事物,选择问心无愧,无愧于这次实习经历。没有产出,志标都为自己感到着急,想办法。在这个时候,我的态度选择再一次帮助了我。

在实习期间,从头到尾读了《深度学习》这本书,建立了对DL的系统认识。现在对于读书和读文章之间的区别已经有了相对清晰的感受,刚入一个领域,读书建立主干联系的认识,读文章建立对细节的感知。这个认识在爱可可-爱生活老师的置顶微博中有体现。

刷了Ng老师的深度学习课程的CV和NLP两章。在CV部分用一种非常清晰的方式讲解了视觉检测的一些问题,例如YOLO;在NLP部分也突出了重点和主干,这部分的内容听得比较浅,目的是建立一个简单的认识就可以。

梳理了PyTorch的源码结构,读了大部分PyTorch的文档。梳理了基于PyTorch实现的SqueezeNet用于目标识别,借助于ONNX实现在移动端部署,涉及PyTorch的模型和Caffe2之间相互转换。读了基于PyTorch实现的SSD用于PASCAL VOC2007的目标检测(截止写这篇博客,因为其他的一些工作,该工作暂时中止)。

从Light-Head RCNN开始,按照老大提供的一个目标检测的List,读Blog,读Paper,读Slides(截止春节回家,剩下一些经典的文章没有仔细琢磨),回家前做的最后一件事情是组内分享R-FCN-3000这篇CVPR 2018正在审的文章的分享。实际上,自己对于目标检测这个细分领域已经建立了一个比较粗的轮廓,但是具体的细节需要逐步深入理解,稍后模型之间的联系和改进会以另外一篇博客的方式呈现。

除了上述之外,在公司内做了一些“低端”的事情。比如采集真人数据,写爬虫,偶尔打标签。为突如其来的一个项目解决Out Of Memory问题。做一些文本数据的预处理和数据清洗工作等。和公司的实习生聊,这样的事情似乎每个人都做过。后来和老大聊,老大说他现在自己也在打标签。偶而也会看到其他的工程师在打标签。虽然有标注平台这样专业的打标签团队,但是似乎很多时候,需要算法团队的工程师自己去爬数据,去打标签,去做数据清洗工作,去解决很具体的工程问题。

在家读了《强化学习在阿里的技术演进与业务创新》这本书,其中还看到了俞扬老师团队和阿里合作的“虚拟淘宝”项目的部分资料,终于算是Tracking了一把前沿,头脑风暴了一番。

回想这段时间的经历,收获了一些认识。至于认识有的可以说出来,有的是不可以说出来的。这部分不可以说出来的,来源于学校和公司之间的Gap,这种Gap是多种多样的。关于工作态度的认识已经在上文中有所阐述,下文是比较具体的内容。

(我妈叫我去吃火锅了,晚饭回来再写,囧,跑)

一.将算法(理论)和问题(实际)结合

具体包括两个方面:选择合适的算法解决特定的问题;对特定的问题进行算法建模;当然很多时候,二者没有严格的界限。比如对于目标检测,通常的一个认识是Detection=Localization+Classification,如何Localize,可以基于Bounding Box做Regr,故检测这个任务可以拆分为回归和分类任务的结合。接下来去思考的问题是,如何做Regr?Input和Output是什么?回到对“表示+评价+优化”的分析。对分类问题是同样的思考路线。在阿里那本强化学习的书中,首先看到的是在对业务深刻理解的基础上,找到可以建模的应用场景。

二.重视开发经验

不要由于自己的算法工程师岗位自视甚高,开发工程师和算法工程师都是工程师,只不过是大家从事的工作性质和工作内容不一样。回顾近期做的工作,做的都是算法的工作吗?如何界定算法和非算法之间的界限?作为算法工程师,开发的经验同样非常重要。必要的时候去做服务器运维管理,写OOP,解决OOM,写批处理,分布式,版本管理等工作。自己在公司表达出对Caffe,C++的否定态度之后,老大说了一句话:“找到会写Python的一大堆,C++值钱啊!”,虽然你是个Pythoner,必要的时候还需要写点C++,团队不会因为一两行代码做工作交接,专门找一个C++的工程师帮你解决问题。

三.细分领域和业务产品思维

团队的一个老大做人脸识别,从阿里转战京东,技术级别蹭蹭上涨。人脸识别是一个具体的技术领域。强化学习可以应用在阿里业务体系的诸多方面。目标检测和分割的诸多SOTA是在标准数据集上做出来的,称刷分。相对于技术创新,业务创新同样重要。自己有一个感觉,做细分领域的创新更有可能做出成果。任何一个坑都很深,不能单纯的认为什么方向都可以搞,什么语言都可以很快应用的得心应手。找到属于自己的那个坑,跳进去。对细节和业务把握的越好,越有可能做出很多创新。在公司有一个很大的感受是:公司永远有解决不完的问题。一个SOTA可能在公司的业务线上就不好使了,这个时候就需要针对SOTA和业务做改进优化,创新已经开始了。在读阿里的那本强化学习的书之后,这种感觉可能会更加强烈。回到真实场景中,深挖细节,直面问题,一定可以找到很有价值的研究课题(论实验室和公司建立合作的必要性)。

公司牛人太多,有和你一块吃盖饭,但是人家CV三大顶会(CVPR,ECCV,ICCV)快要集齐;有和你一块吃水饺,但是人家研一写综述发《自动化学报》,目前3篇B类在手;有和你一块吹B,但是当你文章还没读完的时候,人家已经复现;…

关键是:吹盖饭的人家春节无休;吃水饺的人家假期List早早做好;吹B的每天上班比你早,下班比你晚。

我能怎么办?只能好好学习,天天向上。春节快乐!