Fine-grained Post-training for Improving Retrieval-based Dialogue Systems-论文阅读

本文提出了一种针对检索式对话系统的细粒度后训练方法,通过将对话拆分为短的上下文-回答对,增强模型对内部话语交互的学习,同时引入话语关联分类(URC)任务,以理解对话中语句的语义关联和连贯性。实验结果显示,这种方法在三个基准数据集上取得显著优势,证明了其在响应选择任务上的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fine-grained Post-training for Improving Retrieval-based Dialogue Systems-论文阅读
改进基于检索的对话系统的一个细粒度后训练的方法
发表会议:2021 ACL的北美单元
原文链接:https://aclanthology.org/2021.naacl-main.122.pdf

摘要(翻译):
当使用预先训练好的语言模型时,基于检索的对话系统表现出优异的性能,其中包括来自transformers(BERT)的双向编码器表示。在多轮反应选择过程中,bert注重训练多话语语境与反应之间的关系。然而,当考虑语境中每个话语之间的关系时,这种训练方法是不够的。这导致了一个问题,即不能完全理解选择响应所需的上下文流。为了解决这个问题,我们提出了一种新的细粒度后训练(post-training)方法,该方法反映了多回合对话的特点。具体来说,该模型通过在对话会话中训练每个简短的语境-回答对来学习话语层面的交互。此外,通过使用一个新的训练目标,即话语关联分类(URC),该模型理解了对话话语之间的语义关联和连贯性。实验结果表明,我们的模型在三个基准数据集上都达到了新的水平,具有显著的优势。这表明细粒度后训练方法对于响应选择任务非常有效。

工作:
1、 新的细粒度后训练(post-training)方法-》将整个对话分成多个短上下文-回答对来训练模型。
1、 话语关联分类URC-》理解话语间的语义关联,将给定话语和目标话语之间的关系分类为更细粒度的标签。

一、 介绍
将整个对话分成多个简短的上下文-回答对的好处:
1、 模型可以学习内部话语之间的相互作用,逐渐扩展和学习话语之间的关系(自我关注)
2、 模型可以更准确的捕捉话语之间的关系。一般的,与回答相关的话语都位于靠近回答的地方。
话语关联分类URC:
提出URC,将目标话语分三类:随机、语义相似、下一句

三、 模型
3.1 问题描述
数据格式:在这里插入图片描述
其中:
Ci:上下文,包含多条语句(uj)
在这里插入图片描述

(M表示话语最长长度)
Ri:答案语句(一个句子)
Yi:标签,{0,1}
对于给定的上下文-回答对(ci, ri),算出ci和ri的匹配度。
3.2 模型结构
在这里插入图片描述

输入:x={ [CLS], SeqA[SEP], SeqB[SEP] },其中A和B分别为ci和ri,经过位置、段和标记嵌入后输入BERT,获得BERT的输出T[·],T[CLS]为ci-ri对的聚合表示(aggregate representation),将T[CLS]输入一个单层神经网络获得ci和ri的匹配得分gure(ci, ri):
在这里插入图片描述

Wfine:用于微调的可训练参数
模型损失函数使用交叉熵损失函数:
在这里插入图片描述
3.4 训练过程
1)特色:
1、 将对话分为多个短上下文-回答对(sci, ri):
把每句话看成一个回答(ri),将它之前的k句话看做上下文(sci),对每个(sci, ri)进行训练。
2、 将URC作为训练目标之一:
将答案分为三个标签:随机的语句(随机)、同对话中的其他问答(语义相似)、目标答案(下一句)。
在这里插入图片描述

2)训练过程:
输入数据:Uj={ uj, uj+1, uj+2, …, uj+k-1,uj+k }(从j+k=1开始),其中,{uj, uj+1,…, uj+k-1} 组成sc,uj+k为rj+k (ut),则模型输入为:
在这里插入图片描述
最后得分为:gure(sc, ut)。
URC的损失函数为:
在这里插入图片描述
此外,训练时还用了MLM,所以模型损失函数为:
在这里插入图片描述
四、实验
4.1 数据集
1、Ubuntu对话数据集(英文)
2、Douban对话数据集(中文)
3、E-Commerce数据集(中文)
*下载地址在论文里,全在Google上
示例(E-Commerce):
在这里插入图片描述
数据集信息:
在这里插入图片描述
4.2 评价指标
1) R10@k:从10个候选中选出k个,正确答案包含在k个中的概率。
2) MAP:平均精度均值,用多个不同种类的查询对它进行测试,每个查询的结果计算一个AP值,把所有AP取平均值就是系统的MAP。
3) MRR:标准答案在被评价系统给出结果中的排序取倒数,再对所有的问题取平均。
4) P@1:第一个结果的准确度,对每个查询的结果算P@1,取这些值的平均值作为系统的P@1.
4.3 基线选择(待完成)
4.4 实验结果:
在这里插入图片描述
五、 进一步分析(待完成)
六、实现过程(待完成)

