本篇将分享,算法测试团队在日常的测试工作中,探索与积累的算法测试经验。将会按照以下目录结构进行分享介绍。
文章图片
机器学习基础简介
文章图片
大家在学习算法测试之前,首先需要对机器学习基础知识,有一个初步的了解,在此将从机器学习分类,哈啰算法应用场景,关键术语,算法研发步骤,四个维度进行介绍。
机器学习分类
机器学习算法,一般分为:监督学习,无监督学习和深度学习。
监督学习
监督学习,从给定的一组输入 x输出 y的训练集中,学习将输入映射到输出的函数(如何关联输入和输出),且训练集中的数据样本都有标签(Label)或目标(Target),这就是监督学习。
监督学习一般使用两种类型的目标变量:标称型和数值型。标称型目标变量的结果只在有限目标集中取值,如真与假、动物分类集合{爬行类、鱼类、哺乳类、两栖类};数值型目标变量则可以从无限的数值集合中取值,如0.100、42.001、1000.743等。数值型目标变量主要用于回归分析。
无监督学习
无监督学习,无监督学习和监督学习最大的区别就是无监督学习的训练数据没有标签。
在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。
深度学习
深度学习,是一种试图使用由多重非线性变换构成的多个处理层,对数据进行高层抽象的算法。它的特征提取并不依靠人工,而是机器自动提取的。
哈啰算法应用场景
在哈啰,算法基本应用在公司的所有业务场景中,如:
- 智能调度(单车,助力车和红包车的车辆调度,助力车电池换电调度,算法负责调度任务生成,任务派发)
- 营销算法(涉及到两轮智能定价L3,首页Banner个性化定制,智能权益等)
- 位置服务(涉及两轮&四轮业务的定位服务,北极星,超区判断,蓝牙嗅探&反嗅探)
- 资产保全(涉及单车,助力车预失联,用户报障,超时未关锁等)
- 司乘生态(涉及司机乘客订单匹配,奖励金,完单概率计算,接单时间预估等)
- 计算机视觉(涉及人脸识别,OCR识别,用户报障等)
- 风控算法(涉及行程风险,虚假订单,身份核实等)
- 自然语言处理(涉及VOC工单分类,机器人问答意图识别,猜你想问等)
- 数科算法(涉及渠道推荐,风险分,反欺诈等)
特征: 下面测量的这四种值(weight重量,wingspan翅展长度,webbed feet脚蹼,back color后背颜色)称之为特征,也可以称作属性。
文章图片
目标变量: 目标变量是机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
训练样本: 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本
知识表示: 假定这个鸟类分类程序,经过测试满足精确度要求,是否我们就可以看到机器已经学会了如何区分不同的鸟类了呢?这部分工作称之为知识表示,某些算法可以产生很容易理解的知识表示,而某些算法的知识表示也许只能为计算机所理解。知识表示可以采用规则集的形式,也可以采用概率分布的形式,甚至可以是训练样本集中的一个实例。
分类: 它的主要任务是将实例数据划分到合适的分类中
回归: 它主要用于预测数值型数据。大多数人可能都见过回归的例子——数据拟合曲线:通过给定数据点的最优拟合曲线。
聚类: 是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法
算法研发步骤
文章图片
- 收集数据:我们可以使用很多方法收集样本数据;
- 准备输入数据:得到数据之后,还必须确保数据格式符合要求;
- 分析输入数据:此步骤主要是人工分析以前得到的数据,这一步的主要作用是确保数据集中没有垃圾数据;
- 训练算法:机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心,如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容都集中在第5步;
- 测试算法:这一步将实际使用第4步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。问题常常会跟数据的收集和准备有关,这时你就必须跳回第1步重新开始;
- 算法预测:将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作;
文章图片
从算法研发步骤中,可知,在算法测试质量保障领域,主要涉及:数据&依赖服务质量保障,模型效果质量保障,系统工程质量保障和基础能力支撑建设。四大维度的建设。我们将在下面逐一铺开介绍。
数据质量保障
文章图片
在数据质量保障领域,基于公司当前的数据质量保障能力建设,尚缺乏业务数据质量监控的能力,在业界称之为“业务数据核对平台”。而算法研发流程对数据质量要求非常高,业界将算法对数据质量的依赖形象的总结成一句话:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。
因此,算法测试团队,从数据比对的方式出发,针对不同的数据存储介质,不同的应用服务,开发出针对多数据源比对的数据质量监控服务。
截止6月底,已经接入多条业务线。数据质量监控任务数19个,累计发现问题数25个以上,其中线上问题占比超过70%。形成常态化的线上数据质量监控能力,有效的提高数据质量保障能力和效率。
依赖服务质量保障
文章图片
算法研发过程,依赖非常多的上下游服务来获取关键数据,特征或参数。比如客服的ASR服务,21年6月之前,一直依赖外部的ASR语音转换服务,但是由于语音转换服务是外部的软件包内部调用的方式提供服务而且返回结果正确与否也很难通过响应内容做分析,因此,既无法通过埋点,也无法通过响应内容来判断外部ASR服务的可用性。一直依赖客服人工报障的方式来感知服务的可用性。
因此,算法测试团队,借鉴线上服务拨测系统的设计思路,开发了服务可用性探测平台,事先准备好测试语音,如“你好”的语音文件,定时主动向ASR服务发起探测请求,对响应结果做监控。当响应结果非文本“你好”时,主动告警通知相关责任同学。基于这套方案的落地,ASR服务问题处理时效从2020平均2.5天,降低到2021平均30分钟,同比下降99%。
服务可用性探测平台,能够满足不同的服务类型:Web服务,RPC服务,消息服务,存储服务。监控场景也可以满足:可用性监控,响应时间监控,语义正确性监控等。目前已有客服平台,供应链,2条业务线接入,2021年上半年累计新增发现11个线上问题。通过及时感知服务可用性,帮助研发同学快速定位解决,避免产生线上故障。
模型效果质量保障 模型效果质量保障,主要分为两个维度:模型性能评估和模型效果评估。以下将逐个介绍。
模型性能评估
文章图片
模型性能评估,是我们算法测试团队与一站式AI平台共建的项目,由算法测试团队独立研发提供模型性能评估能力,然后在一站式AI平台的模型平台内,为所有的模型,提供自助的模型性能测试服务。
整个流程如下:算法研发同学,在一站式AI平台的模型平台内上传模型,在测试页面,可以提交模型性能测试请求。模型平台会将性能测试请求发送给算法团队提供的模型性能测试服务,在性能测试服务上做性能压测排队,配置解析,压测数据准备的操作之后,会将压测请求提交到公司的性能压测平台,由性能压测平台发起对特定模型的压测请求,在压测结束后,由性能压测平台返回本次性能压测结果给到模型性能测试服务,模型性能测试服务将保存本次压测结果及详细报告链接,供后续模型平台查看。
预计模型性能评估能力上线后,将为模型平台内近300个模型提供性能压测能力,前置的模型性能评估,能够有效解决线上模型性能问题,同时提前进行模型资源调配,优化资源分布。
模型效果评估
文章图片
模型效果评估,是模型效果质量保障中,非常重要的一环,依托模型效果评估,能够帮助业务方和研发同学及时了解模型的效果质量,并进行后续的优化迭代。
目前,算法测试团队规划落地监督学习模型的效果评估能力建设。整个流程主要涉及3个环节:数据预处理,模型数据服务,模型效果评估。
数据预处理 主要指,对3种类型的数据进行处理:
- 人工构造数据,如ASR语音识别所需要的语料,NLP识别所需的文本数据,均可通过人工制作,人工标注后,提供给模型进行训练和测试使用。
- 线上离线数据,如保存在hive内的模型埋点数据,电动车用户语音唤醒语料等。这些数据,数据量庞大,数据参数繁杂,因此需要离线数据ETL任务,来完成数据的提取,转换,加载的处理过程。
- 线上实时数据,如实时的模型埋点消息,通过实时数据计算任务(Flink任务),我们可以采样获取线上模型的埋点数据,并实时计算出模型效果的评测结果,供业务方和算法研发同学及时感知模型上线后的效果质量,并进行后续的优化迭代。
模型效果评估 在完成模型数据准备之后,我们就可以通过模型调用服务,获取被测模型的返回结果,通过模型评测服务的各项计算指标,如ASR语音识别的指标涉及:字正确率,词正确率,句正确率,模型调用性能等指标。对于地图限行模型,涉及与参照结果一致性的指标。依托模型评测服务计算的结果,将会输出Bad Case和评测报告。对于Bad Case将会存储到Bad Case管理平台中,进行后续的Bad Case优化测试,回归集补充,Bad Case状态管理等等工作。
系统工程质量保障
文章图片
对于算法测试的系统工程质量保障,与业务线的质量保障体系相比,除了算法相关的模型测试,上线前算法模型空跑外,基本一致。在此不做赘述。
基础能力支撑
文章图片
基础能力支撑,亦和业务线的基础能力支撑相一致。在此不做赘述。
(本文作者:陈震)
【算法测试探索与实践】
文章图片
本文系哈啰技术团队出品,未经许可,不得进行商业性转载或者使用。非商业目的转载或使用本文内容,敬请注明“内容转载自哈啰技术团队”。
推荐阅读
- 蓝桥真题|【蓝桥真题五】带三百人训练了十天精选蓝桥真题,看看他们都练些什么(三门语言题解)
- leetcode|LeetCode 48. Rotate Image 时间复杂度(O(n))
- LeetCode|LeetCode 53. Maximum Subarray 时间复杂度(O(n))
- LeetCode|LeetCode 42. Trapping Rain Water 时间复杂度(O(n))
- leetcode|算法入门之字符串(Python)【初级算法——字符串】【蓝桥杯练习】【力扣练习】
- 备战蓝桥杯|蓝桥杯python组十一届省赛真题+解析+代码(通俗易懂版)
- 备战蓝桥杯|2020年第十一届蓝桥杯省赛Python组(真题+解析+代码)(作物杂交)
- 备战蓝桥杯|2021年第十二届蓝桥杯省赛Python组(真题+解析+代码)(直线)
- 备战蓝桥杯|2021年第十二届蓝桥杯省赛Python组(真题+解析+代码)(时间显示)