Building Chinese Biomedical Language Models via Multi-Level Text Discrimination

模型相关

模型采用了ELECTRA模型的生成器-判别器架构,其中生成器被用于构造预训练信号,判别器被用作最终的目标编码器,不同点在于ELECTRA仅采用token级别的二分类来训练判别器,而该模型使用(i)更具信息量的token级别判别和(ii)序列级别判别来进行训练。模型的整体架构如下所示:

ehealth.png

生成器

生成器是一个通过MLM方法(完形填空)训练的transformer编码器。首先对于某个输入序列,生成器会先随机的生成一组位置,并将这些位置上的字符替换掉(80%替换为[MASK],10%替换成其他token,10%不变),然后被送入transformer编码器,生成上下文表示,接着使用softmax预测这些位置上原本的字符。生成器的loss是所有被替换位置的原始字符预测概率的负对数之和,因为生成器的目标是生成最能以假乱真的篡改文本。

判别器

判别器也是一个transformer,它进行了两个级别的文本判别——token-level和sequence-level。此外,需要提及的是判别器的输入是真实的输入序列和多个生成器生成的序列(比如选择k个生成序列,那么每个被替换token就有了k+1个候选项)。

token-level

这个级别的判别任务有两个:replaced token detection (RTD) 以及 multi-token selection (MTS)。前者检测序列中被替换的token,后者进一步为这些被替换的token选择原始token。具体来说:

  1. RTD任务会学习判别每一个token是原始token还是替换过的token,输出的是经过sigmoid得到的每个token未被替换的概率。这个任务的loss是被替换位置token被预测为被替换概率的负对数以及未被替换位置的token被预测为未被替换概率的负对数之和。这里本质上是一个二分类任务。
  2. MTS任务需要恢复被替换位置的原始token,输出的是被替换位置token从k+1个候选项中选择出正确的原始token的概率。这个任务的loss是被替换位置token选择出正确的原始token概率的负对数之和。这里本质上是一个k+1分类任务。

sequence-level

这个级别的判别任务有一个:contrastive sequence prediction (CSP),采用的是典型的对比学习框架。对于每一个原始输入,建立了两个版本的篡改结果。如图中左右两部分所示,分别用 $X^R_i$ 和 $X^R_j$ 表示,将它们作为一个正例对;选择训练时同一minibatch中的其它序列作为反例,由正例和反例组成候选集 $N(x)$。CSP任务的目标是在已知 $X^R_i$ 的条件下,从候选项 $N(x)$ 中选择正确的 $X^R_j$。这个任务的loss如下图所示:

loss.png

其中s代表相似度计算函数。

损失函数

模型的总loss是前述四个loss的加权和。此外,在预训练完成后,便不再理会生成器,仅仅在下游任务上微调判别器。

实验相关

预训练

  1. 数据集:126.9G数据,包括对话、文章、书籍以及医疗记录。
  2. 词表:使用的是in-domin的词表。具体做法是从预训练数据中采样1M的文本,经过简单处理后使用开源库Tensor2Tensor建立WordPiece词表。然后抛弃掉了出现少于5次的token,让词表的大小在20K个token左右。
  3. 预训练配置:判别器transformer采用12层,12个注意力头,768的hidden size,3072的intermediate size。生成器的size是判别器的1/3。

评价数据集

使用的数据集包括:CBLUE(3.0版本已经有18个任务,下一篇论文介绍)、cMedQNLI(QA匹配任务,判断answer能否解决question)、webMedQA(QA匹配任务,但是比前者更大,约为3倍)、NLPEC(多项选择QA数据集)。

CBLUE: A Chinese Biomedical Language Understanding Evaluation Benchmark

Chinese Biomedical Language Understanding Evaluation (CBLUE)是第一个中文的生物医学语言理解的benchmark。

CBLUE的发展经过3个阶段:
CBLUE1.0:由CHIP会议往届的学术评测数据集和阿里夸克医疗搜索业务数据集组成,包括医学文本信息抽取(实体识别、关系抽取)、医学术语标准化医学文本分类医学句子语义关系判定共4大类任务8个子任务。
CBLUE2.0:在1.0的基础上,扩充了原有的任务类型,进一步丰富了语料来源(新增医学诊疗对话、医学专家编写的电子病历和医学影像报告),并引入了生成类任务。CBLUE2.0由医学文本信息抽取(实体识别、关系抽取、事件抽取)、医学术语标准化医学文本分类医学句子语义关系判定医学对话理解与生成共5大类任务14个子任务组成。
CBLUE3.0:在2.0的基础上,进一步增强了生成类任务,新引入了医学检索和医学多模态任务,此外还对现有任务的难度做了升级。CBLUE3.0由医学文本信息抽取(实体识别、关系抽取、事件抽取)、医学检索&术语标准化医学文本分类医学句子语义关系判定医学文本理解&生成共5大类任务18个子任务组成。此外还引入了医学OCR要素识别任务作为多模态方向的初步尝试。

当前的CBLUE3.0共有18个任务分别如下:

数据集名称 数据集缩写 任务介绍 数据量(训练集/验证集/测试集)
中文医学命名实体识别 CMeEE 实体识别 15,000/5,000/3,000
中文医学文本实体关系抽取 CMeIE 关系抽取 14,339/3,585/4,482
医疗因果实体关系抽取 CMedCausal 关系抽取 800/200/1,000 + 1000条未标注数据
临床发现事件抽取 CHIP-CDEE 事件抽取 1,587/384/514
临床术语标准化 CHIP-CDN 归一化 6,000/2,000/10,000
医学段落检索 KUAKE-IR 检索 100,000/1,000/3,000
临床试验筛选标准短文本分类 CHIP-CTC 分类 22,962/7,682/10,000
医疗搜索检索词意图分类 KUAKE-QIC 分类 6,931/1,955/1,994
医疗对话临床发现阴阳性判别 CHIP-MDCFNPC 分类 5,000/1,000/2,000
疾病问答迁移学习 CHIP-STS 匹配 16,000/4,000/10,000
医疗搜索查询词-页面标题相关性 KUAKE-QTR 匹配 24,174/2,913/5,465
医疗搜索查询词-查询词相关性 KUAKE-QQR 匹配 15,000/1,600/1,596
智能对话诊疗数据集 IMCS 实体识别、分类、生成 2,472/833/811
蕴含实体的中文医疗对话生成 MedDG 生成 17,864/2,747/1,551
医疗文本诊疗决策树抽取 TextDT 生成 300/100/100
推荐任务 - - -
医疗清单发票OCR要素提取任务 CMedOCR OCR 1,000/-/700
面向“基因-疾病”关联机理的科学文献挖掘任务 AGAC 实体识别、关系抽取 250/-/2,000

具体信息可以参考:CBLUE