情感识别实践(三):模型怎么选?BERT只是起点,多模态才是终点

前两篇主要聊的是熙瑾会悟的数据集建设。从原始数据采集、数据清洗,到结合会议、访谈场景制定标注规范,基本把模型训练前的数据准备工作梳理了一遍。

数据准备完成后,真正影响最终效果的,就是模型选择。

这个阶段也是整个项目迭代时间最长的一部分。刚开始,我和很多团队一样,优先选择了业界比较成熟的文本分类模型,希望先快速验证整个流程是否可行。模型能够正常训练,离线测试指标也还不错,但真正放到实际会议数据中以后,问题逐渐暴露出来。

原因很简单,会议中的情感表达远比公开数据集复杂。

很多情绪并不会直接体现在字面上,而是隐藏在上下文、说话方式甚至语音细节里。如果只依赖文本,很容易出现误判。因此,熙瑾会悟做出改变后,这一阶段最大的变化,并不是不断更换模型,而是逐步从单模态文本识别转向文本与语音联合建模。

一、模型演进思路

整个情感识别模块大致经历了几个阶段:

复制代码
文本分类`
`    │`
`    ▼`
`BERT Baseline`
`    │`
`    ▼`
`RoBERTa 优化`
`    │`
`    ▼`
`MacBERT 中文优化`
`    │`
`    ▼`
`Whisper + Wav2Vec2`
`    │`
`    ▼`
`文本+语音多模态融合`
`

前半部分主要解决文本理解能力的问题,后半部分则开始利用语音中的情绪信息,进一步提升模型的稳定性。

最终目标并不是追求某一个模型的最高准确率,而是构建一套能够适应真实会议场景的情感识别系统。

二、BERT:最合适的起点

项目初期,我们首先选择了 BERT 作为基线模型。

输入的是离线转写后的文本,输出包括积极、中性、消极以及风险等情绪类别。

选择 BERT 的原因并不复杂。一方面,它生态成熟,训练流程比较完善;另一方面,双向编码能够结合上下文理解一句话的整体含义,比传统文本分类模型效果更稳定。

例如下面这句话:

这个方案可以,不过风险还是比较大。

如果只关注前半句,很容易判断为积极;结合后半句之后,整体情绪实际上更接近谨慎甚至风险。

BERT 在这类上下文理解任务中,比传统模型有明显优势。

不过,当训练数据逐渐增加以后,它的问题也开始显现。

首先,对会议中的口语表达适应能力一般,很多省略句、口头语理解得并不好;其次,对于隐性否定和委婉表达,经常会出现误判。另外,面对几百字甚至上千字的会议内容时,模型对长距离上下文的利用能力也开始下降。

因此,BERT 更适合作为整个项目的 Baseline,而不是最终方案。

三、RoBERTa:进一步提升上下文理解能力

在完成第一阶段验证后,我们尝试引入了 RoBERTa。

RoBERTa 可以理解为 BERT 的进一步优化版本,通过调整预训练方式和扩大训练规模,使模型能够学习到更丰富的语义信息。

在会议场景中,它最大的提升主要体现在上下文理解能力。

例如:

这个方案我们可以先做个试点,再观察一下效果。

对于人工来说,这句话其实表达的是一种保留意见,并不是完全认可。

相比 BERT,RoBERTa 更容易捕捉到"先试点""再观察"这种相对谨慎的表达方式,因此整体识别效果有所提升。

不过,它依然属于通用语言模型,对于中文会议中的口语化表达,还没有达到理想状态。

四、MacBERT:中文场景效果最稳定

后续,我们将文本模型替换为 MacBERT。

MacBERT 是针对中文特点进行优化的预训练模型,相比 BERT,更符合中文语言习惯,对于口语表达、错别字以及不完整句子的适应能力更强。

这一点在会议数据中表现得尤为明显。

例如:

这个事情我们后面再统一处理。

如果脱离上下文,这句话很容易被识别为中性。

但结合实际会议语境,它很多时候意味着问题暂时搁置,甚至存在一定风险。

在这一类隐含情绪识别任务中,MacBERT 的表现明显优于前两个模型。

项目中的测试结果如下:

|---------|---------|
| 模型 | 准确率 |
| BERT | 84.2% |
| RoBERTa | 86.7% |
| MacBERT | 89.5% |

虽然准确率提升只有几个百分点,但在线上业务中,误判率下降已经十分明显,因此后续版本基本都以 MacBERT 作为文本编码器。

