当前位置: 首页 > 编程日记 > 正文

如何快速get到AI工程师面试重点,这12道题必备!

作者 | JP Tech

译者 | 刘畅

编辑 | Jane

出品 | AI科技大本营(ID:rgznai100)

【导读】2020 年的三月春招要来了,现在想要 Get 一个算法工程师的实习或全职机会,已经不是一件易事了。如果现在着手复习,茫茫题海不能毫无重点,我们要先抓住那些刚需必备的面试题。这次,作者收集了 12 个 AI 工程师职位的面试问题,助你攻下你心仪的 offer。

1、介绍一下 BN 层的含义

这是非常好的一个问题,因为它能显示出候选者在使用神经网络模型时,掌握的知识面够不够全面。这个问题可以有不同的回答,但需要囊括以下主要的思想:

BN层是一种有效的训练神经网络模型方法。此方法的目标是将特征(经过激活后每一层的输出)归一化为标准偏差为1的零均值状态。因此,非零均值时它是如何影响模型训练呢:

第一,需要理解的是非零均值是指数据未分布在0值附近,相反大多数数据具有大于零或小于零的值。结合高方差问题,数据可能变得非常大或非常小。在训练深层的神经网络时,此问题很常见。当特征的在固定的间隔(从小到大)内分布的不够稳定时,它将对网络的优化过程产生影响。众所周知,优化神经网络需要使用导数计算。假设一个简单的层计算公式为y =(Wx + b),则y对w的导数如下:dy = dWx。因此,x的值直接影响导数的值(当然,神经网络模型中的梯度的概念不是这么简单,但从理论上讲,x会影响导数)。因此,如果x带来不稳定的变化,则导数可能太大或太小,从而导致模型学习的不够稳定。这也意味着在使用批归一化时,我们可以在训练时使用更大的学习率。

第二,BN层可以避免x的值经过非线性激活函数后达到饱和的现象。因此它可以确保激活后不会过高或者过低。这有助于减少对初始参数的依赖。

第三,BN层也可以是一种正则化方法,有助于最大程度的减少过拟合。当使用BN层,不需要使用过多的dropout层。因为当我们drop down网络时,不必担心丢失太多的信息。当然,仍然建议同时使用两种技术。

2、介绍偏差和方差的含义以及它们之间的trade-off

什么是偏差?可以理解,偏差是当前模型的平均预测与预测的实际结果之间的差异。具有高偏差的模型表明它不太关注训练数据。这会使模型过于简单,并且在训练和测试过程中均无法达到良好的准确性。这种现象称为欠拟合。

方差可以简单地理解为模型输出在数据点上的分布(或聚类)。方差越大,该模型就越有可能更关注训练数据,并且无法对未见过的数据进行泛化。结果,该模型会在训练集上获得非常好的结果,但是对于测试数据,结果却非常差。这种现象称为过拟合。

这两个概念间的关联如下图所示:

在上图中,圆心是一个可以完美预测的模型。实际上,这只是理想状态。随着模型预测分布离圆心越来越远,预测结果越差。

我们可以更改模型,以便可以尽可能多地增加落入圆心的模型。这当然需要在“偏差”和“方差”值之间保持平衡。如果我们的模型过于简单且参数很少,那么它可能具有较高的偏差和较低的方差。

另一方面,如果我们的模型具有大量参数,那么它将具有高方差和低偏差,这是我们在设计算法时计算模型复杂度的基础。

3、假设深度学习模型已经学到了一千万个人脸向量,如何通过查询最快地找到一个新人脸?

这个问题与深度学习算法在实践中的应用有关,这个问题的关键是对数据进行索引的方法。这是将One Shot Learning用于面部识别问题的最后一步,但这是将应用程序部署在实践中最重要的一步。

基本上,对于这个问题,您应该首先介绍One Shot Learning的人脸识别方法。可以将其简单地理解为将每张脸变成一个向量,而新的人脸识别就是找到最接近(最相似)输入脸的向量。通常,人们将使用具有自定义损失函数(称为三元组损失)的深度学习模型来实现此操作。

但是,随着本文开头图像数量的增加,在每次识别中计算1000万个矢量的距离并不是一个明智的解决方案,这会使系统变慢。我们需要考虑在真实向量空间上为数据建立索引的方法,以使查询更加方便。

这些方法的主要思想是将数据划分为用于查询新数据的简单结构(可能类似于树形结构)。当有新数据可用时,在树中进行查询有助于快速找到距离最近的向量。

这里提供几种方法,如局部敏感hash。Faiss等

