为了更精确的情感识别,A-LSTM 出现了

简介: 长短期记忆网络(LSTM)隐含了这样一个假设,本层的现时状态依赖于前一时刻的状态。这种“一步”的时间依赖性,可能会限制LSTM对于序列信号动态特性的建模。本篇论文中,针对这样的一个问题,我们提出了高级长短期记忆网络(advancedLSTM (A-LSTM)),利用线性组合,将若干时间点的本层状态都结合起来,以打破传统LSTM的这种局限性。

image

小叽导读:长短期记忆网络(LSTM)隐含了这样一个假设,本层的现时状态依赖于前一时刻的状态。这种“一步”的时间依赖性,可能会限制LSTM对于序列信号动态特性的建模。本篇论文中,针对这样的一个问题,我们提出了高级长短期记忆网络(advancedLSTM (A-LSTM)),利用线性组合,将若干时间点的本层状态都结合起来,以打破传统LSTM的这种局限性。在这篇文章中,我们将A-LSTM应用于情感识别中。实验结果显示,与应用传统LSTM 的系统相比,应用了A-LSTM的系统能相对提高5.5%的识别率。

作者:陶斐/Fei Tao, 刘刚/Gang Liu

收录于:ICASSP-2018

研究背景

LSTM 现在被广泛地应用在RNN中。它促进了RNN在对序列信号建模的应用当中。LSTM 有两个输入,一个来源于前一层,还有一个来源于本层的前一个时刻。因此,LSTM隐含了这样一个假设,本层的现时状态依赖于前一时刻的状态。这种“一步”的时间依赖性,可能会限制LSTM对于序列信号动态特性的建模(尤其对一些时间依赖性在时间轴上跨度比较大的任务)。在这篇论文里,针对这样的一个问题,我们提出了advancedLSTM (A-LSTM),以期打破传统LSTM的这种局限性。A-LSTM利用线性组合,将若干时间点的本层状态都结合起来,因此不仅可以看到”一步“以前的状态,还可以看到更远以前的历史状态。

在这篇文章中,我们把A-LSTM应用到整句话层级(utterance level)上的情感识别任务中。传统的情感识别依赖于在整句话上提取底端特征(low level descriptors)的统计数据,比如平均值,方差等等。由于实际应用中,整句话中可能会有一些长静音,或者是一些非语音的声音,这种统计数据就可能不准确。在这篇论文中,我们使用基于注意力模型(attention model)的加权池化(weighted pooling)递归神经网络(recurrent neural network)来更有效地提取整句话层级上的特征。

高级长短期记忆网络

A-LSTM利用线性组合,将若干时间点的本层状态都结合起来。这其中的线性组合是利用与注意力模型(attention model)类似的机制进行计算的。具体公式如下。

image

Fig 1 中C'(t)即为前面若干时间状态的线性组合。这个线性组合以后的时间状态将被输入下一时间点进行更新。可以想象,每次的更新都不只是针对前一时刻,而是对若干时刻的组合进行更新。由于这种组合的权重是有注意力模型控制,A-LSTM可以通过学习来自动调节各时间点之间的权重占比。如果依赖性在时间跨度上比较大,则更远以前的历史状态可能会占相对大的比重;反之,比较近的历史状态会占相对大的比重。

image

Fig 1 Theunrolled A-LSTM

加权池化递归神经网络

image

Fig 2 Theattention based weighted pooling RNN.

在这篇论文中,我们使用基于注意力模型的加权池化递归神经网络来进行情感识别(见Fig 2)。这一神经网络的输入是序列声学信号。利用注意力模型,我们的神经网络可以自动调整各个时间点上的权重,然后将各个时间点上的输出进行加权平均(加权池化)。加权平均的结果是一个能够表征这一整串序列的表达。由于注意力模型的存在,这一表达的提取可以包含有效信息,规避无用信息(比如输入序列中中的一些长时间的静音部分)。这就比简单的计算一整个序列的统计数值要更好(比如有opensmile提取的一些底端特征)。 为了更好地训练模型,我们在情感识别任务之外还添加了两个辅助任务,说话人识别和性别识别。我们在这个模型当中使用了A-LSTM来提升系统性能。

实验

在实验阶段,我们使用IEMOCAP数据集中的四类数据(高兴,愤怒,悲伤和普通)。这其中一共有4490句语音文件。我们随机选取1位男性和1位女性说话人的数据作为测试数据。其余的数据用来训练(其中的10%的数据用来做验证数据)。我们采用三个衡量指标,分别为无权重平均F-score(MAF),无权重平均精密度(MAP),以及准确率(accuracy)。

我们提取了MECC,信号过零率(zero crossing rate),能量,能量熵,频谱矩心(spectral centroid),频谱流量(spectral flux),频谱滚边(spectral rolloff),12维彩度向量(chroma vector),色度偏差(chroma deviation),谐波比(harmonic ratior) 以及语音基频,一共36维特征。对这些序列特征进行整句话层级上的归一化后,将其送入系统进行训练或测试。

