【会议模型】Label-Adaptive Mixup

LEARNING ROBUST SELF-ATTENTION FEATURES FOR SPEECH EMOTION RECOGNITION WITH LABEL-ADAPTIVE MIXUP

本篇来自ICASSP2023 arxiv.org/pdf/2305.06273v1.pdf


Reader said

数据增强是个不错的选择,和最近的prompt的有着相同的思路。

= = 到底多少的UA、WA算SOTA…


Absract & Conclusion

我们提出了一种结合标签自适应混淆的中心LOSS的基于自注意的方法。

We propose a self-attention based method with combined use of label-adaptive mixup and center loss.By adapting label probabilities in mixup and fitting center loss to the mixup training scheme…

  1. 自适应标签概率 adapting label probabilities

    简单有效的标签自适应混合方法,大大提高了系统的性能。

    …we propose a simple and effective label-adaptive mixup method, which boosts the performance drastically.

  2. 和拟合中心损失 fitting center loss

    使用混合和中心损失来训练一个SER模型,这迫使模型学习更鲁棒的特征。

    …train a SER model with combined use of mixup and center loss, which forces the model to learn more robust features.

  3. 本篇方法达到SOTA

    Comparing with the state-of-the-art works, our proposed method has achieved a superior performance on IEMOCAP speech dataset.


Introduction

为了进一步提高SER模型的泛化能力,数据增强 (data augmentation techniques) 技术得到了广泛的应用,其中Mixup策略被证明是一种简单有效的方法,通过对训练数据及其标签进行混合来提高SER模型的泛化能力。

知乎详解&站内详解

Mixup的基本思想是,对于任意两组输入标签对 X i , y i \mathbf {X}_i, \mathbf {y}_i Xi,yi以及 X j , y j \mathbf {X}_j,\mathbf {y}_j Xj,yj ,令 λ \lambda λ 为一个服从 β \beta β分布的随机数,然后构造新的 输入-标签 对如下:

