TEASEL: A transformer-based speech-prefixed language model

文章目录

TEASEL:一种基于Transformer的语音前缀语言模型

总结:论文提出了一种基于 Transformer 的语音前缀语言模型 TEASEL,实际本质是用了一个 RoBERTa 模型作为框架,然后加入了一个 LAA 模块(LAA模块就是将音频特征编码为 RoBERTa 编码器的前缀 token)。在训练的时候主要是训练 LAA 模块的参数,当 LAA 模块的参数收敛后,在CMU-MOSI数据集上面微调整个模型。

该论文在2021年就挂在arXiv上面了,但是一直没有发表,看了这篇论文之后,终于知道为什么没有发表了,论文里面有一些错误的地方,而且对自己方法的介绍稀里糊涂的,一些词用的很偏僻,很难以理解。但是最奇怪的是,作者没有提供代码,GitHub上面有人根据算法的思想实现了这个模型,并且在 MSA 任务上的一些指标竟然是 SOTA 的结果。所以本人参考代码,以及论文的思想,终于把这篇论文挖掘出来了。如果大家有不同的看法,欢迎留言 😃

文章信息

作者:Mehdi Arjmand,Mohammad Javad Dousti

单位:University of Tehran(德黑兰大学-伊朗)

会议/期刊:arXiv

题目:TEASEL: A transformer-based speech-prefixed language model

年份:2021

研究目的

解决在多模态语言学习(包括多模态情感分析与多模态情感识别)中,由于数据不足,难以训练一个关于多模态语言学习的自监督Transformer模型的问题。(换句话说,作者想要在不训练完整的Transformer模型的情况下,训练一个关于多模态语言学习的自监督 Transformer模型。)

研究内容

提出了一种基于Transformer的语音前缀语言模型TEASEL。与传统的语言模型相比,增加了语音模态作为动态前缀。该模型可以达到与花费较长时间重新训练Transformer相同的性能水平,而无需训练完整的Transformer模型。

研究方法

1.总体框图

该模型利用传统的预训练语言模型(指的就是RoBERTa )作为跨模态注意力模块。从根本上来说,TEASEL 模型专注于将语音特征表示为RoBERTa的前缀(参考图中的 C A C_A CA)。

