回首过去的三年
>
>
回顾我过去的大学三年生活、自学之路,并总结一点经验心得,最后展望未来,不感兴趣的朋友可以直接跳到“读书心得”部分。
今年终于迈入大四的门槛,从一名三年前刚刚踏入大学时懵懵懂懂的“萌新”变成了这个学校中老油条的“老人”,不过我很快也将成为读研所在大学的一名萌新,正所谓没有人能够永远年轻,但永远有人正年轻着,回首过去的大学生活,我走了很多弯路,也在某些方面摸索出一点自己的经验。在此想写一些我大学三年来的经历与感悟,既作为自己大学三年的总结,也希望能为一些读者朋友提供一点经验,奈何本人才疏学浅,且大多偶然得之的幼稚的奇思妙想、人生感悟都已似风中的纸屑飘散而去,再也捉摸不到,因此文中若有不当之处还请读者海涵。
大一
2017年我从长三角地区的一座小城来到地处西北的古都西安,由于我的家庭并没有高知识分子能够提供指导,也没有钱去被辅导填志愿的机构割韭菜,因此在选志愿时也是抓瞎,全凭我一家人百度来的信息作为参考挑选专业,我先是进入了光电信息专业,而后我又满怀着成为一名优秀电子工程师的憧憬通过考核转入了电子科学与技术专业。
初入校园时对什么事物都感到新鲜有趣,哪里有活动都要去参加,哪里有社团都要去报名,哪里有组织招新都要去面试,如同没头的苍蝇到处乱飞,如今回头看浪费了大量的时间精力,90%以上的都似浮光掠影,不曾给我留下任何印象,甚至有些反而给我留下了坏印象,最后只在院团委中留下来参与学生工作,其中也并没有什么亮点,但后来在这里遇到了我的女朋友,乃人生一大幸事。
像我这样的普通人,在小初高时就开始对大学有着难以言述的憧憬与渴望,因此刚进入大学时,大学里的一切仿佛对我来说都是神圣的,见了学长学姐我热情打招呼,上课从不迟到更别提翘课,在图书馆每日呆到闭馆才回宿舍······不过这种生活并没有给我带来任何实质上的提升,无论是思想水平还是技术水平(这会儿还为0),我仍旧停留在高中阶段,甚至有些下滑,高中那会我还经常读一点文学小说,到了大学反倒碰都不碰,正应验了我高中语文老师所说的“你们中很多人与文学的一点联系到毕业后就再也没有了”。我上课听讲做笔记,下课写完作业还要再多刷几道老师没布置的题,甚至我买了两本《张宇考研高数十八讲》和《张宇考研线代九讲》全都给做完了,俨然从一个高中做题家变成了大学做题家。
不过除了做题我也并非啥也没干,我接触C语言后,开始尝试学单片机,毕竟我的理想是成为一个电子工程师嘛,然而很快我发现我似乎没有这方面的天赋,对着硬件方面的书本就是难以读下去,之后得出了我不是这块料的结论,放弃了继续在硬件方面继续深造的念头,与此同时我也陷入了迷茫,我既然已经进入了电科专业,但发现自己的兴趣却不在于此,面对着那繁杂的电子、物理、光学等课程,学也不是,不学也不是,学的话耗费时间,纯粹为了绩点,再者没时间去学别的东西,这样毕业后读研究生岂不还是只能留在这一行?不学的话成绩就落在前20%以外,我也不想再经历一次像高考一样残酷的考研大战,我便陷入了两难的境地。
就这样迷茫踌躇了很久,在此期间我了解到了python这门语言,2018年初这会在我们学校里似乎还没有形成全民AI的热潮,也不像现在朋友圈到处都是python课的广告,我找了一本入门书敲完了所有代码。转机发生在大一末,我偶然从qq空间中同学的动态下评论里看到一个对我来说完全陌生的词——“机器学习”,这是个啥?我挺纳闷,但是感觉听起来还挺高级的,就是因为这点好奇心,便开启了我的机器学习从入门到入土自学之路。
大二
从大一升大二的暑期到大二开学后的一段时间,大概是2018年的10月,我在网易云课堂上学完了吴恩达老师主讲的机器学习课程和deeplearning.ai的深度学习课程,并且在coursera上完成了所有的课后作业。Andrew在课里不停的彩虹屁,“你已经超过了硅谷大多数工程师”、“你已经成为了机器学习方面的专家”让我很是受用
之后我在大二期间还看了宝可梦大师李宏毅老师的机器学习、深度学习课程,fast.ai的课程,林轩田老师的机器学习基石(没看完,当时觉得难度实在有些大,特别是Learning Theory和VC Dimension那块)
买了李航老师的著作《统计学习方法》,不过在看完第八章AdaBoost后终于因为前面有太多数学推导看不懂而弃了,周志华老师的著作《机器学习》,前两章的公式推导就给我劝退了直接又弃了。除此以外,还看了网上许多大V写的技术博客,往往也是浅尝辄止,涉及繁杂的数学理论便打起了退堂鼓,仅仅满足于了解个概念,用代码敲敲demo或者跟着书中代码写写而已。此时可以说正是学会了一点便沾沾自喜得意洋洋的心态,有一张流传很广的图很好的描述了这种现象
我当时便处于那愚昧之山的山顶,一度膨胀得觉得自己学的不错,很懂machine learning和deep learning,实际上对啥都掌握得不牢,更别提自己能对某些方面能有什么见解了。在大二下,我在老师的指导下开始第一次读顶会论文,并且对它做了复现,当时大约花费了我一个月的时间才跑出了论文中所说的效果,深感自己代码能力欠缺,加上我本就是电子系而非计算机系,从没有编程作业,平日写代码全都是自己跟着书上敲或者到百度上抄来改改,一直没有自己好好学习一番,逐渐地我迈入了绝望之谷,觉得理论理论我看不懂,代码代码我敲不快也敲不漂亮甚至有时敲不出来,自己实在是太菜了,好像啥都懂一点点,其实一点用都没,还是什么都不会,又开始怀疑自己是否是学这块的料,因此在大二期间我还有一段时间跑去学后端,跟着书写了个博客网站,不过最终还是回归继续学机器学习。
大三
时间转到大三,《物理光学》、《应用光学》两门专业课学得我头发掉了一大把,印象深刻的是物理光学中仅一章便有两百余条公式推导,大学的前两年我也在与专业课苦苦搏斗,在大三暑期时保研夏令营来临前维持住了裸分专业第四的成绩,也算给了内心那个热衷刷分的我一个交代。在大三上快结束的时候即2019年年末,我在学长的建议下准备去找一份实习,大约刷了一个月左右的leetcode,因为对自己的水平没有自信也没有清楚的认识,便海投了很多公司,只求有一个实习的机会涨涨经验,最终幸运地获得了两个offer,在我的这篇文章中提过,之后便是2020年初的疫情爆发,实习在4月结束后,从4月到8月我一直呆在家。
实习期间也算做了一点挺有趣的工作,将模型的准确率提升了约3个百分点,而且解决了模型一些奇怪的行为,期间踩了很多坑,也接触了很多以前没有用过的工具,可以说短短的三个月实习给我的提升胜过在学校里的一年。
在家的4月到8月,因为实习期间发觉自己线性代数太差,在mentor教给我一些工程上的trick时,我的反应经常慢半拍,得看好一会才能把那矩阵运算的意义搞明白,于是我跟着Gilbert Strang老师的公开课重学了一遍线代,才发觉之前不但没学明白,而且好多根本没有学!学校老师居然没给我们讲四个基本子空间,对于矩阵运算的理解也只是行乘列的叠加,真不知道我早点接触这门课会有多好!同时以前学的吴恩达在coursera上讲的机器学习也太过简单,于是重学了他主讲的cs229,内容充实了很多。此外,为了准备暑期各个高校的夏令营机试,我还买了刘汝佳的“紫书”,刷了前十章所有的例题和部分习题,也刷了一些高校近几年的机试题,感觉自己比之前有了不小的提升,虽然在算法上仍是一个不折不扣的菜鸡。
接着7、8月份的保研夏令营可谓十分惨烈,我不算top的专业排名加上物理院系的专业背景,在校期间也没什么有含金量的奖项,只有一个可怜的实习经历老师可能都没看,基本是投一个挂一个,还有把我的简历从我投的计算机类院系给调到电子类院系的情况,最后只入营了四个高校的夏令营,不过结果还不错,每个都成功拿到了优营offer,最终也去了里面最好的地方,过年回老家和亲戚吃饭也可以吹牛自己去国内某top读研了hhh。
大四
很不幸的是我到了大四还有一堆课要学和考,以至于到现在还不能把所有时间精力放在自己将来要做的方向上,同组的同学有的提前进组,有的去实习,貌似只有我还在被激光红外这些不相干的课程折磨(哭了),不过和以前相比,空余的时间还是算多了的,因此想趁此机会再好好补一补我不扎实的基础,落灰的李航与周志华老师的著作又被我重新捡起耐下性子好好研读,还看了自己一直挺感兴趣却从未接触过的IR方向,读完了manning教授的著作《信息检索导论》,获益良多。
读书心得
近日愈来愈觉得静下心好好读这些经典作品的收获要远胜读公众号的推文或CSDN上的技术博客,曾经沉迷于每日读很多大公众号的推文,然而文章的范围广且内容杂,因为大多推文并非原创的系列文章,而是从各处转载或翻译而来,且AI领域的方法日新月异,只读一篇新论文、一种新方法的解析并不能形成体系化的知识结构,无法在脑中架构起众多知识之间的桥梁。成体系的文章往往需要作者本人在某方面具有极高的水平且愿意投入大量精力来撰写,受众还需是面向广大水平参差不一的读者,即不能像学术论文那样讲两句背景就开始讲方法了,不然会让没有相关专业背景的读者一头雾水。这种“好作者+好文章”往往只有在一名水平良好的学者要出一本书时才会出现,近年因为深度学习大火,相关书籍层出不穷,几乎每个月都有新书出版,然略略翻读便发现不过是博客式文章的堆砌,毫无体系与深度,不过是网上到处都能搜到的东西罢了。
个人认为读书与读技术博客的不同,大约在于一本好书往往会对知识进行梳理,对一个算法的相关背景、初代版本、缺陷与改进、最终成型、如何应用以及和其他算法的关系与比较娓娓道来,兼顾广度与深度,而博客的目的往往只是为了给读者讲明白一种方法或一篇论文,可能比书胜在深度上,但其覆盖的知识面往往仅是一个点,若是一系列成体系的深度博客,一般都会被出版社找上门整理成书出版,我所知的就有好多开源博客被出版为书。个人认为作为一门初学者时以经典网课、书籍为主,因为它们无一例外都自成体系,帮助读者从零构建知识网,以技术博客、论文为辅,它们往往对一特定方法讲得极为透彻,且常提供示例代码,能提供最快的实操体验。
关于我的公众号
大一时由于完成大作业的需要,机缘巧合下我开通了这个公众号,因为开通的早,所以拥有现在新开公众号所没有的留言功能,这也给了我与读者的交流机会。不过直到大概今年一月份我才重新拾起了这个尘封已久的公众号并将自己博客网上的一些文章搬运了过来,被一些大公众号转载后,便有一些朋友开始关注我,在此深表感谢!
从8月到现在我没有写一篇文章,一方面是因为我在准备保研的事宜,另一方面是我日益觉得自己才疏学浅,读了大牛们的书后更觉得自己不过一介草包,有何自信敢写东西教给别人?因此一直在给自己充电,毕竟电池也得充满电才能输出不是?
我在上面对一些公众号、技术博客说了一些不好的话,其实也是在反思我自己,虽然我个人的公众号读者很少,跟众多大号无法比,但我既然要在这里写自己的原创文章,就得认真写好每篇文章,我也在提问我自己:我应该写些什么?我能够写些什么?跟很多博客一样从word2vec等基础写起吗,我写得能比cs224n讲得还好吗?还是从线性回归、EM算法等机器学习基础写起呢?写的东西比起市面上众多AI书里都有的内容有什么不同吗,如果没有更清晰易懂或有自己的见解,那为什么读者朋友还要看呢,去买大佬的书看不是更好吗?我写得够不够明白,我如果作为读者的话看不看得懂,愿不愿意看?
这些问题有待一一解决,未来写文章在技术方面,我读研时以及工作后想必会学到很多值得与读者朋友分享的东西,不会写网上教程到处都能找到的东西。技术以外的方面,由于我并不想把自己的公众号做成一个“没有感情的技术讲解机器”,因此我将来还会分享一些学习之路上的经验,以及偶得一些人生感悟时也会在此分享,望能博诸君一笑。
我写公众号最大的目的是交友,通过文章可以结识很多志同道合的朋友,说不准未来在某个地方会碰上某个读者就帮我一把呢?又或者我可以帮助比我更年轻、经验不足的后生,这也是一件很有成就感的事情。我写文章也没有谁会给我一分钱,打赏的还经常都是我的家人朋友同学,另一目的是总结反思与提升我自己,等多年后回过头来看看20岁出头的我都在想些什么做些什么,想来是件非常有趣也有意义的事情。同时,分享技术与学会技术并不能划等号,不是学会了一个东西就代表着也能够教会别人,这两者之间还有着不小的差距,通过分享我也可以进一步加深理解,提升自我。
总结
如果要用AI的语言来概括我的大学生活,可能最恰当的比喻是Sigmoid函数,我从最左侧的最低点往上走,开始是梯度平缓区走的很慢,摸着石头过河,后来熟悉以后上升得愈来愈快,就像Sigmoid到了x=0处时梯度最大,中期也正是学习知识最快也最热情的时候,如今却将要迈入函数的右侧另一个梯度平缓区,进步缓慢,如何打破这种现状呢?莫过于更换自己的激活函数,把Sigmoid换为ReLU,接下来的目标便是稳定而持久的进步,便以此文共勉!