当前位置: 首页 > 编程日记 > 正文

人工干预如何提高模型性能?看这文就够了!

作者 | Preetam Joshi

译者 | 吴家帆

出品 | AI科技大本营(ID:rgznai100)

有一些行业对误报非常敏感,如金融行业,在对信用卡欺诈检测时,如果检测系统将用户的行为错误地分类为欺诈,这将对该金融机构的声誉产生负面影响[1]。又如在医学领域对癌症诊断时,对假阳性反应是很敏感的[3]。另外,在使用 GPT-3 等模型时,自动和客户聊天的机器人,其回复的文本不应该包含一些不合时宜的语言[2]。

下面我先从使用机器学习模型来推理系统入手,再展开人工干预的推理循环的技术介绍。

基于模型的推理

图1. 经典模型推断系统

上述为典型的信用卡欺诈用例机器学习模型,是系统和事件序列的简化视图,仅由模型负责决定给定活动是否为欺诈行为。

如何选择阈值?

阈值的大小是根据精度和召回率的要求来选择[5]。在图1的示例中,精确度定义为正确预测的欺诈活动数(真阳性样本数)除以预测为欺诈的活动总数(真阳性样本数+假阳性样本数)。召回率定义为正确预测的欺诈活动的数量(真阳性样本数)除以正确预测为欺诈的活动数量的总和,以及预测为不欺诈的实际欺诈活动的数量(真阳性样本数+假阴性样本数)。

为实现系统目标,我们需要在精度和召回率之间进行权衡。图2展示的精确率-召回率(PR)曲线是一个有效工具。

图2.精确率-召回率(PR)曲线

在较高召回率下,精度是如何降低的?当召回率为 0.72 时,精度逐渐降低到约为 0.4。为了捕获 70% 的欺诈案件,可能产生大量假阳性样本,精确率达 40%。对于这种情况,假阳性的数量是不可接受的。在合理的召回量下需要实现更高的精度,因此从图1开始,我们需要大于0.99的精度率。

尽管我们选择了更高的精度进行权衡,但在 0.99 的精度率下,召回率为 0.15,远远不够的。下面我们讨论下如何利用人工干预下,以更高的召回率实现更高的精度。

人工干预

图3.通过人机交互来提高模型性能

增加召回率的一种方法是在推理循环中人工干预。如此一来,模型置信度较低的运算结果子集将被发送给人工代理进行手动检查。当选择确定有资格作为不明确的预测子集阈值时,该考虑将多少样本交给人工代理,毕竟人力资源成本往往更贵。所以为了帮助选择阈值,可以下图:

图4.精确召回阈值曲线

在上述案例里,假设分数接近 1.0 表示正标签(欺诈),分数接近0.0表示负标签(非欺诈)。图4中显示了两个区域:

  1. 绿色区域表示正样本标签的高置信度区域,即允许进行模型自行决策,并且所得到的模型精度是可以接受的(受影响的终端用户通常可以容忍较低的假阳率)。

  2. 黄色区域表示正样本标签的置信度低的区域,在该区域中,模型自动决策的精度水平是不可接受的(假阳率很高会对业务产生重大负面影响)

黄色区域是人工干预通过手动检查提高精度的区域范围。可以使用相同的方法处理负样本标签:接近0.0的区域是高置信度区域。黄色区域中的所有项目或项目子集可进行手动检查。在人工检查过程中,人工代理决定该样本识别的最终结果。关键假设是,在对歧义案件做出决策时,人为因素要优于机器学习模型。

但由于人力资源稀缺,因此在选择阈值时,发送给人工代理的请求量是重要的考虑因素。图5展示的是针对阈值绘制的数量和召回率的示例。“数量”的定义为每小时将发送给人工代理进行检查的项目数。从图5可以看出,阈值为0.7的数量为16,000个项目(每小时)。

图5.容量图(每小时请求数量)和针对阈值的调用

图4和图5中的两个曲线图都可用来满足可接受的人工复查量,选择合适的阈值来满足期望召回率。让我们快速练习下,在召回率为0.59(阈值0.7)时,复查量(请参见图5)约为每小时16K个项目。在相同的召回率水平下,模型精度约为0.6(见图4)。假设人员代理池的容纳量为每小时16K件商品,并且还假设人员代理的准确性和召回率是95%,经过人工审查后,召回水平为0.59时所得到的精度将介于0.95和0.99之间。使用这设定,我们能将召回率从0.15提高到0.56(0.59 [模型] * 0.95 [人]),同时保持大于0.95的精确度。

使用人工干预的最佳做法

