研一学机器学习和深度学习,为什么感觉越学越不会,怎么解决呢?

链接:https://www.zhihu.com/question/371622741

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

比如说看了两遍prml前几章感觉什么也没学到?有什么好办法么?

研一学机器学习和深度学习,为什么感觉越学越不会,怎么解决呢?_第1张图片

作者:姜子信
https://www.zhihu.com/question/371622741/answer/1666044043

2020年硕士毕业,几年没学数学,高数概率论线性代数全忘了。没办法刷mit的1806,线代终于有点印象了,刷宋浩的概率论,好像概率论也想起来了一点。

冲。可以撸吴恩达了,撸完一知半解。冲。刷点李宏毅吧,就记住了宝可梦。冲,刷吴恩达最新视频,还是顶不住。

好吧还是踏踏实实看书吧。概率论,线代书,看了一遍,有信心了。刷PRML,第一章高维高斯我就懵逼了。换统计学习方法,前几章还行,甚至能做做作业。逻辑回归开始噩梦就来了,多分类直接杀我。SVM看了半天,到核技巧又杀我。EM彻底凉了,监督学习就看到这。什么马尔科夫蒙特卡洛,这都是什么神仙。开始看无监督,挣扎了好久奇异值和主成分,也就到此为止了。

熵不知道,要补信息论,看了点皮毛先顶着。蒙特卡洛,马尔科夫不知道,好像得补随机过程,开头就上测度论,测度是个什么鬼,我今天想了半天σ空间,还是一知半解,有点顶不动。统计学还得补,再高级一点的概率论也得补。听说凸优化也得补。也不知道得猴年马月。

Python我也不会啊,刷了20节小甲鱼,先凑乎顶着。直接上kaggle,刷完了Python和ml入门的题,但感觉还是,危。再等等吧。

今天开始刷国科大的机器学习,条件期望杀我,看来随机过程迈不过去,得搞一波。听说随机过程有测度论或者实变函数的基础会比较好,我又查了查听说实变函数有数学分析的基础会比较好,啥也不说了,我今天正式开始学数学分析了。肝一下AISL,再踏实补一下概率论和统计学。

萌萌式噘嘴,今天是2021年1月7号,是我搞机器学习的大概第三个月,留个坑,看看以后会怎么样。

mmp我一个本科土木狗,硕士建筑技术,梦想工地盖高楼,咋就成了现在这个样子。真是万物ml嘛??

不太甘心当调参侠,数学基础不牢固真的地动山摇,效率低就低点吧。好歹二十五年头一次主动觉得学习很酷。补个五年不信顶不动。

作者:匿名用户
https://www.zhihu.com/question/371622741/answer/1269330116

这个问题隔三差五的活跃在推荐里,我也有如此强烈的感受,越学越糊涂反而学不懂,也一直思考为什么,后来我慢慢感觉到根本原因还是数学功底太烂,是真的烂约等于没有。并且没有时间去整块的深入的学习(刷题),回想半年前的时候困扰我的是怎么用pytorch复现一篇文章,这对我来说非常困难,那时的水平只能魔改别人的开源代码,调别人模型的参,这跟一年前刚接触机器学习的时候情况很像,甚至分不清python的列表和字典的区别用python加载个txt都不会,但到今天用pytorch复现个模型,把tf写的模型无痛转成pytorch,算法赛搭个baseline,什么lgb,rf,svm搞个集成几乎没有什么压力,所以我发现只要愿意花时间去学,技术上的困难总能在很短的时间内克服,包括学习李航书中用numpy写的算是比较底层代码。

如果有时间进一步学习我相信我也能用numpy撸个什么决策树之类的,甚至在可预见到的未来只要我愿意学spark,sql这些技术相关的东西总能掌握。cpvr,nips的论文也经常看,也慢慢懂一些灌水的套路。但每当学习相关理论知识的时候总有一种无所适从感,有一种似懂非懂的感觉,因为从接触机器学习开始就处于绝境,所以我犯了一个致命的错误就是在学习数学基础(mit线代,统计学相关基础)的时候也按照学习技术的速成方法来学,视频3倍速,2个星期干掉一本书这样,但这样也是不得已在毫无交流和指导的情况下为了快速上手也只能这么做了。

