如何判断一个面试者的深度学习水平?| 文末送书

来源:https://www.zhihu.com/question/41233373/answer/255954147

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

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

在深度学习方面你是否也像下面这位题主一样疑惑?

本人对深度学习也有过一定的积累,大部分主流的深度模型基本都能实现,然而依然感觉实际上应用起来困难重重,首先是硬件问题,比如cnn,如果层数比较多,数据量比较大,通常单机比较吃力,另外则是调参问题,是否有比较好的调参策略可供参考,还有就是深度学习似乎有很多小的trick,包括数据增强,初始权重的设置,优化方法的多样性,dropout,drop-connect,batch-normalization等regularize的方法,以及transfer-learning这样的避免从头训练而根据特定任务改变top-layer,然后做fine-tuning的方式,以及其他种种大牛们自己独有的不传之秘,虽然cnn有一定的理论基础(信号滤波,神经科学),似乎让人感觉这是一项具有高度试验性的科学,所以评价一个人深度学习的水平,是否可以说在理论方面很难设定标准,而只能看其在实际应用上对于模型运用的效果或者运用模型解决实际问题的创造力?

不如看看其他小伙伴的回答,看能否从中获取你想要的答案。

作者:竹间智能 Emotibot
https://www.zhihu.com/question/41233373/answer/170708156

为了回答这个问题,专门请教了竹间智能深度学习科学家赵宁远,请他分享一下面试“深度学习工程师”时的标准与经验,可能有主观的地方,但都是干货,希望对想进入AI领域的朋友有所帮助。

-----正式回答分割线-------

深度学习虽然并不是新鲜事物,尤其近几年发展迅速,但还远称不上是一个“成熟”领域。就算是“传统”机器学习,其中所包含的思想和方法也千差万别。因此,我们并不强求面试者必须要懂哪些tricks或者某类特定的方法。坦白说没有面试官(在我们看来,就算是Hinton本人)能对机器学习/深度学习的每个领域了如指掌,所以我们会尽量避免用一些自己主观的理解去考别人。

因此,我们的原则是希望面试者有比较好的机器学习基础,比较优秀的编程能力,以及分析和解决实际问题的能力(或者说,critical thinking)。当然,对深度学习的理解和实际经验会是一个加分项,但是crash course或者用于炫技的冷知识并不能取代扎实的基本功(比方说把Andrew Ng的机器学习课程吃透,将Deep Learning一本书学好)。

冒着听起来过分自大的风险,我想分享一下我们关心的一些问题:

1. 在使用一种方法(无论是深度学习或是“传统”方法)的时候,面试者对它的优点和局限性是否都有所认识。在面对不同的问题的时候,我们希望面试者可以通过独立思考做出一个informed choice,而不是因为“上周看了一篇paper是这样做的”或者“BAT/FLAG就是这样做的”。

2. 面试者是否有完整的机器学习项目经验。这意味着从理解需求开始,到收集数据、分析数据,确定学习目标,选择算法、实现、测试并且改进的完整流程。因为我们希望面试者对于机器学习在实际业务中所带来的影响有正确的判断能力。当然,如果是可以通过python/或是结合Java/Scala来完成所有这些事情就更好啦。

3. 面试者是否具备基本的概率/统计/线性代数的知识——数学期望,CLT,Markov Chain,normal/student’s t distribution(只是一些例子),或是PCA/SVD这些很基础的东西。另外(最理想的),希望面试者对于高维空间的一些特性有直觉上的认识。这部分并不是强行要求背公式,只要有理解就可以。毕竟这不是在面试数学系的教职——我们只是希望面试者可以较好地理解论文中的算法,并且正确地实现、最好可以做出改进;另外,在深度学习的调参过程中,比较好的数学sense会有助于理解不同的超参数对于结果的影响。

4. 面试者是否有比较好的编程能力,代码习惯和对计算效率的分析能力(这个一般会按照最基本的算法工程师的要求来看,从略)

5. 面试者在机器学习方面,对基本的概念是否有所了解(譬如说,线性回归对于数据的假设是怎样的),以及对于常见的问题有一定的诊断能力(如果训练集的正确率一直上不去,可能会出现哪些问题——在这里,我们希望面试者能够就实际情况,做一些合理的假设,然后将主要的思考逻辑描述清楚)。我们会根据面试者所掌握的方法再比较深入地问一些问题,而且我们希望面试者不仅仅是背了一些公式/算法,或是在博客/知乎上看到了一些名词(比如VC维度,KKT条件,KL divergence),实际上却不理解背后的理论基础(有时候这些问题确实很难,但“知道自己不知道”和“不知道自己不知道”是差别很大的)。打个比方,如果面试者提到核技巧,那么给到一个实际的线性不可分的数据(譬如XOR,或者Swiss Roll),面试者能清楚地设计,并通过实际计算证明某个kernel可以将此数据转化到一个高维并线性可分的空间吗?

