从今天起,豆芽有空也尽己所能,帮助一下大家。
面经来源:https://www.nowcoder.com/discuss/691843?source_id=discuss_experience_nctrack&channel=-1
1. iou loss是怎么计算的
Jaccard coefficient(Jaccard系数)
就是IOU(Intersection over Union),交集占并集的大小。
公式其实很简单,就是交集占并集的大小。
那么我们的
2. 梯度消失的原因
假设我们有四层隐藏层,每层隐藏层只包含一个神经元节点。激活函数为sigmoid,输入为,则:
第一层的前向运算为,经过激活函数后
第二层的前向运算为,经过激活函数后
第三层的前向运算为,经过激活函数后
第四层的前向运算为,经过激活函数后
接着我们开始梯度反向求导:根据链式法则
当 ,,梯度消失
当 ,,梯度爆炸
我们神经网络中的初始权值也一般是小于 1 的数,所以相当于公式中是多个小于 1 的数在不断的相乘,导致乘积和还很小。这只是有两层的时候,如果层数不断增多,乘积和会越来越趋近于 0,以至于当层数过多的时候,最底层的梯度会趋近于 0,无法进行更新,并且 Sigmoid 函数也会因为初始权值过小而趋近于 0,导致斜率趋近于 0,也导致了无法更新。
除了这个情况以外,还有一个情况会产生梯度消失的问题,即当我们的权重设置的过大时候,较高的层的激活函数会产生饱和现象,如果利用 Sigmoid 函数可能会无限趋近于 1,这个时候斜率接近 0,最终计算的梯度一样也会接近 0, 最终导致无法更新。
3. 除了BN,改激活函数还有什么解决梯度消失的么
预训练加微调
梯度剪切
使用合理的参数初始化方案,如He初始化
使用 ReLU、LReLU、ELU、maxout 等激活函数
sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。
使用批规范化BN
残差结构
4. 加了BN的sigmond还会不会梯度消失
有可能。
我们假设一种极端的情况。初始权重全为0。
5. anchor free 和anchor based之间优缺点
anchor free
优点
更大更灵活的解空间、摆脱了使用anchor而带来计算量从而让检测和分割都进一步走向实时高精度
缺点
正负样本极端不平衡
语义模糊性(两个目标中心点重叠)
检测结果不稳定,需要设计更多的方法来进行re-weight
anchor based
优点
使用anchor机制产生密集的anchor box,使得网络可直接在此基础上进行目标分类及边界框坐标回归。加入先验,训练稳定
密集的anchor box可有效提高网络目标召回能力,对于小目标检测来说提升非常明显。
缺点
anchor机制中,需要设定的超参:尺度(scale)和长宽比( aspect ratio) 是比较难设计的。这需要较强的先验知识。
冗余框非常之多:一张图像内的目标毕竟是有限的,基于每个anchor设定大量anchor box会产生大量的easy-sample,即完全不包含目标的背景框。这会造成正负样本严重不平衡问题
6. transformer的self.attention的用处
Self-Attention是Transformer最核心的内容,其核心内容是为输入向量的每个单词学习一个权重
在self-attention中,每个单词有3个不同的向量,它们分别是Query向量( Q ),Key向量( K)和Value向量( V ),长度均是64。它们是通过3个不同的权值矩阵由嵌入向量 X 乘以三个不同的权值矩阵 WQ,WK ,WV 得到,其中三个矩阵的尺寸也是相同的。均是 512*64;Q,K,V这些向量的概念是很抽象,但是它确实有助于计算注意力。相较于RNNs,transformer具有更好的并行性。
7. attention里面softmax之前要除以根号D,为什么
作者在论文中的解释是点积后的结果大小是跟维度成正比的,所以经过softmax以后,梯度就会变很小,除以 dk 后可以让 attention 的权重分布方差为 1,否则会由于某个输入太大的话就会使得权重太接近于1(softmax 正向接近 1 的部分),梯度很小,造成参数更新困难。
以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo