为了账号安全,请及时绑定邮箱和手机立即绑定

如果你是面试官,你怎么去判断一个面试者的深度学习水平?

如果你是面试官,你怎么去判断一个面试者的深度学习水平?

紫衣仙女 2018-08-09 11:07:33
如果你是面试官,你怎么去判断一个面试者的深度学习水平
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

作为面试官判断一个面试者的深度学习水平的方法:
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。我希望可以结合相对客观的基础问题,以及面试者自身的特长,来对面试者的理论和实战能力做一个判断。基础扎实,有实战经验并且有一技之长的面试者通常会是非常理想的候选人。

查看完整回答
反对 回复 2018-08-13
  • 1 回答
  • 0 关注
  • 753 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信