深度学习算法工程师面试知识点总结(一)

深度学习算法工程师职位所需的技术堆栈摘要如下:

[En]

The technical stack required for the position of deep learning algorithm engineer is summarized as follows:

深度学习算法工程师面试知识点总结(一)
这个总结不是很完整,这个方向需要的知识体系很大,比如高等数学、线性代数、概率论的基础,这对很多学生来说是一个很大的挑战。我们还需要为不同的任务学习一些知识,比如目标检测和目标分割。
[En]

This summary is not very complete, and the knowledge system needed in this direction is very large, such as the foundation of higher mathematics, linear algebra and probability theory, which is a great challenge for many students. We also need to learn some knowledge for different tasks, such as target detection and target segmentation.

本文分享的内容来自采访中常见知识点的总结,读者可以通过以下方式获取整篇文档:

[En]

The content shared in this article comes from a summary of frequently asked knowledge points in the interview, and readers can obtain the entire document in the following ways:

  添加微信study428,进入微信群,有问题可以及时交流沟通;
  关注公众号”计算机视觉与OpenCV“,硬货知识常分享;
  加入QQ群”187042448“获取深度学习相关的资料。

本文分享的内容来源于《深度学习计算机视觉实战》一书,该书由刘东研究员和肖铃合作完成,由电子工业出版社出版。

深度学习算法工程师面试知识点总结(一)
该书从算法入门到模型培训,再到模型部署一站式,书中详细的案例说明,都经过了操作验证。这本书由四部分组成:
[En]

The book from algorithm introduction to model training, to model deployment one-stop, detailed case notes in the book, have been verified by operation. The book consists of four parts:

第一部分(1~2章)深度学习和计算机视觉的基础和算法讲解;
第二部分(3~6章)传统图像处理算法的案例讲解;
第三部分(7-11章)计算机视觉方向的案例讲解;
第四部分(12~13章)Tensorflow Lite讲解(源码分析、模型优化、模型转换等)以及使用Tensorflow Lite在PC端和移动端的部署案例讲解。

本书可以为计算机视觉入门的读者和想要对模型进行工程部署的读者提供参考与帮助。京东链接:https://u.jd.com/rwk3HPT

笔记内容如下(篇幅所限,这是第一部分):

1、dropout设置:隐含节点 dropout 率等于 0.5 的时候效果最好,原因是 0.5 的时候 dropout 随机生成的网络结构最多。

使用dropout很难检查梯度下降的性能,此时可以关闭dropout,将keep-prob的值设为1,以确保代价函数单调递减,然后打开dropout,确保dropout不会带来问题。

dropout属于深度学习中的算法开发的技巧(tricks),对模型训练性能提升具有帮助,还有一些其他的技巧,在书中有介绍,在案例中有应用。

深度学习算法工程师面试知识点总结(一)

深度学习算法工程师面试知识点总结(一)

2、one-hot编码的作用:

编码的功能是相互排斥的,一次只有一个激活。结果,数据变得稀疏。

[En]

The encoded features are mutually exclusive, with only one activation at a time. As a result, the data becomes sparse.

这样做的好处主要有:

(1)解决了分类器不好处理属性数据的问题;

(2)在一定程度上也起到了扩充特征的作用。

如下是在验证码识别的案例中使用到的独热码(即one-hot)

深度学习算法工程师面试知识点总结(一)
3、将权重初始化为很小的数字是一个普遍的打破网络对称性的解决办法,都初始化为0或者相同的数字会形成对称网络。

偏差一般都初始化为 0。

4、在CNN中,BN应作用在非线性映射前(激活函数)。在神经网络训练时遇到收敛速度很慢,或梯度爆炸等无法训练的状况时可以尝试BN来解决。另外,在一般使用情况下也可以加入BN来加快训练速度,提高模型精度。

BN比较适用的场景是:每个mini-batch比较大,数据分布比较接近。在进行训练之前,要做好充分的shuffle,否则效果会差很多。

5、数据增强方法:

彩色数据增强:图像亮度、饱和度、对比度;比例变换;使用随机图像差分方法对图像进行裁剪和缩放;比例和纵横比增强变换;水平/垂直翻转;平移变换;旋转/仿射变换;高斯噪声、模糊处理。

[En]

Color data enhancement: image brightness, saturation, contrast; scale transformation; using random image difference method to crop and scale the image; scale and aspect ratio enhancement transformation; horizontal / vertical flip; translation transformation; rotation / affine transformation; Gaussian noise, blur processing.

6、经典网络

CNN局部感知、权重共享