训练包含两个阶段:预训练和微调。

  • 在预训练阶段,使用 LAA 模块学习语音模态的表征 ,以便在 RoBERTa 中插入语音模态,训练步骤相对较少(总共 8000 步)。(预训练阶段做的事情,就是对 LAA 模块进行训练
  • 在微调阶段,固定了 LAA 模块的大部分内容,并在 CMU-MOSI 数据集上微调了 RoBERTa 模型,将其作为多模态情感分析下游任务的跨模态 Transformer。(微调阶段做的事情,就是对 RoBERTa 模型进行了调参

2.BERT-style Language Models(基准模型)

将 RoBERTa 模型作为 BERT-style Language Models(选择RoBERTa作为基准模型是因为RoBERTa是专门针对 [MaskedLM 任务](#MaskedLM 任务)训练的)。

RoBERTa tokenizer标记器将句子 L 分解为:
{ [ C L S ] , l 1 , l 2 , ... , l T L , [ S E P ] } = t o k e n i z e r ( L ) \{[CLS],l_{1},l_{2},\ldots,l_{T_{\mathbf{L}}},[SEP]\}=tokenizer(L) {[CLS],l1,l2,...,lTL,[SEP]}=tokenizer(L)

符号 含义
l i ∈ R d l_i \in R_d li∈Rd 每个token
T L T_L TL 文本模态的时间步数(序列的长度)
[CLS] 代表序列的开始,只关注[CLS]对应的输出
[SEP] 代表分割
[MASK] 代表屏蔽的token

3.Speech Module

3.1Speech Temporal Encoder

选择 wav2vec 预先训练好的固定参数的 CNN 作为音频特征编码器,来提取音频特征。
{ z 1 , z 2 , ... , z T A ; z i ∈ R d A } = C N N θ w ( ψ ) \{z_1,z_2,\ldots,z_{T_{\mathbf{A}}};z_i\in\mathbb{R}^{d_A}\}=\mathrm{CNN}{\theta{\mathbf{w}}}(\psi) {z1,z2,...,zTA;zi∈RdA}=CNNθw(ψ)

符号 含义
ψ \psi ψ 原始的语音数据
z i z_i zi 第i个时间步对应的特征
3.2Lightweight Attentive Aggregation (LAA)

轻量级注意力聚合模块 LAA 的目的是将 Z(Z就是经过CNN提取的音频特征) 编码为 RoBERTa 编码器的前缀 token。

LLA 在提取的语音特征的顶部执行双向门控循环单元(BiGRU),以双向行为捕捉信息。然后利用聚合模块(Aggregation Module)将 BiGRU 的输出进行动态加权求和。

整体过程如下所示: (公式在原论文的基础上进行了修改,个人认为作者的公式在动态加权求和的时候有问题)
Z ^ = L a y e r N o r m ( Z ) ( 1 ) Φ = B i G R U ( W 1 ⊺ Z ^ + b 1 ) , ( 2 ) Φ = { { ϕ 1 , 1 , ... , ϕ 1 , T A } , { ϕ 2 , 1 , ... , ϕ 2 , T A } } , ( 3 ) u k , i = σ ( W A g g 1 T ϕ k , i + b A g g 1 ) , k ∈ { 1 , 2 } , i ∈ { 1 , T } ( 4 ) α k , i = S o f t m a x ( W A g g 2 I u k , i + b A g g 2 ) , α k , i ∈ [ 0 , 1 ] ( 5 ) C A = ∑ i = 1 T α k , i ϕ k , i ( 6 ) \begin{gathered} \hat{Z}=LayerNorm(Z)\quad(1)\\ \\ \Phi=BiGRU(W_{1}^{\intercal}\hat{Z}+b_{1}), \quad(2)\\ \\ \Phi=\{\{\phi_{\mathbf{1},1},\ldots,\phi_{\mathbf{1},T_{\mathbf{A}}}\},\{\phi_{\mathbf{2},1},\ldots,\phi_{\mathbf{2},T_{\mathbf{A}}}\}\}, \quad(3)\\ \\ u_{k,i}=\sigma(W_{Agg_1}^\mathsf{T}\phi_{k,i}+b_{Agg_1}),k\in\{1,2\},i \in {\{1,T\}}\quad(4)\\ \\ \alpha_{k,i}=Softmax(W_{Agg_2}^{\mathsf{I}}u_{k,i}+b_{Agg_2}),\alpha_{k,i}\in[0,1]\quad(5)\\ \\ \mathcal{C}\mathbf{A}=\sum{i=1}^T\alpha_{k,i}\phi_{k,i} \quad(6) \end{gathered} Z^=LayerNorm(Z)(1)Φ=BiGRU(W1⊺Z^+b1),(2)Φ={{ϕ1,1,...,ϕ1,TA},{ϕ2,1,...,ϕ2,TA}},(3)uk,i=σ(WAgg1Tϕk,i+bAgg1),k∈{1,2},i∈{1,T}(4)αk,i=Softmax(WAgg2Iuk,i+bAgg2),αk,i∈[0,1](5)CA=i=1∑Tαk,iϕk,i(6)

符号 含义
Φ ∈ A 2 × T A × d A \Phi\in\mathbf{A}^{2\times T_{A}\times d_{A}} Φ∈A2×TA×dA Bi-GRU的输出序列
σ \sigma σ 激活函数
C A ∈ R 2 × d a \mathcal{C}_\mathbf{A}\in\mathbb{R}^{2\times d_a} CA∈R2×da 两个可用于 RoBERTa 的语音前缀token

4.训练过程

4.1预训练阶段

输入序列 { [ C L S ] , l 1 , l 2 , ... , l T L , [ S E P ] } \{[CLS],l_{1},l_{2},\ldots,l_{T_{\mathbf{L}}},[SEP]\} {[CLS],l1,l2,...,lTL,[SEP]}给预先训练好的 RoBERTa 模型,然后只计算语音输出token (也就是 C A C_A CA​​)的损失函数,梯度只影响 LAA 模块

使用 LIBRISPEECH 数据集对 LAA 模块进行了 8000 步训练(通过实验观察,进行8000步,模型收敛,F1分数趋于稳定,故训练8000步)。每 2,000 步保存一次模型,并对保存的参数进行微调,以便在 CMU-MOSI 数据集上进行高效的多模态情感分析。

4.2微调阶段

将语音前缀和文本token输入到 RoBERTa 模型,根据[CLS]对应的输出,对 RoBERTa 模型进行微调。

4.3TEASEL模型训练的算法伪代码

结果与讨论

斜体是消融实验

  • 通过与一些仅限于文本的流行Transformer方法基于Transformer的冻结特征方法为下游任务微调Transformer的方法进行对比,TEASEL在Corr、ACC-2与F1分数上的表现是最佳的。
  • 在相同的条件下,对预训练TEASEL的不同步数下的参数进行微调,表明了预训练 LAA 模块是有效的,也证明了训练8000步是刚刚好的。
  • 通过对微调部分应该固定 LAA 模块的哪些部分进行了详尽的实验,证明了不需要对整个 LAA 模块进行微调。
  • 对测试集中的某个随机数据的注意力激活层进行可视化,证明了语音前缀的有效性。

代码和数据集

此代码是别人复现的,论文作者并没有提供。

代码:https://github.com/tjdevWorks/TEASEL

数据集:CMU-MOSI

实验环境:GitHub上面,有人复现这个代码,使用Tesla V100都显示CUDA内存不足。

附录

MaskedLM 任务:旨在使用句子中未屏蔽的全部词语来预测随机屏蔽的标记。标准的 MaskedLM 80% 的时间使用 [MASK] token,10% 的时间使用random token,10% 的时间使用unchanged token,迫使语言模型顺利地预测输出标记。

wav2vec模型:wav2vec模型利用五层卷积神经网络(CNN)作为时间特征编码器,并利用BERT-style Transformer作为上下文编码器。

BiGRU单元:BiGRU单元指的是双向门控循环单元(Bidirectional Gated Recurrent Unit)。它是一种特殊的循环神经网络(RNN)结构,用于处理序列数据。BiGRU通过结合两个GRU层来工作,一个处理正向时间序列(从开始到结束),另一个处理反向时间序列(从结束到开始)。这种结构允许网络同时学习过去和未来的上下文信息,提高了对序列数据的理解能力。GRU单元结构:

😃😃😃

相关推荐
小毕超12 分钟前
基于 PyTorch 从零手搓一个GPT Transformer 对话大模型
pytorch·gpt·transformer
千天夜40 分钟前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
m0_523674211 小时前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
小言从不摸鱼3 小时前
【AI大模型】ELMo模型介绍:深度理解语言模型的嵌入艺术
人工智能·深度学习·语言模型·自然语言处理·transformer
衬衫chenshan3 小时前
【论文阅读】(Security) Assertions by Large Language Models
论文阅读·人工智能·语言模型
python15612 小时前
基于驾驶员面部特征的疲劳检测系统
python·深度学习·目标检测
LittroInno13 小时前
Tofu AI视频处理模块视频输入配置方法
人工智能·深度学习·计算机视觉·tofu
铭瑾熙13 小时前
深度学习之 LSTM
人工智能·深度学习·lstm
SEVEN-YEARS16 小时前
BERT框架详解
人工智能·深度学习·bert
OpenBayes16 小时前
OpenBayes 一周速览丨VASP 教程上线!HPC 助力材料计算;AllClear 公共云层去除数据集发布,含超 23k 个全球分布的兴趣区域
人工智能·深度学习·机器学习·自然语言处理·开源·数据集·大语言模型