@devilloser
2018-09-10T06:27:42.000000Z
字数 1413
阅读 2354
deeplearning
在文章中探究one-shot 人脸识别,目标建立一个大规模的人脸识别模型可以识别大量的人。研究表明对于训练集中只有一张图片的class泛化能力很差,原因是数据的不平衡,对最后分类层进行多分类的逻辑回归效果不好。为了解决这个问题,提出了一个新的监督叫做underrepresented-classes promotion loss,可以将underrepresent class的权重与正常的class的权重对齐。UPloss可以在保证正常class的识别精度,同时提高underrepresented class的识别精度。
文章的一个贡献是建立了一个大规模,几乎无噪的训练集。训练集分为base set和novel set,base set为正常class,novel set为underrepresented class。
不包含LFW中的名人,所以可以直接在LFW数据集上评估性能。
1000人
train:1张
val:20张
分为两个阶段:
第一个阶段为表示学习,在这个阶段,用base set的images训练一个表示模型
第二个阶段为one-shot learning with underrepresented-classes promotion。在这个阶段,训练多分类来识别base set 和novel set的人。设计UP方法提高在novel set的表现
用base set中的图片训练20000-class的分类器,每个人大概50-100张图片,base set中的错误标签少于1%,每个人保留5张图片作为测试
在one-shot learning阶段,训练21000-class分类器,用base set和novel set中的数据,1000人在novel set中,一人一张图片作为训练集。
softmax:
cross entropy:
∈{0,1}当属于k类为1
计算方法
循环
for i in xrange(num_train):score=X[i].dot(W)score-=np.max(score)correct_score=score[y[i]]exp_sum=np.sum(np.exp(score))loss+=np.log(exp_sum)-correct_scoredW[:,y[i]]-=X[i]for j in xrange(num_class):dW[:,j]+=(np.exp(score[j])/exp_sum)*X[i]loss/=num_trainloss+=0.5*reg*np.sum(W*W)dW/=num_traindW+=reg*W
可以看到如果第k类样本很少,dw[:,k]基本为0

在二分类的决策中:
在二维空间可以认为∠为k类的特征空间大小
在这个阶段,提出额一个方法类提升underrepresented class,设计了一个增加特征空间中该类分区体积的方法。
为novel class
为base class
