联动隔壁报计算机,聊聊数学与计算机

MagickRitual-avatar

MagickRitual

2021-06-06T17:22:56+00:00

先说个人建议: 不要想着曲线救国,想学计算机就报考计算机

985本科数学(分流统计学方向),成绩基本上在年级前10%左右。数学系其实和高中差不多,没有那么多花里胡哨的课,就是上课听课,下课做题,课后订正,考前刷题,和高中的学习模式非常相似。
这些课程让我现在来说,确实都没什么用。目前转专业后觉得这些东西基本上会一些基础的东西也够了,如果要继续深入学术研究,这些知识也只是个皮毛。不过我就业方面不是朝着数据分析去的,所以这里不做展开。
就业方面,这些课程基本上是为了数据分析岗位服务的,但是很少有数学系出来直接就业的,考编方面教师比较吃香,考公方面大部分是税务和海关。
数学系的升学率非常高,大概在50%左右,大部分人的选择都是金融和统计,少部分继续研究纯数学(应用数学),还有少部分去计算机了。

大三结束,本来认识嘻哈二校的一个教授准备过去读研,后来他们学校的计算机根本不收数学系的学生读研,成绩再好也直接拒。最后拿到了上海某985的软件学院和本校计算机院的保研资格,最终保研去了本校计算机。期间一个小插曲,实验室收24个人,最后自我介绍的时候发现只有我一个人是数学系,剩下要不是计算机,要不是网络安全,要不就是软件工程的。实验室是做CV的,负责招生的导师是一个学术大牛,连着好几年中顶会,每年十几个学生挂名20+篇文章。看到我的简历就说,实验室不喜欢数学系的学生,因为最近几届的招进来都发不出文章,要帮他们毕业,而且就业去向也不太好。最终软磨硬泡下导师说给我两个月时间,然后手写代码,证明自己的代码能力过关就录用我,最终如愿以偿。

大四刚好赶上疫情,研一才开始正式研究。研一刚开学的时候师兄刚好有一个课题,于是苦修两个月,我作为第二作者,11月投出了CVPR,最终225被拒。顺着这个思路修改再投ICCV,前两天出结果,335,已经不打算Rebuttal了。研究生做的课题基本上都是深度学习,这里面对数学的要求已经远远不及以前了。原因在我看来,是2012年AlexNet提出以前,人工智能和图像处理这一块基本上基于特征学习、小波变换这一类方法在做,再加一些机器学习的基础方法,例如SVM、CRF、MCEM之类的,这些知识非常硬核,对于数学的要求非常高。AlexNet提出之后有一段红利期,这段时间神经网络的迅速发展,这玩意用数学都说不清楚,但是它的性能确实比之前纯理论推导出来的要更好。这导致了就算不会数学,也可以构建很优秀的网络,就算会了数学,搭建不出来也是白搭。也就是说,数学不再占那么大的比重了。数学方面只要会高数和代数,还有一些数理统计的知识基本也足够了。反倒研究生最重要的不是基础知识而是看文献,有自己的想法或者有课题,然后有代码能力把实验做出来,就能发文章。计算机本科的学生读研其实在知识储备上也没有太大优势,因为这些东西本科都没学,最大的两个优势反而是编程的能力还有学院的资源,可以提前接触导师、提前进入实验室。

计算机硕士的就业,目前看来9个开发1个算法。很多数学系的学弟都不知道算法、开发、数据分析意味着什么。目前以个人的理解,大厂的算法主要是负责前沿算法的落地,就是从论文到应用这一步,实际的工作就是每个组复现论文,然后比点。目前岗位来看,算法岗的实习非常卷,没有论文天生低人一等。另外算法岗对于研究方向也有偏重,喜欢那些能落地的、更加传统的深度学习方向,例如目标检测、图像分割、强化学习。算法岗的代码要求也更高,手撕通常是LeetCode中Medium的题,笔试就是5道Hard。个人对于算法岗并不太看好,因为首先算法基本上限定大厂和独角兽,还有一些主攻算法的公司。很多小厂根本养不起算法工程师,国企银行对于这一块的需求也并不是特别大。换句话说,大家研究生学的东西都是算法范畴的,但是真的并不需要那么多人做算法。这也就导致算法出奇的卷:大家研究生为了毕业都在学算法,但是并不需要那么多算法,那么当然是有顶级会议论文的人优先。

