直播内容
《斯坦福cs231n计算机视觉课带学训练营介绍》
训练营基本上所有的资料都会放到这个网址上:github.com/sharedeeply/cs231n-camp。老师廖星宇。这门课程覆盖了很多内容,对前期的先修条件要求不是特别严格。不需要你会神经网络这些东西,会从头都讲一下。
第一部分呢。从机器学习入手,讲一下SVM线性分类法,过度到神经网络,到卷积神经网络。要学会内部卷积网络的原理,算法,各种各样的基础。学完这些后,第二个部分呢,会将计算机视觉应用层面,卷积网络的分类任务,检测,分割。在自动驾驶领域,医疗图像中应用。学完之后,不仅能掌握神经网络最简单的原理,更新的算法,包括最前沿的论文以及一些算法实践都会涉及到。所以说学完这门课程就算是进入到计算机视觉这门领域了。
为什么要学这门课?优势?对于算法工程师来讲,首先需要工程师,再是算法。工程师需要解决问题,需要抽象这个问题,提出一个解决方案。需要算法和代码去实现这个过程。编程能力很重要。首先需要工程师,需要编程。有非常重的编程任务。需要我们从零实现一个卷积网络,以及各种随机梯度下降法。以及后面的循环神经网络都需要我们从零开始实现。学习这门课过程中,比较困难的。希望大家可以坚持下去。一旦学完这门课你会发现所有的原理各种实现方法你都烂熟于心。
那我们的编程能力学完之后在对内部算法上有更深刻的认识,再去调一些包。希望学完了之后,这个包里面的算法我们自己也可以写。只是用python写出来的有点慢。开源作者的cuda或c++代码速度会更快,但是原理必须是一样的。
从零实现了算法之后呢,我们在应用层面教大家用框架解决任务,kaggle的比赛。
编程老师开始也没基础,编程能力体现在哪个方面呢,其实就是你要去模仿别人的编程方法和风格。一开始你对代码没有很深的理解,就不知道怎么写,不用死磕怎么写。可以去借鉴别人代码。优雅的结构和方法都是可以学习的。所以说我们要学会学习别人的开源代码,第一需要学会写readme.所谓的readme就是说介绍你的项目在做什么事情,第二要学会写代码里面的注释。不仅是让别人看,更是让自己看。需要有注释帮助我们理解代码。第三要学习代码的结构。模型放一个文件夹里,数据预处理放在一个文件夹里面。以及以后的处理放在一个文件夹里。这些算法数据需要分层次的去存放它。所以在代码的学习过程中,模仿别人代码是一个很好的学习途径以及学习方法。希望大家在学习课程当中,不要害怕去看别人代码。可以看一些优质的项目,当然很差的不要学了,可以学一些公认的比较好的项目。根据这个项目来优化自己的代码风格,最后总结一套自己写代码的代码习惯是最好的。
代码我也是从不是很有基础到模仿别人代码到最后自己可以写,这个过程可能需要花两三个月的时间,写代码的过程是不断递进的,需要不断的学习。我也还在不断学习更好的代码风格。
学完代码之后第二个事情,比较重要的。找工作和入这门槛就是你要去做项目。你需要去打比赛。对于有项目的同学我更推荐大家去做项目。为什么我不推荐大家把比赛放在项目前面,因为打比赛是一个很好的学习机会,可以把一些不会的东西通过比赛去学习别人的算法,以及你可以走一套整体的流程,你可以把数据从读取到出结果流程你都跑完。你可以得到非常好的锻炼机会的。但是,你会发现比赛模式很像。就是你打完这个比赛之后呢你发现下一个比赛跟这个比赛的打法就差不多,你把这个数据一改,算法不用怎么改你去跑一遍可能又有一个结果。这样你会发现比赛没有那么多变化。你做的事情就是在清洗数据或是说找一些奇怪的特征去提高成绩。个人建议你可以打一次比赛,但是不要打太多的比赛。如果你打七八十个比赛对你成长并没有成长。公司更关注你的名次,如果前五你可以往简历里面写。如果前二三十,含金量对你来说就很低。很容易。很多人跑一个baseline?就能拿到前二十。所以说前五的名次是有很帮助的。然后打比赛另外的事情,要做很多的集成学习,要做很多feature 的example?是没什么用的。就是在实际的应用中用处不大,你可能为了获奖需要做很多的模型融合,拿二十个模型接口融合起来提升分数。但在工业应用中,不可能拿20个模型去跑,工业场景需要效率和高并发。模型太复杂和很多模型很不科学。比赛中的套路在现实中是不通的。所以比赛虽然有局限性,但是确实可以很快的带大家入门这个领域。所以说打比赛是一个很快的学习途径和方法。一旦有项目,好的项目,你就可以全身心的去做这个项目。可以找身边的同学有没有项目做,或者github。我之前发的链接就是。然后上面很多开源项目你是可以参与进去的。可以跟作者沟通。参与进去。这也是一个非常好的方法。比打比赛还要好。因为只要你参与了上面就有你的痕迹。打比赛名次不好的话,不推荐你往简历里面写。
但你如果贡献过代码,你的github主页上就会有痕迹,别人都是能看得到的。而且别人可以通过你的github找到你的代码,通过你的代码了解你的代码风格以及你的代码习惯。这也是打比赛不能带给你的。面试官会喜欢。所以在github上多发项目和多参与项目。如果在很多人关注的开源项目上贡献过你的代码的话,对你本身知名度也是有提升的。
所以你可以参加自己的项目,或者实验室的项目,或者github开源的项目。实在没有你可以打比赛。拿个很好的名次。没有很好名次你也可以开源这些代码让别人了解你的代码风格。那么有了开源项目,代码。你就可以去投简历。这时候看我的github上放了三个知乎的链接。在讲现在人工智能和算法工程师的招聘的投递率很高,质量怎么样,公司希望找一些什么人这样的回答。如果你们看了这些回答,你会发现很多人对算法理解非常浅,但回去抱怨这个进去的人太多,公司不招人这样。我在面试中喜欢考察的东西吧。建议大家先投实习岗位,转正这样的概率比你直接投正式,录取的概率会大很多。我觉得虽然工资少,但是有学习的机会是个非常好的事情。实习岗位基本只有一面,最多两面。正式岗位可能要三四面。所以实习是个非常好能得到工作机会的方式。那实习一般会看中大家什么能力呢?会问一些算法的原理。比如在tensorflow卷积是怎么实现的。它是比较巧妙地。但是如果你能答出卷积的实现方式也行。甚至会让你写伪代码来推导这个过程。它可能会问一些算法原理,如果你面机器学习的公司,它会问你一些SVM的东西。我现在的工作传统的方法接触的比较少,所以我都讲的是深度学习方面的东西。他会让你手写一个反向传播算法。让你手写一个循环神经网络的前向传播和反向传播。这些东西是你调包是不会的。如果先问你基础知识你一问三不知,那基本上可以结束了。如果你大多数都知道,就会问你项目了。第一个加分项,就是github.。只要你把里面的代码整理好了,那面试对你加分。他会觉得你有非常好的代码习惯和风格。你有很强的自我学习的能力。因为在github放代码是一个比较麻烦的事情。一旦你这么做的话,他会觉得你有很强的自我驱动型。做事情很愿意花时间。愿意投入精力。所以github重要。第二个东西你要放的是你的博客。你把每周学的东西你都写博客。也是个非常好的面试官了解你。以及你最新的情况。如果对你提前有个很好的印象,提问题就不会不友好。
最重要的是里面有一个或多个项目。你对你做的项目一定要非常的了解。不管问你项目的任何细节你一定都要对答入流。你需要对你的项目有非常非常深刻的认识。用项目里面用的东西,你必须知道为什么要做这个事情。如果用了这个模型,必须知道为什么我用了这个模型。需要知道这个模型的好处以及为什么比较适合这个问题。你需要对这个问题进行思考和理解。不仅仅是做了这个项目你调了这个包,或者打这个比赛,你跑了几个算法得了这个结果。如果问你为什么用这个算法你回答不上来,那就很减分。因为项目是你自己做的,你对为什么行得通都说不出来,那么基本是不会要你的。
在这之后,会考你一些编程题,就是一些基本算法。比如二叉树,深度优先搜索,快排啊,这些冒泡排序。这些都是计算机领域的基础知识了。需要靠大家自己去刷题就行了。一般这些都过了你就可以拿到offer了。总结起来,简历有github,博客.第二有项目。第三个准备好项目了如指掌,在刷一刷题,拿offer概率非常高。我是先投的实习岗位,拿到了一个独角兽企业的offer。我去实习了几个月,在这些初创公司实习,进去会做一些让实习生实验一些想法,一些它们觉得有用但它们不想花时间去实验的东西。这样实习生就有很大的自由度。实现它们或者自己的想法。这里做的好的实习生可以发论文的。那当然论文这东西不用强求。然后就是转正。通过实习转正比较高的通过率。首先对你三到六个月的考察,你的组长在关注你做什么事情。你要展现非常强的自主学习的能力。当你的领导交给你一个任务的时候,你需要调研,需要做很多实践的东西,他说的东西你一定要主动找他汇报进度,主动一点。要跟他多交流,主动汇报情况。这样他会对你的印象会比较好,转正通过率很高。公司很多人非常厉害,你可以向它们学习。不要说觉得自己什么都不懂很菜。要虚心让别人请教,这个不懂。然后实习比较好比较努力,转正会很轻松。就问一问你实习做的东西。就不会象校招一样问你很多很多原理啊。
现在可能要求更高了。我们的学习呢也不能停止。cs231n算是初级到中级的一个过程。从不是很会到比较会的过程。对于一些公司其实是够了的。学完这课你其实比很多人领先了。一些对个人要求更高的公司呢,我们还是要去不断学更多的东西。更多的学习资料,会在后面课程中逐步的放出来。可以说资料你学不完的。你一定要不断的学不断的学。因为这个领域非常的快。几个月不学就发现你听不懂。
学完这门课,我会给大家很多的论文,很多英文。对英文水平要求不是很会的同学,查字典,或者看中文博客。到最后还是要自己去学论文。之后我也会开源一些项目贡献代码。我们也会在kaggle上打比赛,也希望学的比较好的同学可以贡献自己代码,集思广益,名次上的飞跃。我希望我们能形成一个很好的社群。不要做完就结束了。在社群中认识很多志同道合的同学,大家一起建立一些关系圈子,我们互相分享。就是说大家可以一起来做一个事情。对大家都是有好处的。后面所有的学习大纲都会放到github上。大家定期去查看进度安排,我会不断的更新。目前还没更新太多的东西,只有前面两-三周的学习东西。我也会调整。
深小享班主任:
课程以李菲菲斯坦福cs231n为主。采用视频自学+答疑+作业任务布置。斯坦福视频都放在训练营中。
实战以视频直播和录播。答疑在知识星球一对一。两个群。
深度学习以7天为一个周期去学习。7天2算法1神经网络.3周两个大作业。6周会打一次打比赛。周期是12周。一共会有两场比赛。会在平均2-3天发布任务。
查看任务需要翻到当前的日期就能查看当天的任务。一般12点更新。每个周期第一天就把作业明确下来。每周三周六为打卡休息日。没有任何任务。每月6\16\26统一直播答疑。
老师答疑
一般社招是不招实习的,但你可以问一下。因为实习生会比较多额度。20个转七八个。
pytorch实验想法,用tensorflow去工程实现。pytorch是231n主推荐的。老师都在用。大家可以都学嘛。
这本书的参考书是花书。deeplearning.可以直接下载。
编程怎么提高?多去模仿别人的代码。多去看别人的实现方法。不要觉得难就不去想了。多写。就能提高了。
这个课怎么学的,就是去看视频,看笔记。看ppt.就看这些东西。只能这么学啦。有问题可以答疑。都有版权的。
视觉就这么找工作把。你可以不跟着我的进度学,先把视频看完。可以去学的多一点。一天十几个小时,你可能一个月就能学完。赶紧去学下面的东西。我会开一个书单。如果你迫切的要找工作,你按照书单不断看,能多学一点是一点。