4、在分类问题中,准确率指标是否完全可靠?通常使用哪些指标来评估模型?

对于分类问题,有许多不同的评估方法。对于准确率,仅将正确预测的数据点数量除以总数据即可。这听起来很合理,但实际上,对于不平衡的数据问题,该数据并不足够。假设我们正在建立一个针对网络攻击的预测模型(假设攻击请求大约占请求总数的1/100000)。

如果模型预测所有请求都是正常的,则准确性也高达99.9999%,该数字在分类模型中通常不可靠。上面的准确性计算通常会向我们显示正确预测了百分之几的数据,但没有指出每个类别详细的分类信息。相反,我们可以使用混淆矩阵。基本上,混淆矩阵显示了实际上有多少个数据点属于一个类,并且预计会落入某类中。它具有以下形式:

除了表示和定义分类每个阈值相对应的TP和FP指标变化之外,我们还有一个称为ROC曲线的图表。基于ROC,我们可以知道该模型是否有效。

越接近左上角,结果越理想,如图中橙线所示。即TP值高,而FP值低。

5、如何理解反向传播?解释一下其作用机理。

该问题属于神经网络的基础知识,回答时需要指明以下几点:

1、前向计算过程是帮助模型计算每层的权重,结果计算将得出结果yp。接下来将计算损失函数的值;损失函数的值将显示模型的好坏。如果损失函数不够好,我们需要找到一种方法来减小损失函数的值。训练神经网络实质上是使损失函数最小化。损失函数L(yp,yt)表示模型的输出值yp与数据标签的实际值yt之间的差异程度。

2、为了减少损失函数的值,我们需要使用导数。反向传播可以帮助计算网络每一层的导数。根据每层导数的值,使用优化器(Adam,SGD,AdaDelta...)去更新网络的权重。

3、反向传播使用链式规则或者导数函数来计算从最后一层到第一层,每一层的梯度值。

6、激活函数的意义是什么?激活函数的饱和点是多少?

  • 激活函数的意义

激活函数的诞生是为了打破神经网络的线性。这些函数可以简单地理解为决定信息是否通过神经元的过滤器。在神经网络训练期间,激活函数在调整导数斜率中起着重要作用。在接下来的部分中将进一步讨论诸如Sigmoid,Fishy或ReLU等激活函数

但是,我们需要了解,这些非线性函数的性质使神经网络有可能学习比仅使用线性函数更复杂的函数表示形式。大多数激活功能是连续且可区分的功能

这些函数是连续函数,也就是说,如果输入具有较小且可微的变化(在其定义的域中的每个点都有导数),则输出中的变化很小。当然,如上所述,导数的计算非常重要,这是我们的神经元是否可以训练的决定性因素。

  • 激活函数的饱和范围

诸如Tanh,Sigmoid和ReLU之类的非线性激活函数均具有饱和区间。

激活函数的饱和范围是无论输入值如何改变,函数的输出也不会改变的间隔。改变的间隔存在两个问题,即在神经网络的前向上,在饱和区间内,不同的输入将得到相同的输出。导致整个模型中的数据流相同,这种现象是协方差shifting。第二个问题是在反向时,饱和区间的导数为零,因此网络几乎学不到任何东西。这就是为什么我们需要把值范围设置在零均值的原因。

7、模型的超参数是什么?与模型参数有什么不同。

  • 什么是模型参数?

机器学习本质是需要数据,假设我们的数据是天气信息,例如温度,湿度,温度等,而机器要完成的是在上述因素与爱人是否生气之间找到联系?现在假设我们使用变量y来表达我们的爱人是生气还是不生气?变量x1,x2,x3…表示天气元素。我们将关系归因于找到函数f(x),如下所示:

其中的系数w1,w2,w3..w_1,w_2,w_3 ..w1,w2,w3 ..就是所谓的模型参数。因此,当我们说找到问题的最佳模型时,是指我们已经在现有数据集上找到了最适合该问题的模型参数。

  • 什么是模型超参数?

模型超参数其实不是模型参数。这是两个完全不同的概念,如果从训练数据本身对模型进行建模,则模型的超参数将完全不同。它的目的如下:

  • 训练过程中,帮助模型找到最合适的参数

  • 通常是模型训练人员亲自挑选

  • 可以基于几种启发式策略进行定义

超参数举例如下:

  • 学习率

  • 支持向量机的C和sigma参数

  • KNN中的k系数

8、学习率太高或者太低会怎么样?

当模型的学习率设置得太低时,模型训练速度将非常慢,因为它每次对权重的更新都很小。在达到局部最佳点之前,需要进行许多次的更新。