6. 在深度学习方面,我们希望面试者具备神经网络的基础知识(BP),以及常见的目标函数,激活函数和优化算法。在此基础上,对于常见的CNN/RNN网络,我们当然希望面试者能够理解它们各自的参数代表什么,比较好的初始参数,BP的计算,以及常见超参数的调整策略——这些相信Ian Goodfellow的Deep Learning一书都有非常好的介绍——我们也希望面试者能够在具体领域有利用流行框架(我们主要用tensorflow——但是这并不是必须的)搭建实际应用的经验。当然,我们希望面试者读过本领域的paper,并且手动验证过他们的想法,并且可以对他们方法的优缺点进行分析。当然,如果面试者有更多兴趣,我们可以探讨更深入的一些问题,比如如何避免陷入鞍点,比如通过引入随机噪音来避免过拟合,比如CNN的参数压缩,比如RNN对于动力系统的建模,比如基于信息理论的模型解释,等等等等,在这些方面,我们是抱着与面试者互相切磋的心态的。

7. 通常上面我们说的都是监督学习,往往结果是回归或分类。当然,也许面试者还精通RL/transfer learning/unsupervised learning这些内容,那么我们可以逐一讨论。

此外,如果面试者应聘的是某一个特定领域的职位,那么当然地,我们会希望他同时具备很强的领域知识,这里就不展开说明了。

在很短的时间内想要全面地了解一个人确实非常困难。调查显示,往往面试官自以为很准的“感觉”,其实是一个糟糕的performance predictor。我希望可以结合相对客观的基础问题,以及面试者自身的特长,来对面试者的理论和实战能力做一个判断。基础扎实,有实战经验并且有一技之长的面试者通常会是非常理想的候选人

最后的一点小tip,我真诚地希望面试者对问题有自己的思考和理解、有自己的体系,argument都是能够自洽的。坚持自己的观点并与面试官争论,远远好过为了刷面试而去背诵所谓标准答案(或者来知乎上找面试tips)。

欢迎大家批评指正。 本回答来自竹间智能深度学习科学家 赵宁远

作者:Flood Sung
https://www.zhihu.com/question/41233373/answer/256204350

看了那么多回答,我自己都答不上来。但,那并不代表深度学习学的不深,只是深度学习也很大啊。 

Deep Reinforcement Learning,Meta Learning, Imitation Learning, robot learning。估计这些现在没几个面试官懂吧。是不是应该让你推一推A3C,DQN,DDPG,TRPO,PPO呢?或者直接问请说说AlphaGo的整个算法实现??

大家往往觉得拷问某些基础,细节可以反映深度学习的水平,但我觉得深度学习那么大,方向那么多,有些细节对你很重要,有些则不是。研究视觉的不见得要懂NLP是不是。懂一些当然好,但是没有实践其实也没有用。

在我眼里,判断一个人深度学习水平最直接的体现就是看他做过的项目,写过的代码,看过的论文,发过的论文。

还有更重要的,快速学习能力。对一个全新的领域,可以快速in。所以只拷问知识层面显然太low。

作者:时间旅客
https://www.zhihu.com/question/41233373/answer/1134547779

根据题主的问题,只谈怎么判断深度学习水平。如果是现实中的面试,除了深度学习水平,还需要考察很多能力,如机器学习、工程能力、代码编写等等。

先放一个类似的回答:如何准备机器学习工程师的面试 ?

1.深度学习基础。考察深度学习领域中一些最基础的问题,比如CNN,LSTM,dropout,adam等。如果这些问题没有答的很好,说明基本功不扎实。

2.深度学习子领域基础。考察面试者对自己所研究的子领域的熟悉程度。比如图像领域,resnet,googlenet的创新点在哪里需要说的很清楚,具体的研究思路需要掌握;yolo,fast rcnn这些经典算法需要了解;以及一些经典问题例如1*1卷积的意义等等。自然语言处理领域,word2vec等词向量方法需要掌握,transformer中selfattention的实现方法,以及BERT等预训练方法需要了解。

