如何保持分类模型具有类内聚敛、类间分离的特性?

sofmax loss

L_s=-\sum\limits_{i=1}^m log\frac{e^{W_{y_i}^T x_i + b_{y_i}}}{\sum\limits_{j=1}^n e^{W_j^T x_i + b_j}}
softmax loss是最常用的组件之一,但是缺乏鼓励特征更具辨识性,这种广泛使用的损失对模型的优化效果是有限的。

Modify-softmax

L=-log(\frac{e^{\parallel W_{y_i} \parallel \parallel x_i \parallel cos(\theta_{y_i}) + b_{y_i}}}{\sum\limits_{j} e^{\parallel W_j \parallel \parallel x_i \parallel cos(\theta_j) + b_{i}}})
我们将权值归一化,即令\parallel W \parallel=1 ,并使偏置为0,则损失函数变为:
L_{modified}=\frac{1}{N}\sum\limits_i -log(\frac{e^{\parallel x_i \parallel cos(\theta_{y_i,i})}}{\sum\limits_j e^{\parallel x_i \parallel cos(\theta_{j,i})}})
尽管Modify-softmax函数可以通过角度边界学习特征,但是这些特征仍然不具有很强的辨识性。

Center loss

最小化类内距离,并且保持类间距离是提升模型分类精度的关键。
L_c=\frac{1}{2}\sum\limits_{i=1}^{m}\parallel x_i - c_{y_i} \parallel_2^2

c_{y_i}代表类别y_i的特征中心,它会随着特征的变化而改变。

首先,采用mini-batch更新特征中心,而不是整个训练数据集。每一轮迭代,计算每个类特征的平均;其次,为了避免部分错误样本导致训练过程出现较大的抖动,本次采用\alpha控制特征中心的更新。

因此最终的损失函数为:
L=L_s + \lambda L_c=-\sum\limits_{i=1}^m log\frac{e^{W_{y_i}^T x_i + b_{y_i}}}{\sum\limits_{j=1}^n e^{W_j^T x_i + b_j}} + \frac{\lambda}{2}\sum\limits_{i=1}^m \parallel x_i - c_{y_i} \parallel_2^2

Contrastive-center loss

我们建模的时候,希望模型特征具有类内聚集、类间分隔的特点,而中心损失只考虑了类内聚集,未能考虑类间分隔。针对上面的问题,本文考虑:1)训练样本到类别中心的距离最短;2)训练样本与其非对应类别中心的距离之和最大。
L_{ct-c}=\frac{1}{2}\sum\limits_{i=1}^m \frac{\parallel x_i - c_{y_i} \parallel_2^2}{(\sum\limits_{j=1,j\ne y_i}^k \parallel x_i - c_j \parallel_2^2) + \delta}

k代表类别个数; \delta 是一个常量,用于防止分母为0,其默认为1。

L-softmax

为了实现类内聚集、类间分隔,一个直观的想法就是将样本与参数之间的分离特性转变为幅度和角度
W_c x = \parallel W_c \parallel_2 \parallel x \parallel_2 cos(\theta_c))
在softmax损失函数中,因为softmax损失采用cosine距离作为分类预测的份,因此预测标签由每个类的角度相似性决定。因此,本文的目的是根据角相似性将SoftMax损失归纳为更一般的大范围SoftMax(L-SoftMax)损失,从而导致所学特性之间可能存在更大的角可分离性。
这里通过将一个预设常数m乘以样本和真实类之间的角度来实现的
L_{L-Softmax}=-log(\frac{e^{\parallel W_{y_i} \parallel \parallel x_i \parallel \psi(\alpha \theta_{y_i})}}{e^{\parallel W_{y_i} \parallel \parallel x_i \parallel \psi(\alpha \theta_{y_i})} + \sum\limits_{j\ne y_i} ^ K e^{\parallel W_j \parallel \parallel x_i \parallel cos(\theta_j)}})
其中
\psi(\theta)=\{\begin{array}{l} cos(m\theta), 0 \le \theta \le \frac{\pi}{m}\\D(\theta), \frac{\pi}{m}\lt \theta \le \pi \end{array}\}
m越大,分类边界越大,目标函数也越难训练。
该方式具有如下3个特点:

  • 它鼓励类与类之间有角度的决策界限,生成更具辨别性的特性。
  • 它通过定义一个更困难的学习目标,对过拟合问题提出不同的观点,一定程度上避免了过拟合。
  • L-SoftMax不仅有利于分类问题,也有利于验证问题,即理想情况下学习到特性的最小类间距离应大于最大类内距离。