如果学习率设置得太高,权重每次更新变化太大,模型有可能不会收敛。在每一次权重更新的步骤中,模型容易跨过局部最优,然后一直在局部最优点附近波动。

9、当输入图像大小增加一倍时,CNN的参数量增加多少倍?为什么?

对于面试者来说,这是一个极具误导性的问题,因为大多数人会朝着CNN参数量将增加多少倍的方向思考。但是,让我们看一下CNN的结构:

我们可以看到,CNN模型的参数量取决于滤波器的数量和大小,而不取决于输入图像的大小。因此,将图像输入大小加倍并不会改变模型的参数量。

10、有哪些处理不平衡数据的方法?

这是一个测试面试者解决真实数据问题的能力。通常,实际数据每个类别的数据量方面会有很大差异。对于实际的数据集,可能会出现数据不平衡的情况。现在,我们可以考虑以下技术:

  • 选择正确的度量标准来评估模型:如上文所述,对于不平衡的数据集,使用准确率进行评估是不够全面的。应该选择合适的评价标准,例如精度,召回率,F1分数,AUC

  • 对训练数据集进行重采样:除了使用不同的评价标准外,人们还可以应用技术来获取不同的数据集。从不平衡集中创建平衡数据集的两种方法是欠采样和过采样,其方法是重复,bootstrap或SMOTE。

  • 集成许多不同的模型:创建更多数据来泛化模型在实践中并不总是可行的。例如,你有一个包含1000个数据的稀有类,一个包含10,000个数据样本的大类。因此,我们可以尝试训练10个模型,而不是去再找9000个稀有类的数据样本进行模型训练。每个模型都使用1000个稀有类和1000个大类进行训练。然后使用集成技术去获得最佳结果。

  • 重新设计模型-损失函数:使用惩罚技术严厉惩罚损失函数中的大类,以帮助模型本身更好地学习稀有类别的数据。使得损失函数的值在所有类别中更为全面。

11、在训练深度学习模型时,Epoch,batch和Iterration都是什么概念?

这些是训练神经网络时非常基本的概念,但现实是,在区分这些概念时,很多面试者感到困惑。你可以像下面这样来回答问题:

Epoch:代表整个数据集的迭代(所有内容都包含在训练模型中)。

Batch:由于我们无法一次将整个数据集送入神经网络,因此我们将数据集分为几批较小的数据集。

Iteration:是运行一个epoch所需的batch数。假设我们有10,000张图像作为数据,并且批处理的大小(batch_size)为200。那么一个epoch将包含50个Iteration(10,000除以200)。

12、数据生成器的概念是什么?我们什么时候需要使用它?

在编程中,生成函数也很重要。数据生成函数可帮助我们直接生成数据以适合每个训练批次中的模型。

利用数据生成函数有助于训练大数据。由于数据集并不一定总是需要全部加载到RAM中,这会浪费内存,而且,如果数据集太大,则可能导致内存溢出,并且输入数据的处理时间会更长。

原文链接:

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-3-47a1dbf879f1

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-2-8f42deeb4483v

https://medium.com/@itchishikicomm/12-deep-learning-interview-questions-you-should-not-be-missed-part-3-47a1dbf879f1

(*本文为AI科技大本营编译文章,转载微信联系 1092722531)

精彩公开课

推荐阅读

  • 动漫美少女生成神器、猫的门禁...2019年十七大最佳机器学习项目 |年度盘点①

  • 大四学生发明文言文编程语言,设计思路清奇

  • 芬兰开放“线上AI速成班”课程,全球网民均可免费观看

  • 腾讯 Angel 升级:加入图算法,支持十亿节点、千亿边规模!

  • 时间可以是二维的?基于二维时间图的视频内容片段检测 | AAAI 2020

  • 扎心了!互联网公司福利缩水指南

  • “对不起,我们只招有出色背景的技术人员!”

  • 2019中国区块链开发者大会圆满落幕!10大烧脑核心技术演讲干货全送上!

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

金邦黑金刚4G内存 VS Vista系统

我的机器配置是 Intel Core 2 4320CPU 金邦黑金刚2G DDR2 800*2 P965P-DS3主板 N 8600GTS 为什么在Vista中 只识别了3.5G 我升级了主版BIOS 主版最高支持8G,哎结果网上一看,才明白。。。现在的系统不是很好的支持4G的内存。…

程序员的量化交易之路(25)--Cointrader之MarketData市场数据实体(12)

转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrade.top/ 前面一节我们说到了远端事件。其中,市场数据就属于远端事件。市场数据有什么?我们通过代码来回答这个问题: package org.cryptocoinpartners.…

