"); //-->
04、Proton:预训练模型中知识利用的探索
接下来,讲解预训练模型中的知识利用。因为预训练模型是经过海量的数据进行训练的,里面包含了海量的知识,如果可以将其中的知识进行利用,无疑会对 NLP 任务提供很大的帮助与提升。我们提出了一种方法——Probing tuning。
1. TableQA 任务
想要验证知识的作用,需要知识密集型的任务,如上图,TableQA 任务非常合适,TableQA 核心任务即是将文本语言转换成 SQL。
上图表示的是 Text-to-SQL 的发展历程。初始的时候,将 SQL 预测拆解为分类问题,准确率在 40% 左右;后来使用 Seq2Seq 生成模型,准确率提升到 50% 以上;进一步地,引入大规模预训练模型,准确率提升到 70% 以上。因此,可以看出,预训练对话模型,对整个对话系统的提升非常显著。但是仍然存在一定的问题。
以 Spider 数据集为例,在标记 Spider 数据集的同时,他们是看到数据集的,导致他们在编写数据集的时候,所用到的词汇,都是存在原文中的词汇。缺少同义变化和世界知识等。比如,在购买家居场景,有一种沙发的型号为L型,是一种官方术语,而对于用户,或者消费者而言,他们并不知道L型沙发是什么,他们只知道“贵妃椅”。而“贵妃椅”是L型沙发的俗称。因此,有人在 Spider 数据集上进行了同义词改造,构建了新的数据集Spider-Syn,则原来的模型在新的数据集上效果显著下降。
除了同义词问题外,上图右边提到的,“… in African countries that are republics?”即非洲共和制国家有哪些?Republics,这个单词是“共和制”的意思,而这个含义,模型无法从数据中学习到,需要世界知识。
一般情况下,预训练模型的使用方法有以上两种:Fine Tuning 和 Prompt Tuning。对于 Fine Tuning 而言,直接将预训练模型作为下游任务的表征,大多数任务都可以利用预训练模型的能力,但预训练模型和下游模型有很大的 GAP。简单而言,预训练模型的知识很多,而下游任务只能获取很小的一个出口进行输出,无法充分获取知识表达。对于 Prompt Tuning 模型,通过改变预测的方式来提升效果,最近在分类任务上崭露头角,尤其在小样本情况下。但是,如何用到更复杂的任务?比如 Parsin,效果却不太好。综上所述,通过训练出大型的预训练模型学到了的大量的知识,但是在下游任务上却无法进行很好的使用。
2. Probing Tuning 方法
围绕大型预训练模型的知识使用,也有很多的研究,整体上被称为 Probing。Probing 可以从预训练模型中探索出句法结构、依存结构等,也可以从预训练模型中探索出三元组等知识。但是,如何将预训练模型中的知识,显式地表示出来,并结合下游任务,目前的相关工作相对比较少,我们就在这方面提出了一种新的 Finetune 方式——Probing Tuning 方法。
如上图所示,Prompt Tuning 方法是基于模板进行训练,本质上是通过记忆表达的方式加上少量的数据,对模型进行微调。而我们提出的 Probing Tuning 方式,原始的问题通过预训练模型得到稠密向量表达,并且,通过 Probing 的方式,获取知识的结构表达,输入到稠密向量表示中,对下游任务带来提升。
如上图所示,我们提出了一个框架——Proton Framework。首先,输入预训练模型的数据包含原始问题和表格对应的语句;另一方面,也包含了人类定义的规则的知识,不具有泛化性的知识;并且,通过 Proton 的方式,学习到知识的表达,并具有泛化性。
具体Probing的工作原理以上面的例子说明。
问句为:“Where is the youngest teacher from?,表格数据为“SELECT hometown FROM teacher ORDER BY age ASC LIMIT 1”。原句抽取出表格数据中的名词信息,“teacher,teacher.age, teacher.hometown”,组合成整体:“[CLS]Where is the youngest teacher from?[SEP] teacher,teacher.age,teacher.hometown”。然后进行随机 MASK 某个单词,比如“where”,然后计算该向量中“teacher.hometown”与原句向量的“teacher.hometown”距离,如果距离越远,这说明“where”和“teacher.hometown”越相似,即学到相关的知识。如上图的相关矩阵表示,“teacher.age”和“youngest”相关度有 0.83,非常的高,说明两者有非常强的相关性。然后就可以构建 Proton 中的图以及边的权重等。
以上即为 Probing 的整个过程,即将人工构建的知识和 Proton 学习到的知识,结合到预训练模型中,用以提高下游任务的效果。
基于 Probing Tuning 的方法,在 Spider-DK 数据集上相比 SOTA 提升了 6.9%,在 Spider-SYN 数据集上相比 SOTA 提升 16%,效果提升非常明显。
总而言之,我们通过把预训练模型学到的知识,进行探测,并且以结构化的方式,显式的应用到下游模型中去,可以给具体的下游任务,带来显著的提升。
3. 后续工作展望
Probing 技术可以带着我们进行下一步探索,如何将预训练模型中的知识,显式地获取出来。在此领域,AlphaZero 做了相关探索,如上图左侧,左右两边分别表示人和模型自动学习出来的向量空间,模型学到了一些人类从未有的棋谱,说明模型可以学到人类并不知道的一些知识。
我们今天先讲了预训练对话模型对于整个对话系统的重要性;其次,是知识在对话系统中的重要性。基于以上两点,我们希望将知识和预训练对话模型结合一起,具体的分为两个工作:
第一,如何将知识注入到预训练对话模型,我们提出了一个半监督预训练的模型——SPACE。
第二,如何将预训练对话模型中的知识显式地提取和利用起来,我们提出了一个 Proton 的模型。
05、Q&A 环节
Q1:半监督预训练模型的监督任务,是否需要和下游任务保持一致?比如说预训练模型中的一些意图分类任务?
A1:现在所做的半监督预训练,还是面向与下游任务的预训练。即面向下游任务的半监督学习。当然,我们现在也在探索多任务的下游任务训练,探索多任务之间是否可以加强相关的任务效果。
Q2:Unified DA 是否考虑了无意义的语句等?
A2:是有的,在分类里面,是存在有不理解/不懂的语句在里面的。
Q3:Act 和 Intent 的区别是什么?
A3:Intent 是一个具象的事情,和一个具体任务相关的,比如说,你要办公积金,在这个场景,可以定义 5 个 Intent;在购买飞机****的场景,可以定义 10 个 Intent。这两个场景的 Intent 之间基本上没有关系。而 Act 是超越具体场景的,比如公积金和订机****场景,可以定义共同的 Act,比如显示澄清、隐式澄清等,都是和具体场景无关的。Act 和 Intent 都是对语义的表示,Intent 是具象层面的表示,Act 是抽象层面的表示。
Q4:数据集都是英文的,后续是否考虑中文的一些探索吗?
A4:我们团队是一个研究和业务共同并重的团队,我们的中文和英文是同步做的,今天主要分享的是英文的模型,而中文的模型我们这边是已经做好,并且在阿里云智能客服产品中全面落地应用,成为对话系统的基座,以意图分类为例,基于 SPACE 的训练样本数据标注量降低了 70% 左右。今天只是分享我们最早期和最经典的工作,后续会分享中文相关的工作。
Q5:SPACE 中,端到端的模型如何和 NLG 结合的?
A5:端到端模型分为三个部分:理解、策略和生成。对于生成任务,是基于理解和策略的概率分布,即前面的 Act 预测准的话,后续的生成任务也会更准。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。