机器学习road map

机器学习road map

前言

来了,这一次我们来当鸽子!在省子哥无数次的催促后(最近实在是忙的离谱,14号马原毛概,15号赶综设,收拾寝室到半夜一点,现在还差一个18号的ddl)在机场登机口的时候开始写这个roadmap。

毛佬,机器学习应该如何入门呢?这个问题有无数个人问过我,但是怎么回答这个问题,我一直没找到一个合适的答案,这里就简单回忆一些我进入机器学习领域这一年半的血和泪,看看是否能稍微启示一下后面的人吧。

大一上:数学的种子暗自生长

我,来自一个高考小省,带着一身毛子气息,现在也是动不动就犯毛子病,初上大学的时候都没怎么接触郭电脑,两个食指打字还会被室友笑话。

大一上学期,带着要比某两个人加起来都要过得好的目标,我开始了内卷,也是真的很幸运,大一上学期遇到了对我意义深远的老师:李厚彪。 没错就是那个打数学建模的老师,在线性代数的课程上,他不仅会讲课内的内容,还会经常向我们展示属虚的魅力,up主 3blue1brown也给了我很多的数学的启蒙。大一上学期翻得最多的两本书是线性代数和微积分的指导教程(前两天收拾寝室的时候发现页脚都看不清了)

大一上误打误撞的接触了一点前端,寒假还做了一个小项目(最后项目都没有上线)当时是真的不懂也没人带我,各个方向我都屁都不知道,前端给了我最大的经验教训是:我本人并不是很喜欢做纯工程,总有一种很忙碌但是没有什么收获的感觉,搬砖的劳累大于了收获的成就感。

大一上最大的成就感可能就是真正开始对高数产生了兴趣,也真的向大家安利李厚彪老师,大一下我还去过他办公室他给了我一些矩阵理论课件,我还给他送了丑橘,真的抄喜欢李厚彪老师

这里并不是说前端不好,只是我能力太弱了,矛盾具有特殊性,大家具体问题具体分析

大一下:你回眸的一刻,我便动了心

大一下的选课也没有人指导我,除了必修课一门选修都没选(现在就是很后悔,非常的后悔),但是正在第二轮退补选的时候,看到了B平台的一门课, 深度学习导论 自动化学院的杨波老师开设的。

课程并没有讲什么传统的机器学习算法,SVM, LR啥的都没有涉及,甚至连PLA都没讲。

上来就是全连接网络,手推DP。上课的公式还算能看得懂8,重要的是。 在学习的同时有很多敲代码的任务,老师还愿意帮忙debug

在这门课上,我用代码实现了反向传播,手推链式传导,手撸了CNN网络,手撸了CNN的反向传播(这个当时蛋疼了好久),最后实验做了一个MNIST手写体数字识别。

大一下除了启蒙杨波老师,在数据结构课上还认识了刘峤老师,(我大学交往最多的老师,一言难尽,但还是感谢,老师去计院了,估计以后和学弟们也不会有很多交集了)

大一下暑假和大二上:

大一下暑假是我人生第一次出国,走的是新国大的项目,和Martin Henz学了学函数式编程。如果有机会也建议许欸的学妹也出去,期待疫情好转8。

回国之后我没有直接回国而是留在了刘老师的实验室,开始做表示学习的工作(这个时候我的基础并不是很好)

大二上被老师转到了会话推荐领域(其实还是在用一些NLP的方法)

这段时间的错误在于 对于RNN GNN这类模型的基础知识掌握不是很好。

现在反观那段时间看的论文,基本就在于一个公式和图(或者说当时看的论文的水准并不是很高,花费了过多的时间)

