ErnieHealth_CBLUE
Building Chinese Biomedical Language Models via Multi-Level Text Discrimination
模型相关
模型采用了ELECTRA模型的生成器-判别器架构,其中生成器被用于构造预训练信号,判别器被用作最终的目标编码器,不同点在于ELECTRA仅采用token级别的二分类来训练判别器,而该模型使用(i)更具信息量的token级别判别和(ii)序列级别判别来进行训练。模型的整体架构如下所示:
生成器
生成器是一个通过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。具体来说:
- RTD任务会学习判别每一个token是原始token还是替换过的token,输出的是经过sigmoid得到的每个token未被替换的概率。这个任务的loss是被替换位置token被预测为被替换概率的负对数以及未被替换位置的token被预测为未被替换概率的负对数之和。这里本质上是一个二分类任务。
- 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如下图所示:
其中s代表相似度计算函数。
损失函数
模型的总loss是前述四个loss的加权和。此外,在预训练完成后,便不再理会生成器,仅仅在下游任务上微调判别器。
实验相关
预训练
- 数据集:126.9G数据,包括对话、文章、书籍以及医疗记录。
- 词表:使用的是in-domin的词表。具体做法是从预训练数据中采样1M的文本,经过简单处理后使用开源库Tensor2Tensor建立WordPiece词表。然后抛弃掉了出现少于5次的token,让词表的大小在20K个token左右。
- 预训练配置:判别器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。