在这个实验中,我们的系统有两层神经元层,第一层位全连接层(fully connected layer),共有256个精馏线性神经元组成(rectified linear unit)。第二层位双向长短期记忆网络(bidirectionalLSTM (BLST))。两个方向一共有256个神经元。之后即为基于注意力模型的加权池化层。最上方为三个柔性最大值传输函数层,分别对应三个任务。我们给三个任务分配了不同的权重,其中情感识别权重为1,说话人识别权重为0.3,性别识别为0.6。如果是应用A-LSTM,我们就将第二层的BLSTM替换成双向的A-LSTM,其他的所有参数都不变。这里的A-LSTM选取三个时间点的状态作线性组合,分别为5个时间点前(t-5),3个时间点前(t-3),以及1个时间点前(t-1)。实验结果如下:

image

其中的meanLSTM 与A-LSTM比较类似,唯一区别是,当我们为选取的几个时间点的状态作线性组合的时候,不是采用注意力模型,而是简单的做算术平均。

结论

与应用传统LSTM 的系统相比,应用了A-LSTM的系统显示出了更好的识别率。由于加权池化过程是将所有时间点上的输出进行加权平均,因此系统性能的提升只可能是来源于A-LSTM更加灵活的时间依赖性模型,而非其他因素,例如高层看到更多时间点等等。并且,这一提升的代价只会增加了数百个参数。

原文发布时间为:2018-10-30
本文作者:研读论文的
本文来自云栖社区合作伙伴“阿里巴巴机器智能”,了解相关信息可以关注“ 阿里巴巴机器智能”。

相关文章
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
1584 0
|
canal 消息中间件 存储
手把手告诉你如何监听 MySQL binlog 实现数据变化后的实时通知!
Hello 大家好,我是阿粉。不知道大家在日常的工作中有没有遇到这样的场景,很多时候业务数据有变更需要及时加载到缓存、ES 或者发送到消息队列中通知下游服务。
7653 0
手把手告诉你如何监听 MySQL binlog 实现数据变化后的实时通知!
|
虚拟化
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
VMware Workstation Pro 是一款强大的虚拟化工具,本文简要介绍其基本配置与操作。安装后,用户可以通过“编辑菜单 > 首选项”设置虚拟机保存路径、是否显示托盘图标等全局配置。新建虚拟机时,需选择操作系统类型、配置处理器、内存、网络和硬盘等参数。建议根据主机硬件性能合理分配资源,避免过度占用。创建完成后,用户可加载 ISO 镜像文件安装所需操作系统。通过这些步骤,您可以轻松搭建并管理多个虚拟环境。
4375 8
【2025最新】VMware Workstation Pro 虚拟机基础配置教程,方便你的神操作!
|
JavaScript 前端开发
鼠标拖拽菜单栏控制宽度大小及flex实现经典左右两栏布局
鼠标拖拽菜单栏控制宽度大小及flex实现经典左右两栏布局
922 120
鼠标拖拽菜单栏控制宽度大小及flex实现经典左右两栏布局
|
存储 大数据 BI
场景题:有40亿个QQ号如何去重?仅1GB内存
在处理大数据去重问题时,如40亿QQ号的去重(仅1GB内存),可采用Bitmap和布隆过滤器两种方法。Bitmap利用位图存储,每个QQ号占1位,总需512MB内存,适用于整型数据;布隆过滤器通过多个哈希函数计算下标,适合字符串或对象去重,但存在误判率。在线人员统计等场景也可使用类似思路,将ID作为偏移值标记在线状态或视频存在性。
436 5
|
JSON JavaScript 前端开发
Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
这篇文章介绍了在Vue项目中如何使用JavaScript操作Cookie,包括设置、读取、设置过期时间以及删除Cookie的方法。
865 0
|
JavaScript
Vue3基础(22)___vue3中使用$forceUpdate
本文介绍了在Vue 3中如何使用`$forceUpdate`来强制更新组件,通过`getCurrentInstance`方法获取到组件实例后调用。
1523 0
|
运维 程序员 数据库
如何用TCC方案轻松实现分布式事务一致性
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,将事务拆分为尝试、确认和取消三步,确保在分布式系统中实现操作的原子性。它旨在处理分布式环境中的数据一致性问题,通过预检查和资源预留来降低失败风险。TCC方案具有高可靠性和灵活性,但也增加了系统复杂性并可能导致性能影响。它需要为每个服务实现Try、Confirm和Cancel接口,并在回滚时确保资源正确释放。虽然有挑战,TCC在复杂的分布式系统中仍被广泛应用。
987 5
Cannot read properties of undefined (reading ‘use‘)-------编程版本问题
Cannot read properties of undefined (reading ‘use‘)-------编程版本问题
|
Linux KVM 虚拟化
如何判断一个linux机器是物理机还是虚拟机
使用`dmesg`检查"Hypervisor detected"可识别Xen PV虚拟机;`lscpu`显示"Hypervisor vendor"表明KVM虚拟化;"Virtualization: VT-x"指示实体机;`systemd-detect-virt`无法准确判断;`dmidecode -t 1`在某些节点上无法区分虚拟与实体。
957 0

热门文章

最新文章