![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
transformers
文章平均质量分 96
哦豁灬
这个作者很懒,什么都没留下…
展开
-
transformer上手(12)—— Prompting 情感分析
运用 Transformers 库来完成情感分析任务,并且使用当前流行的 Prompting 方法。Prompting 方法的核心思想就是借助模板将问题转换为与预训练任务类似的形式来处理。例如要判断标题“American Duo Wins Opening Beach Volleyball Match”的新闻类别,就可以应用模板“This is aNews: x” 将其转换为 “This is a。原创 2024-04-29 21:47:16 · 1178 阅读 · 0 评论 -
transformer上手(11)—— 抽取式问答
运用 Transformers 库来完成抽取式问答任务。自动问答 (Question Answering, QA) 是经典的 NLP 任务,需要模型基于给定的上下文回答问题。抽取式问答模型通常采用纯 Encoder 框架(例如 BERT),它更适用于处理事实性问题,例如“谁发明了 Transformer 架构?”,这些问题的答案通常就包含在上下文中;而生成式问答模型则通常采用 Encoder-Decoder 框架(例如 T5、BART),它更适用于处理开放式问题,例如“天空为什么是蓝色的?原创 2024-04-28 23:57:50 · 329 阅读 · 1 评论 -
transformer上手(10)—— 文本摘要任务
文本摘要是一个 Seq2Seq 任务,尽可能保留文本语义的情况下将长文本压缩为短文本。文本摘要可以看作是将长文本“翻译”为捕获关键信息的短文本,因此大部分文本摘要模型同样采用 Encoder-Decoder 框架。当然,也有一些非 Encoder-Decoder 框架的摘要模型,例如 GPT 家族也可以通过小样本学习 (few-shot) 进行文本摘要。T5 模型通过模板前缀 (prompt prefix) 将各种 NLP 任务都转换到 text-to-text 框架进行预训练,例如摘要任务的前缀就是。原创 2024-04-28 23:55:05 · 744 阅读 · 0 评论 -
transformer上手(9)—— 翻译任务
运用 Transformers 库来完成翻译任务。翻译是典型的序列到序列 (sequence-to-sequence, Seq2Seq) 任务,即对于每一个输入序列都会输出一个对应的序列。翻译任务通常需要大量的对照语料用于训练,如果我们有足够多的训练数据就可以从头训练一个翻译模型,但是微调预训练好的模型会更快,例如将 mT5、mBART 等多语言模型微调到特定的语言对。微调一个 Marian 翻译模型进行汉英翻译,该模型已经基于语料对汉英翻译任务进行了预训练,因此可以直接用于翻译。原创 2024-04-16 22:33:27 · 1256 阅读 · 0 评论 -
transformer上手(8)—— 序列标注任务
序列标注 (Sequence Labeling/Tagging),其目标是为文本中的每一个 token 分配一个标签,因此 Transformers 库也将其称为 token 分类任务。常见的序列标注任务有命名实体识别 NER (Named Entity Recognition) 和词性标注 POS (Part-Of-Speech tagging)。命名实体识别 NER 旨在识别出文本中诸如人物、地点、组织等实体,即为所有的 token 都打上实体标签(包含“非实体”)。原创 2024-04-16 22:15:15 · 973 阅读 · 0 评论 -
transformer上手(7)—— 快速分词器
这里使用的是 IOB 标签格式,“B-XXX”表示某一种标签的开始,“I-XXX”表示某一种标签的中间,“O”表示非标签。从 pipeline 的输出结果可以看到,模型采用的是 IOB1 格式,因此“Sylvain”对应的 4 个 token “S”、“##yl”、“##va”和“##in”预测的标签都为“I-PER”。以前面介绍的 simple 合并策略为例,将连续的标签为“I-XXX”的多个 token 进行合并(或者以“B-XXX”开头,后面接多个“I-XXX”的 token 序列),直到遇到。原创 2024-04-15 22:06:09 · 909 阅读 · 0 评论 -
transformer上手(6)—— 微调预训练模型
与 Pytorch 类似,Transformers 库同样实现了很多的优化器,并且相比 Pytorch 固定学习率,Transformers 库的优化器会随着训练过程逐步减小学习率(通常会产生更好的效果)。函数来加载模型参数。最后,我们加载验证集上最优的模型权重,汇报其在测试集上的性能。注意:前面我们只保存了模型的权重,因此如果要单独调用上面的代码,需要首先实例化一个结构完全一样的模型,再通过。最终在测试集(这里用了验证集)上的准确率为 74.1%,与前面汇报的一致,也验证了模型参数的加载过程是正确的。原创 2024-04-15 22:03:55 · 1132 阅读 · 0 评论 -
transformer上手(5) —— 必要的 Pytorch 知识
Transformers 库建立在 Pytorch 框架之上(Tensorflow 的版本功能并不完善),虽然官方宣称使用 Transformers 库并不需要掌握 Pytorch 知识,但是实际上我们还是需要通过 Pytorch 的 DataLoader 类来加载数据、使用 Pytorch 的优化器对模型参数进行调整等等。这里将介绍 Pytorch 的一些基础概念以及后续可能会使用到的类。原创 2024-04-14 21:10:10 · 1019 阅读 · 0 评论 -
transformer上手(4) —— 模型与分词器
换句话说,即使经过训练,它们的值事实上还是随机的。可以看到,这里成功地将 [ENT_START] 的 embedding 初始化为“start”、“of”、“entity”三个 token 的平均值,将 [ENT_END] 初始化为“end”、“of”、“entity”的平均值。向词表中添加新 token 后,必须重置模型 embedding 矩阵的大小,也就是向矩阵中添加新 token 对应的 embedding,这样模型才可以正常工作,将 token 映射到对应的 embedding。原创 2024-04-14 21:07:04 · 996 阅读 · 0 评论 -
transformer上手(3) —— 开箱即用的 pipelines
可以看到,pipeline 自动选择了预训练好的 distilbart-cnn-12-6 模型来完成任务。与文本生成类似,我们也可以通过 max_length 或 min_length 参数来控制返回摘要的长度。原创 2024-04-13 17:46:42 · 1122 阅读 · 0 评论 -
transformer上手(2) —— 注意力机制
自从 2017 年 Google 发布之后,各种基于 Transformer 的模型和方法层出不穷。尤其是 2018 年,OpenAI 发布的和 Google 发布的模型在几乎所有 NLP 任务上都取得了远超先前最强基准的性能,将 Transformer 模型的热度推上了新的高峰。Transformer 模型之所以如此强大,是因为它抛弃了之前广泛采用的循环网络和卷积网络,而采用了一种特殊的结构来建模文本。原创 2024-04-08 23:06:29 · 1420 阅读 · 0 评论 -
transformer上手(1) —— transformer介绍
因此,大部分情况下,我们都不会从头训练模型,而是将别人预训练好的模型权重通过迁移学习应用到自己的模型中,即使用自己的任务语料对模型进行“二次训练”,通过微调参数使模型适用于新任务。其次所有模型层共享参数;实践证明,即使是对于自定义任务,除非你有大量的语料,否则相比训练一个专门的模型,基于预训练模型进行微调会是一个更好的选择。在每个阶段,对于给定的词语,注意力层只能访问句子中位于它之前的词语,即只能迭代地基于已经生成的词语来逐个预测后面的词语,因此也被称为自回归 (auto-regressive) 模型。原创 2024-04-08 22:59:25 · 1065 阅读 · 0 评论