TEASEL: A transformer-based speech-prefixed language model

news2024/10/7 13:14:14

文章目录

  • TEASEL:一种基于Transformer的语音前缀语言模型
    • 文章信息
    • 研究目的
    • 研究内容
    • 研究方法
      • 1.总体框图
      • 2.BERT-style Language Models(基准模型)
      • 3.Speech Module
        • 3.1Speech Temporal Encoder
        • 3.2Lightweight Attentive Aggregation (LAA)
      • 4.训练过程
        • 4.1预训练阶段
        • 4.2微调阶段
        • 4.3TEASEL模型训练的算法伪代码
    • 结果与讨论
    • 代码和数据集
    • 附录

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)。

Alt

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

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

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

将 RoBERTa 模型作为 BERT-style Language Models(选择RoBERTa作为基准模型是因为RoBERTa是专门针对 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 liRd每个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;ziRdA}=CNNθw(ψ)

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

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

Alt

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(W1Z^+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=1Tαk,iϕk,i(6)

符号含义
Φ ∈ A 2 × T A × d A \Phi\in\mathbf{A}^{2\times T_{A}\times d_{A}} ΦA2×TA×dABi-GRU的输出序列
σ \sigma σ激活函数
C A ∈ R 2 × d a \mathcal{C}_\mathbf{A}\in\mathbb{R}^{2\times d_a} CAR2×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 数据集上进行高效的多模态情感分析。

Alt

4.2微调阶段

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

image-20240308220253335

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

Alt

结果与讨论

斜体是消融实验

  • 通过与一些仅限于文本的流行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单元结构:

image-20240310182334909

😃😃😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型系列-中文开源大模型

文章目录 前言一、主流开源大模型二、中文开源大模型排行榜 前言 近期,OpenAI 的主要竞争者 Anthropic 推出了他们的新一代大型语言模型 Claude 3,该系列涵盖了三个不同规模的模型:Opus、Sonnet 和 Haiku。 Claude 3声称已经全面超越GPT-4。…

软考71-上午题-【面向对象技术2-UML】-UML中的图2

一、用例图 上午题,考的少;下午题,考的多。 1-1、用例图的定义 用例图展现了一组用例、参与者以及它们之间的关系。 用例图用于对系统的静态用例图进行建模。 可以用下列两种方式来使用用例图: 1、对系统的语境建模&#xff1b…

人口性别年龄分布数据、不同年龄结构、性别结构人口分布数据、乡镇街道人口分布数据

人口分布是指人口在一定时间内的空间存在形式、分布状况,包括各类地区总人口的分布,以及某些特定人口(如城市人口、、特定的人口过程和构成(如迁移、性别等)的分布等。 人口分布的最大特征是不平衡性。就全世界而言&am…

【工具】软件工具分享哪家强?安卓apk安装软件分享新方法,弃用QQ启用企业微信使用方法...

微信关注公众号 “DLGG创客DIY” 设为“星标”,重磅干货,第一时间送达。 前言 又又来聊软件工具分享 先简单回顾一下之前的内容: 按时间先后顺序: 1.从网盘到QQ群文件及群文件分类 【工具】软件工具分享哪家强?群文件使…

Mac电脑搭建前端项目环境,并适配老项目

1.上一篇文章中,我说到了,node.js中文网下载node 包,根据系统进行选择,然后安装包node即可,对于比较新的项目确实也是适用的,但是老项目就不行了会报错,node版本过高,导致环境不匹配…

Java线程的基本操作

线程的基本操作 Java线程的常用操作都定义在Thread类中,包括一些重要的静态方法 和线程的实例方法 。下面我们来学习一下,线程的常用基本操作 1.线程名称的设置和获取 线程名称可以通过构造Thread的时候进行设置,也可以通过实例的方法setName…

科技云报道:两会热议的数据要素,如何拥抱新技术?

科技云报道原创。 今年全国两会上,“数字经济”再次成为的热点话题。 2024年政府工作报告提到:要健全数据基础制度,大力推动数据开发开放和流通使用;适度超前建设数字基础设施,加快形成全国一体化算力体系&#xff1…

【Flutter】报错Target of URI doesn‘t exist ‘package:flutter/material.dart‘

运行别人项目 包无法导入报错:Target of URI doesn’t exist ‘package:flutter/material.dart’ 解决方法 flutter packages get成功 不会报错

Centos本地、公网邮件发送配置

目录 本地邮件发送 发送邮件的三种方式 接受邮件 配置公网发送邮件 发送文件 本地邮件发送 安装服务 # yum -y install postfix # yum -y install mailx 启动服务 # systemctl start postfix 发送邮件的三种方式 一. # mail-s“邮件主题” 收件人 ​ 邮件内容…

Linux - 安装 Jenkins(详细教程)

目录 前言一、简介二、安装前准备三、下载与安装四、配置镜像地址五、启动与关闭六、常用插件的安装 前言 虽然说网上有很多关于 Jenkins 安装的教程,但是大部分都不够详细,或者是需要搭配 docker 或者 k8s 等进行安装,对于新手小白而已&…

智谱清华LongAlign发布:重塑NLP长文本处理

引言 随着大型语言模型(LLMs)的不断进化,我们现在能够处理的文本长度已经达到了前所未有的规模——从最初的几百个tokens到现在的128k tokens,相当于一本300页的书。这一进步为语义信息的提供、错误率的减少以及用户体验的提升打…

解决方案RuntimeError: CUDA out of memory

文章目录 一、现象:二、解决方案 一、现象: PyTorch深度学习框架,运行bert-mini,本地环境是torch1.4-gpu,发现报错显示:RuntimeError: CUDA out of memory. Tried to allocate 224.00 MiB (GPU 0; 15.89 G…

保护物联网设备免受网络攻击的方法

可以肯定地说,物联网设备让我们的生活变得更加轻松和方便。这项新技术改变了人们在办公室工作的方式,也改变了他们在家里使用小工具的方式。办公室或家里的所有智能设备都可以连接,这让生活变得更加轻松。然而,这也使这些设备面临…

【Redis学习_可视化客户端连接Redis】

Redis学习_可视化客户端连接Redis Redis学习_可视化客户端连接Redis1、Another Redis Desktop Manager介绍2、Another Redis Desktop Manager连接 Redis学习_可视化客户端连接Redis 1、Another Redis Desktop Manager介绍 介绍 Another Redis Desktop Manager 支持哨兵, 集群,…

PIES源码,C#源码,大型体检中心源码,医院智慧体检系统源码

大型体检中心平台源码,医院智慧体检系统源码,PIES源码 C#源码 医院智慧体检系统,该系统覆盖医院、体检中心的所有业务,完成从预约、登记、收费、检查、检验、出报告、分析、报表等所有工作。系统可以对团检的每个环节设有操作界面…

javaEE7

1. <% page pageEncoding"UTF-8"%> <% page import"java.io.*"%> <% page import"java.util.*"%> <% page import"java.math.*"%> <html> <head><title>网站计数器</title>…

导出微软浏览器收藏的网页,并查看网页保存的登录密码

导出微软Edge浏览器收藏夹&#xff08;书签&#xff09;的步骤如下&#xff1a; 打开Microsoft Edge浏览器。右键点击浏览器收藏栏上的任意位置或使用快捷键Ctrl Shift O打开收藏夹管理页面。在收藏夹管理页面中&#xff0c;通常你会看到右上角或菜单区域有一个“…”或者三…

Java 使用 EasyExcel 实现导入导出(新手篇教程)

官网镇楼↓&#xff0c;觉得我写的不好的同学可以去官网看哦 EasyExcel Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> Excel 导入 示例&…

C++ STL --stack 和queue,priority_queue

1. stack的介绍和使用 1.1 stack的介绍 https://cplusplus.com/reference/stack/stack/?kwstack 翻译: 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配…

Arm MMU深度解读

文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表&#xff1f;4.1、思考&#xff1a;页表到底有几级&#xff1f;4.2、以4KB granule为例&#xff0c;页表的…