开发的岗位就更多,但是非常看中项目经验,包括课程项目的经历。开发就分前端后端客户端,以后端服务器为例,就是一些网络编程,工作主要是负责实现一些功能,也就是写业务。开发的就业面相比于算法会广很多。但是问题是,研究生学的东西对于开发几乎没有任何帮助。开发的东西都是本科学的,本科计算机通常都有项目经历,但研究生没有。很多开发的面试官根本不知道深度学习,根本不关心你研究的项目。有很多大厂(例如腾讯)计算机本科和硕士研究生的起薪是同一水平。

以个人春招面试实习的经历,想拿好的算法Offer,真的需要实力非常硬;想拿好的开发Offer,只要背好八股文,有一定的项目经历,研究生就算什么都不做也能进大厂。算法的面试非常硬核,一般先问研究经历和论文,然后是算法八股文(机器学习基础,Boosting和Bagging,SVM,EM,手推BN层,计算Kernal Size,各种Loss和正则化),最后是一道Medium的题目。面的腾讯TEG,竞争很大,在自我感觉良好的时候被淘汰了。最终一个多月的时间恶补计算机本科的课程,转开发了。转的过程也非常不愉快,期间一边学一边面,每次都会有没复习到的地方,以考代练。而且每次面试官都会说我为什么没有项目经验,有时候会用更难的题目来劝退我(例如手撕Hard),好几场面试中途直接主动挂电话。最终面了十几场,拿了一个开发的实习Offer。

另外实验室不一定会放实习,更不一定会放开发的实习,一定要选择好导师和实验室。没有实习,去秋招就不好进大厂,更别说SPSSP。

最后聊聊个人理解,不管是什么系转计算机,都要面临的问题是:研究生的东西属于算法岗范畴,算法太卷了,除非读到博士,或者特别有能力,否则大概率转开发。转开发需要计算机本科的知识和项目经历,这恰恰又是跨专业最缺乏的。所以,想学什么就选什么,要听过来人的话,别听人天花乱坠的吹。

附上一些课程让大家看看差距,算法岗需要的用红色标出开发岗需要的用蓝色标出,非常直观,大家自行考虑。

以下是我在数学系的时候学过的必修课程:
数学分析,高等代数,常微分方程,偏微分方程,实变函数,复变函数,泛函分析,拓扑学,概率论,数理统计,回归分析,非参数统计,复杂数据分析,数值分析,随机过程,统计计算

985硕士计算机在读,目前研究方向是深度学习里面的计算机视觉(CV),具体方向是生成对抗神经网络(GAN),这是我学过的研究生课程:
机器学习与模式识别,人工智能基础,数字图像处理,数值分析,多媒体中的人工智能软件中的人工智能,。

附带参考,以下是我校本科计算机中的重要课程:
高级语言程序设计,数据结构与算法,汇编语言,计算机网络,操作系统,计算机组成,计算机图形学,数据库,设计模式。

太长不看版:
1.不要想着曲线救国,想学计算机就报考计算机。
2.如果你要转计算机的研,先了解什么是算法岗,什么是开发岗。
3.如果你确定要转计算机走开发路线,先去把计算机本科的课程全部自学一遍。然后Github上找自己语言做的项目,一定要动手去做。选导师的时候找那种最水的,最好不要求论文的,放实习,手头有很多工程项目的。
4.如果你确定要转计算机走算法路线,先去把CS231N、吴恩达的机器学习、李宏毅的深度学习、李航的统计方法给看了,然后早点去实验室做研究,早点投出顶会论文,最好再考虑一下要不要读博。选导师一定要找最近几年发论文多的,既然你要卷就要做卷王。
michelintrolin-avatar

michelintrolin

数学出生还去搞开发的话多半是脑子不清楚
算法的话,应用数学好的数学系自己就有做算法的,走跟计算机系不同的路子
RichMedicYT-avatar

RichMedicYT

确实,想搞计算机请直接学计算机
MooMootionless-avatar

MooMootionless

计算机博士点了个赞。现在就是这样的,望周知。
choppa-avatar

choppa

良心贴,跟我的实际观感差不多。
Huds297-avatar

Huds297

算法现在是麻花了吧
MagickRitual-avatar

