杂谈1——深度学习面试笔记

系列文章目录



前言

浅浅记录一些面试知识,一方面做一些分享与自己的回答,另一方面作为笔记记录下来。

一、CV篇

1、batch-normalization过程是什么样的?

批量归一化(Batch Normalization)简称BN,是一种常用的对深度神经网络的优化技术,有两个基本也是最重要的功能
1、防止模型过拟合
2、加快训练速度
简单描述就是它通过将每一层调用它的网络层的输入数据做归一化来实现,以此再进行正常的训练过程。

进一步解释这个批量归一化,过程如下:

1、以每批输入的mini-batch 为单位,计算每个 mini-batch 中每个输入变量的均值和标准差。

2、对于每个 mini-batch 中的每个输入变量,减去均值,再除以标准差,从而得到归一化的结果。这样就会突出个别数据的主要特征的同时缩小所需要学习的数据的大小,既有利于模型的学习又有利于数据的计算。

3、把归一化的结果作为网络的输入,继续正常的训练过程。

4、训练结束后,再反向把归一化的结果转换成原来的输入。


2、激活函数有什么用?常见的激活函数的区别是什么?

激活函数(Activation Function)是神经网络中重要的组成部分,它可以把一个实数值信号转换为另一个实数值信号,用于处理神经网络中的输入和输出。

它的用处有:

1、用于计算神经元的激活状态;

2、使用激活函数可以使神经元的输出维持在一定的范围,从而提高神经网络的可靠性;

3、使用不同的激活函数可以增加神经网络的表达能力,从而提高神经网络的性能。

常见的激活函数有:

Sigmoid 函数:Sigmoid 函数可以把神经元的输出映射到 0 到 1 之间的值,适用于分类问题;

ReLU 函数:ReLU 函数可以让神经元在激活时输出大于 0 的值,通常比 Sigmoid 函数有更好的表现;

Tanh 函数:Tanh 函数可以把神经元的输出映射到 -1 到 1 之间的值,可以用于正负号判别;

Softmax 函数:Softmax 函数可以把神经元的输出映射到 0 到 1 之间,并且各个神经元的总和为 1,常用于多分类问题。

不同的激活函数有不同的优缺点:

Sigmoid 函数:优点是计算简单,可以把神经元的输出映射到 0 到 1 之间;缺点是如果梯度较小,梯度消失,其表现力较差。

ReLU 函数:优点是在 0 处有断点,可以快速收敛,计算速度快,并且不会出现梯度消失的问题;缺点是在 0 之下的区域不激活,可能会出现梯度爆炸的情况。

Tanh 函数:优点是比 Sigmoid 函数的输出更加稳定,因此不容易出现梯度消失的问题;缺点是输出小于 0 的值,可能在训练过程中效率不够高。

Softmax 函数:优点是可以把输出映射到 0 到 1 之间,并且各个神经元的总和为 1,适用于多分类问题;缺点是若输出值较大,可能会出现数值稳定性问题。

激活函数有很多,比如就darknet框架就实现了很多激活函数,比如LOGISTIC, RELU, RELU6, RELIE, LINEAR, RAMP, TANH, PLSE, LEAKY, ELU, LOGGY, STAIR, HARDTAN, LHTAN, SELU, SWISH, MISH等,可以去继续研究一下。


3、Softmax的原理是什么?有什么作用?

Softmax 是一种常用的多分类技术,它可以将一个得到的输入值转换成概率。
请添加图片描述
其中, n n n表示分类的类别个数, x x x表示模型的输出(不同类别的输出可能不同),请添加图片描述表示各个类别的累加和,最终输出的概率值范围为 0 到 1(即归一化后的结果)。

它有两个主要的作用:

1、将一个实数输入转换成概率:Softmax 通过将输入的实数值映射到 0 到 1 之间,从而可以将其转换成概率。

2、用于多分类任务:由于 Softmax 可以输出类概率,因此它也可以用于多分类任务,可以帮助我们更加准确地预测分类结果。


4、CNN的平移不变性是什么?如何实现的?

CNN 的平移不变性是指在视觉识别中,物体即使改变位置,CNN仍能正确识别出物体。它是通过使用卷积神经网络(CNN)实现的,由于卷积核的权重在整个图像中是一致的,因此它可以减少对输入图像位置的依赖,从而实现平移不变性。

CNN的平移不变性涉及到两个要素:

1、空间块(Spatial Blocks):在卷移过程中,输入图像的像素会被划分为一系列的空间块,每个空间块的大小取决于卷移核的大小。

