资源行业动态深度学习的 12 个面试问题(一)

深度学习的 12 个面试问题(一)

2020-01-13 | |  129 |   0

原标题:深度学习的 12 个面试问题(一)

来源:AI 研习社           链接:https://www.yanxishe.com/TextTranslation/2317


下面是一些我对面试AI工程师职位的人经常提的问题。实际上,根据候选者的项目经验不同,不是所有的问题都需要用到。通过大量的面试经历,尤其是对学生的面试经历,我总结了深度学习领域最有意思的12个问题,将在这篇文章中与大家分享。我希望收到你的评论。好的,不再废话,让我们开始。


1. 简述批归一化(Batch Normalization)的意义?

这是一个很棒的问题——这一个问题,涵盖了一个面试者使用神经网络时所需要的大部分知识。回答的方式当然多种多样,但一定要清楚地说明以下几点核心思想:

01.png

批归一化是训练神经网络模型时的一个有效技巧。 批归一化的目标是将特征(也就是每一个权重层的输出通过激活函数后的得到张量)归一化到均值为0、标准差为1的分布上去(与之相反的则是非零均值了)。这对模型的训练又带来了什么影响呢?


第一点,均值非零意味着数据不是分布在0附近,而是大部分大于0或小于0。如果同时存在高方差问题的话,数据会是非常大或非常小的——训练比较深的神经网络时经常会遇到这种问题。特征不遵从间隔稳定的分布时,会影响到整个网络的训练过程。众所周知,神经网络的优化涉及梯度的运算。假设某一层的运算是y=(Wx+b),那这一层的y对w的梯度为:dy=dW x——这表明,x的值直接影响着梯度的值。当然,神经网络中的梯度并非如此简单,但理论上而言,“x的值会影响梯度值”的结论是成立的。因此,如果x存在不稳定的变化,那么梯度也会时大时小,导致模型学习的不稳定。这一结论也意味着我们在使用了批归一化的时候,可以使用更高一些的学习率。


第二点,批归一化还能帮助我们避免x经过非线性激活函数后饱和(saturation)的情况,因为它有效约束了激活值不会过大或过小。例如,使用Sigmoid激活函数时,激活函数过大的输入值会得到几乎为0的梯度——如果不使用批归一化,这里的权重可能永远都不会有效学习。这也意味着减轻了我们对参数初始化值的依赖。


第三点,批归一化还可以作为减轻过拟合的一种正则化方法。使用了批归一化,我们就不必再在神经网络中使用太多的Dropout,也就不必担心使用Dropout导致丢失太多的信息。当然,把批归一化和Dropout两种技巧相结合也是可以考虑的。



2. 简述偏差(bias)和方差(variance)的概念以及二者的权衡关系?

什么是偏差(bias)?用更简单的方式表述,偏差是指当前模型预测值的平均值与我们希望模型预测的真实值之间的差距。模型的偏差较高,意味着它没能很好地集中在训练数据上。偏差较高的模型往往较为简单,在训练和测试上都无法达到很好的准确率——这种现象也常被称作欠拟合(underfitting)。


方差(variance)可以被理解为模型输出值在某一数据点处的分布情况。方差越大,越可能表明模型过于集中于训练集的数据,而在从未见过的数据集上的泛化性能不佳。方差过大,会导致模型在训练数据集上取得非常不错的效果,但在测试数据上表现得一塌糊涂——这种现象也常被称作过拟合(overfitting)。


下图可以帮助你理解偏差与方差的概念:

02.png

上图是一个用打靶来模拟机器学习模型进行预测的例子。图中,如果一个模型的预测值全部落在靶子的正中心——百发百中,那它将是一个极佳的模型——尽管在实际情况下,模型往往不会是这么完美的。如果预测值(图中的×)偏离靶心越远,那也就代表着预测结果越差。