A-softmax

作者提出了一种通过角度量化不同类之间分隔距离的方法,并且由一项额外的约束项显式的加强不同类的角度差异。
L_{A-Softmax}=-log(\frac{e^{\parallel x_i \parallel cos(\alpha \theta_{y_i})}}{e^{ \parallel x_i \parallel cos(\alpha \theta_{y_i})} + \sum\limits_{j\ne y_i} ^ K e^{ \parallel x_i \parallel cos(\theta_j)}})
模型通过angular softmax损失和归一化损失进行联合监督,因此全局的损失函数为
L(\theta, W)=L_s(\theta, W) + \lambda L_r(W)
其中,angular softmax损失促使采样表征x_i向聚簇中心W_{y_i}聚集
L_s(\theta, W)=\frac{1}{N}\sum\limits_{i=1}^N -log\frac{{e^{\parallel x_i \parallel_2 cos(\phi_{i,y_i})}}}{\sum\limits_j {e^{\parallel x_i \parallel_2 cos(\phi_i,j)}}}

而,归一化项促使不同的聚簇中心W_jW_i尽量分离
L_r(W)=\frac{1}{C}\sum\limits_i \max\limits_{j\ne i}\frac{W_i W_j}{\parallel W_i \parallel . \parallel W_j \parallel}

AM-softmax

作者针对softmax loss提出了一种新的加性角度的margin,它具有直观的吸引力并且更好的解释性。
作者对softmax函数中\psi定义为加性margin
\psi(\theta)=cos\theta -m
对比A-softmax和L-softmax,该方式更简单直接。假定
x=cos\theta_{y_i}=\frac{W_{y_i}^T f_i}{\parallel W_{y_i} \parallel \parallel f_i \parallel }
因此模型前向传播只需要计算\Phi(x)=x-m,后向梯度计算\phi^{\prime}(x)=1

因此最终的损失函数为
L_{AMS}=-\frac{1}{n}\sum\limits_{i=1}^n log \frac{e^{s.(cos\theta_{y_i}-m)}}{e^{s.(cos\theta_{y_i}-m)} + \sum\limits_{j=1,y\ne y_i}^c e^{s.cos\theta_j}}=-\frac{1}{n}\sum\limits_{i=1}^n log \frac{e^{s.(W_{y_i}^T f_i - m)}}{e^{s.(W_{y_i}^T f_i -m) } + \sum\limits_{j=1,j \ne y_i}^c e^{s W_j^T f_i}}

SM-softmax

SM-softmax通过一个非负实数m调整softmax前向计算,而不改变后向计算。因此,它不仅可以调整所需的连续soft margin,而且很容易通过典型的随机梯度下降进行优化。由于A-softmax中\alpha是正整数,因此该函数不能遍历所有的角度。为了处理这样的问题,作者引入soft margin,并定义为
W_1^T x \ge W_1^T x - m \gt W_2^T x
其中,m是非负实数。
L_i=-log(\frac{e^{W_{y_i}^T x_i-m}}{e^{W_{y_i}^T x_i -m} + \sum\limits_{j\ne y_i} e^{W_j^T x_i}})

该函数的优点:

  • 首先,m可以遍历所有的期望margin,包括硬间隔\alpha
  • 其次,SM-softmax损失实现起来比较容易。

Triplet Loss

Triplet loss训练的目标是L=max(d(a,p)-d(a,n) + margin, 0)

  • 同一个标签下,不同样本的embedding空间相互靠近
  • 不同标签下,不同样本的embedding空间相互分离

根据定义可以将triplet loss分为三类

  • Easy triplets
    L=0,即d(a,p)+margin < d(a,n),这种情况不需要优化,天然<anchor, positive>的距离小于<anchor, negative>

  • Hard triplets
    positive \rightarrowanchor距离大于negative \rightarrow anchor,即d(a,n) < d(a, p)

  • Semi-hard triplets
    d(a,p) < d(a, n) < d(a,p) + margin,即<anchor, negative>的距离很近,但是有一个margin。

