综述:NLP中的 Human in the Loop
作者 | 太子长琴
整理 | NewBeeNLP
进NLP群—>加入NLP交流群
ChatGPT 大火,今天聊聊其模型训练的一个关键词:Human in the loop。
这篇文章基于一篇 Survey,就是如何将人类的反馈放在 NLP 过程中,这个过程可以是训练,也可以是部署后,也可以是数据标注阶段。总之,它泛指把人类的反馈与 NLP 过程结合。
论文:Putting Humans in the Natural Language Processing Loop: A Survey 地址:https://aclanthology.org/2021.hcinlp-1.8.pdf
在正式开始前,我们需要先说明几个业界常用的概念:
HITL:Human in the loop 的简称,将人置于循环迭代 HCI:Human machine interaction 的简称,人机互动
首先要说的是动机——HITL 有啥用,为啥要 HITL?两个很重要的原因:
提升模型效果(分类、对话和 QA 等)和泛化能力。 提升模型可解释性和可用性(用户创建的特征词典、QA 中用户生成的对抗 Q 等)并提升用户体验。
HITL任务
具体有哪些实践任务呢?
文本分类
NLP 基础任务,一般是这么做的:先训练一个分类器,然后基于该分类器结果人工进行标注,合并已标注数据持续训练模型。
具体点来说,包括以下一些操作:
交互式地编辑文本特征或标注新文档。 主动学习,选择那些能带来最大信息增益的样本而不是随机样本给标注人员,更少的样本达到同等效果。 将主动学习组件扩展到标签(文档)之外的特征(单词)采样。 使用一个构建好的字典增加可解释性。
解析和实体链接
一些有意思的做法包括:
再训练时将用户反馈作为软约束惩罚 Parser。 战略性采样要呈现给标注人员的样本。
主题建模
具体做法包括:
通过添加、删除或更改每个主题中单词的权重来优化经过训练的模型。然后,使用用户更新的特征和权重,模型更有可能生成有用的主题。 强调终端用户的需求(以及他们的反馈),而不是仅仅收集算法方便的反馈。
摘要和翻译
具体做法包括:
在两个模型生成的「摘要对上」收集人类反馈,然后训练奖励模型预测偏好。此奖励模型用于训练策略以使用强化学习生成摘要。 收集显式和隐式人类反馈,通过将反馈与强化学习结合使用来改进机器翻译模型。
对话和 QA
主要有两大类:
在线反馈系统:持续收集反馈;或持续定时更新,对于低分的结果要求用户给出反馈,作为新的训练样本。 离线反馈系统:离线批量更新,一般由标注人员批量生成对抗问题。
HITL流程
上面总的来说都是一些在 NLP 具体任务上的做法,每一个都涉及到相关 paper,我们可以简单的将其归纳为这么一个流程:
首先搞一个/多个已有系统。在线、离线均可,实际任务或标注任务都行。 从已有系统给出结果。这里样例的选取可以考虑能带来最大信息增益的、或者分数较低的、或者特征不显著的样本等等。 根据给出的结果收集反馈。这包括标注(判断已有模型给出的答案对不对,或哪个更好等等),直接让用户更新/反馈(好不好、哪个好、自然文本、直接更新特征等等)。 根据反馈结果重新优化模型。有的可以直接作为样本,有的可以作为训练时的约束;可以在线实时更,也可以离线批量更。 重复这个流程。
HITL交互
首先是交互媒介,一般包括两种:图形接口和自然语言接口。后者是模拟对话的形式,剩下的基本都是前者。
接下来是用户反馈的类型,刚刚上面已经提到一些,这里归纳一下:
二元反馈(是/否,好/不好,满意/不满意等等)。 打分反馈(5、10、100 等为满分,给结果一个分值评价;按结果的好坏排序也属于这种)。 自然语言反馈:自然语言接口居多,根据反馈的文本可以直接作为更细模型的样本或依据。
最后是使用方式,上面也提到一些,不过从算法角度看,可以分成两种:
active learning:交互式让用户给出(设计的想要的)反馈。 reinforcement learning:根据用户反馈采取行动以最大化累计奖励。
前者直接优化目标,后者优化策略;前者学习表征,后者学习规则。
HITL方向
首先是在 NLP 系统中扮演起更广泛的角色:
作为更好理解模型和提升最终用户体验的一种方法。比如用户反馈可以用来缓解模型偏见。 考虑让模型工程师和最终用户参与到 NLP 开发流程。比如用户可以在运行时观察到模型的行为或者更改模型特征权重,给用户更多的控制权。
然后是要设计以 Human 为中心的系统,比如:在 HITL 界面添加模型解释线索,提高反馈质量(把原理告诉反馈者)。未来方向包括:
人类反馈具有主观性,应该从谁那里收集,执行某些任务是否需要专业知识?这个主要体现在终端用户这里。 如何呈现模型学到的东西,以及需要哪些反馈?如何可视化模型从用户反馈中学习后的变化? 如何动态选择最有帮助的反馈,如何引导用户提供有用的反馈? 如何评估收集到的反馈?因为这些反馈可能充满噪声,甚至误导性。 严格的用户研究,以评估 HITL 系统的有效性和模型性能。 开源工具,发布新的 HITL NLP 工作时共享用户研究协议。 创建和共享人类反馈数据集。
这一部分内容看起来比较亮眼,关于方向的梳理极具指导意义,尤其是 Human 为中心的系统设计,站在一个宏观和整体的角度对 HITL 进行了思考。从系统的角度看,这和原来的设计可能完全不一样,要考虑的问题更加全面,而且角度也大相径庭。这一块也是目前已有系统非常不完善的地方,尤其是国内的一些应用,无法直视。
微信扫码关注该文公众号作者