{ X ~ ( λ ) = λ ∗ X i + ( 1 − λ ) X j y ~ ( λ ) = λ y i + ( 1 − λ ) ∗ y j (1) \begin {cases}\tilde {\mathbf {X}} (\lambda) = \lambda*\mathbf {X}_i+ (1-\lambda)\mathbf {X}_j\\\tilde {\mathbf {y}} (\lambda)= \lambda\mathbf {y}_i+ (1-\lambda)*\mathbf {y}_j \end {cases}\tag {1} {X~(λ)=λXi+(1λ)Xjy~(λ)=λyi+(1λ)yj(1)

然后用这些新的输入-标签对来训练模型,计算损失函数。

例如目标检测任务,除了对图像进行Mixup,还需要对标签进行Mixup,就是将两张图像中的所有目标框和类别标签都合并到一起,然后按照 λ \lambda λ 的权重给每个目标框和类别标签赋予一个混合系数。这样做可以让模型学习到不同类别之间的边界和特征,增加模型的判别能力和泛化能力。

中心 LOSS(center loss)使同一类别的特征更接近其类别中心,而识别 LOSS(recognition loss)使特征从不同的情感类别中分离出来。

Center lossRecognition loss是两种用于深度学习模型的损失函数,主要用于人脸识别和图像检索等任务。

本片工作如下:

  1. 我们改进了一个基于Hubert的自我注意模型,以提取情绪特征
  2. 提出了一种标签自适应的混合方法
  3. 这是首次尝试将中心 LOSS和混合在一起
  4. 本文提出的方法在IEMOCAP语音数据集上,以Leave-One-SessionOut方式,取得75.37%的WA和76.04%的UA。

Leave-One-SessionOut:一种特殊的k折交叉验证,主要用于评估机器学习模型的性能。

对于一个包含n个样本的数据集,每次将其中一个样本作为测试集,剩下的n-1个样本作为训练集,然后用训练集训练模型,并用测试集评估模型的误差。这个过程重复n次,每次留出不同的样本作为测试集,最后将n次的误差取平均作为模型的性能评估。

优点是它可以减少测试误差的偏差和方差,因为它使用了所有的数据作为训练集和测试集,并且没有随机分割数据。它计算量很大,因为它需要训练和测试n次模型,而且每次训练集都很大。


Methodology

在这里插入图片描述

  1. 标签自适应混合(Label-Adaptive Mixup)

在这里插入图片描述

在这里 x i j x_{ij} xij指的是语音信号, y i j y_{ij} yij是标签信号,语音数据根据其文本内容的长度可变,根据算法叠加融合就可以。但其标签是概率为1的情感类别, 将标签视为与等式2所示的语音片段相同是不太准确的。

在这里插入图片描述

其中, y i j y_{ij} yij是所有情感类别总和为1,而 l i l_i li是第i个样本的长度。

λ λ λ赋值为常数0.5时,情感类别的概率取决于输入语音数据对的长度(两只语音数据混合时谁的时长更长,谁的标签在1中占比更大)

  1. 情感特征提取(Emotional Feature Extraction)

其实就是Hubert,但是改动了那24个自注意力模块,减少了多头自注意模块和前馈模块与注意力块之间的dropout。

在这里插入图片描述

将语音数据 x x x X X X输入到情感特征提取器中,得到高级情感特征表示 F e F_e Fe,根据语音信号输入长度的不同得到不同具有可变长度的特征向量序列。

然后不使用平均池化,而是简单地将第一个特征向量 F e 0 F^0_e Fe0作为整个序列的情感特征表示。

  1. Recognition Loss(识别损失)

在这里插入图片描述
log-softmax Kullback-Leibler(KL)散度损失是一种常用于多分类问题的损失函数。是一种度量两个概率分布之间差异的指标,也被称为相对熵(Relative Entropy)。因为进行了混合标签,所以进行常见的交叉熵不适用这里的混合标签。

  1. Center Loss(中心损失)

在这里插入图片描述

Center Loss最早用于人脸识别, N N N是一个小批处理(minibatch)中的训练样本数, μ a r g m a x ( y i j ) μ_{argmax(y_{ij})} μargmax(yij)是情感类别 a r g m a x ( y i j ) argmax(y_{ij}) argmax(yij)的特征质心。 Y i j Y_{ij} Yij是情感类别 E E E上的概率标签,选择概率最高的情感类别作为中心丢失的基值。

  1. 最终的LOSS
    L = L r + λ L c \mathcal{L}=\mathcal{L}_r+\lambda\mathcal{L}_c L=Lr+λLc

λ \lambda λ是平衡两种LOSS的超参数,与标签mixup中的 λ \lambda λ不同


Experience

  1. 数据集使用IEMOCAP ,并将“兴奋”归入“高兴”类别,使用来自“愤怒”、“高兴”、“悲伤”和“中性”四个类别的语音数据,使用Leve-One-Session-Out(LOSO)五重交叉验证,选择加权精度(WA)和未加权精度(UA)作为评价指标。

  2. 配置细则与超参数

名称配置备注
优化器Adam优化策略:在每个epoch中对两个loss乘以0.8,直到第20个epoch
LR in Recognition Loss0.0001初始值
LR in Center Loss0.001初始值
训练设备RTX3090-
Pytorch1.12-
  1. Hubert的改动

在这里插入图片描述

首先减少自注意力模块的数量(24 → 22),当使用22个自注意力模块达到了最佳性能

在这里插入图片描述

Dropout 设置为0.4性能最好,这里是指多头注意力层和Layer Norm层之间的dropout值。

  1. 消融实验

在这里插入图片描述

这里我们比较了两种模式:

  • 自适应平均池下采样(down-sampling with adaptive average pooling)即 A v g ( F e ) Avg(F_e) Avg(Fe),或简单地选择 F e F_e Fe的第一个向量,即 F e 0 F^0_e Fe0
  • 简单地选择 F e F_e Fe的第一个向量,即 F e 0 F^0_e Fe0

此外评估我们提出的标签自适应混合方法的有效性,我们使用传统的混合方法进行比较。 将一些常用的数据增强技术与MIXUP一起进行了以下实验:高斯噪声、削波失真、增益、增益转换、极性反转、TANH失真、时间掩模、时间拉伸和基音偏移。

通过随机组合这些常用的数据增强技术和使用传统的混合方法,SER模型对WA和UA分别达到70.83%和74.06%,如表2第3行所示。

传统的混合策略相比,我们提出的标签自适应混合方法在WA和UA上分别提高了约3%和1%的性能,如表2的第4行所示。

λ λ λ是一个在中心损失识别损失之间进行权衡的超参数。 从表2的第5行到第7行可以看出,λ=0.002时获得最佳性能。

  1. 与其他常见SOTA方法的比较

在这里插入图片描述


Reader’s supplement.

  • 什么是k折交叉验证(Leave-One-SessionOut)?

将数据集分成k个互斥的子集,其中一个子集被用作测试集,其余k-1个子集被用作训练集,重复k次,每次使用一个不同的子集作为测试集,最终将k次得分的平均值作为模型的性能指标。

from sklearn.model_selection import KFold
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

# 生成一个二元分类数据集
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2)

# 创建一个逻辑回归模型
model = LogisticRegression()

# 定义k折交叉验证
cv = KFold(n_splits=5, shuffle=True, random_state=42)

# 计算k折交叉验证得分
scores = []
for train_index, test_index in cv.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    model.fit(X_train, y_train)
    score = model.score(X_test, y_test)
    scores.append(score)

# 输出平均得分和标准差
print("Accuracy: %0.2f (+/- %0.2f)" % (np.mean(scores), np.std(scores) * 2))

在这个例子中,我们使用了KFold对象来定义了5次交叉验证,并使用LogisticRegression对象来创建一个逻辑回归模型。在每次交叉验证中,我们将数据集分成训练集和测试集,然后训练模型并计算测试集得分。最后,我们计算了所有交叉验证得分的平均值和标准差,并输出了结果。

  • 多头注意力模块

    它通过将输入数据分成多个头(head)并对每个头进行独立的注意力计算,最终将它们合并起来生成最终的输出。这种机制的优点在于它可以同时利用输入数据的不同方面来生成输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值