上一期梁师姐分享的内容得到的热烈的追棒,本期,飞彼留学继续邀请了我们顶级的名校导师团队成员梁师姐(中大数学与应用专业,博士在读)为我们小伙伴们做更加深入的讲解,本文是分享后整理的文字,一字一句同样都是满满的干货、干货、干货,绝对不能错过哦~
分享嘉宾
Liang.R.Y
本科-中山大学数学与应用数学
(飞彼留学海外名校导师团队成员)
本科毕业于中山大学数学与应用数学专业,微软亚洲研究院,博士在读,研究员。研究方向:强化学习,分布式机器学习。本科在人工智能顶会上发表多篇论文。目前在UberPittsburgh 担任访问研究人员。可为计算机科学方向的同学提供求职,申请,科研指导。
大家好,我今天主要想分享的内容跟计算机学科的学习准备,我推荐学习的课程,一些学术工作资源.
说是preparation,意义其实是针对转专业,新本科生这一群体,但是如果有cs的科班学生,也可以根据这些分享来查漏补缺。毕竟对于转专业学生,新生来说,相关的资源确实是非常来之不易的。
这里的课程资源主要是计算机名校它们公开的一些网上的公开课,以及可以找到的课程资料,然后还有我上课的一些个人的体会,个人的评价,分享。学术资源这一块主要是如何去获得做研究的机会,作为一个本科生来说。实际自然的话就是本科生如何去获得计算机方向实习机会。
对于课程资源这一块儿,我会着重讲的比较详细一些,在学习知识,学术资源跟实习资源,这方面主要是一些简单的分享,之后我们还会再推出针对其中某一个方向的那个分享的课题。
上图链接主要是关于现在线上能够找到资料的。一些在线的课程,我上过的那些评价以及推荐。
对课程资源这块,我有一句话要补充的是因为我分享的大多数都是线上计算机学科最顶尖方向的学校的课程。其实我们国家的学校。即使是清北也好,根据我知道的,在课程的质量方面,其实还是远远的有差异,所以我也强烈建议计算机科班的学生。你可以去针对自己的弱点和自己弱势,或者自己没有学扎实的地方去查漏补缺,跟这些世界名校的课程去补充自己所需要的知识。
整个MIT他们提供的课程资料,它们能够给online courses,就是给在线课程提供的所有的资源,这是非常非常的丰富,包括网上讨论,都是非常值得去学习的资料。
提到课程资源的话,就必须首先要提到两个我经常使用的网站,一个是Coursera,然后还有一个是edX。这两个网站的话,它们是有部分课程是收费的,需要去支付费用,才能跟完整个完整的过程,但是其实大部分的课程是公益不收费的,并且全部都是由学校官方提供的,整个课程体验非常非常的好。包括自己交钱去跟过的一些课程,跟过其他课程,它的作业体系,助教体系,甚至还有codereview体系,它们会帮你去修改你的作业代码。
我整体来讲都是非常推荐的,包括一些学校在你申请硕士的时候,都会提出如果你有这些Coursera课程的分数,你也可以提供在你的额外的补充资料里面。
然后这两个课程网站,使用方法非常简单,目前我就暂时就不重点说(后续再补充一下),我重点想说的就是因为其实像我现在在CMU访问,好像CMU,斯坦福以及MIT,他们那些学校的课程资料是完全公开的。
其实这一点很多人都是不知道的,比如说你在Google的搜索引擎上面输入CMU(15213)这个课程编号。然后你就可以立刻找到这个课程公开学习的那个网站了,包括这个课程主要是关于什么内容,它的老师上课讲课的PPT。甚至有些课程是完全公开他们的Lecture Videos,就是你可以在“油管”或一些视频网站上面找到他们公开的课程的录影。
最重要的是还包括了这些课程,他们的作业布置是什么内容,如果我们可以合理利用这些资料,我们就可以获得世界上最顶尖名校最顶尖的教授,他们上课的PPT,他们布置作业,甚至他们上课的录像,那么我们就可以进行自学。
我一直都觉得这些资料对于像我们大陆大部分学校的学生来说,是非常非常好的一个学习的资源。我觉得如果能够好好的利用这些资源的话,一定可以学到非常多的东西,并且将自己的知识,自己的基础打得非常的牢靠。
首先我非常想分享,就是一些数学基础一些比较简单的课程,虽然我是数学系,但是其实我当时也是完整的跟进了MIT的线性代数这一课程,这个课程即使不是想转CS的同学,也可以去上一下这个课,它确实是做的非常非常的好,然后现在已经被清华采用到它们整个课程体系,自己的课堂上。而且它提供的资料非常的完整,在谷歌上面有大量的作业和那个答案以及讨论,我非常非常建议去上这个课程。
MIT的6.042 计算机数学,它已经涉及到了所有作为一个初级的程序员,能够用到的数学知识,但是它实践会稍微少了一些,我觉得实践可以放在算法课上,但是如果对于数学基础比较薄弱的转专业同学来讲,我强烈推荐这个课程,甚至我知道一些即使是非常好计算机系的同学,如果他数学基础比较差的话,这个课程对他来讲还是有些吃力,所以我也非常推荐这个MIT的课程。
学计算机的每个人都绕不开的算法课,对算法课来讲,我相信每个学校他们都会有开设类似的主题的课程,所以我对于科班生的建议就是可以根据这些名校的课程,查漏补缺,检验自己的知识漏洞,然后对于转专业的学生来讲,我是非常强烈推荐要去上一下这些顶级名校的算法课,因为其实你有没有上过算法课,对你的整个实习,整个编程的体系其实是非常大的影响的,我这里推荐这两个MIT的课程,主要是他们的课程设计实在是太完整了,虽然可能说有难度比较大一些。
说完算法课重要性之后,相信对于一些科班学生来讲,这可能只是一个低年级的基础课,但是对于转专业的学生来讲,部分转专业的学生,可能连Python都没有学过,我就是大三之前连python怎么写我都不知道,因为对于数学系来讲,我们的主流语言并不是计算机语言,而是matlab,R语言之类的语言。所以对于Python来讲的话,是因为人工智能的红火,他作为人工智能界的第一语言,所以非常的火。所以其实有大量的python课已经受到了非常多的推荐,我这里推荐的话也是根据大家的那个评价,写了一些我觉得比较好的课程。
大部分的转专业学生,他们都会听说Berkeley这个CS61 A B C这三个系列课程。我觉得是做的非常好啊,我没有完整的上过UW的课程,但我是非常强烈推荐,因为它上课体验真的是太好了,这对于一个新生来讲是非常完整以及非常友好的一个过程,能够用最快速度教会怎么写代码。
写代码的时候,你知道那个代码的语法。跟你知道一些写代码过程中的一些奇技淫巧,其实有很远很远的距离的。我觉得这些课最大的好处就是你可以根据专业设计的那些作业。在最快的速度里面接触一个比较,我觉得比较好的工程项目,这样对你的工程能力是非常大提升。
前面轻松的课说完了,然后我们就可以去介绍一下我今天非常想介绍一些硬课。硬课这些课,无论是科班生来讲,还是转专业学生来讲都是难度是比较大了一种,可就是我当时候再没有上过这些系统课之前。其实我对整个系统知识一无所知,所以其实我要强烈推荐的是CMU的Introduction to Computer Systems这门课的话,它是CMU本科生必须要上一门硬课,几乎是先于每个人必上一门课,他对整个系统知识的基础,打得非常的扎实,我觉得他的整个设计是非常的完美。
这门课在“油管”上,在B站,一些国内的视频网站,上面有非常完整的课程资料,你甚至可以挑选你到底要上哪个学期。然后他的作业已经有非常完整的答案,这些东西都在网上可以找到,对于你刚入门的学生来讲,其实是非常好的一个体验,然后就是CMU的一些其他的系统的课,比如说,Database Systems,分布式系统,还有一些操作系统,MIT都开了这些课,这些课都是可以看你自己个人的喜好去挑选。我选出来的几门课全部都是名校,并且受到强烈大大强烈推荐,一致好评的课。
我这里之所以没有讲的非常详细,是因为这些细分过程有些不是我的研究领域之内。所以其实我对他们讲了好不好,我并没有一个非常清晰的概念。然后之所以推荐他们是因为评价非常的好,以及他们的课程资料非常的完整。
接下来我来讲一下可能大家今天最想听的AI入门环节,因为我是AI现在读PHD博士生。我可能对这方面的了解会更多一些,所以我会讲的比较详细一些。
对于AI方向的话,其实大部分人可能第一次听说,就是吴恩达他的那个机器学习入门课程,这个也是吴恩达跟Coursera合作的一个最有名的课程,也是Coursera常年的免费课程之一,我还是挺建议,但是因为它的代码是matlab写的,所以我可能不是很喜欢这种个人作业以后可能用不到语言的方式,我比较倾向的是用python去写作业,我比较推荐这个UW Machine Learing的课程,我觉得它设计是非常好的,然后就是MIT他们提供了一个深度学习入门的一个课程,能够最快教会你用最短的时间学会怎么写一个神经网络。
几个分方向的一些课,比较好的课程,比如说最有名的斯坦福的关于computerversion and NLP 他们的那个推荐,然后就是关于强化学习的两个比较有名的课程。
整个AI领域来讲,因为这个领域现在是比较红火以及浮躁的一个阶段,所以能够接受资料实在是太多了,我比较强烈推荐的是去接触一些名校系统性的资料,它们并不仅仅只是教你怎么最快上手AI,它们其实教你的是整个AI工程的思路,就是怎么去搭建一个比较稳固,并且结构比较好的一个AI的code,工程的结构。
其实我能明白其实大部分的学生他们可能比较的急躁,就是觉得一开始上来就想做出一些结果,但是其实我觉得就是你打好基础是很重要的一件事情,因为这个影响到你的整个代码习惯。就像你刚刚上手学门工艺,你要怎么去把自己的基础打好,我觉得其实一些名校的资料对于个人的以及整个的帮助其实非常潜移默化的。
接下来我们进入到学术资源的分享的那个阶段,一般来讲,如果你想去知道一些你这个方向,比如说你感兴趣的一个方向,你想知道这些方向的论文,那最好的办法就是上谷歌学术,找这个方向的一个label标签,快速的找到你这个方向,引用数最多的大牛那群人,然后去关注他们,去读他们的作品。
对于学术圈来讲,去关注几个领域的领头羊,他们的那个状态。他们现在在follow什么,他们在关注什么,他们在发什么方向,什么水平的paper,就可以看出这个领域他发展的程度。
还有就是可以关注一下一些大牛的博客,然后就可以follow他们的Google的学术,他们动态。还有我比较推荐的就是,可以通过一些途径,比如说无论是你的导师或者是一些查到资料,去关注你这个领域的顶级会议了他们的动态。
因为计算机学科它是以换衣为主的一个学科,就是大部分好的工作都会发在会议上。有个特点就是它的整个论文的那个长度并不是很长,它每个会议会评出一个best paper,就是最佳论文的奖项,每年都会有。关注一下这些每年顶会的最佳论文,自然就可以知道这个领域目前在关注一些什么。
拿我现在从事AI方向来讲,我们经常投的会议有SNL,SLR。然后我们过来通过关注它,投稿他的关键词的那个热度,就可以知道目前今年这个方向,在流行什么,哪个模型是最好的模型,哪个模型是正在受到最多关注的模型。
对这方面的话,因为其实对于方向不同来讲,去差距还是很大的,所以我觉得还是要多看,然后多听,要时刻关注一些动态,因为其实学数学发展是很快的,比如你说三年前SML,我在做东西跟三年后,其实差别已经非常大了,所以计算机学科作为一个新兴的红火的学科,时刻的follow学术圈,他们在关注什么,我觉得是非常有必要的,无论你之后到底想不想读PHD。
好,今天的分享的主要内容就这些。我在课程分享上提供了大部分我个人的经历和推荐。对于学术资源和实习资源的分享。
最后我分享的就是跟实习资源有关,想必也是大家最关心的一个内容,然后其实这个内容的话,我们之后还会有相应主题的分享根据每个细节,比如教你怎么去获得一个RA的机会,然后学校的资源问题主要分两种,一种是专门做学术的实习,你可以在这样的学习岗位上,专心的去根据一个无论是你的还是你的导师的课题进行研究,然后这个时候其实你的工程能力可能会要求没那么高,第二个的话就是工程的实习。
我主要先介绍一下学校的实习,学术实习的话就包括两种,一种是公司的研究部门,比如说微软的研究院,然后就是腾讯的人工智能实验室以及头疼人工智能实验室,你一句独角兽商汤,他们所遭受的实习生。有非常大的数量是进行一些学术上的研究。然后你会在公司里面获得一个人的学术导师,然后辅佐你。帮助你去进行一些研究方向的探索。
还有一种就是在学校担任研究助理,Research Assistant,一种就是你在你的本科学校,你去找教授们提出你的那个提出他研究意愿。然后还有一种就是暑期科研就是你去其他的学校。你只要取得联系之后你去他们学校,与他进行一个学术上的合作。
在学校里面做研究的话,可以跟学跟教授取得最直接的合作关系,以及一些比较深入的交流,这对于申请来讲是有很大的好处了,尤其是海外的一些科研经历来讲。
还有一点,就是在公司的实习。其实这些时间机会的话就是跟科研无关,但是可能跟你工程能力有很大关系,我觉得如果能够有一段在公司的实习经历,一般一方面是能够证明你的工程能力没有问题,另一方面对你整个人的能力也提高,知道工业界它们在做什么,我觉得是有非常大的帮助的。
这里我要强力推荐两个网站,一个是LeetCode非常有名刷题网站。这个网站的话说是刷题网站。因为目前很多国内外的公司,他们面试的时候都会着重于考面试者一些算法题目,然后对于这些算法题来讲,就是他们会汇聚那些大公司的算法题库。如果你能够提前将这些题库了解的差不多。对于你面试是有很大的好处,就是刷题来历。
还有一个就是Nowcode网,这个网站是国内的一个比较流行的网站,然后它里面汇聚了各大公司秋招,春招,实习经历等一系列面试的经验。你可以通过阅读这些经验获得一些更多的对于这个公司它的风格,面试你需要哪些知识储备的一些补充,我觉得是非常好的一个网站。
因为时间比较有限,仅仅只是提供了一些方法,细节可以提问或者跟进我们后续的分享。