2、共享权重(Shared Weights):在CNN中,卷移核具有一定的权重,这些权重在整个图像中是一致的,由此,卷移核可以保持对输入图像位置的不变性。


5、VGG,GoogleNet,ResNet等网络之间的区别是什么?

1、VGG (Visual Geometry Group),该网络由 Simonyan 和 Zisserman 在 2014 年发表,它巧妙地使用 3×3 的小卷积核来构建深层网络,网络的深度仅仅是使用了卷积核和池化层的叠加,最后使用全连接层作为输出层。

2、GoogleNet 是2014年ILSVRC比赛的获胜者,由 Szegedy 等人设计,主要特点是使用 Inception 模块来组成网络,这些 Inception 模块有效地减少参数量,同时提升模型精度,GoogleNet 中还引入 batch normalization 和 dropout ,让网络具有更好的收敛和泛化能力。

3、ResNet (Residual Network) 是2015 ILSVRC比赛的获胜者,由 Kaiming He 等人提出,它首次提出了残差模块,通过跳跃连接将上游的特征融合到下游特征中来提高网络的深度,从而提升网络性能,这种跳跃连接使得网络深度增加而不会出现梯度消失现象。


6、残差网络为什么能解决梯度消失的问题?

残差网络(ResNet)是一种深度神经网络,它能够有效解决深层神经网络中梯度消失问题。它利用跳跃连接(skip connections)来替代简单的堆叠层,从而让梯度能够在深层网络中顺利传播,从而防止梯度消失问题发生。跳跃连接能够有效保存浅层特征以及它们对深层特征的影响,这样可以在训练过程中减少参数的更新,从而有效避免梯度消失的问题。


7、常见的模型加速方法

1、对模型进行缩减:降低模型参数的数量,从而减少模型的计算量,从而加快模型的运行速度。常见的方法有剪枝、瘦身、混合精度训练等。

2、选择高效算法:使用更高效的算法来加速模型的训练和推理过程,例如使用基于深度学习的算法,可以比传统机器学习算法更快地训练和预测。

3、采用分布式训练:分布式训练可以利用多台计算机的资源,将模型的训练和测试任务分给不同的计算机,从而大大加快模型的训练速度。

4、优化模型结构:可以通过调整模型结构,减少模型中不必要的复杂度,减少模型的计算量,从而提高模型的运行速度。

5、使用硬件加速:使用 GPU 加速、英伟达的 TensorRT、英特尔的 OpenVINO 等都可以加速深度学习模型的计算和推理过程。


8、 目标检测里如何有效解决常见的前景少背景多的问题?

1、图像增强:图像增强是一种有效的解决前景少背景多的方法,它可以通过增加或减少图像的噪声、添加变换、改变对比度、添加颜色、旋转和其他变换等来增加前景背景的特征差异。

2、改变损失函数:改变损失函数是解决前景少背景多的另一种有效方法,损失函数可以赋予背景更高的权重,以便更有效地检测出前景目标。

3、分类和定位:分类和定位是一种有效的解决前景少背景多的方法,它将目标检测任务分为两个部分:分类(判断是否有目标)和定位(确定目标的位置)。在分类的步骤中,可以通过更有效地检测前景目标来减少背景图像。

4、选取较小的网络:使用较小的网络,可以让模型更具有针对性,更容易检测出前景目标,避免对于背景的过度识别。

5、采用多尺度预测:采用多尺度预测的方法可以更有效地检测出前景目标。它可以通过使用多种比例的输入图像来进行多次预测,以便更有效地检测出前景目标。


9、目标检测里有什么情况是SSD、YOLOv3、Faster R-CNN等所不能解决的,假设网络拟合能力无限强?

SSD、YOLOv3、Faster R-CNN 等算法仅能够检测图像中的静态物体,无法检测动态物体;
由于 SSD、YOLOv3、Faster R-CNN 等技术均采用卷积神经网络,一次只能处理单张图片,FPS无法满足处理视频的能力;
由于 SSD、YOLOv3、Faster R-CNN 等技术仅能检测定长边界框,无法检测不规则形状;
由于 SSD、YOLOv3、Faster R-CNN 都是监督学习,需要大量有标注的数据集进行训练,若标注数据有误或缺失,模型性能会受到影响;
由于 SSD、YOLOv3、Faster R-CNN 等算法不能够理解图片的语义,因此不能准确地检测到场景内的物体。


10、ROIPool和ROIAlign的区别是什么?

