Page 345 - 《软件学报》2025年第12期
P. 345

5726                                                      软件学报  2025  年第  36  卷第  12  期


                  2.2   基于线索的提问生成

                    为了从推文中找到能反映题文不符的判别证据, 我们生成一组切中要害的提问来质疑                             S  中的每条线索. 所生
                 成的提问难度可控, 能灵活地验证可疑线索集               S  中各种间接和高阶关系. 此处的推理难度被定义为解答提问所需
                 的推理步骤数. 提问生成过程包含           3  个步骤, 首先根据每个线索       s ∈ S  生成  1  跳的子提问, 然后将它们组合以获得
                 多跳的复杂提问. 最终, 这些提问由一个校验器来评估质量, 以筛选出一组满足语言流畅性、语法有效性和推理难
                 度等要求的优质提问.
                  2.2.1    基础子提问生成
                    复杂提问通常由一组相较简单的子提问按照某种推理逻辑聚合而成, 而这些子提问又由更小的提问组成                                    [51] .
                 如果把每个单跳的基础子提问看成一个推理步骤, 我们就可以将复杂提问分解成一系列由推理链关联的基础子问
                 题. 反之, 这些基础子提问也应能重新组装成相应的复杂提问. 受此启发, 我们先生成一组单跳的子提问作为用于
                 组装的基元. 具体地, 针对每个三元组线索            s ∈ S , 我们以其中一个实体作为答案, 另一实体及关系作为发问点, 使
                 用  BART  模型生成一个单跳的子提问. 该模型擅长于这种简单事实类的提问生成任务. 为了增强结果的流畅度,
                 我们还从大量无标注的提问数据中提取提问的表述模式                    [52] , 并将其作为模板指导提问的生成过程. 具体来说, 对
                 于每条提问数据, 先替换同义词, 便于概括表述形式的同时保留核心语义. 然后, 用                        POS  标签替换提问中的短语,
                 例如用   [NP] 替换名词, 用  [V] 替换动词等, 以此进一步归纳为通用的发问句法模板.
                    对于每个三元组, 我们根据关系类型            r 检索相匹配的提问模板. 譬如与三元组            (Beijing, AtLocation, China) 相
                 匹配的模板为“Which city is located in [NP]?”和“Where is [NP]?”, 以此生成的提问为“Which city is located in China?”
                 和“Where is Beijing?”. 基于检索得到的提问模板, 我们利用       HuggingFace API [53] 中的  BART-large 模型为三元组生
                 成与答案对应的提问. 该模型由          24  个隐藏层组成, 每层包含     16  个注意力头, 隐藏层的维度为       4 096. 在经典的问答
                 数据集   SQuAD [54] 上进行训练后, 该模型能够准确地将三元组转换为单跳的子提问.
                    为了减少计算成本, 我们使用前缀调优技术              [55] , 即冻结预训练得到的参数并仅学习少量的前缀参数               pr, 使得
                 pr  能有效地学习“根据提问模板将三元组转换成提问”这一指令来引导模型生成高质量结果. 具体地, 我们首先将
                              s
                 前缀   pr、三元组   的原始文本和提问模板         u s  拼接为  z = [pr; s;u s ], 并将其输入  BART  编码器中. 通过使用教师强
                 制  (teacher forcing) 算法, 模型能够学习最优的前缀来生成期望的结果. 解码过程参考公式               (1), 其中  P θ 、 |P idx |、 、
                                                                                                      z i
                                                             i
                 h i  分别表示可学习的参数矩阵、前缀长度、输入中的第   个词以及该词的隐藏状态. 在训练过程中, 模型参数                              ϕ
                 是固定的, 仅前缀参数      θ  需要训练. 最终, 我们收集所有的生成结果来构建出子提问池                 QP = {qp ,...,qp }.
                                                                                         1     |S |
                                                 
                                                  P θ [i,:],     if i ∈ P idx
                                                 
                                                 
                                            
                                            
                                             h i = 
                                                       Encoder                                       (1)
                                                  
                                                  BART     (z i , h <i ), otherwise
                                                       ϕ
                                            
                                            
                                                      Decoder
                                              qp = BART ϕ  (h 1 ,..., h n )
                  2.2.2    复杂提问组合式生成
                    接下来, 我们利用这些基础子提问作为基块, 通过类似堆积木的方式逐步组装成复杂提问. 组装过程主要有两
                 个阶段, 首先寻找可组合的子提问对, 然后将其合并为更复杂的提问. 组合结果可以用于迭代地生成高阶提问. 这
                 种组合式的方法可以提高可解释性, 并使提问生成器有效地控制中间推理过程, 从而获取高质量的提问.
                    (1) 考虑到并不是所有子提问都能组合成合理的提问, 一些缺乏逻辑关联的子提问对容易生成不合理且无法
                 回答的结果. 为此, 我们采用“枚举+验证”的策略, 从子提问池                QP 中筛选合适的可组合提问对. 具体而言, 两个子
                 提问以及它们的答案       (qp ,A i ) 和  (qp ,A j ) 可组合的条件之一是  qp  提及  . 考虑到一些同义实体可能有多种表达形
                                                                       A i
                                    i
                                            j
                                                                  j
                 式, 因此使用工具包      SpaCy [56] 来对齐同义实体. 此外, 我们还要求     A j  没有被  qp  提及, 避免循环推理.
                                                                            i
                    (2) 具备常识等高阶理解能力的提问往往包含复杂的推理结构, 这种结果指引了发问的方向. 因此, 我们设计
                 了几种典型的结构作为先验知识来引导生成. 这些结构涵盖了主流社交媒体平台和数据集中几乎所有                                  2–4  跳推理
                 的类型, 每个结构都是一个有向无环图, 其节点和边分别表示子提问和推理关系. 要将一组可组合的子提问
                 QP k ⊆ QP 转换为复杂提问, 可以利用经典的        Seq2Seq  模型. 然而, 这种模型严重依赖大量的训练数据, 且还需要对
   340   341   342   343   344   345   346   347   348   349   350