编辑导语:如今随着互联网技术的不断发展,并且加之很多科技的不断进步,如今算法也已经非常普及和成熟,产品经理在面对产品时会使用一些算法的机制;本文作者分享了关于产品经理如何快速测评新算法的思考,我们一起来了解一下。
在人工智能已经成熟商业化的今天,我们的生活被各种算法层层渗透,越来越多的产品无论是出于降本增效的目的,还是出于PR宣传的目的,都开始应用算法。
面对算法的应用,产品经理要应对的一个重要难题,就是对算法效果进行测评,尤其是面对一个新算法能力,测评会更加棘手。
为什么产品经理需要对算法做测评呢?
对于自研算法,仅有算法研究员自测的实验室指标是不够的,业务产品需要通过自己的测评来判断算法是否达到商用标准,同时也能与实验室指标形成对比,可以给算法研究员作为重要参考;对于外采算法,仅有供应商提供的算法精度报告也是不够的,我们更需要对多家供应商的算法做测评,再结合价格、售后服务等因素综合决定采购合作的供应商。
按照本文提供的框架,你可以“快速”完成对一个“新”算法的测评。
二、算法测评的基本原则在进入测评框架的讲述前,要先明确算法测评的四个基本原则,非常重要!
原则1:算法能力一致面对横向比较多个算法优劣的测评,必须保证待测评算法是解决同种问题或提供同种功能的。
原则2:样本用例一致同一个算法,在不同样本测试集上的指标表现是存在差异的,所以无论我们的测评是横向比较多家算法,还是纵向比较一家算法的多个迭代版本,都必须保证采用的样本测试集和测试用例保持完全一致,这样得出的指标数值才有可比较的意义。
如果A算法用a测试集,B算法用b测试集,这样得出的指标数值是没有可比较性的,因为测试集不同。
原则3:执行方式一致测评算法的所有操作方式和环境必须保证完全一致。
原则4:评价指标一致针对同种算法的测评,必须采用计算公式或统计口径完全一致的指标体系。
三、算法测评,拢共分几步1. 第1步:明确算法的能力范围面对一个新算法能力,首先要准确划定这个算法的能力范围和边界。
所谓能力范围和边界,就是这个算法能做什么不能做什么,这一点和业务需求是强相关的;所以明确算法能力范围,其实就是梳理业务对算法的需求,需求梳理完毕,算法能力范围也就清晰明了了。
业务对算法的需求通常可来自于三个方面,一是政策法规、二是客户需要、三是竞品分析;这里需要提示一点,如果想做到“快速”,就必须在满足业务需求的前提下,将能力范围最小化。
例如在笔者负责的业务中,需要对用户上传的身份证照片中的文字信息进行提取,同时还需要判断该身份证是原件/复印件/翻拍件。
通过对业务需求的梳理,我们已经得出了最小化的算法能力范围——身份证光学字符识别、身份证原件类型识别。
在市场上成熟的OCR算法厂商中,提供的能力不仅仅是上述两种,还包括证件反光提示、证件真伪判断等等,但基于最小化原则,我们不需要追求全面测评,只需要关注业务需要的能力。
2. 第2步:明确测评目的测评的目的无非就是得出一个好坏的结论,也就是相互比较。从比较类型的维度划分,一般会分为横向比较和纵向比较,横向是针对多个厂商的算法,纵向是针对同个算法的多个版本。
这里有个小提示,所有的测评,都必须要有基线作为参考,否则测评是没有意义的。简单来说,就是每次测评都必须是有两个或以上的结果且结果可比较。
算法能力的体现,也就是算法的能力类型,通常包括算法精度、算法性能、操作体验。
- 算法精度,是指在既定的测试集上,算法对样本判断、分析、预测的准确程度。
- 算法性能,是指在既定品牌型号的服务器上,算法对样本的处理速度。
- 操作体验,是指C端用户在设备上操作算法应用的难易程度。
综上,测评目的可通过对“比较类型”和“能力类型”的排列组合得出。
3. 第3步:明确测评的执行方式测评的执行方式分为批量跑测和端到端测试。
批量跑测,是指通过调用算法模型的相关接口,将准备好的测试样本批量送入模型,并批量得到模型返回结果的测试方式。
端到端测试,是指模拟用户真实使用场景,从用户设备端(手机、PC等)传入测试样本,直到算法服务端返回结果到用户设备端的测试方式。
针对精度和性能的测评,我们建议采用批量跑测的执行方式,数据准、效率高;针对操作体验的测评,一般只能通过端到端的执行方式,才能准确还原真实操作场景。
4. 第4步:明确样本类型和用例样本选取和用例设计是整个测评的核心,会直接影响测评结果是否能真实、客观、全面的反映算法能力。
不同算法在样本选取和用例设计上千差万别,但有几个小方法可以提供给大家参考:
1)全面覆盖
根据业务需求,样本和用例的设计要完整覆盖需要测评和需要被客观体现的算法能力。如何做到完整全面的覆盖?可以采用最小颗粒拆解方法。
2)最小颗粒
根据业务需求,将算法能力拆解到最小的颗粒度,逐一测评最小颗粒的原子能力。如何拆解原子能力呢?这里有个小技巧,就是多问几个“为什么”,其实就是拆解算法训练原理,再根据业务场景中实际会出现的情况,得出样本和用例。
以笔者上面提到的“证件是否为原件的检测算法”为例——
问:“为什么可以检测出图片中的证件是否为原件?”
答:“因为这个算法可以区分出复印件、翻拍件。”
问:“为什么可以区分出复印件?”
答:“通过图片颜色的判断。”
问:“为什么通过颜色就可以判定是复印件?”
答:“复印件有黑白复印件和彩色复印件,黑白复印件可以直接通过色值判定,而彩色复印件的成像颜色对比度一般比原件的对比度要低,且复印件的底色背景绝大部分都是白色。”
从上述的问答中,我们就可以拆解出该算法的样本和用例如下——
注:以上问答经过简化处理,方便理解。
3)单一变量
对算法每个原子能力点的测评,可采用控制变量法,同时为了确保能有效反映每个原子能力的客观结果,每组样本和用例都要保证只有一个变量发生改变;因为在同一个用例中存在多个变量发生改变,我们很难区分算法得出的测试集结果是由哪些变量引起的,不利于后期结果分析。
当然,如果有特殊需要,在能够明确区分变量影响的情况下,也可以采用多变量变化测试。
4)侧面转换
当面临某些算法能力我们无法直接测评时,可采用转换法,将无法直接测评的能力转换为与该能力有直接关系且可测评的其他能力,从而侧面验证该算法能力的效果。
5. 第5步:明确评价指标和计算公式面对一个新算法,最快了解这个算法评价指标的方法,就是“问”。自研算法的,可以问算法研究员;外采算法的,可以问多家算法供应商,综合选择评价指标。
1)算法精度指标
精度指标因算法而异,一般可分为两种类型:绝对指标和相对指标。
绝对指标通常就是准确率,是测试集算法处理结果与测试集真实结果差异的百分比计算,目前笔者接触过的绝对指标有FAR、FRR、召回率、字符准确率。
相对指标是指设定一个基准算法,锚定该算法的绝对指标准确率为100%,计算其他算法相对于这个基准算法在指标上的差异,相对指标一般会采用均方根误差(标准误差)作为结果。
可以这么理解,统计绝对指标时,需要对测试集进行人工标注,即得到测试集真正的标准答案;统计相对指标时,不需要对测试集进行标注,而是直接以基准算法测试的结果为标准答案。基于此我们可以得出一个小窍门,采用相对指标进行测评会更新快速,因为省去了人工标注的环节,但是测评结果会在客观性上存在一定偏差。
2)算法性能指标
通常包括,并发、QPS、吞吐量、耗时。
3)操作体验指标
通常包括,页面数、事件数、转化率、可用率、转化率、操作时长。
指标制定还需注意一个小细节,就是要明确指标评判好坏的逻辑,而且尽量保证所有指标的好坏逻辑一致;例如有a、b、c三个指标,他们的评判逻辑是数值越高表示效果越好,而有d指标,评判逻辑是数值越低效果越好,这样对阅读者来说是非常不友好的。
6. 第6步:撰写测评报告在执行完所有测试用例后,就要整理测试数据以及形成可阅读的测评报告。
以下是测评报告的章节框架,供大家参考:
1)测评背景和目标
描述发起该测评的项目背景,以及在这个背景下,该测评想要到达什么目的。
我们往往很容易忽略对背景的分析,其实这是不对的。深入了解项目背景,可以让我们准确理解项目的起因由来,从而有利于我们更准确的理解业务和需求,能够更准确的划定各种事项边界。
试问,如果我们对一个项目为什么要做都没能理解到位,那如何能准确的评估需求呢?
2)业务需求解读
需求的解读我们在第1步的描述中讲过,一般可来自于三个方面,一是政策法规、二是客户需要、三是竞品分析;通过这三个方面的分析,推导出需求功能。
3)竞品/供应商能力分析
对竞品的功能,或者对供应商的功能做全面的剖析。
4)测评方案描述
描述样本类型、用例设计、执行方式、评价指标(指标定义+评判逻辑)。
5)测评指标结果
展示经过统计后的各项指标数值,是测评结论的客观依据。
6)测评结论
针对指标结果,给出总结性的结论,结论需要与测评目的(目标)相呼应。
认知浅薄,欢迎讨论。
本文由 @山鸡Samson 原创发布于人人都是产品经理,未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议