多标签“Softmax+交叉熵”
单标签分类问题负责从 $n$ 个候选类别中选出 $1$ 个目标类别,常规的操作就是在最后一个全连接层输出每个类的分数,然后用 softmax 激活并用交叉熵作为损失函数。假设各个类的得分分别为 $s_1, s_2, …, s_n$,目标类为 $t\in{1,2,\dots,n}$,那么所用的 loss 就为:
\[-\log \frac{e^{s_t}}{\sum\limits_{i=1}^n e^{s_i}}= - s_t + \log \sum\limits_{i=1}^n e^{s_i}\label{eq:log-softmax}\tag{1}\]
这个 loss 的优化方向是让目标类的得分 $s_t$ 变为 $s_1,s_2,\dots,s_n$ 中的最大值。
而多标签分...
从 GlobalPointer 到 GPLinker
NLP 知名博主苏剑林在 21 年首次提出了用于命名实体识别 (NER) 任务的 GlobalPointer 模型,然后提出了改进版 Efficient GlobalPointer 模型,能够用更少的参数量取得更好的结果,后来又基于 GlobalPointer 提出了用于实体关系联合抽取的 GPLinker 模型,并且进一步将其拓展用于完成事件联合抽取。
与近年来越来越繁琐的信息抽取模型相比,这些模型不仅思路清晰,而且用简单的结构就实现了优异的性能。本文将对这些模型进行简单的梳理,帮助读者快速了解其核心思想。
GlobalPointer
GlobalPointer 利用全局归一化的思路来进行命名实体识别 (NER),因此不仅可以识别非嵌套实体 (Flat NER),还能识别嵌套实...
Transformer 模型通俗小传
近年来,在自然语言处理 (NLP) 领域,Transformer 已经替代了循环神经网络 (RNN)、卷积神经网络 (CNN) 等模型,成为了深度学习模型的标配。
如题目所示,本文并非是对 Transformer 模型原理进行介绍的专业文章,而是专注于概述 Transformer 模型的定义及发展。你可以将本文看作是一份地图,在阅读后再根据自己的实际需要继续深入了解。
起源与发展
2017 年,Google 的研究者在《Attention Is All You Need》中提出了一个名为 Transformer 的神经网络模型用于序列标注,该模型在翻译任务上超过了之前最优秀的循环神经网络模型,不仅翻译质量更高,而且训练成本更低。与此同时,Fast AI 的研究者在《Univers...
Hugging Face 的 Transformers 库快速入门(九):抽取式问答
本系列教程已整理至 Github,在线阅读地址:transformers.run
本文我们将运用 Transformers 库来完成抽取式问答任务。自动问答 (Question Answering, QA) 是经典的 NLP 任务,需要模型基于给定的上下文回答问题。
根据回答方式的不同可以分为:
抽取式 (extractive) 问答:从上下文中截取片段作为回答,类似于我们前面介绍的序列标注任务;
生成式 (generative) 问答:生成一个文本片段作为回答,类似于我们前面介绍的翻译和摘要任务。
抽取式问答模型通常采用纯 Encoder 框架(例如 BERT),它更适用于处理事实性问题,例如“谁发明了 Transformer 架构?”,这些问题的答案通常就包含在...
Hugging Face 的 Transformers 库快速入门(八):文本摘要任务
本系列教程已整理至 Github,在线阅读地址:transformers.run
本文我们将运用 Transformers 库来完成文本摘要任务。与我们上一章进行的翻译任务一样,文本摘要同样是一个 Seq2Seq 任务,旨在尽可能保留文本语义的情况下将长文本压缩为短文本。
虽然 Hugging Face 已经提供了很多文本摘要模型,但是它们大部分只能处理英文,因此本文将微调一个多语言文本摘要模型用于完成中文摘要:为新浪微博短新闻生成摘要。
文本摘要可以看作是将长文本“翻译”为捕获关键信息的短文本,因此大部分文本摘要模型同样采用 Encoder-Decoder 框架。当然,也有一些非 Encoder-Decoder 框架的摘要模型,例如 GPT 家族也可以通过小样本学习 (few...
Hugging Face 的 Transformers 库快速入门(七):翻译任务
本系列教程已整理至 Github,在线阅读地址:transformers.run
本文我们将运用 Transformers 库来完成翻译任务。翻译是典型的序列到序列 (sequence-to-sequence, Seq2Seq) 任务,即对于每一个输入序列都会输出一个对应的序列。翻译在任务形式上与许多其他任务很接近,例如:
文本摘要 (Summarization):将长文本压缩为短文本,并且还要尽可能保留核心内容。
风格转换 (Style transfer):将文本转换为另一种书写风格,例如将文言文转换为白话文、将古典英语转换为现代英语;
生成式问答 (Generative question answering):对于给定的问题,基于上下文生成对应的答...
Hugging Face 的 Transformers 库快速入门(六):序列标注任务
本系列教程已整理至 Github,在线阅读地址:transformers.run
我们的第一个实战任务是序列标注 (Sequence Labeling/Tagging),其目标是为文本中的每一个 token 分配一个标签,因此 Transformers 库也将其称为 token 分类任务。常见的序列标注任务有命名实体识别 NER (Named Entity Recognition) 和词性标注 POS (Part-Of-Speech tagging)。
命名实体识别 NER 旨在识别出文本中诸如人物、地点、组织等实体,即为所有的 token 都打上实体标签(包含“非实体”)。词性标注 POS 旨在为文本中的每一个词语标注上对应的词性,例如名词、动词、形容词等。
下面我们以...
Hugging Face 的 Transformers 库快速入门(五):快速分词器
本系列教程已整理至 Github,在线阅读地址:transformers.run
通过第一部分的介绍,我们已经对 Transformers 库有了基本的了解,并且上手微调了一个句子对分类模型。从本章开始,我们将通过一系列的实例向大家展示如何使用 Transformers 库来完成目前主流的 NLP 任务。
在开始之前,我们先回顾一下在《模型与分词器》中已经介绍过的分词器 (Tokenizer),进一步了解分词器的一些高级功能。
1. 快速分词器
前面我们已经介绍过如何使用分词器将文本编码为 token IDs,以及反过来将 token IDs 解码回文本。
实际上,Hugging Face 共提供了两种分分词器:
慢速分词器:Transformers 库自带,使用 P...
共计 106 篇文章,14 页。