ROIPool和ROIAlign都是按照Region of Interest (ROI) 来对输入特征映射(Feature Map)作出处理的操作,用于对输入特征映射输出的结果进行缩放,使得输出的维度固定。

ROIPool:ROIPool以给定的ROI将输入特征映射分割成固定大小的网格,然后在每个网格中取最大值,生成固定大小的输出。

ROIAlign:ROIAlign与ROIPool相似,但它使用双线性插值计算输出,而不是只取每个网格中的最大值,因此生成的输出具有更高的精度。


11、常见的梯度下降优化方法有哪些?

1、普通梯度下降是每次迭代只使用一个样本点来更新参数,每次迭代都要计算所有样本点的梯度,比较耗时。

2、批量梯度下降是每次迭代使用所有样本点来更新参数,把所有样本点的梯度求和再更新参数,虽然计算量大,但是比普通梯度下降更准确和更快。

3、随机梯度下降是每次迭代使用一个样本点来更新参数,样本点是随机选取的,每次迭代只需要计算一个样本点的梯度,收敛效果比普通梯度下降慢一点,但是比较节省计算资源。

4、小批量梯度下降是每次迭代使用一小部分样本点来更新参数,样本点是随机选取的,比较节省计算资源,可以比较快速地收敛。

5、动量梯度下降是在普通梯度下降的基础上添加了一个动量参数,可以抑制梯度的震荡,更快的收敛。


12、人体姿态估计主流的两个做法是啥?

1、机器学习方法:
卷积神经网络(CNN):使用卷积神经网络(CNN)来识别图像中的人体姿态,并预测出相应的轮廓信息;
支持向量机(SVM):利用支持向量机(SVM)来进行监督学习,通过学习分类器来识别人体姿态。

2、基于图像分析方法:
人体图像分割:基于模板匹配算法,提取图像中人体部分;
人体轮廓识别:利用图像处理技术,识别出人体轮廓;
运动跟踪:利用视觉相关算法,跟踪人体的运动轨迹;
人体姿态估计:利用多种计算机视觉技术,包括姿态估计、多视角跟踪等,来识别并估计人体的姿态。


二、NLP篇

1.LSTM为什么能解决梯度消失/爆炸的问题?

LSTM(Long Short-Term Memory)能够解决梯度消失/爆炸的问题,这是因为它具有记忆细胞和遗忘门,以及输入门和输出门。

1、记忆细胞帮助网络长期记忆,并且可以容纳较大的梯度,从而避免梯度消失现象。
2、遗忘门可以控制信息的流动,有助于梯度能够在网络中传播,而不是消失。
3、输入门可以控制新信息的流入,防止梯度爆炸。
4、输出门可以控制信息传播的量,从而防止梯度爆炸。
因此,LSTM通过这些门和记忆细胞等方式,能够解决梯度消失/爆炸的问题。


2、Attention对比RNN和CNN,分别有哪些优势?

1、RNN的优势
对于序列问题有很好的处理能力。
展示独特的内存功能,可以查看非常长时间范围内的数据。

2、CNN的优势
可以捕获局部联系。
可以应用在图像和文本分类中,在这些任务中具有出色的效果。

3、Attention的优势
可以为全局序列联系提供动态调节。
可以更加精准地指定哪些序列信息被注意。
可以更加容易地解决训练时间长的问题。


3、写出Attention的公式

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V


4、Attention机制,里面的q,k,v分别代表什么?

q (query): 查询,指的是输入的查询向量,一般是RNN的隐层状态或者词嵌入。
k (key): 键,指的是查询空间中的样本,一般也是RNN的隐层状态或者词嵌入。
v (value): 值,指的是查询空间中样本对应的权重系数,一般也是RNN的隐层状态或者词嵌入。


5、为什么self-attention可以替代seq2seq?

Self-Attention 可以作为一种替代 Seq2Seq 模型的技术。与 Seq2Seq 不同,Self-Attention 模型通过引入一个全局注意机制,使模型更具有自我理解能力,能够联系长距离的输入输出之间的关系,而不是像 Seq2Seq 那样只能覆盖较短的距离,因此模型的性能得到了显著提升。此外,Self-Attention 模型还可以减少计算量,这是由于与经典的 Seq2Seq 模型比较,Self-Attention 模型可以在一次网络前向传播中完成所有操作,而不需要多次前向传播来计算输入序列和输出序列之间的关系。

猜你喜欢

转载自blog.csdn.net/qq_45848817/article/details/129054457