目录
项目问题
Reid
介绍基于triplet的reference loss (proposed)
没讲清楚
问re-id中怎么解决计算feature空间占用过多的问题
我先说输入是p*k张图片,提取成feature后转化成distance的数组和label数组进行后续处理。(问题不是这个意思)
或者很多选好的triplet对训练没有效果的,已满足margin的情况。
batch hard, 在mini-batch中选择最近和最远的正负样本组成triplet进行训练。
后续又了解了一下,在大数据库上比如MSMT数据集上,进行测试的时候,计算距离矩阵的时候需要计算query(10000x2048)和gallery(80000x2048)两个矩阵的矩阵乘法,很容易out of memory。
解决方法:把gallery分成4块,4个(20000x2048)。然后分别进行矩阵乘法计算距离矩阵。最后把计算得到的距离矩阵拼在一起。
为什么不在整个数据库上查找图片作为triplet
(假设运算速度非常快)
在整个数据集上找最困难的样本容易受到outlier(特殊样本、标签错误样本)的影响。不容易训练。
问还有什么项目
我说最近开始做步态识别。
商用上不太可能
监测(detection)
检测问题中一般有两个loss,一个分类loss和一个提取框的loss,提取框用的loss是什么
我先表明没做过神经网络的detection问题。
1、然后提了一种用proposal划窗的方法,但是已经过时了。
2、提出计算IoU作为loss,但是不好计算,有点复杂
3、输出4个数据,坐标和长宽,用smooth L1 loss
为什么不用L2 loss?
平方项受oulier影响大
L1梯度最大为1,不会带来过于大的不利影响
为什么用smooth?
[-1,1]之间是1/2 x^2.
小于-1和大于1的部分 |x|
解决0点的不可导问题
建议看一下faster rcnn的paper
深度学习基础知识
解释momentum(动量)
1、我先说momentum在optimizer里设置,可以跳出局部最优的位置,找出更好的局部最优。
面试官说这是一个次要的效果。
2、我说可以加速训练,如果下一步和上一步的梯度方向?优化方向?一致的话,就大步的优化;如果不一致的话,优化步幅会减小。使优化更快,优化方向更准确。
面试官说基本正确了,举了一个东南西北的例子,因为每次只用小batch来训练进行优化,不同batch的差别可能很大,优化的方向可能很乱。如果每次优化会加上上一步的方向乘0.9,因为训练次数较多后,优化的大方向应该是对的,让大方向来指导这次的优化方向。
为什么会出现过拟合现象
1、我答训练数据较少,模型太复杂,使训练集上表现很好,测试集上准确率反而下降。
面试官说是这种现象,那为什么有这个问题呢。
因为采集到的数据有noise,如果没有noise的数据用来训练(当然这是没法实现的),即使训练样本数量较少,拟合出来的线也不会过拟合。泛性较差。
怎么解决过拟合问题
1、做数据扩充
2、降低模型复杂度
当然现实中难操作
3、对模型的参数加正则化项,限制模型参数的大小
L1、或L2
我采用的是L2 normalization,用L1会没办法训练。(为什么?)
算法
快排的时间复杂度
平均:nlog(n)
最慢:n^2
2^24等于10的几次方
1、我先说2^8 = 256,就是256的三次方。
2、然后说2^3 = 8, 10大概是2的3.2次方。24除以3.2是7.5, 大概是10的7次方
3、面试官说蛮好的,答案也对了,用1024想更方便,2^10 = 1024,2的10次方约为10的3次方,24次方大概是3乘2.4约为7次方。
查找一个整数数组里相加等于s的所有数对
1、先说了一个时间复杂度为 n^2 的解法。两次遍历,在数组中查找 s-a。
2、用哈希表(python中的字典),用s-a的值作为字典的key,查找的时间复杂度是O(1)。
生成哈希表是O(n)。遍历一次的时间复杂度也是O(n)。总体的时间复杂度是两个的加和,还是O(n)。