之后看了花书,李航,跟着视频推了prml,在花书时感觉还行,但到了李航的时候这种感觉就越来越强,我好像懂你让我对着em算法的推导好像也能讲个123出来但我感觉我不懂,就只是会当个工具用用这种稀里糊涂的感受让人很难受,而且也找不出时间来认真的作课后题,搞了半天发现毕业都很危险,而且学的深了后,优化论,泛函,随机过程都要用到,然后发现很无力,因为缺乏数学基础,就像误差随着时间累积放大,硬上就是那种似懂非懂稀里糊涂。

因为要搞该死的论文也没有时间深入学习 ,我弄的是交叉领域,但大部分还是视频预测,时空预测外加点语义分割,这种无所适从感直观的反应到我所谓论文'创新'点中就是改改网络结构加各种attention,套个gan,但我觉得这东西简直就是浪费生命,然后看看同行们类似的文章好像也是这么个套路,rnn改个门,编解码结构改改连接,gan+vae+lstm排列组合,或者cvpr开源抄下来换个本领域数据集,然后疯狂过拟合+数据泄露。所以我一度怀疑是不是自己太烂看问题的角度有问题,或许别人有严格的推导只是我只能看懂套路部分?

所以我觉得归根到底还是数学的问题,因为基础的地基有问题所以学的都是空中楼阁,如果能再来一次我可能就把这个当做爱好了,毕竟还是挺喜欢的,但盲目跟风并且没人指导有多恶心说多了都是泪。

作者:匿名用户
https://www.zhihu.com/question/371622741/answer/1043269559

我认为在项目中学习机器学习和深度学习更加容易,主要是实际的例子会帮助你更好理解其中的思想和计算过程。越学越不会说明已经开始会一些东西了,实践之后可能明白更多东西。但是如果让我回到研一,我会选择放弃这个方向。

本人就读于一所中上的211学校,还有1个月就毕业了。研一时候我和楼主一样,一直在学习,自己也会找一些开源的项目,也参加过一些比赛,个别比赛成绩也说得过去。但是学校位置比较偏,导师资源不好,实验室不让出去实习等因素,我处于单打独斗阶段。找工作之前我已经能熟练推出各种主流机器学习公式,用Numpy写出大部分模型,在力扣等网站上刷了500+的题目。

刚入坑的时候,网上的各种行业前景的评价蒙蔽了我的双眼,我满怀自信的参加了2019年的秋招,结果以失败告终,ML、DL基础知识、手撕代码都没什么问题。参加招聘的所有公司中,只有腾讯告诉了我的不足之处,没有实习、没有论文。(很多大佬这时会说了,没有论文还想找算法工程师的职位,我只能告诉你们,实验室只有自己研究这个方向时,需要踩的坑多到无法想象)。华为的招聘我走的最远,但是终面被刷了,因为非科班,没办法这是事实。最后的最后,我去一家通信公司做软开去了。这也算比较好的结果吧。

简单总结一些招聘时候我都会什么了吧,ML基本模型的公式推导+numpy实现,DL的基础知识,CV领域自己手写过SSD、Faster R-CNN、YOLO、retinanet这几种基本目标检测算法的全部代码。改进了Faster R-CNN,但是没来得及出文章。参加了几次比赛,成绩一般,最好成绩是1000个队伍比赛的前20名。数据结构方面,力扣里的中等题基本思路都有,大部分能写出来,毕竟刷了500多个算法题。

我只想说如果是非985硕士,没法发论文,没法去实习,还是老老实实做些软开的项目吧,这些可能更有用。当然,如果你是大佬,就当我在放屁好了。

学这方面的知识还是别看书了,每天认认真真学会一种模型,从公式到代码,每个细节理清,你就可以说你会这个模型了。书上理论讲的很好,但是我认为找一些项目更能帮助你理解这些。如果是数学知识不会的话,就需要好好补习一下了,其实里面的数学知识不算难。