假设输入样本量B=PK,其中P代表类别个数,K代表类别下样本个数。

  • Batch All
    L_{BA}(\theta;X)=\overbrace{\sum\limits_{i=1}^P\sum\limits_{a=1}^K}^{all-anchors}\overbrace{\sum\limits_{p=1,p \ne a}^K}^{all-pos}\overbrace{\sum\limits_{j=1,j \ne i}^P \sum\limits_{n=1}^K}^{all-negatives}[m+d_{j,a,n}^{i,a,p}]_+
    d_{j,a,n}^{i,a,p}=D(f_{\theta}(x_a^i),f_{\theta}(x_p^i))-D(f_{\theta}(x_a^i), f_{\theta}(x_n^j))

    选择所有有效的triplets,并对hard 和semi-hard triplets样本损失取平均。

    • 一个重要的点就是不考虑相对较为容易的triplets样本(这些样本的损失为0),对他们取平均会使得损失非常小。
    • 这可以生成PK(K−1)(PK−K)个triplets样本
      • PK代表anchor数量
      • K-1代表每个anchor包含的positive样本
      • PK−K代表可能的negative样本
  • Batch Hard
    L_{BH}(\theta;X)=\overbrace{\sum\limits_{i=1}^P \sum\limits_{a=1}^K}^{all-anchors}[m + \overbrace{\max\limits_{p=1...K}D(f_{\theta}(x_a^i), f_{\theta}(x_p^i))}^{hardest-positive}-\underbrace{\min\limits_{j=1...P,n=1...K,j\ne i}D(f_{\theta}(x_a^i),f_{\theta}(x_n^j))}_{hardest-negative}]_+

    在一个batch中,针对每一个anchor,选择最难的positive(距离最大的d(a,p))和最难的negative样本。

    • 从样本中,我们可以生成PK个triplets样本。
    • 选定的triplets样本是batch中最难的。

Pairwise Constrain Loss

S_{i,j}(\tau - D_{\phi}^2(x_i, x_j)) \gt \gamma
其中,0<\gamma<\tau。上式可以转化为
\frac{S_{i,j}+1}{2}max\{0, \gamma-\tau+D_{\phi}^2(x_i,x_j)\} + \frac{1-S_{i,j}}{2}max\{0, \gamma + \tau - D_{\phi}^2(x_i, x_j)\}
在原始的softmax特征空间中,相同类别样本的距离可能大于不同类别的距离。在Pairwise约束loss中,相似样本Pair的距离小于间隔减去常量\tau-\gamma。不相似的pair距离大于\tau+\gamma
先前的contrastive loss,约束类内距离为0、类间距离大于一个常量。它也可以看作是PCL的一个特例
\frac{S_{i,j}+1}{2}max\{0, D_{\phi}^2(x_i,x_j)\} + \frac{1-S_{i,j}}{2}max\{0, m - D_{\phi}^2(x_i, x_j)\}
但是相似pair的距离逼近0,这样的假设太强可能不太适合真实环境。
最终的PCL损失函数定义为
arg \min\limits_{\phi} L_{PC}=L_{pair}+L_{regularization}=\frac{1}{2}\sum\limits_{i,j=1}^M g(\gamma - S_{i,j}(\tau - D_{\phi}^2(x_i, x_j))) + \frac{\gamma}{2M}\sum\limits_{l=1}^N (\parallel W^{(l)} \parallel _F ^2)
其中
L_{pair}=\frac{1}{2}\sum\limits_{i,j=1}^M g(\gamma - S_{i,j}(\tau - D_{\phi}^2(x_i, x_j)))
其中,M代表pair的数量,而g(x)是一个更通用的logistic损失函数。
g(x)=\frac{1}{\beta}log(1 + exp(\beta x))

G-softmax

single-label classification

p_i=\frac{exp(\overbrace{x_i}^{activation} + \overbrace{\lambda \Phi(x_i;\mu_i,\delta_i)}^{distribution term})}{\sum\limits_{j=1}exp(x_j + \lambda \Phi(x_j;\mu_j,\delta_j))}

其中,\lambda是控制CDF宽度的参数。如果\lambda=0则该函数恢复为原始的softmax函数。 \Phi 是高斯分布的CDF,
\Phi(x_i;\mu_i,\delta_i)=\frac{1}{2}erf(\frac{-\sqrt{2}(\mu_i-x_i)}{2\delta_i}) +\frac{1}{2}
其中,
erf(z)=\frac{1}{\sqrt{\pi}}\int_{-z}^z e^{-t^2}dt
与原始的softmax不同,G-softmax考虑了特征的分布。这样处理有两个好处,1)它可以逼近各种各样的分布,例如:训练样本上的每个类。而softmax函数仅从当前观察样本中学习;2)它可以直接量化类内紧凑性和类间可分性。