LeNet-5:提出卷积神经网络模型

AlexNet:使用ReLU作为非线性,使用dropout技术,使用GPU训练

ZFNet:最大的贡献在于通过使用可视化技术揭示了神经网络各层到底在干什么,起到了什么作用。可视化的实现应该是转置卷积(也称反卷积),反池化是记录了最大池化的位置,其他位置设为0。

VGG:整个网络都使用了同样大小的卷积核尺寸(3 * 3)和最大池化尺寸(2 * 2);使用两个3 * 3的卷积层串联相当于1个5 * 5的卷积层,3个3 * 3的卷积层串联的效果则相当于1个7 * 7的卷积层。

NIN:提出了抽象能力更高的Mlpconv层,利用多层mlp的微型网络,对每个局部感受野的神经元进行更加复杂的运算,而以前的卷积层,局部感受野的运算仅仅只是一个单层的神经网络;提出了Global Average Pooling(全局平均池化)层,传统的CNN最后一层都是全连接层,参数个数非常多,容易引起过拟合,全连接层参数占整个CNN模型的一大部分,NIN提出采用全局平均池化替代全连接层。

GoogLeNet:引入Inception 结构

采用不同大小的卷积核(如1、3、5)意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;卷积核大小采用1、3和5,主要是为了方便对齐,可以设置padding使输出featuremap大小相同,以便拼接;使用5×5的卷积核仍然会带来巨大的计算量,为此,文章借鉴NIN2,在5×5卷积之前采用1×1卷积核来进行降维。

Inception结构的改进就是一些技巧的使用,例如使用两个3×3代替一个5×5,使用1xn接nx1代替nxn,引入stem模块获得更深的网络,引入残差模块设计出了Inception-ResNet网络。

ResNet:解决网络退化问题

深度学习算法工程师面试知识点总结(一)

7、输入层主要包含对原始图像进行预处理,包括归一化、去均值等等。

卷积运算层主要使用滤波器,通过设置步长和深度等参数,从输入中提取不同层次的特征。

[En]

The convolution operation layer mainly uses filters to extract different levels of features from the input by setting parameters such as step size and depth.

激活函数层的主要目的是对卷积层的输出进行非线性映射。

[En]

The main purpose of the activation function layer is to make a non-linear mapping of the output of the convolution layer.

池层主要用来压缩参数的个数,可以减少过拟合的情况。

[En]

The pool layer is mainly used to compress the number of parameters, which can reduce the over-fitting situation.

全连接层中的所有神经元之间有一个加权连接,这经常用于网络的最后一层来计算类别分数。

[En]

There is a weighted connection between all neurons in the full connection layer, which is often used in the last layer of the network to calculate category scores.

8、扩张卷积,又称为带孔(atrous)卷积或者空洞(dilated)卷积。在使用扩张卷积时,会引入一个称作扩张率(dilation rate)的参数。该参数定义了卷积核内参数间的行(列)间隔数。一个3×3的卷积核,扩张率为2,它的感受野与5×5卷积核相同,而仅使用9个参数。这样做的好处是,在参数量不变的情况下,可以获得更大的感受野。扩张卷积在实时分割领域应用非常广泛。

在深度网络中,为了增加感受野,减少运算量,通常会进行下采样池,这可以增加感受野,但会降低空间分辨率。为了在不损失分辨率的情况下仍然扩大接收范围,可以使用孔卷积。在检测方面,一方面感知场较大,可以对较大的目标进行检测和分割,另一方面可以对目标进行高分辨率的精确定位。此外,还可以通过调整扩展速率来获得多尺度信息。

[En]

In order to increase the receptive field and reduce the amount of computation in the deep network, downsampling pool is always carried out, which can increase the receptive field, but the spatial resolution is reduced. In order not to lose the resolution and still expand the receptive field, hole convolution can be used. In the detection, on the one hand, the perception field is larger, it can detect and segment the large target, on the other hand, it can accurately locate the target with high resolution. In addition, multi-scale information can be obtained by adjusting the expansion rate.

因此,一般而言,孔洞褶积的主要作用是在不损失分辨率的情况下扩展接收范围,并调整扩展速率以获得多尺度信息。

[En]

Therefore, generally speaking, the main role of hole convolution is to expand the receptive field without losing resolution, and to adjust the expansion rate to obtain multi-scale information.

深度学习算法工程师面试知识点总结(一)

Original: https://blog.csdn.net/lxiao428/article/details/121487639
Author: 计算机视觉与OpenCV
Title: 深度学习算法工程师面试知识点总结(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/511498/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球