前言
注:大概2017年-2018年国内人工智能热度达到顶峰,随后热度开始逐渐减少。2018年前人工智能被投资界、学术界、工业界和媒体炒的特别热,各大企业都想尝试一下深度学习技术在业务场景的应用。试水后大家发现人工智能技术离真正地落地应用还有很远路要走,之后便是人工智能开始逐步降温。本人做过计算机视觉相关的业务算法应用研发,感觉做研发的算法总是存在这样那样的不足,很多时候无法满足产品实际应用的高要求。我想可能因为做过的项目不是特别多或对业务或者对项目理解不足,导致我对人工智能存在一些负面看法。为此,我想多了解除计算机视觉算法的应用外与计算机视觉并行的分支--自然语言处理(包括语音识别和语音合成),我做了一些算法测试相关的工作。以下是做了两个月的算法测试后的个人感受及总结,希望能对一些人有一些帮助。(可能会有一些观点或看法有些欠妥,欢迎大家评价讨论。由于评论需要登录博客园账号,如果不想注册博客园账号,欢迎把意见或建议发送到邮箱:pojason603@163.com)
1. 为什么需要AI算法测评?
现在的AI算法依旧是依赖大量的数据进行模型训练以获取一个实际效果较好的模型,由于种种原因无法获取真实应用场景足够多的数据。即使能够获取大量真实场景数据,数据同质化较为严重,对模型性能的提升非常有限,在算法应用落地时,需要解决大多数问题或需要知道算法模型的性能边界,此时需要对算法进行评测以客观有效地反应算法的性能表现,为产品负责人和算法研发人员提供有效参考。a.从算法模型训练的角度看,深度模型训练需要大量的数据,获取足够多的测试数据以得到模型的性能表现有些困难,于是需要较为专业的算法测试以获取算法的真实性能表现;b.业务人员需要了解算法在实际场景中的表现,以对算法进行验收;c.算法研发人员需要知道算法在实际场景应用中的具体细节表现,以改进算法模型更好地服务业务。
2.AI算法测评的工作内容是什么?
算法测评工作内容包括:a.与算法和产品一起确定算法需求的实际应用场景;b.确定算法的评测方案及指标;c.确定测评数据量及采集方案,并进行采集;d.算法模型发版后对模型进行评测及分析。
3.AI算法测评的参考标准是什么?
软件测试更侧重于功能测试,测试软件是否正确实现了需求功能,以及执行效率如何。算法测试侧重算法本身的性能,主要测试算法功能点在目标应用场景的实际性能表现,测试指标结果参考立项时对应的算法指标,确定算法是否满足产品要求。通常产品人员对算法的应用场景理解不足,导致在算法指标确定时,尽可能高的同时适用算法应用场景下所有情形,从未导致算法指标设置偏高。然而在实际项目应用中,能够明确算法指标的也不是很多,此时需要多与产品人员和算法人员进行沟通来解决目标问题。在参考标准或指标不确定的情况下,输出的算法质量无法有效保障。
4.AI算法测评的工作职责是什么?
算法测评的工作职责确保产品中的算法模块能够有效满足产品设定指标,同时确定算法本身的性能边界,为后续算法优化和业务人员提供有效帮助。
6.AI算法测评如何保证测试质量?
算法测试与算法研发整体上要求一致,确定产品实际应用场景,获取实际场景数据,然后进行模型训练和评估。算法测试的质量保证需要从产品应用场景,数据采集方案、实际场景数据和测试分析等四个方面进行保证。产品应用场景决定了该场景可能出现的问题,算法为解决该场景中的问题而研发,从而算法测试也应该是正对该场景进行测试,满足产品负责人对算法在该场景下实际性能表现客观了解。在充分理解产品实际应用场景后,需要采集该场景下的数据进行测试。设计一个逻辑上非常严谨的数据采集方案相对容易,通常过于严谨的数据采集方案具有巨大的时间和人体成本,设计一个能够较少采集数据,但又能客观评价算法性能的数据采集方案非常重要。有了数据采集方案后,便是数据采集,然而在实际应用中采集的数据比数据采集方案中预想的要少,此时需要评估采集的数据能够反映产品应用中的哪些问题,以及哪些问题没能有效数据进行评估。
7.AI算法测评自动化测试的可行性?
由于算法评测数据采集需要根据产品需求而定,因涉及场景理解无法实现自动化;能够自动化的部分就剩下数据标注和结果分析自动化。数据标注结果可以使用人工进行标注,也可使用模型进行自动化标注或使用模型辅助半自动化标注。根据任务类型复杂程度和精度要求,确定是人工标注还是自动化标注。测试任务较为紧急且对最后结果要求不是很高,可以自动化数据标注。 然而为了保证测试质量,对标注数据的准确率要求很高, 以此客观真实反映算法的性能。测试结果分析自动化是对算法模型输出结果与真实结果之间比较分析。待任务整体确定下来后便可对结果分析自动化,随着算法版本的迭代,结果分析模块可以增加细分程度。建议构建结果分析模块时设计好整体框架,把后续可能的增加的扩展考虑进去。
8.AI算法测评工作中需要沟通的相关方有哪些?
算法测试主要涉及到算法研发人员、产品需求方、项目管理方、算法测试人员。测试方需要与算法研发人员确定算法相关细节,便于后续结果分心给出更多有意义的建议和结果;与产品需求方确定算法应用场景的细节和算法具体的测试方案,以及场景数据问题;与项目管理方确定和沟通算法发版和提测任务时间节点。在项目立项初期可能还涉及研发负责人和项目负责人,主要是算法需求和算法技术实现需求的评审,算法需求评审通过后,需要评审算法技术实现可行性进行评估,最后确定算法的应用场景和算法指标。
9.AI算法测评可能遇到的问题?
由于算法测评属于算法质量保障一块,可以放在质量部,同时算法测试要求对算法有较多理解,也可以放在研发部门。由于算法测试岗位属于起步阶段,还存在一些问题:实际场景数据不足、算法技术方案的变更、算法指标、测试质量保证。
实际场景数据不足:有时项目所有者不能获取实际场景数据,或者不能够获取多样性充足的数据,导致测试数据对实际场景覆盖不足,从而测试结果不能有效反映实际真实指标。
算法技术方案的变更:由于在项目立项对算法的技术方案评估不足或者产品需求侧需求发生变更导致算法的技术方案变更,从而导致之前采集的数据不可用或之前创建的自动化标注和分析流程不可用。前期做的一些工作几乎不可使用,或可使用的太少。此时对测试代码的模块化设计显得非常必要了。
算法指标:通常说的算法指标更多是针对单点算法,在业务场景更多是多种算法的集成,或者业务算法的测评指标与研发时的测评细节有差异导致相同指标不同数值等。此时需要多与算法研发人员和产品测沟通。
测试质量保证:很多时候跟算法相关的指标定义本身存在理解偏差,业务人员理解的指标和研发人员理解的指标不是同一个概念,或者说算法指标不能很好反映实际场景算法的性能,从而导致算法测试的结果无法得到有效保证。