multi-label classification

l=-\sum\limits_{i=1}^m y_i log(\frac{1}{1+exp(-x_i)}) + (1 - y_i) log(1 - \frac{1}{1 + exp(-x_i)})
与仅仅采用x_i作为输入不同,考虑x_i^+x_i^-作为模型输入。其中,x_i^+代表正向特征,用于计算特征属于类别i的概率。x_i^-代表负向的特征,用于计算特征属于非i类的概率。

l=-\sum\limits_{i=1}^m y_i log(\frac{1}{1 + exp(-x_i^+)})+(1-y_i)log(\frac{1}{1+exp(-x_i^-)})
因此,G-softmax 损失函数可以定义为

l=-\sum\limits_{i=1}^m y_i log(\frac{1}{1+exp(-x_i^+ - \lambda \Phi(x_i^+;\mu_i^+,\delta_i^+))}) + (1-y_i)log(1-\frac{1}{1+exp(-x_i^- - \lambda\Phi(x_i^-;\mu_i^-,\delta_i^-))})

Virtual Softmax

作者提出Virtual Softmax,通过添加一个虚拟的负类来加强特征的表征能力,从而学习到的特征具有类内紧凑、类间分类的特点。添加虚拟负类源于自然和直观的动机,带来了比softmax更强的约束效果。该方法能够在训练过程中,自动迭代更新,并且不会带来计算负担和内存消耗。

针对监督算法,添加额外的类别是一个大胆且合理的想法,用于加强模型特征的判别性能。
L_i=-log\frac{e^{W_{y_i}^T X_i}}{\sum\limits_{j=1}^{C+K} e^{W_j^T X_i}} = -log\frac{e^{\parallel W_{y_i} \parallel \parallel X_i \parallel cos \theta_{y_i}}}{\sum\limits_{j=1}^{C+K} e^{\parallel W_j \parallel \parallel X_i \parallel cos \theta_j}}
理论上,K越大,特征特性越好。然而实际应用中,训练的样本是有限的,总的类别数量是不变的,因此用真实存在的附加类来扩大角度是困难的。一个最麻烦的问题是,由于训练前类anchor向量W的随机初始化和优化过程中参数更新的动态性,使得我们不能在原来相邻的类之间准确地插入额外的类。
为了解决上面的问题,作者插入单个动态负类到原始的softmax函数中。该负类由当前训练样本x_i构造,因为没有真实的数据属于这个虚拟的负类,因此它仅仅作为负类存在。因此最终的Virtual Softmax定义为
L=\frac{1}{N}\sum\limits_{i=1}^N L_i=-\frac{1}{N}\sum\limits_{i=1}^N log\frac{e^{W_{y_i}^T X_i}}{\sum\limits_{j=1}^C e^{W_j^T X_i} + e^{W_{virt}^T X_i}}
其中
W_{virt}=\frac{\parallel W_{y_i} \parallel X_i}{\parallel X_i \parallel}
模型的目标是新增虚拟类别之后,当前特征对应的类仍然是最大概率的类别
W_{y_i}^T X_i \ge max\underbrace{(W_1^T X_i...W_C^T X_i,W_{virt}^T X_i)}

参考文献

  • A Discriminative Feature Learning Approach for Deep Face Recognition
  • RegularFace: Deep Face Recognition via Exclusive Regularization
  • Contrastive-Center Loss For Deep Neural Networks
  • SphereFace: Deep Hypersphere Embedding for Face Recognition
  • Large-Margin Softmax Loss for Convolutional Neural Networks
  • Soft-Margin Softmax for Deep Classification
  • Correcting the Triplet Selection Bias for Triplet Loss
  • Co-Representation Learning For Classification and Novel Class Detection via Deep Networks
  • Robust Classification with Convolutional Prototype Learning
  • Partially Supervised Graph Embedding for Positive Unlabelled Feature Selection
  • G-softmax: Improving Intra-class Compactness and Inter-class Separability of Features
  • Virtual Class Enhanced Discriminative Embedding Learning
  • FaceNet: A Unified Embedding for Face Recognition and Clustering
  • In Defense of the Triplet Loss for Person Re-Identification
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容