这期间我开始对表示学习有了一种近乎崇拜的信仰,到现在我也觉得虽然知识图谱可解释性一直受到质疑,但他强大的泛化能力我一直认为可以有更深层的探索,也对表示学习在session当中的应用做了一个小小的成果(也让我对推荐这个领域的有效性产生了质疑,到底是噪声多还是信息多呢。

在session领域发生了不小的笑话,做实验的时候一定要记得防止数据泄露这种弱智的现象发生,做四眼的时候一定要记得反复check代码,多进行实验结果的分析,看有没有异常情况的发生

不过大二上学习我的深度学习代码能力有了显著的提高,自己手撸了两三个框架,的确很多失手深度学习代码并不是很好懂,这里还是用廖老师对我说的一句话:写代码是你无法逃避的一个过程,难道小孩会因为摔倒了就不走路了吗。从而反思,大学带给我的一个做事方法就是,遇到问题的态度不该是逃避,承认错误,事情发生是客观存在的,把自己的思想摆低反而能取得更好的效果

大二下:家里蹲?看外面的世界

统计机器学习

在大二结束的暑假,我开始重视机器学习基础对于学习的重要性。林轩田的网课来来回回看过量变,虽然之前看过吴恩达的网课,但感觉吴恩达讲的太浅显,李宏毅讲的太主观,不是很数学。林轩田真的是一个很不错的选择(当然你得有耐心看他的讲解,相信你会有很大的收获。

除此之外,我还去蹭了研究生的统计学习方法课程。在基础知识的学习过程中,分享和组会是非常好的方式,永远不要拒绝做分享,做分享的人才是收获最大的。

南京大学自然语言处理实验室夏令营

南大夏令营是机缘巧合的一段缘分,发哥在peer teaching的时候提到了一个计算机保研群(日常999+的一个大群)我基本妹咋看过那个群,但有天不小心扫了以言,正好看到了南大自然语言处理实验室的夏令营。这个夏令营的性质有点类似于暑研。 简历+一轮5min的面试,面试是多个博士(以后带组的博士)还有有空的老师。当时就大概介绍一下我对自然语言处理的看法,还问了点对于向量空间大小的理解,当时我只答了维度诅咒,其实他应该是想让我说VC dimension的原理的,大意了啊,记忆犹新。

南大夏令营每周会有一次分享,老师还有和实验室合作过的公司都会来,这可能是我真正意义上第一次接触实际生产中自然语言处理的应用。自然语言处理作为认知计算的一种,难度是比CV这种任务要大很多的。忆惜记得有一个学姐,是南大实验班毕业的,在CMU读了硕士后现在在谷歌工作,谈到了关于大企业和学校选择的一点选择,她周围的人劝她去谷歌,只有谷歌有资源和学术环境来完成人的梦想。

这里还蕴含着我对于科研想法的一个改观。我们做的东西真的能实际应用到生产中吗?强化学习在很多nlp领域的实际应用几乎为0,因为根本找不到强化的目标。在工程中,很多时候模型效果好不好并不取决于模型设计的性能,主要在于清洗数据的好坏。LR RF这些模型正在实际应用甚至占据了主流的地位。

南大的科研课题是文档级关系抽取,yysy,和推荐系统的做法也大同小异,现在自然语言使用GNN的做法也屡见不鲜。答辩我们用beamer做了一次学术报告,结业典礼上拿了优秀学员,优秀项目,参加证明。 这也成了我在简历上每次必谈的项目,的确还是蛮加分的内容

博客和深度学习基础组会

除了南大夏令营,虽然我在刘老师实验室处于半放养状态,每周的科研组会我还是会参加的。我们读了很多fundamental的前沿工作。大概包含以下几篇,也供大家进行参考:
ResNet, DenseNet, BERT, GPT, Transformer, TransE, GCN, GAT, GraphSAGE, Memnet, Why GNN so powerful, Seq2Seq, deepwalk, Word2Vec, Glove…

在组会完成后,我有一个好习惯,写一篇博客作为总结,千万不要小瞧博客的作用

至此,我的深度学习和机器学习基本工在大二就算打下了扎实的基础了。

中国科学院自动化所–和大哥结下缘分

我的人生中从不缺乏美好和缘分,大二下认识了两个至今对我道路影响很大的两个学长,大哥和xygg。大哥把我拉到了吴书老师的团队(难以想像我给吴书老师还留下了一个很不错的印象)。

在大哥这,我的科研视野真正的走到了学术前沿,self-supervise learning ,meta-learning, VAE ,因果推理等一系列名词涌入了我的大脑。

和自动化所的工作我这里就不多展开了,但自动化所第一次让我感到科研的感染力和快乐。在我看来,科研之于我们就像诗词之于宋代政客,王安石可以和苏轼在政见上不合,但诗词作为一种不为世俗所污染的方式存在,正如我非常喜欢的一句词:长恨此身非我有,何时忘却营营。千古词香,余韵袅袅。好的科研工作带给人的快乐也大抵类似,现在我看到一篇好的工作真的忍不住拍着大腿叫好。

大三上:翻过那座山(中二病晚期再度爆发)

有关竞赛

我之前也有大大小小的比赛获奖,有些比赛遇到了十分糟心的队友。首先反思我自身的矛盾,我自身有什么特点呢?

  1. 对工作的要求很高,有强迫症的高,比如看到排版拉垮的文档感觉自己会被气的脑溢血
  2. 既然别人做不好这份工作,那还不如我亲自来做

但大三我幸运的和吴龙,赵睿思两个人组队,真的有不错的化学反应。

  • 我: 要求高,答辩还可以,但是不愿意push别人干活
  • 吴龙: 高强度push,实现能力强,要求比较高但受限于对于质量的判断水准
  • 赵睿思:任劳任怨,我们两个push他甚至好几天为了改文档都没吃晚饭,调节我和吴龙之间的矛盾(在竞赛中的)

三个人各有分工,共同努力最后拿到了国一,项目是OCR+NER。

我至今难忘国赛第一次答辩,在答辩前半个小时,为了防止出声音,我们关了所有手机等待答辩。整个屋子静悄悄,对我这个答辩人,紧张的感觉不言而喻,半个小时上了三四次厕所,答辩更多的是对心理素质的考量。开口说第一句话的时候我就秒速进入状态,那次答辩比我们所有的彩排效果都要好。

有关实习

算法岗的实习还是不是很好找,很后悔前两年没有学好C++和算法。一定要注重每次面试表述的漏洞,进行弥补。工科的说话艺术不在于茴香豆的茴有九种写法,而是广泛的戏曲他人的经验,在每次和别人讲述的过程中通过别人的反应去反思我们做的有哪些不足,精益求精。

conclusion

如果你真的看我放了这么久的屁(后面写的少是因为我累了),最后还是来一点点干活总结8

  • 机器学习基础很重要 林轩田是我推荐的首选
  • 深度学习有一些高引用的论文,能让你对领域发展有一个基本的认识
  • 科研不止是坐下看论文,多关注几个公众号和社区,机器之心,智源社区,将门社区。。。。。
  • 前沿工作关注三大顶会: ICLR, NIPS, ICML 明年的热点自在其中
  • 打比赛,做暑研实践都是好的学习方式
  • 论文看完容易忘怎么办?多写博客总结,在组会中分享
  • 热爱数学,面对数学公式不要着急,数学是世界上最美的东西
  • 对科研发自内心的热爱会让你走向成功
7 Likes

哈哈,我也上了Martin Henz的函数式编程,我也想要入门ML,谢谢前辈的分享~