3.思维能力和创新能力。通常根据仔细询问面试者简历中的项目经历和实习/工作经历即可判断出面试者专业能力的大概水平。有时也会问一些开放性问题,例如“如何获得词向量中表示情感的维度”等,这些问题可能并没有准确答案,但需要面试者提出一个思路。

4.深度学习的工程经验。考察面试者在深度学习领域的经验。例如:列举一些训练中的trick;如何防止过拟合;用什么优化器训练;学习率如何设计和调整;正则化怎么设置;batchnorm的意义,放在哪一层;激活函数为什么用relu。同时也会问一些train/loss曲线的问题,判断根据当前曲线模型/代码可能出现了什么问题,怎么debug。

5.深度学习领域的前沿追踪能力。这里主要是考察面试者对算法的热爱程度和学习热情,包含子领域和跨领域的前沿追踪能力。例如NLP领域,不仅需要了解BERT,还需要听过transformer-xl,GPT2,ERNIE,XLnet,RoBERTa,ALBERT等等,知道大概有哪些创新点。同时可能会考察面试者一些跨领域的前沿方向是否有所了解,例如GAN,对抗训练,图神经网络等等。

作者:匿名用户
https://www.zhihu.com/question/41233373/answer/92452443

1.weights initialization. 不同的方式,造成的后果。为什么会造成这样的结果。
2. activation function. 选用什么,有什么好处,为什么会有这样的好处。
3. dropout。怎么做,有什么用处,解释。
4. loss. 有哪些定义方式(基于什么?), 有哪些优化方式,怎么优化,各自的好处,以及解释。
5. 为什么网络够深(Neurons 足够多)的时候,总是可以避开较差local optima?
第五点可以参考:http://arxiv.org/abs/1412.0233。


作者:优达学城(Udacity)
https://www.zhihu.com/question/41233373/answer/197268648

首先肯定要问一下当前的几种流行的深度学习模型,面试者是否都有所了解。并问一些涉及到其中重要参数,变量的含义。

需要了解自己曾经在学习生活中应用到的深度学习模型框架,自己跑过什么样大型的数据,在跑程序时,发现了哪些在书中,网络中没有发现的一些知识经验发现。做过哪些项目,是否有自己的github主页,参加过什么样的数据比赛,得到过什么样的成绩。

最后,还要让面试者手动推到一些涉及深度学习数学基础方面的公式。

这样一轮过后,可以知道面试者在大局观,理论能力与实践能力是否符合公司的要求。

作者:山同气
https://www.zhihu.com/question/41233373/answer/145657844

看到大家前面的回答,都很好,但主要谈的还是偏向于知识的考察。

我个人在软件开发的行业经历了13年,从事算法这个行业已3年,经历了两家和算法相关的公司,面试算法/NLP/图像方向的不下500人(对,我们不特别强调深度学习,如特别强调,这家公司/部门要么是做纯粹研究性质的,要么是骗人的,要么面试官一知半解),应该有些发言权:

1.明确你岗位的职责,说白了,就是你要什么样的人,这是第一步,而且是最重要的一步,所有的技术考察,性格考察都是基于这一步来的。如果说,你要一个NLP的人,你需要明确NLP的那些方向是你首要考察的重点,词义的?语义的?句法结构的?哪些应用是你比较看重的?搜索引擎,关键字优化?实体识别?情感识别?分词?

2.接着你会按照这个目标去筛选简历,然后约人来面试。请记住:在简历这关你必须要刷下60%-70%的人,这是我按照目前的算法这个行业普遍从业情况,和自己的面试经历,得出一个概数。这减少你遇到奇葩的机会。

3.技术面试需要注意的地方:

我会考察四个方面

  • 过去的项目经验

  • 知识结构

  • 处理问题的能力/观察能力

  • 理解能力/学习能力

其中,

  • 过去的项目经验:

主要考察项目的基本情况,面试人在项目中承担什么样的职责,难易程度,你学习到哪些东西。这里有很重要的一点,就是看他的工程能力如何。有些人适合做研究,工程能力一塌糊涂,我想你的公司如果不是大到一定程度,是不会养只做研究的人,你作为面试官首要对公司负责。当然如果这个人理论知识特别强,虽然工程能力不强,我们也可以特例招入,并配一个工程能力强的人搭配干活。

   注意:工程能力并不仅仅是代码实现能力!

  • 知识结构:

