Put Human in NLP Loop

这篇文章基于一篇 Survey(见核心文献),就是如何将人类的反馈放在 NLP 过程中,这个过程可以是训练,也可以是部署后,也可以是数据标注阶段。总之,它泛指把人类的反馈与 NLP 过程结合。

在正式开始前,我们需要先说明几个业界常用的概念:

  • 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 进行了思考。从系统的角度看,这和原来的设计可能完全不一样,要考虑的问题更加全面,而且角度也大相径庭。这一块也是目前已有系统非常不完善的地方,尤其是国内的一些应用,无法直视。

文献和参考

核心文献

  • Zijie J. Wang, Putting Humans in the Natural Language Processing Loop: A Survey, 2022