智能算法系统评估

2018年9月10日
智能算法系统如何评估?
  • 算法模型的评估:

主要衡量模型对未知新数据的预测能力,即泛化能,衡量泛化能力的指标(也叫模型的性能度量): 1.1   准确率(accuracy) :对于给定的数据集,正确分类的样本数占总样本数的比率。 1.2   精确率(precision)==查准率:对于给定的数据集,预测为正例的样本中真正例样本的比率。 1.3 召回率( recall)==查全率,对于给定的数据集,预测为真正例的样本占所有实际为正例样本的比率 1.4 ROC与AUC —分类算法评价指标  F1值 是精确率和召回率的调和均值 1.5 MSE(均方误差),RMSE(均方根误差),MAE(平均绝对误差)、R-Squared(拟合度) —-回归算法评价指标
  • 鲁棒性、健壮性测试:

1. 测试算法多次运行的结果的稳定性,比如同一个输入,多次执行的输出结果不一样就比较麻烦; 2. 数据输入值发生微小变化时,输出的变化是否很大,如果很大表示算法不是很稳定; 3. 适应性–适应变化的输入和各种数据类型。 对抗性样本 adversarial examples:在数据集中通过故意添加细微的干扰所形成输入样本,受干扰之后的输入导致模型以高置信度给出错误的输出。 4. 数据集分布发生迁移对算法运行的影响;
  • 系统测试

把算法模型代码作为一个整体,和常规的系统一样测试   1. 场景符合度 满足用户场景的需求  2.计算复杂度,时间成本 响应时间 response time:  在给定的软硬件环境下,深度学习算法对给定的数据进行运算并获得结果所需要的时间。 3. 系统模块监控 和正常系统模块一样,监控资源利用率等 4、可移植性: 软硬件平台依赖对算法运行的影响: 深度学习框架差异,   操作系统差异,  硬件架构差异
  •  接口测试

和常规的系统模块类似,观察算法模块之间的交互数据是否符合预期;
  •  竞争分析测试

针对竞争产品做对比测试,参考上述维度做对比优劣, 比如 AI 音箱产品

测试数据

测试人员很大一部分工作就是在准备测试数据,尽量和线上环境保持一致, 比如收集大量的图片, 大量的语料,并且还需要打好标签, 工作量比较大;而且用户量变大后,数据集分布可能会演化,而导致原有算法性能下降,需要定期用新的数据重新训练算法模型,因此测试集的选择非常重要 a. 测试集和训练集的分布一致 比如都包含 美国的X数据,印度的X数据等, 不能是测试集用美国数据,而训练集使用印度数据 b. 测试数据的数量和训练数据数量的比例合理 数据量比较小时,可以是7:3左右,如果是百万级及以上,则是98:2 左右的比例

数据集的质量保证

1.不同的智能产品数据类型不一样,比如像基于协同的商品推荐算法数据大部分是数值类(来自于产品每天产生的大量实时埋点日志),一般会存放在Hadoop这类的大数据平台上,方便做数据挖掘和存储;这类数据的检查基本上都是基于Hadoop/spark之类的计算框架 做数据检查,可以支持的检查脚本比较简单,有类SQL的,也支持Python等脚本的方式; 主要检查点包括: 数据的值是否超出正常范围(比如 电影年代不能<1900之类的),非空检查, 异常枚举值检查等等; 检查任务可以设置定时任务定期扫描相关的表; 2. 智能语音音箱产品, 数据集可能来源是音频转语料,产品没有卖出去之前,并没有太多现成的数据可用, 所以需要很多人工造大量语料,并打标签,然后再倒入数据库管理;当然,产品卖出后是可以收集到很多实际音频和语料(通过工具把音频转成语料)信息的,可以用于后续数据处理和训练,以及测试使用;这一类的数据检查会比较麻烦,没有明确的规则,目前还是通过找众包去审核为主… 语义识别测试 测试人员大部分时间会花在构造语义测试数据阶段。尽可能的收集各种语境和语义输入。
  • 构造语义测试数据的方法: 发布前 语义测试开展(构造语义测试数据的四个阶段)
人工脑暴数据 实体扩充 模板库 + 实体库自动化生成数据 热门实体库更新(实体库为FM节目、FM专辑、音乐热歌、音乐新歌等)
  • 针对人说话特点以及音箱场景做专项定制化数据增长
同音字替代 实体少字 模糊音替代 干扰语气词 重叠字 实体颠倒 实体含英文,数字等 同义词扩充(同义词替代增长测试数据)
https://blog.csdn.net/u014411730/article/details/78625226 3. 图像识别类产品, 数据集可能大部分是来自于网络爬取的图片+ 线上的图片(如果没有权限限制的话),一般网上爬取的图片质量参差不齐,也需要做一些人工的修整,一般有OpenCV等工具可以做图像处理; 还有一些工具可以提供简单的人脸识别,把图像中的人脸扣出来,可以用于人脸识别模型的训练;  总之图像数据的质量还是需要部分人为检查,特别是网上图片,避免出现拉伸或压缩的图片影响训练效果

在线预测服务

在线预测服务就是把线下训练好的模型部署到预发、线上环境供业务系统调用,一般大型服务都需要分布式+集群部署; 比如语音识别系统, 一般分为接入层,算法层, 数据层; 整个算法层也是由很多层分类算法,RNN算法模块组成,核心算法模块都需要集群部署;一般大型互联网公司提供强大的基础设施服务 和监控,方便弹性扩展保证系统可用性;数据层一般是提供答复用户语料的数据信息, 一般是RPC调用一些业务服务查询数据,比如商品信息, 歌曲信息等等, 有的场景可能调用第三方的服务,需要服务的微服务架构(熔断机制等)保证 每次查询的可用性;

测试工具、平台

一般测试工具一般用于一下功能(以 语音识别算法系统为例): a.测试数据,预期结果的录入和存储 b. 对接预发,线上环境执行测试(调用接口),比对预期结果,产生统计报表 c. CI 保持持续集成测试能力 d. 对接链路监控模块,方便查询 性能瓶颈
        
        

        

没有评论

发表评论

邮箱地址不会被公开。 必填项已用*标注