仍旧以NLP举例,分词你用过多少种,他们之间的细微不同你是否都看过,是否追到源码中去?是否改过源码?这些都是层次递进的。分词只是其中很小一部分,但是非常基础的一部分,能体现你的团队在NLP领域的深入程度,基本上做了一年的NLP都不可避免的修改分词这个基本组件的源码。再考察一些相对新的东西认知到什么程度,比如word2vec,比如cnn提取文本信息。接着看你基础算法掌握的如何,比如说说PCA,SVM的原理,一些聚类算法的原理(不要求你写出公式,我也记不住)。这个阶段我问的任何一点都是工作中实际在用的,没有任何一条是为了问你而问,或为了显摆我会而你不会,请面试者摆正心态,好好的回答问题,不知道就说不知道!

  • 处理问题的能力:

我经常会给出两道算法题,比如一道是和NLP相关的,让你说用什么算法解决,还有一道是和归因分析或预测相关的让你谈思路。非常开放的问题,主要看你的思维方式,是否细致,是否能灵活运用算法。

  • 理解能力:

我会给出4篇论文,由面试者自己抽一篇,给你30分钟,尽可能的看,最后给我讲这篇论文主要解决什么问题、关键的步骤、公式解释、结果分析等,说的越详细越好,当然你可以查字典。如果你问正好这篇有的面试者看过怎么办?不是对其他人不公平吗?首先我选择论文的时候,已经选择的是最近的论文,如果这你都还看过只能说你平时就下功夫;如果凑巧你平时也不看,这篇论文你看了,那我要恭喜你,面试运气也是非常关键的因素,你觉的呢?

4.性格能力的考察

这一点有很多面试技巧谈到,但要注意你找的人。做算法是需要一个比较细致的性格,开放的思维,灵活的运用,另外还要结合你要往团队中补充什么类型的人。你可以问一些生活的小事,了解他的各种背景。问问他觉得最有成就的事情(非技术)。看看他视野如何,对其他哪些方面也感兴趣。比如他如果回答我对音乐也感兴趣,那就问他喜欢听听什么类型的?交响?那你喜欢哪位?至少你要知道音乐风格的区别,比如贝多芬和莫扎特曲风就有区别。如果他回答流行,你可以继续问你喜欢哪位歌手?

 说白了就是要找他最喜欢的那个点。这个阶段很轻松,你也可以放到一开始就问,以缓和气氛。

5.面试完成后

面试完了并不代表对这个人的考察结束,面试只能很不全面的了解一个人,我们只能尽可能全面的了解他,但必然了解的不完全。如果招进来后,在试用期内你需要布置什么样的工作?如何考察试用期员工?也是非常重要的。

作者:孤云独去闲
https://www.zhihu.com/question/41233373/answer/146232948

当时我们对深度学习很感兴趣,希望能不但得到好的预测结果,还能利用深度学习自动的得到一些浅层特征,参见cnn的第一层filter的weights。但是我们水平实在有限,没有得到什么有意义的feature,调参数试验各种网络最后也就是跟xgb或者随机森林差不多。所以我们后来觉得我们当时的问题可能不适合用深度学习来解决。

现在面试的时候我可能还是问下面这些问题,但就算被面试者完全不会deep,只要能合理的解决问题,我们就很满意了。

下面是原答案:
最直接的是看code或者看发过的文章。我喜欢有google scholar的面试者。

分职位吧,我们的职位要求能把deep learning 用出来,能解决客户问题的就是好同志。具体点说,我们的数据不是语音,不是图像,不是自然语言,您说deep learning能不能用吧,是不是适合用,如果要用可能会碰到什么问题,哪一种network比较适合处理我的数据。如果只是会调用package,一般是解决不了我们的问题的,因为我们这根本就不是图像识别嘛。

具体点,我一般是这么问的:

1、哈哈天气不错,今天怎么样呀,挺好吧。咱们来聊聊简历。你以前做过深度学习是吧?介绍一下你的项目?

2、我们这里有个跟你的项目类似的问题,也是classification,但是输入不是图像,我们有claim level的数据,你看能不能用你的方法做?适合么?

3、如果要用deep可能会碰到什么问题,哪一种network比较适合处理我的数据?

4、相比土办法,用深度有什么优势呢?哥们一般会提到feature learning,我就等这句呢。

5、那怎么从俺们的raw data里做出feature 呢?

ps:这个问题我也不会。现在我都是跟clinical team的医生一起做feature,靠人工。判断一个人有没有可能骨质疏松,他们说跟糖尿病,bmi指数,抽烟可能有关,那就整理呗,我哪知道呀。那跟高血压,高胆固醇,甚至一些失眠之类的症状有关吗?很麻烦呀,要整理数据,再分析。总共有几千个症状,还要考虑combination什么的。btw,上面说的那些都是时间序列,不是indicator。

