有没有做q版头像的网站,做百度竞价对网站空间有什么要求,wordpress导航页面样式,新闻源网站怎么做PET#xff08;Pattern-Exploiting Training#xff09;
背景#xff1a;预训练语言模型#xff08;比如BERT#xff09;知识全面#xff0c;但是没有针对下游任务做针对训练#xff0c;所以效果一般#xff0c;所以需要根据任务做微调。
核心思想#xff1a;根据先…PETPattern-Exploiting Training
背景预训练语言模型比如BERT知识全面但是没有针对下游任务做针对训练所以效果一般所以需要根据任务做微调。
核心思想根据先验知识人工定义模版将目标分类任务转换为与MLM一致的完形填空然后再去微调MLM任务参数。
项目介绍一般情况我们可以直接用bert模型对评论进行分类这种效果一般尤其是比较少小众的场景。但如果用少量带标签的评论样本对Bert模型进行Tuning那模型效果就会大幅提升。 AutoTokenizer
from transformers import AutoModelForMaskedLM, AutoTokenizer
#使用bert-base-chinese模型
tokenizer AutoTokenizer.from_pretrained(google-bert/bert-base-chinese)
my_text 有时候我常常在想人活着的意义究竟是什么 #19个字1个标点符号
sb tokenizer(textmy_text,truncationTrue,max_length15,paddingmax_length)#得到sb:
{input_ids: [101, 3300, 3198, 952, 2769, 2382, 2382, 1762, 2682, 8024, 782, 3833, 4708, 4638, 102], token_type_ids: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], attention_mask: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}tokenizer.decode(sb[input_ids])#解码[CLS] 有 时 候 我 常 常 在 想 人 活 着 的 [SEP]bert的tokenizer是字符级别的编码而不是词标点符号也会编码。截断15这15个已经包含了[CLS]和[SEP]。Bert是一种MLMMasked Language Modeling模型。tokenizer在使用训练结构后也需要保存。可能训练的过程它会自动新增token ClassEvaluator验证模型效果 def __init__(self):self.goldens []self.predictions []
在计算验证集指标时只需要记录两个list一个是模型预测的标签另一个是真实的标签例如self.goldens[体育,财经]。 模型评估训练集有几十条测试集有几百条。 每10步打印一次loss每20步用验证集评估一下效果当f1得分上涨就保存模型。 模型评估要看不同类别的指标表现效果。{衣服: {precision: 0.55, recall: 0.97, f1: 0.7}, 酒店: {precision: 1.0, recall: 0.86, f1: 0.93}} 全局指标-accuracy准确率
模型预测
verbalizer有两列第一列主标签业务需要的分类 第二列子标签模型输出分类模型输出不同分类可能映射到同一个主标签。先把要待分类的数据评论放到prompt中然后用tokenizer编码放入模型然后将预测得到的logit转换成ids然后convert_ids_to_tokens转成子类别名称然后再查询verbalizer得到主标签。 ClassEvaluator 持续更新中。。