祝您学有所成。

作者:深海里的鱼
https://www.zhihu.com/question/371622741/answer/1021067702

研一下开始准备学习机器学习,先是看了西瓜书,但是感觉西瓜书可能数学性不太强,翻了一遍大概对机器学习进行入门。然后看了李航《统计学习方法》,这本书非常非常推荐。对统计学习方法进行比较深入的讲解,跟着这本书把lr、svm、gbdt等很多方法推了一边,中间用到的概率论,线性代数等数学知识也去重新看了一下。多看博客,很多大佬们写的博客非常有用。

上面这些都是理论,在你看完书,会推公式并且理解算法之后,可以自己打一些比赛,比如kaggle或者天池,从入门级打起,泰坦尼克?刚开始最好别用sklearn这种封装好的库,尽量自己实现一下lr、svm这些基本的模型。(当然得有个比较好的python基础)。打比赛名词也不要求高,因为比赛老油子们都有固定的trick,对新手而言比赛就是用来入门的,进入机器学习这个领域。

下面推荐去实习,因为我学校地理位置优势+导师人比较好,所以比较早的去某厂实习。个人感觉实习对能力增长更快,无所谓是工程or理论。第一份实习还是以打杂为主,帮忙写写hadoop脚本,写写数据分析脚本等,偶尔跑一点xgboost,玄学调参。第二份实习开始用tf写深度学习模型,也是个比较基础的活。第三份实习开始接触创新型的东西,在一些算法基础上做了点创新。要是没法实习,就得打一点名词比较好的比赛,或者发paper。(实习来看面试官们对比赛不太感冒,比较感兴趣paper)

很多师弟问我要不要入坑机器学习,我都持劝退态度。第一算法方向工资已经和开发差不多了,没有啥优势。第二算法人实在是太多了,而且个人理解门槛比开发低一点。第三算法方向积累可能没有开发高,实习期间很多正式员工干几年都从事开发去了,而且算法还要写论文这个很头疼。

要是入坑了机器学习,建议首先还是定一个方向,比如cv、nlp、推荐等,当然大佬们全部都会的就忽略把。。。每个领域都有很多顶会,读paper并且复现是很重要的能力,然后每个方向深究下去都有很多东西值得学习。

个人认为对算法工程师的要求可能大部分业务部门停留在会用,用好模型这个阶段。更关心面试者能不能理解业务背景,选一个好的简单的模型。而魔改模型然后发paper可能是达摩院这种大佬们做的事把。

ps:讲道理感觉工作大部分时间都是sql boy,模型or算法的积累可能更多的是跳槽面试时用把。。。逃。

作者:阳光
https://www.zhihu.com/question/371622741/answer/1111017469

给你一点鼓励,阿姨去年47岁,学习了coursera上吴恩达的《机器学习》,Udacity的《深度学习》,此前已经12年没碰过代码,如果我可以学会(当然,只是说通过了课程,还没达到精通),你一定也可以!光看书不行,一定要写代码,先照着sample code来,运行看结果,各种实验,回过头再看书,逐字阅读概念,不理解的话,上网搜索,同一个概念,不同人各个角度解释,相互印证和关联,可以帮助理解。最重要的是, 第一,要有信心,第二,要有耐心!

作者:匿名用户
https://www.zhihu.com/question/371622741/answer/1524876086

说一下我的小小小经验:

我们课题组都是cv方向,后来也开始了nlp,首先课题组每周组会讲论文,头几个月是师兄来讲,我们研一的负责听,完全听不懂,但是隐约记住几个词,会后回去查,比如第一次听到resnet、attention等等,完全不懂,遇到不懂的词就去查。

一开始跟了cs231n课程,也看了李航的书、西瓜书什么的,我记得我一开始从头啃西瓜书的时候,我师兄都很惊讶,因为这本书他们从来没有从头到尾看过一遍。所以这些书看完我也没留下什么印象,cs231n和课程的笔记还是挺有用的,算是打基础了,讲的真的很好。还看了几篇综述类的论文,然后在老师的帮助下选了方向,去知乎或者博客看一些中文的介绍,包括进展之类的,大概花了两三个月。