滴滴开源在2019:十大重点项目盘点,DoKit客户端研发助手首破1万Star

整理 | Jane出品 | AI科技大本营(ID;rgznai100)2018 年,科技企业纷纷布局开源战略后迎来的第一个“丰收年”。但对滴滴来说,2019 年才迎来其第一波开源小高潮。自2017年滴滴零星开源数个项目后,滴滴开源项目…

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2

之前的博文中介绍了IMAGE_FILE_HEADER结构,现在来讨论比较复杂的“可选文件头”结构体。(转载请指明来自breaksoftware的csdn博客)先看下其声明 typedef struct _IMAGE_OPTIONAL_HEADER {//// Standard fields.//WORD Magic;...DWORD BaseOfData; // not e…

9月第1周安全回顾 IM安全威胁严重 企业增加无线安全投入

本文同时发表在:[url]http://netsecurity.51cto.com/art/200709/55180.htm[/url]本周(0827至0902)安全方面值得关注的新闻集中在安全产品、即时通信安全、无线安全和安全市场。安全产品:Intel vPro技术逐渐升温,关注指…

centos下LAMP之源码编译安装httpd

1 最好先安装组件[rootlocalhost ~]# yum groupinstall additional development [rootlocalhost ~]# yum groupinstall development tool2 安装ap1.5.2r(Apache Portable Runtime),安装apr-util 1.5.4工具[rootlocalhost ~]wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2…

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3

《PE2》中介绍了一些可选文件头中重要的属性,为了全面起见,本文将会讲解那些不是那么重要的属性。虽然不重要,但是还是可以发现很多好玩的情况。首先看一下32位的可选文件头详细定义。(转载请指明来源于breaksoftware的CSDN博客&a…

高效决策的三个关键

“领导者的责任,归纳起来,主要是出主意、用干部两件事。”***的这句话高度概括了领导者的关键任务,而这两件事都有一个共同的核心——决策。决策是管理者的天职,与其说这是他们的权力,不如说是一种责任。每一个经理人&…

开发者都想收藏的深度学习脑图,我们抢先曝光了!

可以看到,通过机器学习技术,软件或服务的功能和体验得到了质的提升。比如,我们甚至可以通过启发式引擎智能地预测并调节云计算分布式系统的节点压力,以此改善服务的弹性和稳定性,这是多么美妙。而对移动平台来说&#…

Cookie 位置_无需整理

为什么80%的码农都做不了架构师?>>> Cookie 位置 C:\Users\admin\AppData\Roaming\Microsoft\Windows\Cookies 转载于:https://my.oschina.net/Majw/blog/464018

PE文件和COFF文件格式分析——节信息

在《PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3》中,我们看到一些区块的信息都有偏移指向。而我们本文讨论的节信息是没有任何偏移指向的,所以它是紧跟在可选文件头后面的。(转载请注明来源于breaksoftware的csdn博客&#…

强悍!使用Flash和Silverlight制作控件

Silverlight已经发布了正式版本,我也到网站下载了一个并看看,突然发现了他的例子中包含了这个公司。NETiKA TECH。之所以说他强,是因为他尽然使用Flash和Silverlight制作了仿造WinForm的控件,包括:常见的控件&#xff…

《评人工智能如何走向新阶段》后记(再续8)

由AI科技大本营下载自视觉中国2019.12.13 81.近来一波人工智能热潮是在大数据的海量样本及超强计算能力两者支撑下形成的。所以说这一波人工智能是由大数据喂养出来的。这时的机器智能在感知智能和计算智能等一些具体问题上已经达到甚至超越人类水平,目前在语音识别…

Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode

2019独角兽企业重金招聘Python工程师标准>>> 正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。 1. Secondary NameNode 原理&#…

PE文件和COFF文件格式分析——RVA和RA相互计算

之前几节一直是理论性质的东西非常多。本文将会讲到利用之前的知识得出一个一个非常有用的一个应用。(转载请指明来源于breaksoftware的csdn博客) 首先我们说下磁盘上A.exe文件和正在内存中运行的A.xe之间的关系。当我们双击A.exe后,A.exe会运…

《评人工智能如何走向新阶段》后记(再续9)

由AI科技大本营下载自视觉中国2019.12.16 96. 近日《Nature》杂志推荐2019年度10大科学进展的杰出论文,其中一篇是有关人工智能的,谈采用深度学习/强化学习算法来训练四足机器狗ANYmal,使它能快速爬起来。该文谈到,在反复训练下&…

RTX组织架构刷新出现了问题

今天发现RTX的组织架构刷新出现了问题。按照网络上的方法什么的把什么配置文件的IP地址改啊改啊。还是没有用。也TELNET了8010端口,也没有用。其实这样的方法之前把服务程序装在另一台机器上倒是可以的。有点麻烦的了。呵呵不知道各位博友有没有解决的好方法啊。呵呵…

一个最简单的通过WireShark破解SSL加密网络数据包的方法

原文地址: http://article.yeeyan.org/view/530101/444688 一般来说,我们用WireShark来抓取包进行分析是没有多大问题的。但这里有个问题是,如果你碰到的是用SSL/TLS等加密手段加密过的网络数据的时候,往往我们只能束手无策。在过…

PE文件和COFF文件格式分析——导出表

在之前的《PE可选文件头》相关博文中我们介绍了可选文件头中很多重要的属性,而其中一个非常重要的属性是(转载请指明来源于breaksoftware的CSDN博客) IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 该数组保存了…

将Quartz.NET集成到 Castle中

Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务.具体可参看TerryLee的Castle 开发系列文章。 …

《评人工智能如何走向新阶段》后记(再续10)

本文由AI科技大本营下载自视觉中国106.百度自研的飞桨(Paddle paddle)框架是中国自研的首个开源产业极人工智能深度学习框架,目前飞桨已累计服务150多万开发者,在定制化训练平台上企业用户超过6.5万,发布了16.9万模型&…

水管工游戏 (深搜)

水管工游戏 本题依然是采用搜索&#xff0c;深搜&#xff0c;广搜都可以&#xff0c;本代码采用深搜&#xff0c;此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可。 代码如下&#xff1a; #include<stdio.h> int a[51][51]; int book[51][51],n,m,flag0,top…

PE文件和COFF文件格式分析——导出表的应用——一种插件模型

可能在很多人想想中&#xff0c;只有DLL才有导出表&#xff0c;而Exe不应该有导出表。而在《PE文件和COFF文件格式分析——导出表》中&#xff0c;我却避开了这个话题。我就是想在本文中讨论下载Exe中存在导出表的场景。&#xff08;转载请指明出于breaksoftware的csdn博客&…

IBatis.Net学习笔记九--动态选择Dao的设计分析

在IBatis.Net中可以通过配置文件动态选择数据库、动态选择Dao对象。Dao对象也就是操作数据库的类&#xff0c;通过配置文件我们可以选择DataMapper的方式、Ado的方式、NHibernet的方式以前其他第三方的方式来操作数据库。有利于系统的灵活性和可扩展性。通过分析动态选择Dao的设…

Pytorch和Tensorflow,谁会笑到最后?

作者 | 土豆变成泥来源 | 知秋路&#xff08;ID:gh_4a538bd95663&#xff09;【导读】作为谷歌tensorflow某项目的Contributor&#xff0c;已经迅速弃坑转向Pytorch。目前Tensorflow还没有被Pytorch比下去&#xff0c;但之后极大概率被比下去。01 在学术界Pytorch已经超越Tenso…

HTTP请求的过程

HTTP通信机制是在一次完整的HTTP通信过程中&#xff0c;Web浏览器与Web服务器之间将完成下列7个步骤&#xff1a; 1. 建立TCP连接在HTTP工作开始之前&#xff0c;Web浏览器首先要通过网络与Web服务器建立连接&#xff0c;该连接是通过TCP来完成的&#xff0c;该协议与IP协议共同…

JSTL+EL表达式方法获取Oracle的Clob字段内容

我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行,可是不使用MVC框架,使用jsp页面JSTL的sql标签去读取数据库的数据这种方式就麻…

通向人工智能产业落地化的道路在哪?

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;世事浮云&#xff0c;白云苍狗&#xff0c;转眼间关于人工智能的研究已历经两个世纪。在研究者和践行者的不懈努力之下&#xff0c;如今人工智能应用已遍地可见&#xff0c;无论是繁华都市还是偏远小镇&…

PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL

通过导出表隐性加载DLL&#xff1f;导出表&#xff1f;加载DLL&#xff1f;还隐性&#xff1f;是的。如果觉得不可思议&#xff0c;可以先看《PE文件和COFF文件格式分析——导出表》中关于“导出地址表”的详细介绍。&#xff08;转载请指明出于breaksoftware的csdn博客&#x…

系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常...

现象&#xff1a;spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 beans 的声明r的异常信息。 造成该异常原因有两种&#xff1a;第一,配置文件头部配置的xsd版…