王 喆,杨栋梁,况星园,刘 丹,马 勇
(1.武汉理工大学 安全科学与应急管理学院,湖北 武汉 430070;2.武汉理工大学 中国应急管理研究中心,湖北 武汉 430070;3.武汉理工大学 航运学院,湖北 武汉 430063)
2021年,我国洪涝灾害共造成5 901万人次受灾,因灾死亡失踪590人,倒塌房屋15.2万间,直接经济损失2 458.9亿元[1]。洪涝灾害多为极端天气引发,形势复杂严峻,决策环境瞬息万变,经常出现应急响应滞后、应对措施不当等问题,为赢得洪涝灾害应急处置主动权,应提高应急决策的时效性和科学性。现代应急决策离不开以情景推演、智能算法为代表的应急管理信息平台及决策支持系统[2-4],自动问答通过自动推理快速、精准回答用户所提问题以满足用户需求[5],将其引入洪涝灾害应急处置中,有利于缩短研判会商工作流程,提高应急指挥团队的决策能力和效率[6]。
目前,自动问答已成功应用于安全领域,例如钻井安全问答系统[7]、食品安全事件问答系统[8]以及应急信息处理对话系统[9]。现有安全领域自动问答系统可以提供信息辅助功能,满足不同应急情景下用户常见问题解答和信息检索需求,但现有自动回答系统的应急态势感知能力及直接决策功能不足,实战性能仍需提高。
通过模拟洪涝灾害应急处置的决策逻辑,选择摘要式问答对作为自动问答任务框架,并收集整理摘要式洪涝灾害应急决策问答对数据集。针对NarrativeQA[10]等摘要式数据集,Frermann[11]设计检索式问答模型,先检索给定问题的相关段落,再从段落里抽取对应答案;钱锦等[12]提出基于多任务的生成式阅读理解模型,将答案生成任务作为主任务,答案抽取和问题分类任务作为辅助任务。上述自动问答模型中各问题答案来源于问题背景,可以直接通过检索或生成方式实现,然而洪涝灾害场景复杂,所收集的数据集中问题背景仅包含雨情、水情等关键场景信息,答案的生成还需要引入防洪应急预案等外部知识。检索式答案生成机制不能将决策信息和外部知识有效融合,需要针对洪涝灾害应急决策特征设计生成式问答模型。
对于给定的生成式问答任务,通过微调预训练模型GPT2、T5是常见技术[13],但所收集的洪涝灾害应急决策问答对数据集较小,直接使用预训练微调方法将增加过拟合风险。提示学习通过给下游任务数据添加一段合适的字符,使其与预训练数据形式相似,并在预训练模型基础上训练少量参数以预测模型输出,可以避免或减少对大型监督数据集的需求[14]。其中,Daniel等[15]通过结合问题和问题背景创建合适的Prompt,将多种格式的问答任务转化为文本生成问题,建立统一的自动问答模型;Brown等[16]使用手工方式创建前缀Prompt处理问答、翻译和常识推理等多种任务。手工创建Prompt是自然且直观的方式,但创建Prompt需要一定时间和经验,即使是经验丰富的领域专家也可能无法发现最佳Prompt,为解决该问题,Li等[17]提出“Prefix Tuning”方法,在输入前添加1串连续向量,同时保持预训练语言模型的参数不动,仅训练合适的前缀。因此可以将预训练模型与提示学习相结合,通过自动化生成连续型Prompt,设计生成式自动问答模型,在2种方法结合过程中,为使生成答案不受文本长度限制,选择自回归语言模型GPT2作为预训练模型,进一步外部知识的融合也可以通过增量预训练方式实现。
综上,本文构建基于预训练语言模型GPT2的洪涝灾害应急决策自动问答模型以提高决策效率,设计摘要式洪涝灾害应急决策问答对模拟应急决策逻辑,收集防洪应急预案,对预训练模型进行增量预训练从而实现外部知识融合,引入提示学习方法缓解数据集较小带来的过拟合风险,并通过人工评估指标和自动评估指标对自动问答模型进行评价。
应急决策问答是洪涝灾害应急处置过程中的重要环节,是在应急响应启动后,由现场指挥部和防汛专家根据应急态势即雨情、水情、险情等灾害情景,进行科学研判会商,识别应急目标,进而做出相应工作部署的过程。摘要式问答是这个过程中通常采用的问答格式,以问答对形式出现,问题背景和问题答案均为非结构化文本,自动问答模型需要理解用户所提问题和问题背景以生成问题答案。应急决策问答和摘要式问答在要素和操作流程上相似,如表1所示。
表1 应急决策问答和摘要式问答对应关系Table 1 Corresponding relationship between emergency decision-making question answering and abstractive question answering
根据表1显示对应关系,当前应急情景分析中,感知应急态势、识别应急目标、制定应急行动方案的过程,即可被描述为根据问答对中有关灾害的问题背景和所提问题生成相应问题答案。因此,应急决策问答对可通过整理有关洪涝灾害应急处置案例得出。
将收集到的武汉市防汛抗旱指挥部发布的防汛排渍通报与武汉市相关防洪应急预案结合,整理成应急决策问答对数据集。该数据集包含160个关于防汛排渍的应急决策问答对,该问答对以“如何巡堤查险”等具体应急目标作为问题,问题背景则描述具体应急情景,主要包括以下4个方面:1)雨情(可选),当前或者未来的雨水形势;2)水情(可选),武汉市各水文站点的水位情形以及水库状况;3)渍情(可选),武汉市主次干道易渍水点以及其他道路渍水点渍水情况;4)工情(可选),当前已采取的应急响应级别及措施。问题答案则描述针对问题背景中的应急情景所制定的应急行动方案。整个问答对数据集按问题背景分类,大致可以分为水情处置、渍情处置、雨情处置3类。应急决策问答对示例如表2所示。
表2 应急决策问答对示例Table 2 Examples of question answering pairs of emergency decision-making
对于上述数据集,各问题背景均从官方发布的防汛排渍通报中获得,其中删除通报时间、通报组织以及应急情景的具体时间,各问题答案不完全从通报中获得,部分根据通报中工情描述结合防洪应急预案得到。
给定1个洪涝灾害应急决策问答对,其中包含有关洪涝灾害的问题、问题背景、问题答案,把该问答对处理成qi,ci,ai。qi是当前应急情景的目标,即如何应急处置,ci是当前应急情景的描述,ai是针对当前应急情景应采取的措施。所需要问答生成模型以qi,ci为输入,以ai为输出。
GPT2模型是1种语言模型,被定义为1组样本(x1,x2,x3,…,xn)的无监督分布估计,每个样本由可变长度的符号序列(s1,s2,…,sn)构成,如式(1) 所示:
(1)
即可以根据上文预测下一个字符,同样该方法允许语言序列以p(sn-k,…,sn|s1,…,sn-k-1)的形式出现。因此,对于本文所构建的摘要式应急决策问答对,根据输入qi,ci,得到输出ai的过程可以表示为求解联合概率p(ai|qi,ci)的过程,其中qi,ci按顺序连接作为输入。
GPT2通过多层解码器模块组合构建,其内部结构如图1所示,具体包括以下4个部分:
图1 GPT2内部结构Fig.1 Internal structure of GPT2
1)输入向量。GPT2的输入向量由词嵌入向量和位置编码向量相加得到,其中词嵌入向量、位置编码向量需要分别查询嵌入矩阵、位置编码矩阵。
2)掩码自注意力机制。自注意力机制是将输入向量与1个随机初始化的矩阵相乘,得到查询向量(Q)、键向量(K)、值向量(V),然后根据式(2)计算注意力得分:
(2)
式中:dk表示输入向量维度,该分数值决定输入序列中某个位置的字符对其他字符的关注程度。
对序列中的每个字符进行同样处理,即可通过自注意力机制实现字符间的相互理解。
在GPT2模型中,如果使用自注意力机制,将会导致当前字符学习到未来信息,造成信息泄露,因此需要掩码自注意力机制,即在自注意力计算时,屏蔽来自当前计算位置右边所有字符的信息。
3)N次堆叠。经过词嵌入和位置编码的输入向量,首先接触第1个解码器模块,其内部处理过程如下:输入向量先通过掩码自注意力层的处理,得到特征向量;该特征向量被传递到前馈神经网络层,得到结果向量;将结果向量传递给第2个解码器模块进行计算,将此过程持续N次,实现解码器模块的N次堆叠。
4)模型输出。经过最后1个解码器模块处理后,得到输出向量,该向量与输入向量具有相同维度,将此向量和嵌入矩阵相乘,可得到词汇表中每个字符的得分,选取得分最高的字符即输出结果。但训练时通常设置top-k参数,考虑得分最高的k个字符。
1)Prompt基本操作
通常情况下Prompt基本操作有以下3步[12]:
①Prompt添加。主要通过Prompt函数将输入文本x修改为x′=fprompt(x)。首先,建立1个文本字符串模板,该模板有2个空位置[X]和[Z],其中[X]用来填充输入文本x,[Z]用来填充答案文本z,然后把输入文本x填入空位置[X]中。
在问答生成任务中,以表2为例,输入文本x有2个,即问题和问题背景,分别设为[X1],[X2]。手工建立文本字符串模板“根据预案[X1][X2][Z]”,得到的x′为“根据预案如何巡堤查险? 水情:当前,我市汉江仍持续高水位,随着汉江上游来水快速消退、丹江口水库逐步调减下泄量,汉江中下游将进入快速退水期。汉江新沟站水位27.89 m,超警戒水位0.39 m。工情:已启动防汛3级应急响应。[Z]”。
(3)
式中:θ表示语言模型的参数;ffill(x′,z)表示将字符z插入输入文本x′中;P(ffill(x′,z);θ)表示在参数θ下,各字符z插入输入文本x′中的概率;Search表示搜索概率的搜索函数。
2)Prompt工程
Prompt工程是创建Prompt函数fprompt(x)的过程,该函数可以在提示学习过程中产生最有效的性能。
就城市商业银行来说,交叉销售是指借助CRM系统,在现有客户资源的基础上对于市场进行进一步细分,以发现更多客户的潜在需求,进而有针对性地进行产品和服务的销售或定制银行提供的相关产品和服务。在这方面,城市商业银行先应确定产品组介,锁定目标客户群,从而促进交叉销售。
①考虑Prompt的形式。选择哪种类型的Prompt取决于所要解决的下游任务,由于前缀Prompt是从左到右实现的,则和生成任务或使用自回归语言模型的任务相匹配,因此在问答生成任务中非常适合选择前缀Prompt。
②考虑Prompt的创建方式。P-tuning 重新考虑 “模版由自然语言构成”这一常规要求,将模版的构建转化为连续参数优化问题,其模板构建过程如图2所示。
图2 P-tuning模板构建Fig.2 Construction of P-tuning template
其中,|Pi|表示模板中的第i个Prompt字符,hi是与|Pi|对应的可训练的嵌入向量,e(|X|),e(|Z|)是模板中空位置[X],[Z]的嵌入向量。模板中的Prompt数目是1个超参数,其前后位置也可以进行调整。
针对所收集的应急决策问答对,将模板构建过程转化为连续参数优化问题,设计出拥有不同Prompt长度、不同Prompt位置的模板。以8个Prompt为例,其位置设计如表3所示,其中[X1],[X2]用于填充问题、问题背景,[Z]用于填充问题答案;T1表示8个Prompt全部在输入文本之前,T2表示4个Prompt在输入文本之前,4个Prompt在输入文本和输出文本之间,T3表示8个Prompt全部在输入文本和输出文本之间。
表3 应急决策问答对模板Table 3 Template of emergency decision-making question answering pairs
3)训练策略
在Prompt训练策略中,选择固定预训练模型参数只训练Prompt参数的策略,以8个Prompt为例,假设词向量的维度是768,仅训练Prompt参数时需要训练的参数量是8×768=6 144,远远小于整个预训练模型参数量。具体实施时直接利用词汇表中模型未见过的字符作为Prompt来嵌入输入向量中,进一步简化训练过程。
本文实验选择中文GPT2预训练模型的基础版本作为基础模型,为了使模型学习到应急预案等洪涝灾害相关外部知识,对该模型进行增量预训练。从武汉市各区政府门户网站下载防汛排渍应急预案等数据,收集数据共429条,15万字符。以此数据作为训练语料,训练过程分为2步:第1步将序列长度设置为128,训练10 000步;第2步将序列长度设置为1 024,训练10 000步。最后得到本实验所需的GPT2模型。
为了对模型生成的答案进行评估,请5位应急管理专家从以下3个方面对其进行评分:1)流畅度,生成答案的逻辑和可读性;2)相关性,生成答案是否包含与应急情景相关的物体、动作、事件等;3)信息性,生成答案对支持快速应急决策有多大帮助,提供多少有效建议及措施。具体实施时,将测试集的模板隐藏,由各位专家独立评分,分值从1~5,分值越大表示效果越好,最后对专家评分取平均值,表示生成答案的质量。
同时,选取几个自动评估指标进行评估,如基于统计的文本评价指标BLEU-2、BLEU-4、NIST-4、METEOR以及基于预训练模型的文本评价指标BERTScore。
利用表3中3个模板训练GPT2模型,并利用测试集进行模型效果测试,5位应急管理专家的评估结果如表4所示。
表4 测试集专家评估结果Table 4 Human evaluation results of test sets
由表4可以得到以下3个结论:
1)GPT2结合提示学习的方法在流畅度、相关性、信息性3个指标上的得分整体上接近实际应急行动方案,这表明GPT2语言模型在问答生成任务中表现良好,且提示学习有利于减小过拟合风险,并提升答案生成效果。通过在输入文本前后加入Prompt,使问答任务跟预训练任务保持一致,充分利用预训练模型,帮助模型快速回忆起外部知识,降低模型过度拟合小样本问答对数据。微调GPT2模型时,信息性得分相对较低,模型在很大程度上更偏向学习小样本训练集中的知识,从而导致过拟合。
2)前缀式Promp在3个指标的得分略高于后缀式Promp。对于GPT2语言模型,前缀式Prompt的引入非常重要,只引入后缀式Prompt时效果变差。直观上来说,前缀式Prompt更有利于模型回忆增量预训练时获得的相关外部知识,进而生成更符合预案的答案。因此,在实际应用时可以考虑增加前缀式Prompt的使用。
3)模型生成的答案有较高的流畅度和相关性指标评分,可以判断其有较高的语言质量,在满足可读性、逻辑性等基本需求的同时,符合相应洪涝灾害情景。但在信息性评分上生成的答案与实际应急行动方案仍有一定差距,还需要增加更多历史案例等外部知识,以提高生成答案的信息性。
自动评估结果如表5所示,从表中可以得到以下2个结论:
表5 测试集自动评估结果Table 5 Automatic evaluation results of test sets
1)T1模板在BLEU、NIST、METEOR等基于统计的文本评价指标上的表现超过其他模板,与模型准确率和人工评估结果保持一致,进一步证明前缀式Prompt在提示学习中的优势。但微调GPT2时,模型在上述指标上的得分均超过提示学习方法。分析发现,若测试集样本中问题、问题背景不涉及应急响应级别,则会导致模型在这类样本上的得分较高,造成总得分较高。因此,可以进一步证实使用微调方法会使模型只学习到小样本训练集中的知识,造成过拟合。
2)不同模板的BERTScore分数与模型准确率保持一致,且生成答案的平均长度均接近实际应急行动方案的平均长度,可以判断生成答案与实际应急行动方案有较高的语义相似性,证明模型可以提供正确且决策信息丰富的答案。
给定1个洪涝灾害相关问题背景,利用GPT2模型及不同模板生成的答案见表6,使用提示学习方法生成的答案内容充实、信息丰富,符合应急情景。针对问题背景中雨情、水情、工情,提出如何落实防汛2级应急响应,T1模板给出“全区防汛工作进入全面紧急状态,全区主要干部群众紧急疏散,转移危险区域人员”;T2,T3模板分别对堤防、水位做出要求;GPT2仅给出“报送防汛信息”的答案。各模板给出的答案虽与实际应急行动方案不完全一致,但在流畅度、相关性、信息性上均基本满足应急决策需求,且符合防洪应急预案应急响应行动要求,因此可以判断提示学习方法对增量预训练的外部知识进行有效融合,可以帮助模型生成更符合应急预案的答案。
表6 不同模型效果Table 6 Performance of different models
为验证不同Prompt长度对模型的影响,以T1模板为基础,修改Prompt长度,分别设置为P4,P8,P12,P16,通过同样的训练策略和超参数设置分别训练模型,其模型准确率如图3所示,随迭代次数增加,所有模型的准确率均呈明显上升趋势;随着Prompt长度增加,模型准确率提高,即Prompt 长度越大,模型效果越好。但受模型序列长度影响,未继续增加Prompt长度进行训练,因此,Prompt长度对模型的影响仍需进一步验证。
图3 不同Prompt长度对模型的影响Fig.3 Influence of different Prompt lengths on model
1)建立洪涝灾害应急决策自动问答模型,首先收集洪涝灾害应急决策问答对数据集,通过GPT2结合提示学习的方法构建出符合洪涝灾害应急决策逻辑的问答生成模型,通过人工评估和自动评估指标对模型进行评价。
2)根据测试集评价结果,GPT2结合提示学习的方法,有效缓解数据集较少带来的过拟合风险,且前缀式Prompt效果较好,模型生成的答案有较高的流畅度、相关性、信息性,能够支持快速应急决策。
3)由于所收集的问答对数据集不够丰富,数据量较小,即使通过提示学习方法使最终模型效果得到明显改善,但仍有提升空间。