近年来,对深度学习的需要一直增长,其应用程序被利用于各个商业部门。各公司当初都在寻找可能利用深度学习和机器学习技术的专业人士。在本文中,将整顿深度学习面试中最常被问到的 25 个问题和答案。如果你最近正在加入深度学习相干的面试工作,那么这些问题会对你有所帮忙。
1、什么是深度学习?
深度学习波及获取大量结构化或非结构化数据,并应用简单算法训练神经网络。它执行简单的操作来提取暗藏的模式和特色(例如,辨别猫和狗的图像)
2、什么是神经网络?
神经网络复制了人类的学习形式,灵感来自于咱们大脑中的神经元是如何激活的,然而比人类大脑要简略得多。
最常见的神经网络由三个网络层组成:
- 输出层
- 暗藏层(这是最重要的一层,在这里进行特征提取,并进行调整以更快地训练和更好地运行)
- 输入层
神经网络用于深度学习算法,如 CNN, RNN, GAN 等。
3、什么是多层感知机(MLP)?
和神经网络一样,mlp 有一个输出层、一个暗藏层和一个输入层。它与具备一个或多个暗藏层的单层感知器的的构造雷同。单层感知器只能对具备二进制输入 (0,1) 的线性可分类进行分类,但 MLP 能够对非线性类进行分类。
除输出层外,其余层中的每个节点都应用非线性激活函数。输出层、传入的数据和激活函数基于所有节点和权重相加从而产生输入。MLP 应用一种称为“反向流传”的办法来优化节点的权重。在反向流传中,神经网络在损失函数的帮忙下计算误差,从误差的起源向后流传此误差(调整权重以更精确地训练模型)。
4、什么是数据规范化(Normalization),咱们为什么须要它?
Normalization 的中文翻译个别叫做“规范化”,是一种对数值的非凡函数变换办法,也就是说假如原始的某个数值是 x,套上一个起到规范化作用的函数,对规范化之前的数值 x 进行转换,造成一个规范化后的数值。
规范化将越来越偏的散布拉回到标准化的散布, 使得激活函数的输出值落在激活函数对输出比拟敏感的区域, 从而使梯度变大, 放慢学习收敛速度, 防止梯度隐没的问题。
依照规范化操作波及对象的不同能够分为两大类:
一类是对第 L 层每个神经元的激活值 进行 Normalization 操作,比方 BatchNorm/ LayerNorm/ InstanceNorm/ GroupNorm 等办法都属于这一类;
另外一类是对神经网络中连贯相邻隐层神经元之间的边上的权重进行规范化操作,比方 Weight Norm 就属于这一类。
个别机器学习里看到的损失函数外面退出的对参数的的 L1/L2 等正则项,实质上也属于这这一类的规范化操作。
L1 正则的规范化指标是造成参数的稠密化,就是争取达到让大量参数值获得 0 值的成果,而 L2 正则的规范化指标是无效减小原始参数值的大小。
有了这些标准指标,通过具体的规范化伎俩来扭转参数值,以达到防止模型过拟合的目标。
5、什么是玻尔兹曼机?
最根本的深度学习模型之一是玻尔兹曼机,相似于多层感知器的简化版本。这个模型有一个可见的输出层和一个暗藏层——只是一个两层的神经网络,能够随机决定一个神经元应该关上还是敞开。节点跨层连贯,但同一层的两个节点没有连贯。
6、激活函数在神经网络中的作用是什么?
激活函数模仿生物学中的神经元是否应该被激发。它承受输出和偏差的加权和作为任何激活函数的输出。从数学角度讲引入激活函数是为了减少神经网络模型的非线性。Sigmoid、ReLU、Tanh 都是常见的激活函数。
7、什么是老本函数?
老本函数也被称为“损失”或“误差”,它是评估模型性能好坏的一种度量办法。它用于计算反向流传过程中输入层的误差。咱们通过神经网络将谬误向后推并在不同的训练函数中应用它。
8、什么是梯度降落?
梯度降落是一种最小化老本函数或最小化误差的最优算法。目标是找到一个函数的部分全局极小值。这决定了模型应该采取的缩小误差的方向。
9、反向流传是什么?
这是深度学习面试中最常被问到的问题之一。
1974 年,Paul Werbos 首次给出了如何训练个别网络的学习算法—back propagation。这个算法能够高效的计算每一次迭代过程中的梯度。反向流传算法是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最罕用且最无效的算法。其次要思维是:
(1)将训练集数据输出到 ANN 的输出层,通过暗藏层,最初达到输入层并输入后果,这是 ANN 的前向流传过程;
(2)因为 ANN 的输入后果与理论后果有误差,则计算估计值与理论值之间的误差,并将该误差从输入层向暗藏层反向流传,直至流传到输出层;
(3)在反向流传的过程中,依据误差调整各种参数的值;一直迭代上述过程,直至收敛。
10、前馈神经网络和循环神经网络有什么区别?
前馈神经网络信号从输出到输入沿一个方向流传。没有反馈回路;网络只思考以后输出。它无奈记住以前的输出(例如 CNN)。
循环神经网络的信号双向流传,造成一个循环网络。它思考以后输出和先前接管到的输出,以生成层的输入,并且因为其外部存储器,它能够记住过来的数据。
11、循环神经网络 (RNN) 有哪些利用?
RNN 可用于情感剖析、文本开掘等,能够解决工夫序列问题,例如预测一个月或季度的股票价格。
12、Softmax 和 ReLU 函数是什么?
Softmax 是一种激活函数,可生成介于 0 和 1 之间的输入。它将每个输入除以所有输入的总和,使得输入的总和等于 1。Softmax 通常用于分类工作的输入层和注意力机制的计算。
ReLU 是应用最宽泛的激活函数。如果 X 为正,则输入 X,否则为零。ReLU 罕用于暗藏层的激活函数。
13、什么是超参数?
这是另一个常常被问到的深度学习面试问题。超参数在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练失去的参数数据。因为个别状况下咱们将能够依据模型本身的算法,通过数据迭代主动学习出的变量称为参数,而超参数的设置能够影响到这些参数是如何训练,所以称其为超参数。
14、如果学习率设置得太低或太高会产生什么?
当学习率太低时,模型的训练将停顿得十分迟缓,因为只对权重进行最小的更新。它须要屡次更新能力达到最小值。如果十分小可能最终的梯度可能不会跳出部分最小值,导致训练的后果并不是最优解。
如果学习率设置得太高,因为权重的急剧更新,这将导致损失函数呈现不心愿的发散行为。可能导致模型无奈收敛,甚至发散(网络无奈训练)。
15、什么是 Dropout 和 BN?
Dropout 是一种随机删除网络中暗藏和可见单元的技术,能够以避免数据过拟合(通常删除 20% 内的节点)。它使收敛网络所需的迭代次数减少。
BN 是一种通过对每一层的输出进行规范化,变为均匀为 0,标准差为 1 的正态分布,从而进步神经网络性能和稳定性的技术。
16、批量梯度降落和随机梯度降落的区别是什么?
17、什么是过拟合和欠拟合,以及如何解决?
过拟合是指模型在训练集上体现很好,到了验证和测试阶段就很差,即模型的泛化能力很差。当模型对训练数据中的细节和噪声的学习达到对模型对新信息的执行产生不利影响的水平时,就会产生过拟合。它更可能产生在学习指标函数时具备更大灵活性的非线性模型中。样本数量太少,样本乐音烦扰过大,模型简单度过高都会产生过拟合。
欠拟合是指模型在训练集、验证集和测试集上均体现不佳的状况。这通常产生在训练模型的数据较少且不正确的状况下。
为了避免过拟合和欠拟合,您能够从新采样数据来预计模型的准确性(k-fold 穿插验证),并通过一个验证数据集来评估模型。
18、如何在网络中初始化权值?
个别状况下都应用随机初始化权值。
不能将所有权重初始化为 0,因为这将使您的模型相似于线性模型。所有的神经元和每一层都执行雷同的操作,给出雷同的输入,使深层网络无用。
随机初始化所有权重通过将权重初始化为十分靠近 0 的值来随机调配权重。因为每个神经元执行不同的计算,它使模型具备更好的准确性。
19、CNN 中常见的层有哪些?
- 卷积层——执行卷积操作的层,创立几个更小的图片窗口来浏览数据。
- 激活层 - 它给网络带来非线性,例如 RELU 将所有负像素转换为零。输入是一个通过整流的特色映射。
- 池化层——池化是一种向下采样的操作,它升高了特色图的维数。
- 全连通层——该层出处类别或者回归的数值。
20、CNN 的“池化”是什么? 它是如何运作的?
池化用于缩小 CNN 的空间维度。它执行下采样操作来升高维数,并通过在输出矩阵上滑动一个过滤器矩阵来创立一个会集的特色映射。
21、LSTM 是如何工作的?
长 - 短期记忆 (LSTM) 是一种非凡的循环神经网络,可能学习长期依赖关系。LSTM 网络有三个步骤:
- 网络决定遗记什么,记住什么。
- 它有选择地更新单元状态值。
- 网络决定以后状态的哪一部分能够输入。
22、什么是梯度隐没和梯度爆炸?
在训练 RNN 时,你的斜率可能会变得太小或太大; 这使得训练十分艰难。当斜率太小时,这个问题被称为“隐没梯度”。当坡度趋向于指数增长而不是衰减时,它被称为“爆炸梯度”。梯度问题导致训练工夫长,性能差,精度低。
23、深度学习中 Epoch、Batch 和 Iteration 的区别是什么?
Epoch —— 示意整个数据集的一次迭代(训练数据的所有内容)。
Batch——指的是因为不能一次性将整个数据集传递给神经网络,所以咱们将数据集分成几个批处理进行解决,每一批称为 Batch。
Iteration——如果咱们有 10,000 张图像作为数据,Batch 大小为 200。那么一个 Epoch 应该运行 50 次 Iteration(10,000 除以 50)。
24、深度学习框架中的张量是什么意思?
这是另一个最常被问到的深度学习面试问题。张量是用高维数组示意的数学对象。这些具备不同维度和等级的数据数组作为神经网络的输出被称为“张量”。
25、比拟罕用的深度学习框架例如 Tensorflow,Pytorch
大略说下就能够了,例如:这些框架提供 c ++ 和 Python api,都反对 CPU 和 GPU 计算设施。那个相熟说那个就能够了比方罕用 Pytorch,然而因为有些实现是 Tensorflow 的所以须要看代码所以对 Tensorflow 也理解一些,不要说谁好谁坏,因为很容易落入陷阱,万一你说 Tensorflow 好,面试公司用 Pytorch 怎么办。
https://avoid.overfit.cn/post/35ba0e271a734fa3ba67271d90b12c3f