作为面试官,如何判断一个面试者的深度学习水平

如题所述

作为面试官判断一个面试者的深度学习水平的方法:
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。我希望可以结合相对客观的基础问题,以及面试者自身的特长,来对面试者的理论和实战能力做一个判断。基础扎实,有实战经验并且有一技之长的面试者通常会是非常理想的候选人。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-29
  人工智能、大数据、云计算和物联网是目前非常热门而且前沿的领域,未来发展前景值得重视。不论是薪资待遇,还是人才缺口,都对程序员有很大的吸引力。那么在面试深度学习高级工程师的时候,HR都看重哪些能力呢?
  (1) 熟练的编程开发能力
  对于深度学习高级工程师而言,掌握python编程语言是最基础的能力。除此之外,还要至少掌握一门底层开发语言。毕竟公司招人不会只为了让你训练模型写论文,有时候还要把模型部署到手机上,优化底层算法等等,所以也要掌握C/C++等编程语言。
  (2) 优秀的模型开发能力
  深度学习技术具有很高的灵活性,特别是随着许多流行的深度学习框架的出现,如Tensorflow,Keras,Caffe,MXnet,PyTorch,Theano等。这些工具大多以模块化方式开发,并具有活跃的社区和专业的支持。
  虽然深度学习的开源代码很多,但是以学术研究模型为主,很少有企业会把产品线上优化过的核心模型放出来。所以优秀的模型开发能力,是必须要具备的。
  为了让同学们能用更短的时间掌握深度学习技能,中公教育联合中科院自动化研究所专家,推出了人工智能《深度学习》直播课程。课程时长5周,包含6大实战项目,以实操贯穿理论,可以帮你快速建立、梳理相关知识体系,让你的成长更有方向、更高效。
  课程涵盖行业内75%技术要点,如语音识别(微信语音转文字、Siri、天猫精灵等)、图像识别(火车站人脸识别、人脸打卡、办卡人脸识别、健康码人脸识别、违章拍摄、百度识图、淘宝识图、有声绘本)、机器对话(微软小冰、同声翻译等)都有所掌握,满足各类就业需求。
相似回答