为了获得高质量的人工检查,为人工代理建立明确定义的培训是很重要的,人工代理将负责人工检查项目。培训计划和定期反馈循环将有助于长期保持人工检查项目的高质量,有助于最大程度地减少人为错误,维持每个项目决策的SLA要求。

另一种开销稍微大的策略是安排三个人工代理对同一项目进行审查,并从这三个代理的决策结果中进行多数表决来确定最终结果。

在微服务的实践也适用上述方法,这包括对以下内容的适当监视:

  • 从系统中收到商品到对商品做出决定的时间

  • 代理池的整体运行状况

  • 发送给人工审查的项目数量

  • 每小时的项目分类统计

由于各种原因模型精度和召回率可能会随时间变化[4]。重要的是要通过跟踪精确/召回率来重新访问选定的阈值。

刚才我们回顾了涉及人工干预的机器学习推理系统如何在保持较高精确度的同时,帮助提高召回率。这种方法在对假阳性敏感的业务场景案例中特别有用。精确率-召回率阈值曲线是选择人工审查和自动模型决策的阈值的好工具。但是涉及人工代理会导致开发成本增加,并可能导致增加正在经历快速增长的系统的瓶颈区域。我们需要各方面评估和权衡。

参考文献:

https://fcase.io/a-major-challenge-false-positives/#twelve

https://spectrum.ieee.org/tech-talk/artificial-intelligence/machine-learning/in-2016-microsofts-racist-chatbot-revealed-the-dangers-of-online-conversation

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5992010/

https://arxiv.org/abs/1906.02530

https://en.wikipedia.org/wiki/Precision_and_recall

作者简介:Preetam Joshi 是 Netflix 高级软件工程师,致力于应用机器学习和机器学习基础架构。他过去曾在Thumbtack和Yahoo工作,他在佐治亚理工大学计算机学院获得了理学硕士学位。

Mudit Jain 是Google的软件工程师,致力于针对GoogleCloud Platform的AutoML NLP。他曾在微软工作。他在坎普尔的印度理工学院获得了计算机科学与工程的技术学士学位。

原文链接:https://www.kdnuggets.com/2021/04/improving-model-performance-through-human-participation.html

声明:本文由AI科技大本营翻译,转载请注明来源。

更多精彩推荐
☞混沌、无序、变局?探索之中,《拟合》开启☞深入浅出,机器学习该怎么入门?☞好看又好用的 GUI,你需要这七个 Python 必备库
点分享点收藏点点赞点在看

相关文章:

一种无需留坑为页面动态添加View方案

在Activity或Fragment页面动态添加View,有其应用场景,比如配合运营在首页动态插入H5活动页(如下图手淘的雪花例示[1]),在页面头部插入通知View等。本文结合ActivityLifecycleCallbacks[2]及DecorView使用,为类似需求提…

边缘加速创新和AI应用,Xilinx推出Kria自适应系统模块产品组合

为了帮助开发者更容易使用FPGA和SoC的功能,赛灵思在开发工具上做了不少的投入,自适应系统模块(SOM)产品组合就是其中之一。 近日,赛灵思宣布推出Kria™自适应系统模块( SOM )产品组合&#xff…

windows计算器