五、Whisper:情感识别的第一道入口

很多人讨论情感识别时,关注点都放在分类模型上,但对于离线会议系统来说,真正的数据入口其实是语音识别。

如果语音转写质量不足,后续模型再优秀,也很难得到可靠结果。

项目中,我们采用 Whisper 完成离线语音转写。

它对会议录音、多人讨论以及一定程度的背景噪声都有不错的适应能力,因此整体识别准确率比较稳定。

不过,在真实业务中,我们也遇到了一些比较典型的问题,例如:

重复语气词被完整保留下来;

长停顿容易产生重复词;

多人同时发言时,容易出现内容交叉。

例如原始转写结果可能是:

嗯......这个......这个我们可以......可以试一下。

如果这些内容直接送入情感分类模型,很容易影响最终判断。

因此,我们在 Whisper 后增加了一层文本清洗流程,包括重复词过滤、口语词归一化、停顿处理等操作,减少无效信息对模型的影响。

六、Wav2Vec2:补充文本无法表达的信息

文本能够表达"说了什么",但无法表达"怎么说"。

而会议中的很多情绪,恰恰来自语速、音调、停顿以及重音。

例如同一句:

可以啊。

不同语气表达出来,可能代表认可,也可能表示无奈,甚至带有讽刺意味。

这些信息在转写文本中几乎都会丢失。

因此,我们引入 Wav2Vec2 提取语音声学特征,将语速、音高、能量变化等信息编码为向量,与文本特征共同参与情感判断。

它并不是替代 Whisper,而是作为音频特征提取模块,补充文本无法覆盖的信息。

经过实际测试,对于情绪起伏较大的会议片段,加入声学特征后,模型判断会更加稳定。

七、多模态融合才是真正的解决方案

当文本模型和语音模型分别完成之后,我们开始尝试多模态融合。

一开始测试过比较简单的 Early Fusion,直接拼接文本向量和音频向量,虽然实现方便,但对噪声比较敏感。

后来又尝试了 Late Fusion,让文本模型和语音模型分别预测,再按照固定权重进行融合,稳定性有所提升,但两种信息之间缺少更深层次的关联。

最终采用的是基于 Attention 的融合方式。

模型会根据当前样本动态调整不同模态的重要程度。

例如,当文本表达比较明确时,模型更依赖文本特征;而当文本内容比较普通,但语气变化明显时,则会提高音频特征的权重。

这种动态融合方式比固定权重更加灵活,也更符合真实会议场景。

项目测试结果如下:

|-------------|--------------|
| 模型 | F1 Score |
| BERT(文本) | 0.84 |
| MacBERT(文本) | 0.89 |
| 文本+语音多模态 | 0.93 |

可以看到,多模态融合带来的提升已经超过了单纯更换文本模型。

八、总结

整个情感识别模块迭代下来,我最大的感受是,模型本身并不是决定效果的唯一因素。

BERT、RoBERTa、MacBERT 都能够解决文本理解的问题,但会议中的情绪信息并不仅存在于文字里。语速、停顿、重音、语调这些语音特征,同样包含着大量有效信息。

因此,后续系统逐渐形成了比较稳定的分工:

Whisper 负责完成离线语音转写;

MacBERT 负责理解文本语义;

Wav2Vec2 提取声学情绪特征;

融合模块 综合文本和语音信息完成最终判断。

回过头来看,真正提升效果的并不是换了某一个模型,而是让不同模态的信息能够互相补充。对于会议、访谈这类真实业务场景来说,多模态融合已经比单纯依赖文本模型更符合实际需求,也是后续持续优化的主要方向。

相关推荐
白执落1 小时前
使用 Python + LangChain + Vue3 构建 LLM 聊天应用
人工智能·python·langchain
叫我Paul就好1 小时前
RAG 从入门到精通 - 基础版本
人工智能·软件工程·rag
weixin_397574091 小时前
语义鸿沟是企业AI落地的真正卡点
人工智能
硅徒1 小时前
蓝队检测规则编写:从告警噪声里捞出真实攻击的工程方法
人工智能
努力进修1 小时前
破除工业 AI 业务落地壁垒:多模时序融合架构重塑设备全维度数据价值
数据库·人工智能·架构
一路向北North1 小时前
Spring AI(2) :AI应用开发技术架构
人工智能
小白说大模型1 小时前
AI Agent 调试实战:链路追踪、Prompt 可视化与异常定位的系统方法
java·人工智能·python·算法·prompt