论文笔记 -《A Mixture of h-1 Heads is Better than h Heads》

1、摘要

  多头注意神经结构已经在各种自然语言处理任务上取得了最先进的结果。 事实证明,它们是过度参数化的,注意力头可以被修剪而不会造成显著的性能损失。 论文提出:根据输入的不同,选择不同的header,提出了专注其中几个header的专家混合模型(MAE)。 MAE使用block coordinate descent (BCD:块协同下降算法)进行训练,该算法交替更新(1)选择header的参数和(2)header的参数。 机器翻译和语言建模实验表明,MAE 在这两个任务上都优于基线模型。 特别是在 WMT14英语到德语的翻译数据集上,MAE 提高了0.8 BLEU。

2、拟解决问题

  通过对Transformer headers的选择,优化Transformer中的多头注意力参数,提高模型的文本表示能力。

3、MAE

  如下图所示,文章主要通过在Transformer的多头注意力向量中加入可学习的门参数g,通过做softmax,得到每组的权重分数。可能有的人要问了,为什么不直接用softmax分数乘以每一个头的向量呢?那是因为,如果这样做就是选一个头了,论文主要想通过一个参数选取某个n个头。因为一个头不足以拟合模型。
在这里插入图片描述
多头注意向量:
在这里插入图片描述
gi(x) - 表示注意力头的门控制函数
fi(x) - 表示注意力头的参数

那么具体这两个函数怎么来的呢?

首先,先回顾下Transformer的多头注意力表示:

多头注意力分数:
在这里插入图片描述
多头注意力输出向量表示:
在这里插入图片描述
进行简单的变形, H ‾ \overline{\text{H}} HiWi = Hi,则有:
在这里插入图片描述
将上式变换下:
在这里插入图片描述
那么gate gi是什么呢?

  gate gi指的就是多头注意力向量的权重分数,目的是用来控制多头向量的选取。

gate gi又是怎么得到的呢?

  将每层的输出向量在Sequence维度上算平均 -> tanh -> 线性层 -> tanh -> 经过线性层 -> softmax 。

4、模型训练

  由于该模型结构涉及到两个参数(头的门控制参数和其他参数),因此训练方法也很关键。基于一系列的实验分析,论文最后采用了以下训练策略:

  • 每5个epoch反传G步更新门控制参数;
  • 在不反传门控制参数时更新其他参数。

5、结论

(a) 机器翻译结果

  从下表可知,采用了BCD训练以及7个experts的模型(MAE-7)取得了最佳的效果,相比自己实现的Transformer Base模型,在WMT14 EN-DE数据集上提升了0.8个BLEU,在IWSLT14 DE-EN数据集上提升了0.9个BLEU。通过比较NoBCD和UNI-MAE的模型结果,也可以发现,BCD和softmax的策略对于模型的效果提升是有很大帮助的。
在这里插入图片描述

  • BASE: 论文参照 Vaswani et al. (2017)实现的base模型;
  • NOBCD:没有使用BCD训练方法,即同时更新所有参数;
  • UNI-MAE-7:去除门控制参数,从8个头里面选取7个,有7个expert,每7个expert * 1/8,然后再相加,每次随机更新一组expert;
  • UNI-MAE-6:去除门控制参数,从8个头里面选取6个,有28个expert,每28个expert * 1/28,然后再相加,每次随机更新一组expert;
  • MAE-7:从8个头里面选取7个,有8个expert,每7个expert * softmax_score,然后再相加,每次更新所有expert;
  • MAE-6:从8个头里面选取6个,有28个expert,每28个expert * softmax_score,然后再相加,每次更新所有expert;
(b) 语言模型结果

  可以看到,加入头的门控制参数之后的模型MAE-7(18.71)比BASE(19.03)的ppl低0.28个点。未使用BCD和softmax策略的语言模型甚至比Transformer BASE模型ppl还要高,进一步说明了本方法的重要性。
在这里插入图片描述

  • *BASE:3,072/2,048 context sizes下的结果
  • BASE:512/480 context sizes的结果
  • 由于内存限制,其余的模型都是512/480 context sizes的结果