using System; using System.Drawing; using System.Windows; using System.Windows.Forms; using System.Collections; using System.ComponentModel; using System.Data; namespace comput{ /// <summary> /// 这是一个计算器的简单实现。 /// </summary&…

哈夫曼树的构造

[转载于网易博客&#xff0c;具体地址不详] 构造哈夫曼树的过程是这样的 一、构成初始集合 对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F{T1,T2,T3,...,Ti,...,Tn}&#xff0c;其中每棵二叉树Ti中只有一个权值为Wi的根结点&#xff0c;它的左右子树均为空…

物联网时代全面降临

从智能建筑到零售&#xff0c;英特尔物联网解决方案可以说是华丽丽地惊艳着大家的大脑和眼球&#xff0c;一切的不可能似乎都在朝着可能的方向努力着。在2015 MWC上&#xff0c;英特尔再次用各种神奇的物联网设备告诉大家&#xff1a;物联网时代已经来临。 “半边天”的力量&am…

Linux C++/Java/Web/OC Socket网络编程

一&#xff0c;Linux C Socket网络编程 1.什么是TCP/IP、UDP&#xff1f; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;即传输控制协议/网间协议&#xff0c;是一个工业标准的协议集&#xff0c;它是为广域网&#xff08;WANs&#xff09;设…

ASP.NET抓取其他网页代码

在.Net 平台下&#xff0c;创建一个ASP.Net的程序 1、引用两个NAMESPACE using System.Text //因为用了Encoding类 using System.Net //因为用了WebClient 类 2、整个程序用了三个控件 txtUrl //输入你要获取的网页地址 TEXTBOX控件 txtBody //得到你要获取的网…

特斯拉遇上 CPU:程序员的心思你别猜

作者 | 码农的荒岛求生来源 | 码农的荒岛求生图源 | 视觉中国18世纪流水线的诞生带来了制造技术的变革&#xff0c;人类当今拥有琳琅满目物美价廉的商品和流水线技术的发明密不可分&#xff0c;因此当你喝着可乐、吹着空调、坐在特斯拉里拿着智能手机刷这篇文章时需要感谢流水线…

《算法技术手册》一2.4.6 二次方的算法性能

2.4.6 二次方的算法性能 现在考虑一个类似的问题&#xff1a;两个n位的整数相乘。例2-4展示了使用小学课堂上学过的算法实现的乘法运算&#xff0c;其中n位数字的表示方法与之前的加法一样。 例2-4&#xff1a;mult乘法的Java实现 public static void mult (int[] n1, int[] n2…

如何使用 OpenCV 实现图像均衡?

来源 | 小白视觉志头图 | 下载于视觉中国我们已经练习了很多图像处理——操作图像&#xff08;精确地说是图像矩阵&#xff09;。为此&#xff0c;我们探索了图像的均衡方法&#xff0c;以便在一定程度上增强对比度&#xff0c;以使被处理的图像看起来比原始图像更好&#xff0…

《中国人工智能学会通讯》——1.42 理解情感

1.42 理解情感 安德鲁摩尔认为&#xff0c;人工智能能“感受”人类情感是人工智能研究领域最重要、也最先进的一个方向。扬波利斯基认为&#xff0c;计算机能够理解语言的能力最终会向人和计算机“无缝沟通”的方向发展。 越来越精准的图像、声音和面部识别系统能让计算机更好探…

matlab中help所有函数功能的英文翻译

doc funname 在帮助浏览器中打开帮助文档help funname 在命令窗口打开帮助文档helpbrowser 直接打开帮助浏览器lookfor funname 搜索某个关键字相关函数demo 打开视频教程 转http://blog.renren.com/share/239121107/690877048 里面有些不全的&#xff0c;自己用到的已添加…

C# 静态构造函数

&#xff08;1&#xff09;用于对静态字段、只读字段等的初始化。 &#xff08;2&#xff09;添加static关键字&#xff0c;不能添加访问修饰符&#xff0c;因为静态构造函数都是私有的。 &#xff08;3&#xff09;类的静态构造函数在给定应用程序域中…

破解数据流通痛点,华控清交的隐私计算之道

从无序中寻找踪迹&#xff0c;从眼前事探索未来。 正值 IT 黄金十年新开端&#xff0c; CSDN 欲以中立技术社区专业、客观的角度&#xff0c;深度探讨中国前沿 IT 技术演进&#xff0c;现在推出年度重磅企划栏目——「拟合」&#xff0c;通过对话企业高管大咖&#xff0c;跟踪报…

mac系统添加VSCode到右键菜单(转)

转自&#xff1a;https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001470969077294a6455fc9cd1f48b69f82cd05e7fa9b40000 在Mac系统上&#xff0c;Finder选中一个目录&#xff0c;右键菜单并没有“通过Code打开”这个操作。不过我们可以…

在 C# 中通过 P/Invoke 调用Win32 DLL

&#xff0c;.NET Framework 1.0 或 1.1 版类库中存在任何 Windows 所没有的功能限制都不足为怪。毕竟&#xff0c;32 位的 Windows&#xff08;不管何种版本&#xff09;是一个成熟的操作系统&#xff0c;为广大客户服务了十多年。相比之下&#xff0c;.NET Framework 却是一个…

xp/2003开关3389指令

开启3389&#xff1a; echo offtitle 开启3389clsrem 开启3389reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f >nulecho.echo 提示你&#xff1a;3389已经开启 关闭3389&…

TIOBE 新榜单:Python 超越 Java 重回第二,Rust 崛起

作者 | 苏宓出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;TIOBE 官方最新发布了 5 月的编程语言榜单&#xff0c;不妨一起来看一下本月榜单中又有哪些最新的变化呢&#xff1f;Python 重回第二和 4 月相比&#xff0c;本月榜单的 TOP 10 中变化最大的非 Python 与…

Docker编排工具Fig介绍

本文讲的是Docker编排工具Fig介绍&#xff0c;【编者的话】Fig是一个基于Docker的用于快速搭建开发环境的工具&#xff0c;目前Fig团队已经加入Docker公司。Fig通过一个配置文件来管理多个Docker容器&#xff0c;非常适合组合使用多个容器进行开发的场景。Fig可以和Docker一起来…

java调用ffmpeg,mencoder进行视频转换,读取时长等

2019独角兽企业重金招聘Python工程师标准>>> 以前做的一个基于ffmpeg的视频格式转换的程序&#xff0c;现在抽空整理一下&#xff0c;很多地方都是从别的大神那借鉴的&#xff0c;只是把自己的觉得有用的&#xff0c;对别人有帮助的拿出来分享分享&#xff0c;下面是…

数字人民币实现可控匿名交易?产业升级离不开安全可信的“数字底座”

自央行进行数字人民币试点测试工作以来&#xff0c;人们讨论最多的可能是它的便捷性、匿名性。不过&#xff0c;它的意义远不止于人类个体层面。 作为一种面向未来的货币形式&#xff0c;在未来数字经济时代&#xff0c;央行数字人民币的普及无疑将加速全球资产数字化和身份数…

apache+tomcat 搭建负载均衡系统

apachetomcatmod_jk 搭建负载均衡系统。0.os系统采用centos6.8 x64 2.6.32-642.el6.x86_641.首先安装好jdk环境本次采用jdk-8u111-linux-x64.gz jdk和jre的安装目录要不同&#xff0c;否则的话lib目录下没有dt.jar 和tools.jar 要配置好环境变量如下 vi /etc/profile #ad…

从普本到北大:我的跨校跨专业考研经验

首先做一个我考研情况的简介。 经历了2013年考研的混战&#xff0c;据说是史上考研人数顶峰的年份&#xff0c;因为2014改革&#xff0c;不再有自费生之后&#xff0c;人民群众对于所谓学术硕士的需求量激减&#xff0c;继 而投奔价格费用相当&#xff0c;读书年份较少的专业硕…

C#中使用DirectX编程

我感觉声音的播放比较简单。我们从播放声音开始。为什么我这么觉得&#xff1f;我也不知道。这里是展示最最最最最简单的DirectX播放声音的例子&#xff0c;我尽量省略了无关的代码。最后的代码只有19行&#xff0c;够简单了吧&#xff1f; 准备工作&#xff1a;1.安装了Direc…

40+场面试,100%通过率,我想分享的14条经验

来源 | 陈同学在搬砖头图 | 下载于视觉中国大家好&#xff0c;我是陈同学&#xff0c;首先来一个简单的自我介绍和个人的经历分享。我的本科和硕士均就读于哈工大&#xff0c;在研究生期1年时间内自学操作系统、计算机网络、C、数据结构等&#xff0c;累计学习30本书、500博客文…

云端卫士架构师讲DDoS攻击的智能防御之道

DDoS即分布式拒绝服务攻击&#xff0c;这是一场关乎资源的较量&#xff0c;攻击者通过自己控制的大量僵尸主机&#xff0c;向目标设施&#xff08;服务器、运营商网络和基础架构等&#xff09;发起洪水猛兽般的流量型攻击&#xff0c;或是连绵不绝的应用型攻击。 如果将受害者比…

C#中方法参数的四种类型

C&#xff03;中方法的参数有四种类型&#xff1a;&#xff0d;值参数&#xff1a;不含任何修饰符。方法中的形参是实参的一份拷贝&#xff0c;形参的改变不会影响到内存中实参的的值&#xff0c;实参是安全的。&#xff0d;引用参数&#xff1a;以ref修饰符声明。传递的参数实…

赠书 | 算力时代,用 Python 来快速解决复杂问题

Python作为一种编程语言&#xff0c;拥有简洁、高效的表达能力。与此同时&#xff0c;Python语言环境中还配备各种软件库&#xff0c;即模块。结合实际问题&#xff0c;选择适当的模块&#xff0c;便可生成简单、快速、正确的程序。书中列举了一些数值计算的简单例题&#xff0…

用for实现Go的while和do...while

Go的while和do...while实现 Go语言没有while和do...while语法&#xff0c;我们可以通过for实现&#xff1a;即break在业务代码执行前相当与while&#xff0c;break在业务代码执行后相当do...while while for {if condition {break}xxxxxxxx } do...while for {xxxxxxxxif cond…

DTCC:数据库安全重点在数据拷贝过程中

本文讲的是DTCC&#xff1a;数据库安全重点在数据拷贝过程中&#xff0c;2017年5月11日-13日&#xff0c;2017中国数据库技术大会于北京国际会议中心盛大开幕。作为国内最受关注的数据库技术大会&#xff0c;本届大会以“数据驱动价值发现”为主题&#xff0c;汇集多个领域的百…