前言
注:大概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算法测评可能遇到的问题?
由于算法测评属于算法质量保障一块,可以放在质量部,同时算法测试要求对算法有较多理解,也可以放在研发部门。由于算法测试岗位属于起步阶段,还存在一些问题:实际场景数据不足、算法技术方案的变更、算法指标、测试质量保证。
实际场景数据不足:有时项目所有者不能获取实际场景数据,或者不能够获取多样性充足的数据,导致测试数据对实际场景覆盖不足,从而测试结果不能有效反映实际真实指标。
算法技术方案的变更:由于在项目立项对算法的技术方案评估不足或者产品需求侧需求发生变更导致算法的技术方案变更,从而导致之前采集的数据不可用或之前创建的自动化标注和分析流程不可用。前期做的一些工作几乎不可使用,或可使用的太少。此时对测试代码的模块化设计显得非常必要了。
算法指标:通常说的算法指标更多是针对单点算法,在业务场景更多是多种算法的集成,或者业务算法的测评指标与研发时的测评细节有差异导致相同指标不同数值等。此时需要多与算法研发人员和产品测沟通。
测试质量保证:很多时候跟算法相关的指标定义本身存在理解偏差,业务人员理解的指标和研发人员理解的指标不是同一个概念,或者说算法指标不能很好反映实际场景算法的性能,从而导致算法测试的结果无法得到有效保证。
- AI算法测评(二)--算法测试流程
根据算法测试过程中遇到的一些问题和管理规范, 梳理出算法测试工作需要关注的一些点: 编号 名称 描述信息 备注 1 明确算法测试需求 明确测试目的 明确测试需求, 确认测试需要的数据及场景 明确算法服 ...
- 浅析初等贪吃蛇AI算法
作为小学期程序设计训练大作业的一部分,也是自己之前思考过的一个问题,终于利用小学期完成了贪吃蛇AI的一次尝试,下作一总结. 背景介绍: 首先,我针对贪吃蛇AI这一关键词在百度和google上尽心了检索 ...
- H5版俄罗斯方块(3)---游戏的AI算法
前言: 算是"long long ago"的事了, 某著名互联网公司在我校举行了一次"lengend code"的比赛, 其中有一题就是"智能俄罗斯方 ...
- AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 聊聊找AI算法岗工作
https://blog.csdn.net/weixin_42137700/article/details/81628028 首先,本文不是为了增加大家的焦虑感,而是站在一名学生的角度聊聊找AI算法岗 ...
- 游戏人工智能 读书笔记 (四) AI算法简介——Ad-Hoc 行为编程
本文内容包含以下章节: Chapter 2 AI Methods Chapter 2.1 General Notes 本书英文版: Artificial Intelligence and Games ...
- 阿里开源新一代 AI 算法模型,由达摩院90后科学家研发
最炫的技术新知.最热门的大咖公开课.最有趣的开发者活动.最实用的工具干货,就在<开发者必读>! 每日集成开发者社区精品内容,你身边的技术资讯管家. 每日头条 阿里开源新一代 AI 算法模型 ...
- Java五子棋小游戏(控制台纯Ai算法)
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...
- AI算法工程师炼成之路
AI算法工程师炼成之路 面试题: l 自我介绍/项目介绍 l 类别不均衡如何处理 l 数据标准化有哪些方法/正则化如何实现/onehot原理 l 为什么XGB比GBDT好 l 数据清洗的方法 ...
随机推荐
- Eclipse配置反编译
Eclipse配置反编译 之前用IDEA一直让我很喜欢的点就是,什么东西都自动集成,下载.但是终归是学(po)习(jie)版,在正式企业开发中,要小心版权的问题(公司给你买了当我没说).抛开插件能 ...
- JVM 垃圾回收?全面详细安排!
写在前面: 小伙伴儿们,大家好!今天来学习Java虚拟机相关内容,作为面试必问的知识点,来深入了解一波! 思维导图: image-20201207153125210 1,判断对象是否死亡 我们在进行垃 ...
- 测试window安装的客户端
1.win10 安装了客户端,测试一下,
- 【题解】「CF1352A」Sum of Round Numbers
应该是纯模拟吧. 直接输入一个字符串,然后一位一位看,如果不是0,就 k++,并计算这个数的真实的值,最后输出就行了. #include<iostream> #include<cst ...
- 转:什么是Shingling算法
shingling算法用于计算两个文档的相似度,例如,用于网页去重.维基百科对w-shingling的定义如下: In natural language processing a w-shinglin ...
- Android开发系列全套课程
学习地址 https://pan.baidu.com/s/12Ljy-TDL5-P0AsYdTxGw5w#list/path=%2F
- 面试级解析HashMap
------------恢复内容开始------------ 在介绍HashMap之前,有必要先给大家介绍一些参数的概念 HashMap的最大容量,capacity译为容量,capacity就是指Ha ...
- 用 Java 训练出一只“不死鸟”
作者:Kingyu & Lanking FlappyBird 是 2013 年推出的一款手机游戏,因其简单的玩法但极度困难的设定迅速走红全网.随着深度学习(DL)与增强学习(RL)等前沿算法的 ...
- Gradle 是干什么吃的?
Gradle维基解释:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.当前其支 ...
- tep用户手册帮你从unittest过渡到pytest
unittest和pytest是Python的2个强大的测试框架,经常用来做UI自动化或接口自动化.unittest是PyCharm的默认集成工具,也是我们大多数人入门自动化的首选框架.pytest提 ...