(c ) 消融分析结果

在这里插入图片描述

  • One random expert:随机选用一个expert
  • Most specialized expert:选取最好的expert
(d) fine-tune结果

fine-tune策略的影响
  fine-tune的策略对于下游任务的影响也是很关键的,从表中可知,fine-tune的时候,不论是头的gate参数,还是其他参数,都是需要进行微调的,这样才能取得最佳效果。

在这里插入图片描述
• scratch:重新训练,就是没有预训练
• NoFT:纯语言模型
• FTG:fine-tune 门参数
• FTG+ :fine-tune 门参数 + 多头注意向量拼接之后的线性转换矩阵W
• FTALL:fine-tune 所有参数

fine-tune数据的影响
  论文发现,当我们的数据量比较少时,可以只微调门参数(Finetune G+),其效果比微调所有参数(Finetune ALL)更好,当我们的数据量较大时,更新所有的参数模型将取得最佳效果。
在这里插入图片描述

### 面向方面的多头混合专家模型在顺序推荐系统中的实现与应用 #### 模型概述 面向方面(Facet-Aware)的多头混合专家(Mixture-of-Experts, MoE)模型旨在通过捕捉不同用户行为模式下的特定偏好来提高个性化推荐的效果。该方法利用多个子网络(即专家),每个专注于处理不同类型的信息片段或特征集,从而能够更细致地区分用户的兴趣点[^1]。 #### 架构设计 此架构由以下几个主要组件构成: - **输入层**: 接收来自序列化交互数据流作为输入; - **嵌入层(Embedding Layer)**: 将离散特征转换成连续空间内的低维表示形式; - **MoE 层 (Mixture of Experts Layers)** : 包含若干并行工作的专家模块以及一个门控机制(Gate Mechanism),用于决定哪些专家应该被激活参与预测过程;值得注意的是,在这里引入了aspect-aware的概念,意味着不同的专家可以针对具体的应用场景学习到更加专业的知识; - **融合层(Aggregation Layer)** :负责汇总各个活跃状态下的专家输出结果,并最终形成整体性的评分估计值; - **损失函数(Loss Function)** 和优化器(Optimizer): 定义目标并通过反向传播调整参数以最小化误差。 ```python import torch.nn as nn from transformers import BertModel class FacetAwareMHMoERecommender(nn.Module): def __init__(self, num_experts=8, hidden_size=768, aspect_embeddings=None): super().__init__() self.bert = BertModel.from_pretrained('bert-base-uncased') self.expert_layers = nn.ModuleList([nn.Linear(hidden_size, hidden_size) for _ in range(num_experts)]) self.gate_layer = nn.Linear(hidden_size, num_experts) self.aspect_embedding = nn.Embedding(len(aspect_embeddings), hidden_size) def forward(self, input_ids, attention_mask, aspects): bert_output = self.bert(input_ids=input_ids, attention_mask=attention_mask)[0][:, 0, :] gate_weights = nn.functional.softmax(self.gate_layer(bert_output), dim=-1) expert_outputs = [expert(bert_output + self.aspect_embedding(aspects)) for expert in self.expert_layers] output = sum(w * o for w, o in zip(gate_weights.unbind(-1), expert_outputs)) return output ``` 上述代码展示了如何构建这样一个基于BERT预训练语言模型初始化编码部分,并结合自定义的MoE结构来进行物品推荐的任务实例。其中`aspects`代表了当前会话所涉及的具体领域或者话题类别信息,这有助于增强系统的理解和响应能力。 #### 使用说明 为了有效部署这个框架,开发者需要准备如下资源: - 用户历史记录及其对应的标签/评价分数; - 文本描述或者其他辅助材料帮助理解上下文环境; - 明确划分好的方面列表,以便于指导各路专家的学习方向。 完成准备工作之后,按照常规机器学习项目流程执行即可——先对全量样本做初步探索分析,接着依据业务需求选取合适的评估指标体系开展实验验证工作直至找到最优配置方案为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值