然后开始看论文,一开始一周一篇,后来慢慢一周两篇,一天一篇,一天好几篇,在后面对于自己领域的论文看看摘要、introduction和实验部分就差不多理解了,好一点的论文再看看方法部分,很快就能过一篇,我们课题组每周都有组会,轮着讲论文,所以中间接触到很多方向的论文,也有几篇论文是自己挖透了做ppt讲给大家听,后面还需要给大家答疑的,所以对于自己讲过的论文都是看了好多遍,这其中才开始真正用到工具书,在遇到一些不懂的东西的时候,带着问题去查阅工具书才是最有效的。大概花了不到半年,这样研一上学期就结束了。因为有课,所以进度比较缓慢。

研一下学期开始一边看论文,一边复现代码,一开始配环境真的是要炸了,而且我第一个配的环境超级复杂,可能当时设备的系统版本不对,大概装了快一个月都没有装好,反反复复各种问题,每天下了课就去实验室配环境,有时候一个问题要解决一个周,好不容易通了又跳出来一个问题,于是很悲催的,到最后还是失败了,所以换了一篇代码,大概花了两天,配好了。。。也不知道我一开始为什么这么执着。。。配完环境以后开始看代码,第一个复现的代码是caffe的,很抽象,看了大概一个月,大概搞清了来龙去脉,包括很多底层文件也看了一些,当然组会一直在继续,这中间突然我冒出来一个小想法,于是开始想改代码,又找了一个pytorch的代码配环境然后改,第一个小想法很水很水,大概一周左右就改好了,而且效果特别好,只是创新性很低,一开始实验室的老师是不太支持我的这个想法的,他觉得可行但是不适合作为创新点,但是因为想让我先写篇论文满足毕业条件,可以先写写投个简单的。

这个时候大概研一下学期还没到暑假吧,暑假之前我把论文初稿写出来了,我的导师当时在国外,他不太懂我的这个方向,看见效果觉得不错,就让我好好写打算投个好点的,我很慌啊 ,我也深知自己的创新点很水,虽然结果很好。于是又想了一些东西加进去,虽然效果没提高很多,百分之零点几的贡献,但是总算凑出来一篇论文了,大概暑假之前写出来初稿了。研一结束。

研一的暑假,课题组的老师带着我和另一个同门做了个比赛,不得不说,这个比赛是我学业的一个转折点,因为刚好是我研究的方向,所以找了个tensorflow的代码当作baseline来做比赛,至此为止,已经对caffe、pytorch、tensorflow三个框架都熟悉了。大概花了一个月,每天在学校做比赛,因为换了比赛数据集,所以对整个代码重新读了一遍,做了很多修改,最后总算跑通了,跟老师汇报之后又改进了一些,顺利进入决赛,八月份去广州参加了决赛,最终得了个二等奖,对我来说已经是很好的结果了,老师也很开心,决赛期间一有时间就带我们吃大餐,潮汕火锅、早茶什么的,还带我们夜游珠江,给我们拍照。前两天和老师吃饭还聊起,这个比赛,我们学校每年都参加,迄今为止,只有我们得了奖。因为是教育部的,国家级的奖,所以学校还是挺认可的,我记得还发了奖金,虽然难度比不上阿里天池之类的比赛,但是学校认啊。

比赛做完已经八月二十几了,这才开始我的暑假,回家舒舒服服的待了一周。研一结束

研二开始很长一段时间沉浸在比赛得奖的喜悦之中,除了日常看论文,就只是找老师帮我改论文了,我们老师改论文相当细致,一个introduction改了有一个周,和我一起一句一句的捋,每句话每个词都要琢磨半天,几乎重写了一遍。当然改的这么慢的原因是我的创新点太水了,为了写的好一点,老师真的是绞尽了脑汁,全程皱着眉头冥思苦想,也是难为老师了。我真的觉得我课题组的老师相当奈斯,超有耐心,而且很专业。改论文加上补实验,再改论文,再再改论文,第一篇论文磨了三四遍的样子,终于在研二上学期结束前投出去了。也就是说我研二上学期并没有做很多事情,寒假之前做了个比赛,但是也没有太投入,不了了之了。

