点云感知算法面试知识点(二)

1. Transformer简单介绍下

答:Transformer是一种由编码模块和解码模块组成的深度神经网络,它主要基于自注意力机制,具有几个相同结构的编码器/解码器,每个编码器由自注意力机制和前馈神经网络组成,而每个解码器由自注意力机制、编码解码器注意力和前馈神经网络组成(如下图所示)。
点云感知算法面试知识点(二)_第1张图片

在编码模块,编码器的自注意力机制首先将输入向量转换成三个不同的向量,即查询向量 、关键向量 、值向量 ,然后由不同输入得到的向量被打包成三个不同的矩阵,之后不同输入向量之间的注意力函数通过以下四步计算:
点云感知算法面试知识点(二)_第2张图片

第一步为了确定对当前位置数据进行编码时对其他位置数据的关注程度,计算两个不同向量之间的分数S。第二步将分数S标准化为Sn,使其具有更稳定的梯度,以便更好地训练,第三步将使用softmax函数将分数Sn转换为概率P。第四步获得权重加权矩阵,每个值向量V乘以概率P,具有较大概率的向量将被随后层更多关注。这个过程可用公式(5)统一表示为:
在这里插入图片描述

然后将权重加权矩阵输入前馈神经网络(由两个线性层和ReLU激活函数组成,应用于每个编码器和解码器中自注意力层之后),可由下列公式表示:
FFNN(X)=W2 σ(W1 X)
其中W1和W2是两个线性变换层参数矩阵,σ表示ReLU函数,X是自注意力层的输入。
解码模块中的编码解码注意力层与编码模块中的自注意力机制几乎相同,只是键矩阵K和值矩阵V是从编码器模块中导出,查询矩阵Q从前一层中导出。
与只关注局部特征的CNN相比,Transformer能够捕捉长距离特征,这意味着Transformer可以轻松导出全局信息。与必须按序列计算隐藏状态的RNN相比,Transformer效率更高,因为自注意力层和全连接层的输出可以并行计算,并且容易加速。

2. 卷积层怎么运算的,作用是什么?

答:卷积运算其实相当于图像处理中的“滤波器运算”;而卷积核就相当于滤波器,卷积核中的参数其实就是权重。卷积层的作用是特征提取
对于输入的数据,卷积运算以一定的间隔滑动卷积核的窗口并应用,然后将各个位置上卷积核的参数和输入对应的参数相乘再求和,然后将这个求和得到的结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,最后再加上偏置就可以得到卷积运算的输出了。其中根据需要还会使用不同的卷积核、填充(主要是为了调整输出大小)、步幅等操作。具体图解如下(一维数据):
点云感知算法面试知识点(二)_第3张图片
那么三维数据呢?如图像RGB三通道,如下图,但这样只能得到通道数为1的特征图。
点云感知算法面试知识点(二)_第4张图片
如果想在通道上得到多个卷积运算输出特征图,那么就应用多个卷积核(权重),如下图:
点云感知算法面试知识点(二)_第5张图片
这样是一个数据的操作过程,如果对N个数据进行批处理时。数据作为4维数据在各层间传递。也就是说批处理将N次的处理汇成1次进行。如下图所示:
点云感知算法面试知识点(二)_第6张图片
3. 池化层什么作用,最大、平均池化怎么计算?

答:池化层一般在卷积层和激活函数层后,对输入特征图进行压缩,使特征图变小,简化网络计算复杂度或进行特征压缩,可以减少计算量和所需显存,提取主要特征。
常用的池化操作有四种:mean-pooling(平均池化),max-pooling(最大池化)、Stochastic-pooling(随机池化)和global average pooling(全局平均池化)。
其中最大、平均池化计算如下:
借用时光碎了天博主的博文:
mean-pooling(平均池化):即对邻域内特征点只求平均
优缺点:能很好的保留背景,但容易使得图片变模糊
正向传播:邻域内取平均
点云感知算法面试知识点(二)_第7张图片
反向传播:特征值根据领域大小被平均,然后传给每个索引位置
点云感知算法面试知识点(二)_第8张图片
max-pooling(最大池化):即对邻域内特征点取最大
优缺点:能很好的保留纹理特征,一般现在都用max-pooling而很少用mean-pooling
正向传播:取邻域内最大,并记住最大值的索引位置,以方便反向传播
点云感知算法面试知识点(二)_第9张图片
反向传播:将特征值填充到正向传播中,值最大的索引位置,其他位置补0
点云感知算法面试知识点(二)_第10张图片
4. 激活函数relu什么作用?

答:如果不适用激励函数,那么在这种情况下每一层的输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(perceptron)了
正因为上面的原因,所以引入非线性函数作为激励函数,这样深层神经网络就有意义了,不再是输入的线性组合,可以逼近任意函数,最早的想法是用sigmoid函数或者tanh函数,输出有界,很容易充当下一层的输入。为什么要引入Relu呢?
第一,采用sigmoid等函数,算激活函数时候(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相当大,而采用Relu激活函数,整个过程的计算量节省很多
第二,对于深层网络,sigmoid函数反向传播时,很容易就出现梯度消失的情况(在sigmoid函数接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),从而无法完成深层网络的训练
第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
点云感知算法面试知识点(二)_第11张图片

相比于其它激活函数来说,ReLU有以下优势:对于线性函数而言,ReLU在深度网络中表达能力更强;而对于非线性函数而言,ReLU由于非负区间的梯度为常数,因此不存在梯度消失问题,使得模型的收敛速度维持在一个稳定状态。
这里稍微描述一下什么是梯度消失问题:当梯度小于1时,预测值与真实值之间的误差每传播一层会衰减一次,如果在深层模型中使用sigmoid作为激活函数,这种现象尤为明显,将导致模型收敛停滞不前。

5. 前向传播的原理,过程

答:神经网络学习的过程就是不断调整合适的权重和偏置来拟合训练的数据的过程。神经网络其实就是一个输入X到输出Y的映射函数:f(X)=Y。函数的系数就是我们所要训练的网络参数W(权重、偏置和学习率等),只要函数系数确定下来,对于任何输入xi我们就能得到一个与之对应的输出yi。
前向传播就是网络如何由输入数据X得到输出数据Y。具体就是输入数据乘上权重加上偏置,得到数据,这个数据由激活函数决定是否输出和怎么输出。
6. 有监督与无监督的区别

答:区别就是是否使用标注数据进行学习

7. reshape怎么计算、操作的

答:假设B = reshape(A,m,n)
返回一个m×n的矩阵B, B中元素是按列从A中得到的。如果A中元素个数没有m×n个, 则会引发错误。

你可能感兴趣的:(算法,面试,深度学习)