这个排版实在太痛苦了!!!为什么不能调图片的大小!!

### 基于类原型对比学习在多标签和细粒度教育视频分类中的应用 #### 类原型对比学习的核心概念 类原型对比学习是一种通过构建类别级别的代表性向量(即类原型),并利用这些原型之间的关系来进行特征学习的方法。这种方法能够有效捕捉类间差异以及类内一致性,从而提升模型的泛化能力[^1]。 具体而言,在多标签场景下,每个类别的原型可以通过该类别下的所有样本嵌入向量计算得到。通常采用均值池化的方式生成类原型 \( C_k \),其中 \( k \) 表示第 \( k \) 个类别: \[ C_k = \frac{1}{N_k} \sum_{i=1}^{N_k} f(x_i), \] 这里 \( N_k \) 是属于类别 \( k \) 的样本数量,\( f(x_i) \) 则是输入样本 \( x_i \) 经过编码器提取后的特征向量[^2]。 #### 对比损失函数的设计 为了实现更有效的特征表示学习,对比学习框架引入了一种特殊的损失函数——InfoNCE Loss (Information Noise Contrastive Estimation)。这种损失函数旨在最大化正样本对之间的相似性,同时最小化负样本对之间的相似性。对于给定查询样本 \( q \),其对应的正样本集合记作 \( P(q) \),而负样本集合则为 \( N(q) \),那么 InfoNCE Loss 可定义如下: \[ L_{contrastive}(q) = -\log \left( \frac{\exp(\text{sim}(q, p)/\tau)}{\sum_{n \in N(q)} \exp(\text{sim}(q,n)/\tau)+\sum_{p' \in P(q)} \exp(\text{sim}(q,p')/\tau)} \right). \] 这里的 \( \text{sim}() \) 函数通常是余弦相似度或者欧氏距离,参数 \( \tau \) 称为温度超参,控制分布的锐利程度。 #### 多标签与细粒度教育视频分类的应用挑战 当应用于多标签和细粒度教育视频分类时,主要面临以下几个方面的挑战: - **标签不平衡**:某些细粒度类别可能拥有远少于其他类别的标注数据,这会使得训练过程中难以形成可靠的类原型。 - **语义重叠**:不同类别之间可能存在较高的语义关联性,增加了区分难度。 - **时间依赖特性**:相比于静态图片,动态视频还包含了帧间的时间序列信息,这对建模提出了更高要求。 针对上述问题,可以考虑以下改进措施: 1. 引入自适应权重机制调整各类别的重要性; 2. 设计专门的模块捕获跨帧间的长期依赖关系,比如使用 LSTM 或 Transformer 结构; 3. 融合外部知识源辅助优化决策边界。 #### 实验验证与效果分析 实验表明,在多个公开基准数据集上,基于类原型对比学习的方法显著优于传统监督方法以及其他无监督预训练方案。特别是在低资源环境下,由于充分利用了有限样例内部的信息结构,性能优势更加明显。 ```python import torch.nn.functional as F def info_nce_loss(query_embeddings, positive_embeddings, negative_embeddings, temperature=0.5): """ Compute the contrastive loss using InfoNCE formulation. Args: query_embeddings (Tensor): Query embeddings of shape [batch_size, embedding_dim]. positive_embeddings (Tensor): Positive sample embeddings of same shape. negative_embeddings (Tensor): Negative samples with shape [num_negatives * batch_size, embedding_dim]. temperature (float): Temperature parameter controlling sharpness. Returns: Tensor: Scalar value representing computed loss. """ # Normalize all vectors to unit length queries_norm = F.normalize(query_embeddings, dim=-1) positives_norm = F.normalize(positive_embeddings, dim=-1) negatives_norm = F.normalize(negative_embeddings, dim=-1) logits_pos = torch.sum(queries_norm * positives_norm, dim=-1).unsqueeze(-1) / temperature logits_neg = torch.matmul(queries_norm.unsqueeze(1), negatives_norm.T.permute(0, 2, 1)) / temperature full_logits = torch.cat([logits_pos, logits_neg], dim=-1) labels = torch.zeros(full_logits.shape[:2]).to(logits_pos.device).long() return F.cross_entropy(full_logits.view(-1, full_logits.size(-1)), labels.view(-1)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值