文章展示了一种人机交互遇见人工智能的新应用,并讨论了从研究到生产的漫长过程中需要解决的问题。与学术界和工业界一直在自动化前沿不同,政府是该领域的新的参与者,但是是一个重要的参与者。我们建立大规模系统,为政策决策者采集信息。以家庭预算调查为例,我们演示了政府机构如何使用人在回路机器学习自动生成官方统计数据。目的是节省时间和资源重复,机器擅长劳动密集型任务,让人类关注需要自由性和智慧的增值任务。一个主要的挑战是人类因素。习惯于手工任务的用户,如何适应AI的复杂性?如何设计用户接口提供给他们一个好的用户体验?我们如何衡量成功?事实上,走向生产的一个关键步骤是确保资金,这需要以涉众能够理解的方式展示潜在的成功。我们强调从实际的商业角度制定问题的重要性,希望能够弥合沟通鸿沟,帮助研究界接触到更多潜在用户,帮助解决更多新奇的现实问题。
不是每个自动化问题都需要“人在回路”,但是需要高精度的应用肯定需要。生成官方统计数据是处理时间和精度至关重要的另一个案例。为了演示政府机构如何应用HuIL(“人在回路”,Human-in-the-Loop)替代原先的系统,文章为家庭预算调查(Household Budget Survey, HBS)提出了一种自动化管道。目的是开发出能够被任何政府机构推广和使用的方法。文章的组织结构如下:
家庭预算调查手机家庭收入和开支模式的数据,这为计算国内生产总值提供了重要信息。通常情况下,手工处理一个日志需要花费4-5个小时,并且需要一个庞大的编码团队来完成任务。人们可以清楚地看到用自动化取代人工操作的潜力,但这提出了一个重要的问题:如何衡量成功?
机器学习领域,有很多评价指标如准确度、精确度、召回率等。然而,从业务角度来看,这些数值不是那么有意义。例如,对于投资更换旧系统的企业来说,潜在收益通常是根据效率节省、生产成本、处理时间、数据质量来衡量的,在官方统计的背景下,是受访者负担。通常需要关于找到这些变量之间的权衡。因此,本文中将使用两组质量度量,并将解释如何在当前环境中将模型性能分数转换为业务性能。
对于数据捕捉,至少有两种可能的情景:
两种方案的优缺点评估如表2:
由于上述考虑,首选方案是风险更小的情景1。因为从研究角度更好的方案并不总是从商业角度更好的选择。
典型的,一个好的OCR,x的字符高度大约需要20像素。大多收据的文本大小为10pt,一个300dpi的分辨率大约产生20像素。因此,用于收据扫描的OCR通常设置为300dpi。
图像处理模块是用Python实现的。收据是从原始扫描中裁剪出来的。通过应用阈值算法、形态学变换、去噪、平滑边缘等方法来提高图像质量。处理一张收据的时间约在6-10秒。由于我们控制了扫描过程中的许多参数,图像增强通常不是必要的,除非用例的质量很低(褪色,有折痕)。
OCR是定位图像中的文本并将其提取为可编辑格式的过程。早期的OCR算法依赖于模式识别和基于规则的特征检测来识别字符。最近的算法引入了最先进的数据科学技术,例如长短期记忆(LSTM)等循环神经网络。LSTM模型在各种字体、类型(正常、粗体、斜体等)和图像质量的字符图像上进行训练。由于特殊字符,同样也因为LSTM模型学习不同语言的特征序列,因此这些模型是语言依赖的。
本文使用了最初由谷歌开发的开源Tesseract软件包,用于训练LSTM网络的数据包括大量由相机产生的降级图像。如果LSTM在特定的字符序列上失败,它可以退回到它的遗留识别器来做出决定。对于给定的文档,Tesseract输出文本块及其边界框的坐标。
格式良好的文件知道文本的位置足以抽取想要的信息,因此,几十年来,政府机构一直在使用OCR处理调查表格。然而,对于目前处理各种收据的应用程序来说,仅知道文本位置不足以定位有用的信息。图3是一张加拿大超市的收据,图4展示了有效信息如何被抽取并格式化到python的dataframe中。在macbook pro上,OCR需要约4秒,数据解析需要2-3秒。而人工处理通常需要5-10分钟,条形码是最难转录的。
为了解析并抽取有用的信息,我们使用模糊匹配和正则表达式。模糊匹配主要用于匹配商店名称,价格、条形码和日期使用正则抽取。为了衡量OCR的准确性,计算手工描述和OCR输出之间的Levenshtein距离。由于文本解析可能会错误地删除相关行或忽略删除不相关行,我们还计算每个收据的额外和缺失行数,作为衡量OCR正确性的一种手段。
使用字典识别商店,但是没有一个字典能够穷尽所有店名,因为新店总在开张。在人在回路系统中,机器将标记这些商店为“Unkown”来提示人类去更新字典。即使有人工干预来纠正OCR错误,与人工输入相同数量的信息相比,也可以预测在效率节约和处理速度方面的潜在收益。另一方面,人在回路确保数据质量维持在期望的水平上。
有些情况下,即使是最好的OCR引擎也会失败。例如,在Costco,检查购物车并划掉收据是一种常见的做法。笔触导致一些字符很难识别,从而拼错单词。自然语言处理提供了很多检查拼写和错误纠正的算法。在这个应用程序中,由于收据描述包含许多特定于商店的缩写,我们将Tesseract默认的英语字典替换为根据购买商品描述的历史记录构建的用户定义字典。我们目前的NLP自动校正无法很好的实现期望的数据质量,因此我们让人工介入进来纠正错误。
目的在于自动将购买物品的类别分到对应的个人消费用途分类,这可以通过监督机器学习实现。生产一个带标签的数据集来训练模型是人类最消耗资源的任务之一。生成一个有标签的数据集来训练模型是人类最消耗资源的人物之一。本文使用了一个389,432个条目的数据集,这些条目都是由经验丰富的HBS编码员标记。该数据涵盖了2017年、2018年和2019年的同一时期,以考虑季节性影响。这是一个多分类问题。COICOP(个人消费用途分类)包含约375类食品。这是一个概率过程,模型识别物品的类别,其置信度分数可用于接受或拒绝。从数据的性质来看,有可能存在类别不平衡的风险,而这在多分类任务中可能被放大。该模型可能在占主导地位的类上表现良好,但在训练集中代表不足的类上表现糟糕,因此仅使用准确性作为性能度量可能会产生误导。本研究使用加权指标(准确性、精密度、f分、回忆率)来捕捉更真实情况,同时作者定义了一个定制的性能指标,与业务角度更加贴合。如下图所示。
一旦知道了临界值,落在阈值左侧的物品要么被发送给人类编码员,要么在字典中查找。
作者使用了通过scikit-learn Python包实现的三种特征抽取方法:Countvectorizer(CV), 词级和字符级的Term Frequency-Inverse Document Frequency(TF-IDF-w, TF-IDF-c),以及流行的监督奇迹学习模型如偶素贝叶斯、逻辑回归、随机森林等。也测试了先进的词嵌入方法Embeddings from Language Models (ELMo)和FastText。FastText被作为监督模型和迁移学习的预训练模型。
在所有测试模型中,公认的LR和RF模型表现最好。使用逻辑回归的FastText嵌入仅产生接近68%的准确性。ELMo词嵌入显示了有希望的初步结果,但计算成本较高。一般来说,最先进的模型似乎更需要数据,所以在等待收集更多数据的同时,我们专注于在较小的数据集上表现更好的传统模型。为了平衡每个模型各自的弱点,作者使用集成学习架构,该架构应用软投票概念,根据平均预测概率选择最可能的预测。
最佳模型的拟合结果如表3所示,样例模型的特征绘制如图6。
表4显示了各种ML分类器在错误阈值范围内的业务性能指标。
正如预期的那样,自动化的百分比随错误阈值的增加而单调增加。最大的自动化率在错误率为5%时达到,自动化率为71%。使用LR或RF与Countvectorise特征提取结合的方式。
然而收据中的信息有时过于简洁,从而导致无法细致的分到具体类别,如鲜奶是简略的,但具体类别是全脂牛奶、脱脂牛奶还是半脱脂牛奶。对于这一类情况,预计它们的TF-IDF得分非常低,因此模型应该做出低置信度的预测。如果阈值正确设置,它们的置信度会小于阈值,从而被标记和发送给人类做进一步的判断,流程如图7所示。
一个罕见的产品或者新产品出现,机器的预测性能可能会不好。这种情况下,机器会给一个较低的置信度把它们标记出来,编码员进而手动对他们进行分类,分类结果被加进标签数据集用于模型的再训练。这是人在回路机器学习中的主动学习原则。当一个系统无法百分百的完成自动化时,允许人类参与到其中来保持更新。
虽然HCI文献中有很多很棒的UI示例,但大多数都是针对普通用户设计面向公众的应用程序。本研究中的接口设计是面向生产系统的,对于经过高度训练的调查编码员来说,约束条件应当是不同的,因此一般的用户体验(UX)最佳实践可能不适用。另一个区别在于接受程度。一个用户会在电影评分网站上可能是热情的,但员工对于人工智能技术是严肃的,他们害怕失业,所以会更挑剔。
为了设计一个适合于目的的系统,我们相信第一步是了解用户并采用以人为本的设计方法。为此,我们访问了编码团队,观察他们的日常工作,了解当前的业务流程。我们就他们喜欢什么和不喜欢什么进行了采访,并指出了需要改进的地方,得到结果如下:
针对上述问题,文章设计了如图8的UI。设计决策是与构建遗留系统的程序员和软件开发人员一致做出的,尽可能地再现原来界面的外观和感觉。
然而,这种UI设计并不意味着要按原样实现。事实上,虽然短收据看起来可以接受,但对于超过30件商品的长收据就不一定了。如果屏幕看起来太忙,可能会导致混乱和沮丧。因此,我们的目的是在第二阶段重新设计UI,在屏幕上一次显示一个项目,如图9所示。控制可以通过键盘和鼠标访问,因此用户可以切换,从而防止重复性劳损。
本文演示了政府机构如何用自动化取代其原始的手工流程。设计并实现端到端自动化管道,并讨论成功措施。为了避免重复工作,使用开源软件来利用公共知识,只有在找不到已知解决方案时才开发方法。文章使方法和代码公开可用,这样任何人都可以重用它们。
虽然我们强烈主张将自动化作为一种节省效率和加快处理时间的手段,但我们也承认,在某些情况下,我们需要人工干预来维持数据质量。因此,我们提出了一个人在循环的解决方案,采用以人为中心的方法设计用户界面,使人机交互在过程的每一步都紧密交织在一起。
在我们继续改进我们的方法的同时,我们还计划在后勤部门对更多的数据和在不同国家进行进一步的测试。主要目的是收集证据并进行成本效益分析,以支持投入生产的业务案例。这项工作将在建立能力的同时进行,以便将来用户能够操作和维护新系统。
[1] Benedikt L, Joshi C, Nolan L, et al. Human-in-the-loop AI in government: a case study[C]//Proceedings of the 25th International Conference on Intelligent User Interfaces. 2020: 488-497.