开通公众号到今天也快有 5 个月了,简单总结下这半年的学习情况,并进行反思和展望。

1.Review

「一月」:

  • 看了三本书:
    • 《活着》《人人都是产品经理 1.0》《人人都是产品经理 2.0》;

「二月」:

  • 完成 16 篇博客:
    • 《Word2vec》《Deepwalk》《GloVe》《LINE》《FastText》《Node2Vec》《SDNE》《Youtube Net》《DIN》《Trainsformer》《ELMo》《BERT》《GPT》
  • 看了 1 本书
    • 《运营之光》
  • 开通了微信公众号——获粉 490;

「三月」:

  • 完成 7 篇博客:
    • 《Transformer-XL》《GPT-2》《AlBert》《XLNet》《EGES》《机器学习入门》《万字长文带你入门 GCN》
  • 学习 Docker;
  • 看了 2 本书:
    • 《学会沟通》《深入浅出 GNN》
  • 公众号净增 322 粉丝,累计共 812 粉丝;

「四月」:

  • 看了两篇 GNN 综述并完成 8 篇博客:
    • 《MPNN》《PinSage》《WL-test》《DeepGBM》《GAT》《DIEN》《VGAE》《R-GCN》
  • 学习 Tensorflow 2.0
  • 看了 2 本书:
    • 《经济学通识课》《小狗钱钱》
  • 公众号净增 882 粉丝,累计 1694 粉丝;

「五月」:

  • 完成 11 篇博客:
    • 《GCMC》《NLNN》《GN》《JK-Net》《Diff Pool》《NGCF》《ESMM》《DSIN》《MMoE》《GCN 源码》《GraphSAGE 源码》《OGB 基准》
  • 看了 2 本书:
    • 《海龟交易法则》《指数基金投资指南》
  • 学习 Python 核心技术;
  • 公众号净增 849 粉丝,累积 2543 粉丝。

「六月」:

  • 完成 8 篇博客:
    • 《metapath2vec》《GATNE》《Cluster-GNN》《HAN》《MMoE-PosBias》《利器》《初始化》《规范化》
  • 看了 1 本书:
    • 《洞穴奇案》
  • 学习 Pytorch 及源码;
  • 公众号粉丝净增 566 粉丝,累积 3109 粉丝。

「总结」:

  • 完成 50 篇博客,涉及 Graph Embedding、预训练、CTR、GNN 四个方向;
  • 看了 11 本书;
  • 学习了 4 门课程;
  • 公众号净增 3109 粉丝。
2.Summary

当时开通公众号有两个大目的,一个是「以写促学弥补理论知识」,另一个是「分享笔记」,并分别总结了以下几点原因:

  1. 「以写促学」:主要原因的有以下几点:
  • 「加深理解」:先前读论文很多时候都是一扫而过,只去了解概念而忽视细节,通过记笔记的方式可以帮助自己加深对论文的理解;
  • 「强化记忆」:好记性不如烂笔头,通过记笔记可以加深自己的记忆,并在知识点遗忘时随时可以翻阅;
  • 「提高效率」:纯粹的阅读论文效率低下,而通过记笔记的方式可以保持大脑的兴奋,化被动学习为主动学习。
  • 「分享笔记」:主要原因的有以下几点:
  • 「完善笔记」:平常阅读论文的时候很容易出现打马虎眼的行为,对于似懂非懂的知识点很容易出现忽略的情况,但通过分享笔记可以督促自己在记笔记的时候进行完善;
  • 「提高表达能力」:毕竟现在的笔记不仅是给自己看的;
  • 「集思广益」:一个人的思维可能是单一的片面的,多人学可以通过不同的角度来理解论文;
  • 「正向反馈」:一次偶然将自己的笔记写成博文并分享出来,结果广受好评,备受鼓舞,收获了很多成就感,这种正向反馈可以提高记笔记的动力;
  • 「开源精神」:从小白过渡到了初学者的过程中也看了很多大佬的学习笔记。作为开源受益者将反哺开源社区,帮助更多的人学习和避坑。

从上半年的 Review 来看,目的基本达成。但在快速积累理论基础的情况下,也出现了很多问题:

  1. 「实战经历不足」:因为学习节奏过快,没有通过代码学习进行强化,导致学习留存率过低;
  2. 「非目标导向型学习」:GNN 看了 20 篇论文,但由于没有明确的目标和方向,导致在学习的后期特别迷茫深感乏力,进而也导致学习动力下降,必须消耗意志力克服;
  3. 「闭门学习」:学习过程中与他人的交流和讨论太少,导致信息蚕茧和学习留存率低。记得后期一次 GCN 论文分享时,以为自己很熟悉这块内容,但是在分享过程中发现很难将内容表述清楚;
  4. 「书读太少」:想读的书太多,而可读书的时间太少。一直在利用碎片化时间进行阅读,学习留存率太低;
3.Outlook

一直在思考怎样才能成为一个优秀的算法工程师?以及自己核心竞争力在哪儿?

我们都知道互联网是很吃年龄的行业,不持续学习跟进前沿技术就会被淘汰。

而 AI 算法的更新更是日新月异,导致很多的经验经不起新技术的冲击。以 NLP 为例,18 年提出的 Bert 直接改写行业范式,大幅度降低任务的难度,并且极大的利空老算法工程师。

通过和同学交流、前辈经验和自己的思考,总结下目前的想法。

首先可以将算法工程师分为初级、中级和高级三个阶段。

  • 「初级阶段」:这个阶段的算法工程师简称 SQL Boy,与数据打交道,做些数据清洗、数据分析、特征工程等 dirty work,一般任务明确,业务和技术都不需要操心。这个阶段的算法工程师应该具备数据敏感性、掌握算法原理和简单落地的能力;
  • 「中级阶段」:这个阶段的算法工程师已经积攒了较多的算法经验和技术积累,对已有的算法问题,具有自己的理解,并且能够进行适当的改造和优化。这个阶段的算法工程师应该具备大方向技术选型、技术改造以及应用落地的能力;
  • 「高级阶段」:这个阶段的算法工程师应该具备业务抽象能力和资源整合能力,并且能够制定合理的战略目标,从算法层面上解决实际的业务问题。

在了解到算法工程师大致的成长经历后,作为初级算法工程师,结合自己的经历有以下几点思考:

  • 首先,初级阶段的算法工程师不应该因为一直写 SQL 或者做的工作太 dirty 而失去兴趣,应该在这个阶段多去积累业务和数据经验、也要多看论文、多复现模型跑实验;
  • 其次,要有算法落地的能力,虽然大公司会细分职能来提高效率(算法团队负责策略,而开发团队负责落地),但越往上走越需要有工程体系的大局观,不能仅考虑算法层面的事,还需要考虑工程瓶颈;
  • 再者,业务知识和算法的结合是一个很大的优势,要往垂直领域发展,或者成为一名交叉领域的人才;
  • 最后,逻辑思考一直很重要。

总的来说就是:「理论、工具、业务和方法论」。

根据上半年的反思和对未来的思考,简单展望一下下半年的工作和学习:

  • 下半年的重心应该侧重于应用与实践,应该多写代码,通过实践来强化理论学习;
  • 论文继续学习,保持习惯但不是重点,多与同学讨论分享;
  • 每个星期空余些时间用于看书,精读而不是泛读,多思考、多总结。

最后附上一句话:求知若饥,虚心若愚 (Stay Hungry, Stay Foolish)。

共勉!

阿泽2020.7.1