研二下学期,调整心态重新开始搞论文,当时有了新的想法,花了三个多月去做,因为设备等的原因,效果并不好,当时只有一个1070,所以整个想法也就泡汤了。然后祸不单行的是这个时候第一篇论文被打回了,直接reject,投的是sci三区,虽然我觉得确实有些配不上,但是导师安慰我道:“没事,我们改改投个更好的。”。我。。。我内心都崩了,实验室的老师也劝我要不投个简单的先把毕业的问题解决了,然后再安心做科研。但是导师坚持要投一个还不错的会议,于是我们把拒稿时候的建议整理了一下,有几个建议还是挺靠谱的,认真改了改之后转投了个会议。

另一篇论文在做了这么久的无用功后,开始着急。和老师讨论之后换了一种方案,大概在暑假之前完成了改进以及部分实验。改通实验不久得到了第一篇论文中了的好消息,最终发表了ccf b类会议,所以发论文这种事情就很悬,说不定最后就中了一个更好的,还真应了我导师的话。

随后花了整个暑假跑实验加改论文,基本上把第二篇论文弄出来了。研二至此结束,真是大起大落的。

研三开学的时候,我的导师就从国外回来了,因为我是首席大弟子,所以老师对我的论文特别上心,实验室的老师带我改完之后又找了一个博士大牛带我一起改,随后又找了我导师国外的导师给改了一遍,才投出去,投出去的时候已经十二月了,也就是我研三花了半年的时间补实验改论文,最后投了个sci一区,中间也开始找工作。后面就不赘述了,基本上就是毕业论文的事情,做了几个小比赛,整个研究生的科研巅峰都在研一研二上,加上我平时压力小,节奏慢,成果也不多,原本安排的第三篇论文也被我简单指导了一下打算交给师弟师妹了。

趁此机会梳理了一下自己的研究生三年,感觉导师真的是相当好了,平时有条理的安排时间和任务,从来没有发过脾气,实验室两个老师加上我的导师一共三个老师,他们平时关系也很好,从来没有一个老师压迫过学生,但是任务也都会按照计划来督促,也很支持学生的选择,想好好发论文就会认真指导,想找工作也会支持快点满足毕业条件然后放出去实习。还有我一直以为我的导师平时没有什么事情呢,后来才知道他很忙啊,天天晚上加班的,写项目书写方案什么的,从来没有让我帮他干过活,就让我专心搞学术,我甚至研一的时候碰见一个同学去帮我导师报账,也就是说他有啥活都找别人的学生去跑腿。

研究生期间有个好导师太重要了,我室友的导师就是逼着他们发论文,最后还不许他们找工作不许出去实习。

言归正传,学好这个专业,读论文看书是基础,不能当作主要的任务,重点是跑代码,做比赛是一个快速提升的好办法,另外可以看看别的相关方向的最新进展,因为我们组会的时候会听很多其他方向的论文进展,所以对自己方向的改进挺有利的,虽然是最好的方式是先发现问题再找对策,因此产生创新点,但是一开始的时候没有想法的话就可以尝试先改进再想原理,虽然不是一个值得提倡的方式,但是因为条件限制,也只能先这样了,后来我看到cvpr发了一篇和我中间放弃的想法差不多的一篇论文,但是人家的实验动不动64张卡,一百多张卡的,我们实验室现在虽然条件已经很好了,但也只是十几块p100而已。还有就是想法不论大小,大胆去改,一开始看代码总是不敢改,尤其是很大的改进,就怕自己改坏了,后来备份之后直接大胆去改了,改起来其实很顺利。

不过我的节奏还是太慢了,佛系发论文,佛系改论文,佛系跑实验,大家还是可以快速一点来进行的。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

研一学机器学习和深度学习,为什么感觉越学越不会,怎么解决呢?_第2张图片

你可能感兴趣的:(编程语言,人工智能,java,weex,机器学习)