MobileBERT模型简单介绍

目录

一、概要

二、深入扩展

2.1 知识蒸馏方法

2.2 渐进式知识迁移


一、概要

MobileBERT 可以看作一个“瘦身”后的BERT-large模型,其使用了瓶颈结构(Bottleneck Structure),并且在自注意力和前馈神经网络的设计上也有一定的改进。MobileBERT能够达到教师模型 BERT-base 99.2% 的性能效果(以GLUE数据集 为测试基准),推理速度快 5.5 倍,参数量降低至23.2%。
MobileBERT 在 BERT 的基础上进行了若干结构改进,例如去掉层归一化、使用ReLU 激活函数等,这里不再展开介绍,感兴趣的读者可以阅读文献进一步了解模型结构细节。下面重点介绍MobileBERT采用的知识蒸馏方法。

二、深入扩展

2.1 知识蒸馏方法

MobileBERT 的损失函数由四部分组成:有监督MLM损失、有监督NSP损失、隐含层蒸馏损失和注意力蒸馏损失

式中,0≤α≤1表示调节损失函数权重的超参数,在MobileBERT中取α=0.5。
其中,有监督MLM损失和有监督NSP损失与原版BERT的实现是一样的。隐含层蒸馏损失则与TinyBERT一致,计算教师模型和学生模型各层隐含层输出之间的均方误差损失。需要注意的是,由于MobileBERT(学生模型)与教师模型的层数一致(均为12层),这里不需要设计映射函数,只需要将教师模型和学生模型的每一层进行一一对应即可。注意力蒸馏损失也与TinyBERT类似,但在MobileBERT中使用的是基于KL散度的方法,而不是TinyBERT中的均方误差损失。

式中,K 表示注意力头数;KL(·)表示KL散度函数。与 MSE 损失函数不同的是,KL 散度并不是对称的,这一点需要特别注意。MobileBERT 模型的整体结构如下图所示。

2.2 渐进式知识迁移

MobileBERT使用了一种 渐进式知识迁移 (Progressive Knowledge Transfer)策略。下图给出了一个示例,其中教师模型是3层 Transformer 结构,每种颜色的浅色版本表示参数冻结,即参数不参与训练。

可以看到在渐进式知识迁移中,词向量层和最终分类输出层的权重是直接从教师模型拷贝至学生模型的,始终不参与参数更新。而对于中间的Transformer层,采用了渐进的方式逐步训练。首先,学生模型开始学习教师模型的第一层。接下来,学生模型继续学习教师模型的第二层,而此时学生模型的第一层权重是不参与更新的。依此类推,当学生模型学习教师模型的第i层时,学生模型中所有小于 i 层的权重均不参与更新。论文作者通过实验证明这种渐进式知识迁移方法显著优于其他直接蒸馏方法,感兴趣的读者可以阅读文献了解更多细节。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Bert 压缩模型的源代码可以在以下地址获取: - Bert 原始模型的源代码:https://github.com/google-research/bert 如果你想要使用压缩版的 Bert 模型,你可以参考以下项目: - DistilBert:https://github.com/huggingface/transformers/tree/main/src/transformers/modeling_distilbert - TinyBert:https://github.com/huggingface/transformers/tree/main/src/transformers/modeling_tinybert - MobileBert:https://github.com/huggingface/transformers/tree/main/src/transformers/modeling_mobilebert 这些压缩版的 Bert 模型都是在原始的 Bert 模型的基础上进行了改进和优化,使得它们的模型大小更小,推理速度更快,同时保留了较高的准确率。 ### 回答2: bert压缩模型的源码地址可以在GitHub上找到。在GitHub上有许多开源项目,其中有一些是专门为BERT模型压缩而设计的。这些项目通常会提供详细的源代码和使用指南。 一种常见的BERT模型压缩方法是通过稀疏化来减少模型的参数数量。稀疏化可以通过引入稀疏矩阵或掩码的方式来实现。这些方法的目标是识别和删除不重要的参数,从而减少模型的大小。在GitHub上可以找到一些使用这种方法的开源项目,它们提供了压缩BERT模型的源代码。 另一种常见的压缩方法是权重剪枝。这种方法通过将参数的数值范围变得更小来减少模型的体积。通过剪枝掉参数的小值,可以减少模型的参数数量。GitHub上也有一些开源项目提供了使用权重剪枝来压缩BERT模型的源代码。 总之,如果您想要获取BERT模型压缩的源代码地址,建议在GitHub上搜索相关的开源项目,其中会有一些专门为此目的而创建的项目,提供了详细的源代码和使用指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值