来吧,騷年,我们一起开发data driven的feature learning 办法吧。

还有几个小问题,看心情问

a)数据imbalance 怎么办?sparse 怎么办?什么?你不知道这两个词是什么意思?那88,走好不送。

b) 最后这个比较野,我一般不问,如何让客户信服,我们不仅仅是跑了个包?

ps:我们能说服consultant,consultant才能说服客户。虽然我不接客,但我要给consultant这种混合着商科理科工科的大哥大姐们讲明白呀。

作者:Ming Xing
https://www.zhihu.com/question/41233373/answer/145574758

1.why layer-wise structure?

2. why sparse coding?

3. why softmax at final layer ?

这三个问题能看出candidate自己对dnn理解的深度

剩下的无非就是

1.用过什么框架

2.考察python熟练度

3.问问职业规划,等等

作者:pkpk
https://www.zhihu.com/question/41233373/answer/171245229

我一般不会问具体语言上的问题,这个是入门级别的问题。一般会考虑候选人的背景。

如果是机器学习应用的项目,一般会问他解决了什么问题,怎么解决的,然后我会找一些关键问题挑战他,如果功底好这时候就能看出来了。

如果是理论搞的多的人,我会问他,为什么这个网络好,好在哪里,怎么好的,怎么证明你的结论。

如果是搞ML平台的,我一般问,模型怎么实现,怎么加速,怎么并行化。等等

所以,毕业论文还是认真点写吧,毕竟是自己学业生涯的总结。

留言送书福利 

书香节过了,但是不是有的小伙伴还有想买的书没有买到,为了感谢大家长期以来的支持,深度学习与计算机视觉继续推出“留言送书”活动!

在本文文末留言即可参与活动,留言内容需为主题相关,我们会不定期送福利,多多留言会提升中奖概率哟~~

这次小编精心挑选了本《深度学习之PyTorch物体检测实战 》送给1位粉丝。本书共10章,涵盖的主要内容有物体检测与PyTorch框架基础概念与背景;PyTorch基础知识;基础卷积网络Backbone;两阶经典检测器Faster RCNN;单阶多层检测器SSD;单阶经典检测器YOLO;模型加速之轻量化网络;物体检测细节处理;物体检测难点问题;物体检测的未来发展。适合PyTorch框架爱好者和物体检测相关从业人员阅读,也适合深度学习和计算机视觉领域的研究人员阅读。

没中奖的小伙伴也不要气馁哟,点击此链接可查看书籍详情

/  留言主题 /

你希望看到咱们公众号发哪些深度学习相关的内容?

本次“留言送书”活动截至到4月28号,抽留言最走心的粉丝 免费赠送这本书籍(走心留言将经过筛选)。届时会公布中奖者评论截图及福利领取方式~

                            

☆ END ☆

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

扫描二维码添加小编↓

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习面试CSND是一个非常重要的环节,对于求职者来说,能够在这个面试中成功展现自己的深度学习知识和技能,有助于获得更好的职位机会。 首先,在准备面试过程中,我们需要对深度学习的基本概念和常用算法有清晰的理解。这包括各种神经网络结构(如卷积神经网络、循环神经网络等)、反向传播算法、优化算法(如梯度下降法)等。此外,还需要了解深度学习在计算机视觉、自然语言处理等领域中的应用,并能够阐述其原理和实现方式。 其次,在面试过程中,我们需要能够灵活运用深度学习相关的编程框架和工具,如TensorFlow、PyTorch等。这些工具具有丰富的函数库和示例代码,我们需要熟悉它们的使用方法,并能够根据问题的要求进行合理的模型设计和调优。 此外,对于常见的深度学习技术挑战和解决方案,我们也需要掌握,并能够在面试中做出相应的回答。例如,针对深度学习模型的过拟合问题,我们可以提出使用正则化技术或者数据增强等方法来降低模型的复杂度;针对样本不平衡问题,可以使用过采样或欠采样等方法来平衡样本分布。 最后,在面试过程中,我们需要展现出我们对深度学习领域的持续关注和学习态度。这可以通过回答相关的学术研究问题或者介绍自己在深度学习领域的项目经验来展现。同时,积极参与深度学习社区,关注最新的研究成果和开源项目,也有助于展现我们的深度学习学习能力和应用能力。 总结而言,面试CSND是一个展示深度学习知识和技能的重要机会。通过准备深度学习的基本概念、应用案例和编程工具,同时展现对深度学习领域的持续关注和学习态度,将有助于我们在面试中脱颖而出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值