我们训练机器学习模型可以视作让模型通过学习,将预测值尽可能调整得全部落在圆心处的小圈内的过程。我们往往会面临方差与偏差的权衡问题。如果模型比较简单、参数量少,那么它的预测值可能会具有高偏差、低方差(欠拟合)。反之,如果模型的参数量过多、过于复杂,它经常会具有高方差、低偏差(过拟合)。偏差和方差,是我们设计算法时估计复杂度的基础。

03.png

                        图注:随着算法复杂度的变化,偏差与方差的变化


3. 假设一个深度学习模型生成了一千万个人脸特征向量,如何通过查询来为一个人脸图像进行匹配?

这个问题涉及深度学习在实际应用中的实践,问题的关键在于索引数据的方法。这是通过One-shot learning进行人脸识别的最后一步也是最关键的一步,它决定了实践中部署这套人脸识别系统的难度。


要回答这个问题,首先你需要简述基于One-shot learning的人脸识别方法——简单地说,就是将每幅人脸图像变换为一个向量,要识别新的人脸就要去寻找最接近输入这幅人脸图像的向量。一般情况下,人们会选择一种称作triplet loss的定制损失函数来实现。

1578915570214761.png


然而,随着数据库中图片数量的增加,拿新图片的编码和一千万个向量一一比较也不太现实,这样系统会运转得非常慢。我们需要思考如何实现更高效地在实向量空间索引数据从而提升速度的方法。这些方法的核心思路是把数据划分为用于查询数据的简单结构(比如可以是树形结构)。每当系统接收到新数据时,在树形结构中查询可以在较短时间内迅速找到需要的向量。

05.png

  可以用来完成这项任务的方法有局部敏感哈希(Locality Sensitive Hashing)、近似最近邻搜索(Approximate Nearest Neighbors)等等。对了,这些方法有一些开源的实现,如Annoy(来自Spotify)、Faiss(来自Facebook)等等。


4. 分类问题中,准确率指标完全可靠吗?你用来评估模型的指标又有哪些?

分类问题中,评估模型的方法多种多样。准确率的计算只是简单地把正确分类的数目除以数据总数目——听起来很合理,但在现实中往往存在数据不平衡问题。存在数据不平衡的情况下,准确率并不能很好地反映模型的效果。举个简单的例子,如果我们要做一套网络攻击的预测模型(假设每100000个网络请求中有1个是攻击性的),如果模型把输入数据全都分类为正常攻击,那么准确率也已经达到了99.999%——但这样的分类模型并不可靠。


准确率的计算仅关心数据中有多少的百分比是正确分类的,但并没有逐个类别地进行详细分析。除了准确率,我们还可以使用混淆矩阵(confusion matrix)。混淆矩阵能够显示有多少数据属于一个类而被分类到了另一个类,形式大致如下图:

06.png

另外,用调整分类score阈值得到不同阈值下的TP(True Positive)数和FP(False Positive)数后,我们可以得到一条称作“接收者特征操作曲线”或ROC(Receiver Operating Characteristic)曲线的图,也可以用来验证模型是否有效。

07.png

理想的ROC曲线是越接近图的左上角越好的(也就是高TP率、低FP率)。


本文的第二部分链接(英文原版):https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-2-8f42deeb4483

第三部分链接(英文原版):https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-3-47a1dbf879f1

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:知识图谱在零售业中的应用

下一篇:美国公布自动驾驶新政“AV4.0”:确立美国领先地位

用户评价
全部评价

热门资源

  • 国内人才报告:机...

    近日,BOSS 直聘职业科学实验室 &BOSS 直聘研究院...

  • AI使物联网更智能...

    看到微软对物联网和人工智能的结合感兴趣是一个明...

  • 推荐一批学习自然...

    这里推荐一批学习自然语言处理相关的书籍,当然,...

  • 安防智能化大势下...

    大部分传统安防设备不仅拍摄视野有限,而且无法事...

  • 20亿创业基金、10...

    近日,杭州举办了建设国家新一代人工智能创新发展...