MagickRitual

[quote][pid=524290227,27195713,1]Reply[/pid] Post by [uid=63133452]大半夜的看都看不见[/uid] (2021-06-14 01:38):

数学出生还去搞开发的话多半是脑子不清楚
算法的话,应用数学好的数学系自己就有做算法的,走跟计算机系不同的路子[/quote]算法这个概念太广了。算法工程师是算法,算法研究员也是算法。模拟退火是算法,Import完把A网络加B损失放一起也是算法。

数学的算法可能适合做算法研究员,就是发论文做学术的那种。但是大家适合做学术吗?我敢断言:大部分人不适合做学术,读研也不是为了做学术。
S.M-avatar

S.M

高等代数 数学分析 解析几何 统筹学 统计学 微分方程 偏微分方程 [img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
jacobbaked-avatar

jacobbaked

楼主如果还想接着做科研,可联系我,我们组每年还是有数篇 cvpr 的

我也在准备最近的 iccv rebuttal
MagickRitual-avatar

MagickRitual

[quote][pid=524291057,27195713,1]Reply[/pid] Post by [uid=7883347]Zbalpha[/uid] (2021-06-14 01:46):

楼主如果还想接着做科研,可联系我,我们组每年还是有数篇 cvpr 的

我也在准备最近的 iccv rebuttal[/quote][s:ac:哭笑]谢谢你的好意,楼主认清了自己的弟弟本质,不打算继续做了。目前文章投到了一个可以说得上是垃圾论文回收站的期刊,准备做开发跑路了。
thefresh1420-avatar

thefresh1420

[quote][pid=524291057,27195713,1]Reply[/pid] Post by [uid=7883347]Zbalpha[/uid] (2021-06-14 01:46):

楼主如果还想接着做科研,可联系我,我们组每年还是有数篇 cvpr 的

我也在准备最近的 iccv rebuttal[/quote]大佬 想了解一下 能讲讲组里的情况吗
月妹红moko-avatar

月妹红moko

帮顶帮顶,有前人指路,后人能走多少弯路啊,还这么的掏心窝子,好人啊[s:ac:反对]
michelintrolin-avatar

michelintrolin

[quote][pid=524290930,27195713,1]Reply[/pid] Post by [uid=43357116]纯牛奶小布丁[/uid] (2021-06-14 01:44):

算法这个概念太广了。算法工程师是算法,算法研究员也是算法。模拟退火是算法,Import完把A网络加B损失放一起也是算法。
数学的算法可能适合做算法研究员,就是发......[/quote]直接举例子吧
有朋友本科只是个211基础数学,没写过代码,硕士科大计算数学,当然他是大四确定保研之后开始写代码,硕士毕业前也是收了好几个offer,他们实验室的其它人找工作也是轻松加愉快
AlmightyKonoha-avatar

AlmightyKonoha

好文 截图收藏了
Cikada The Bug King-avatar

Cikada The Bug King

说的挺好的。现在机器学习那么火,大部分计算机研究生搞得东西和计算机本科学的东西没什么关系。

我本科学的数据结构,计组,java,软工,网络,os之类,考研就考这个。但是读研的时候没什么是和这些有关系的[s:ac:哭笑]
Drews Wrld-avatar

Drews Wrld

虽然工作了10来年了,看了下楼主的东西,觉得确实说的挺对。

我主要从事开发工作,算法岗不太了解,事实上工作内容最多的需要的,就是项目经验。说白了就是以前踩过多少坑,和多少种类的bug进行过搏斗,那么你在开发的这道工业流水线上就有多少话语权。
bread ʚ ♡ ɞ-avatar

bread ʚ ♡ ɞ

楼主你要是早十年发这篇文章[s:ac:凌乱]…

我已经在不归路上走了太远了[s:a2:不活了]
Moldy Soap-avatar

Moldy Soap

前东家也算是个行业独角兽,养了一个算法团队,里面最低的都是哥大本科,什么上交复旦的博士都有,然后一个部门也就二三十号人,再多公司也不招了.........

算法岗,坑太少了
Blueleader-avatar

Blueleader

不是,你做理论的不投ICML, NIPS, ICLR走去投ICCV干什么[s:ac:哭笑]
顺便猜猜回收桶是IEEE Access?
Clapz-avatar

Clapz

好帖!