如果你错过了上一波深度学习引发的NLP范式转换,不要再错过这一波超大预训练模型的崛起。
近日,“悟道”核心团队推出首档公开课,公开课已全部上线,手把手帮助中国开发者理解并应用“悟道”,从而进一步挖掘“悟道”的潜力,开发自己的智能应用。加粗样式
通过“悟道”公开课,开发者们将与预训练模型这一人工智能领域最重要的趋势保持同步,更有125万+“悟道之巅”比赛奖金可以拿(点击文末“阅读原文”访问比赛官网)。
第一讲视频点此观看
第二讲视频点此观看
第三讲视频点此观看
第四讲视频点此观看
第五讲视频点此观看
本次课程可以看做是面向所有人的大规模预训练模型(下文简称“大模型”)科普课,从大模型与传统机器学习模型的区别、机器学习范式的变化和 GPT-3 讲起,进一步介绍悟道模型及主要技术、悟道之巅大赛参与方式以及悟道 API 使用说明等等。
本期介绍的主题是,基于“悟道”研发的中文议论文写作平台——悟空策论。
主讲人为彭心林,2018 级清华大学计算机科学与技术系本科生,她参与基于“悟道”大规模预训练模型下游任务的开发,小组研发的策论平台获得悟道·清华园课程竞赛第三名。
第一讲干货见:一文入门大规模预训练语言模型丨“悟道之巅”公开课干货(1);
第二讲干货见:入门大模型后,如何优化其输出结果?丨“悟道之巅”公开课干货(2)
第三讲干货见:实践:用大模型开发一款智能应用丨“悟道之巅”公开课实录(3)
本期主要内容如下:
悟空策论项目介绍(idea 的产生)
生成效果与 demo 展示
技术实现与优化算法
Q&A 环节
一、悟空策论项目介绍(idea 的产生)
首先是项目介绍部分。项目背景是由于考虑到议论文文体具有很强特性。例如结构性强,所以注重模范模板的梳理是否规范;套路性强,老师审阅较轻松。
基于以上特性,我们团队萌发了用程序直接生成文章的想法。
通过调研我们发现,市面的文章生成器(如狗屁不通文章生成器等)普遍存在问题,如语义混乱、主题不混淆、无法体现中心思想、内容没有逻辑等。例如“狗屁不通文章生成器”,只是把用户输入的关键词随机组合成句子,最后用组合的句子拼成一段话。
下图内的文章,便是用“狗屁不通文章生成器”生成的,其输入主题为文化互鉴。此主题摘自某个高考模考议论文文题。可以看到,它生成的内容和主题关联性不强,只是对用户给的所关键词,套用一些固定句式,生成一段千篇一律文本。生成的文本也并有没参考意义和价值。
我们希望开发一个系统,该系统会根据用户定义的论题和分论点、关键词等,通过对预训练模型生成的内容进行筛选和分层次整合,得到具有一定逻辑性、表达相对清晰、文章结构合理的议论文。简而言之,即写一篇满足用户需求且通顺的文章。
对于生成效果,本次展示选取的主题同样是文化互鉴。
首先输入三个分论点,譬如:
第一个分论点是“思想方面的文化互鉴,可以丰富本民族文化”;
第二个分论点是“思想方面的文化互鉴,可以助力世界文化的发展”;
第三个分论点是“在今天我们也需要文化互鉴,正确认识文化互鉴是前提基础”。
以上的三个论点是从当时的模拟议论文里摘出来的三个主要分论点,接下来把这三个分论点分别输入到模型内,再检查生成效果。
下图是第一部分,其内容根据分论点一生成,看上去比较通顺,而且具有一定的逻辑性。
下图是根据分论点二生成的,其主要内容也是围绕着论点进行阐释的。
同理,第三部分根据分论点三生成。
最后把这三个段落拼接,就可以得到一篇符合主题的议论文。
以上例子便展示了利用悟道大模型生成议论文的效果。
以下展示具体的demo。利用用户给定的分论点和关键词,逐段生成议论文。系统内也有自动填写,可以快速查看历史生成结果。
在测试时所选取的论点、论题都来源于真题。
对于生成的结果,会有两个或多个来备用,可供用户自由选择。
因为模型生成文本具有随机性,所以需要用户人工进行选择和调整。用户也可以主动进行编辑,编辑完成后可以选择以Word或PDF文档保存。
受限于悟道响应的接口速度因素,生成的一篇议论文的速度通常在3~4分钟。
对于生成的结果,比如上文输入“思想方面的文化互鉴可以丰富本民族文化”论点,把这个分论点输入进去,会生成如下图的两个段落。经过筛选,得到的结果具有一定的逻辑性和参考价值。
在技术实现上,系统框架用的是 Django+Vue3。
当时使用的悟道模型接口只有两个,分别是 qa 和 chat 接口。这两个接口各有各的特点,qa 接口是一问一答,生成短文本;chat 是长篇问答,例如输入一段或一句话,直接生成一段议论文段。所以调用的机制有两种,一种是用 qa 接口逐句生成,另一种是用chat接口直接生成一段文本。。
再来介绍一下这两种接口的优缺点。qa 接口一次生成的长度短,只能逐句回答,但最后生成的较准确,有效文本比例高;chat 接口直接生成的文本部分重复,生成的有效文本比例低。
本文给出的解决方法:优先使用 chat,根据关键词进行筛选截取,最后给出多个备选结果供用户选择。
悟道生成的内容,会参考提出的论点、问题,同时也会参考文风。例如输入一个准确的论点,系统会生成一段比较符合议论文题材的文段。
但是如果给出的论点描述性、抒情性强,或论点没体现明显的议论特性,系统生成的文段也会不够准确,会添加一些叙述情节或是生成一些偏题的内容。这样的文段并不符合议论文要求。
通过访问接口,我们观察到,系统在知乎上训练得比较多,所以很多问答都偏向于知乎体(例如……是……的体验)。如果在输入时套用知乎体,结果会更准确。
所以,我们在系统中设置前置、引导语句。例如,“如何以…为题写一篇议论文”,诸如此类。
设置前置语句,目的是引导模型的生成。
但这种做法也会有不足,这样悟道系统可能会理解成怎么指导读者写议论文,导致引导出的文本聚焦于讲解写作方法、写作技巧,而不是对论点进行阐述或论证,这并不符合要求。
针对这种偏差,下文提出了两种解决方案:一是随机在前置语句中选一句,二是直接输入论点,系统自动生成后续段落。这两种方案对应不同的筛选机制,也能更好解决上述不足,能对生成效果进行优化。
以下是针对不同问题给出的解决方案。
对于直接输入文本筛选,导致文本重复率高的问题,做法是:按句分割后,将每句话于此前的句子对比,如果重合度大于80%,则丢弃该句还有之后重复的内容。
对于输入前置定语,导致得出的结果跑偏(例如上文提到的,得出的结果偏向于写作技巧)这个问题,系统首先会判断得出的结果,是不是和关键词相关,再检查得出的内容有没有重大偏差。同时根据用户给定关键词进行限制,若新生成的文本在一定长度内,都不包含该关键词即字数达标,但内容脱离主题(按照是否包含关键词评判),则需要在下一次输入的 content 结尾处补充一句含关键词的文本,引导关键词展开,起到点题的作用。
从录入到生成,对于系统生成其他体裁(如书籍目录、期刊)或排版错的问题,则相应的设置屏蔽词(如本书、目录、出版),筛选明显不符合要求的体裁,让系统重新生成。
总而言之,效果优化的方向主要集中在效果、速度两方面。对于生成议论文,比较好的方法是创建所有高考、模拟考议论文文库,基于悟道大规模进行微调,或者做一个小模型。这样生成的结果会更符合议论文文题要求。此外,系统生成耗时比较长,所以在速度方面也需要进行优化。
后端完善上,利用 chat 和 qa 接口联合生成,平衡生成的质量和速度。因为 chat 接口生成速度较快,所以优先使用 chat 接口进行生成,最后再用 qa 接口进行完善。同时增加缓存机制,将用户已生成的内容缓存下来。
前端设计上,在展示效果上,缓存了多组预先生成的结果(来源于高考、模拟考),针对用户需要,甚至可以将高考、模拟考的结果展示,以便节省时间。
其他尝试还包括以下:
1、之前利用模型测试时,曾遇到过生成的结果围绕着论点反复阐述、论证,且大多是道理论据,事实论据或其他论据比较少,使文章内容太泛。
所以,我们又尝试了爬取百度知道的回答等其他可以获取到关键词对应的论据或事例。但最终发现,一方面,素材来源于网络,使用网络素材会使文章的查重率高,另一方面,从网络上获取的论据来源和结果总体上也并不理想,因为网络上并没有一个完善的素材资料库,素材来源都很零散,要进行筛选,所以我们暂时放弃了添加爬取到的事例或素材作为论据。
2、将生成内容变为可编辑文本,用户可以直接在页面或应用上修改,基于生成的内容自主进行改动调整。用户也可以选择将文章导出成 word 或 PDF 且保存到本地上。当时团队做了用户调研实验,了解到大多数用户都希望保存已生成的结果,但是也希望能对结果进行微调或修改。因此团队最终增加了这个小功能。
3、增加了操作提示信息,帮助新用户去熟悉操作应用。也增加了一些提示,如段落生成成功、生成失败、接口次数用尽等提示信息,使应用看起来更完善。如果生成失败,可以选择刷新,系统会重新生成。
Q1: 怎么解决只能生成议论文的局限性?
A1: 这是在特定场景下,相对固定的议论文题材。但其实也可以扩充写新闻或其他文体,需要做一系列处理。譬如增加给定的中心思想,生成新闻报道其他文本。生成的和专业的文本会有区别。更好的解决方法是,相关工作者利用平台生成前半段,后半段由工作者续写。这样生成的结果会好很多。
悟空策论应用平台,主要还是辅助用户写作、规范议论文的文体结构,而且生成文本的语言表述具有发散性,也可以用作激发的创作灵感。
Q2: 悟道策论平台目前的表现有哪些不足?
A2: 经实际测试,平台的确会生成一些不太好的样例。例如输入时描述不准确,系统生成的文本的后半段,可能会注重叙述故事,渐渐的偏离议论文文体。还有多个段落之间的逻辑性不强。再例如输入的三个论点具有递进关系,生成的文本逻辑性不强,使文本看起来是生硬拼接出来的。
对于模型而言,我们目前能完成的是简单下游任务(基于悟道的下游任务)。悟道目前给团队开放的两三个接口,所以对于 API,还是需要做微调。但是因为种种限制,目前考虑的只是做引导语设计、后续的内容的筛选。
Q3: 如何评估生成文章的好坏?
A3: 对于这个问题,如果让这代码去评判的话,只能判断生成文章与分论点相似度高不高。所以评定系统其实是不够准确的。可能还是需要人为进行评定。
本期内容就是以上全部。