如何从大型模型(BART)fine tune一个小模型及代码实现

系列文章

  1. 如何从大型模型(BART)fine tune一个小模型及代码实现

  2. 文本自动摘要评价方法-金字塔方法

  3. pytorch 使用BART模型进行中文自动摘要

摘要

本文目的是从上游大型模型进行知识蒸馏以应用于下游自动摘要任务,主要总结了自动摘要目前面临的难题,BART模型的原理,与fine tune 模型的原理。对模型fine tune部分进行了代码复现,通过fine tune使得student模型能够在一块8G显存的GPU上进行训练。

论文标题:

  1. PRE-TRAINED SUMMARIZATION DISTILLATION
    url: https://arxiv.org/pdf/2010.13002.pdf
  2. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension
    url:https://arxiv.org/abs/1910.13461

自动摘要目前的问题

  • 自动摘要的输入长度不定,输出长度也不定
  • 需要被摘要的文本无统一结构,因此难以根据文章结构学习出合适的模型。
  • 传统的抽取式摘要不能很好概括文本信息

seq2seq

在推理模式中,即当我们想解码未知的输入序列时,我们会经历一个过程:
1)将输入序列编码为状态向量
2)从大小为1的目标序列开始(仅是序列开始字符)
3)将状态向量和1个字符的目标序列提供给解码器,以生成下一个字符的预测。
4)使用这些预测来采样下一个字符(argmax)。
5)将采样的字符追加到目标序列
6)重复上述过程直到生成序列结束字符或达到字符数限制。

模型

BART

BART是一种用于序列到序列模型预处理的去噪自编码器。它的训练方法是:
(1)用任意的噪声函数破坏文本,
(2)学习一个模型来重建原始文本。
在这里插入图片描述

  • 双向编码(类似BERT),单向解码
  • 训练前的任务包括随机打乱原始句子的顺序和一个新的填充方案,其中文本的范围被一个单一的掩码标记取代
    在这里插入图片描述

Fine-Tune

从一个训练好大型任务中直接迁移部分参数,再使用下移任务的训练集数据进行微调

在这里插入图片描述

  • Fine-Tune从一个模型(teacher model)进行参数的迁移得到新模型(student model)
  • 这篇论文student model复制teacher model的全部层,通过实验选取效果最好的3层decode:0, 5, 11.

Fine-Tune另外测评方法

Pseudo-labels
Fine-Tune的目的是获得和teacher模型一样的预测结果,即最小化损失函数:
在这里插入图片描述
Direct Knowledge Distillation (KD)
理想条件是student模型对下一个词的预测所产生的概率分布和teacher模型相同。

在这里插入图片描述
或者使得decode层输出隐状态相同

在这里插入图片描述
最终衡量标准
在这里插入图片描述
其中三个α基于不同损失函数以不同权重,其最终目的是使得加权损失函数最小

实验方案

beam search
预测的时候,假设词表大小为3,内容为a,b,c。beam size是2,decoder解码的时候:
1: 生成第1个词的时候,选择概率最大的2个词,假设为a,c,那么当前的2个序列就是a和c。
2:生成第2个词的时候,我们将当前序列a和c,分别与词表中的所有词进行组合,得到新的6个序列aa ab ac ca cb cc,计算每个序列的得分并选择得分最高2个序列,作为新的当前序列,假如为aa cb。
3:后面会不断重复这个过程,直到遇到结束符或者达到最大长度为止。最终输出得分最高的2个序列。
在这里插入图片描述
上图解释参考:
https://blog.csdn.net/weixin_43718786/article/details/116991489
提前停止
我们在任何满足满足以下条件的时间点停止训练:第五阶段结束,或者连续四次评估的分数不增加(一个完整的阶段)。
在使用全尺寸(完全复制)encod的实验中,我们在训练期间不改变它的参数。初步实验表明,这不会影响性能,但微调速度提高了5.6倍。
我们还冻结了位置和文字的embedding。

实验结果

在这里插入图片描述
从结果来看,保持encode层不变,从12个decode层中抽取三层是非常有效的解决方案。(兼顾成绩与训练时间)

在这里插入图片描述<

以下是30个以上比较好的中文 BERT 系列模型的 Github 源码: 1. BERT-Base, Chinese: https://github.com/google-research/bert/blob/master/multilingual.md#chinese-pre-trained-models 2. BERT-WWM-Ext, Chinese: https://github.com/ymcui/Chinese-BERT-wwm 3. BERT-WWM-Ext-finetune, Chinese: https://github.com/ymcui/Chinese-BERT-wwm/tree/master/finetune 4. RoBERTa-wwm-ext-large, Chinese: https://github.com/ymcui/Chinese-RoBERTa-wwm-ext 5. BERT-wwm-ext-multilingual: https://github.com/ymcui/BERT-wwm-ext 6. ALBERT-base, Chinese: https://github.com/brightmart/albert_zh 7. ALBERT-tiny, Chinese: https://github.com/brightmart/albert_tiny_zh 8. ALBERT-tiny-finetune, Chinese: https://github.com/brightmart/albert_tiny_zh/tree/master/finetune 9. ALBERT-xlarge, Chinese: https://github.com/brightmart/albert_zh/tree/master/albert_xlarge 10. ERNIE-v1.0, Chinese: https://github.com/PaddlePaddle/ERNIE 11. ERNIE-v2.0, Chinese: https://github.com/PaddlePaddle/ERNIE/tree/v2.0 12. ERNIE-Baidu, Chinese: https://github.com/baidu/ERNIE 13. GPT, Chinese: https://github.com/openai/gpt-2 14. GPT-2, Chinese: https://github.com/openai/gpt-2 15. XLNet, Chinese: https://github.com/ymcui/Chinese-XLNet 16. XLNet-Mid, Chinese: https://github.com/ymcui/Chinese-XLNet/tree/master/mid_data 17. XLNet-Large, Chinese: https://github.com/ymcui/Chinese-XLNet/tree/master/large_data 18. XLM-R, Chinese: https://github.com/ymcui/XLM-RoBERTa 19. Chinese-BART, Chinese: https://github.com/ymcui/Chinese-BART 20. Chinese-BART-finetune, Chinese: https://github.com/ymcui/Chinese-BART/tree/master/finetune 21. MT-DNN, Chinese: https://github.com/namisan/mt-dnn 22. MASS, Chinese: https://github.com/microsoft/MASS 23. T5, Chinese: https://github.com/google-research/text-to-text-transfer-transformer 24. DAE, Chinese: https://github.com/thunlp/DAE 25. DAE-finetune, Chinese: https://github.com/thunlp/DAE/tree
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值