Software Testing - 如何保障机器学习模型质量

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

近年来,机器学习模型算法在越来越多的工业实践中落地。在滴滴,大量线上策略由常规算法迁移到机器学习模型算法。如何搭建机器学习模型算法的质量保障体系成为质量团队急需解决的问题之一。本文整体介绍了机器学习模型算法的质量保障方案,并进一步给出了滴滴质量团队在机器学习模型效果评测方面的部分探索实践。

1. 背景

近年来,随着技术的发展,机器学习模型算法在越来越多的工业实践中落地,在以深度学习为基础的语音智能、图像智能方面表现尤为突出。 在我司,大量线上策略由规则算法迁移到机器学习模型算法且在多个方向的实践中取得了不错的成绩,如: 拼车排队预估模型、司机调度控badcase模型、取消率模型等。 机器学习与传统软件不同,后者的行为基于不同的输入预先确定,运算逻辑是可解释的。 在给定输入下,预期输出结果是可以前置确定的。 而在机器学习模型尤其是分类模型中,模型基于大量数据训练,输入的是数据及相应的label,训练过程对人黑盒,人无法预先前置的确定其结果。 总体来说模型测试的难点体现在如下几个方面:

(1)样本获取,部分模型样本相对稀疏如安全分单模型

(2)数据质量,主要体现在模型训练及使用阶段,其所涉及的数据体量一般都很大,对数据质量的把控无法做到较细粒度

(3)特征质量, 特征有效性&特征关联性度量

(4)模型效果验证, 业界公司质量团队主要通过一些大的业务指标来评测,在搜索推荐领域、金融风控等领域有较好的落地。但业务指标通常是对模型效果“面”的度量。在助力模型找出迭代方向上相对乏力。

2. 模型质量保障方案

一定程度上,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限的手段。在对模型测试之前,我们可能会有如下一些疑问

(1)模型能力达到什么样的标准可以准出?

(2)怎样的测试数据能很好的度量出模型的能力?

(3)如何评估特征的质量?

(4)如何更好的从用户视角去对线上模型效果进行评测?

模型从训练到线上应用的基本流程如下:

从上图可以看出,机器学习模型的质量保障主要落在如下几个方面:数据质量、特征质量、模型算法质量及模型效果评测。落到模型接口层还需要考虑接口的性能、稳定性。此外也需要考虑线上模型的安全性,尤其是无监督的深度神经网络之类的模型。如:攻击者通过精心设计的样本来破坏模型的训练数据或通过引入噪声、干扰来“愚弄”模型,从而最终使模型做出错误的判断。  

进一步细化,得到如下模型质量保障总方案

3. 我司模型质量保障现状

我司在机器学习模型质量保障方向上的落地主要体现在如下几个方向:数据质量、接口质量、模型监控、模型效果评测等4个方向。其中模型监控的建设在各质量团队内广泛应用,是当前主要的兜底措施。模型算法质量当前主要由策略同学自行测算,而用户视角的特征有效性、特征关联性等特征质量度量尚有较大提升空间。

当前突出的问题是:模型从训练到上线所依赖的基础服务分散对口在各质量团队,相互之间断层没有形成一个体系化的模型质量保障平台。目前的一个利好消息是:原来分散在各团队的机器学习模型训练部署平台目前正在逐渐收敛到统一的策略中台,1.0版本已经上线。因此,接下来机器学习模型质量保障的重心将会集中在搭建体系化的模型质量保障平台上,并在特征质量、模型效果评测上进一步深耕,抽象出通用评测能力落地平台化。贴一张图,来对当前我司在机器学习模型质量保障方面的现状做个总结:

4. 模型效果评测实践

▍ 4.1  背景

我们此前一直深耕在线上策略评测及badcase挖掘上,故对于策略线上效果的评测积累了较为丰富的经验。 一次较为 偶然的机会开始对拼车ETD模型做效果评测。 实际演进的路线为: 线上 → 离线,线上主要从城市+业务线+场景多维度做模型效果应用指标 层评估,从而帮助策略同学更直观的找出其主要偏 差场景, 其次我们对模型的业务链路进行了建模,将真实样本数据映射到相应的节点上,从而度量出关键偏差路径。 最后我们复用了此前积累的badcase下钻能力,对模型业务链路上关键偏差节点进行了根因下钻,从而找出了部分对模型效果有影响的一些新特征。

▍ 4.2   方案 及落地

具体方案贴图如下:

其中模型偏差关键路径核心算法如下:

▍ 4.3   模型效果评测的价值点

总体来说,在机器学习模型效果评测方面,我们的价值点主要体现在如下几个方面:

(1)场景化模型效果度量

(2)偏差关键路径寻找

(3)模型潜在新特征的挖掘

(4)依赖对模型效果的负向影响度量

5. 总结

模型质量保障在国内外各大公司中,整体处于摸索建设阶段。 主要原因为: 相对于传统质量保障其难度大、技术要求高,模型应用背景差异大。 我司在整体模型质量保障方面,缺少体系化的建设,模型特征度量这一环无啥实际落地。 得益于长期以来,我们在线上策略评测和badcase挖掘方面的积累,在模型效果层面我们相对业界扎的更深,走在了业界前列,所做的工作对实际模型效果的提升起到了很好的辅助作用,但仍然需要进一步思考把对模型评测的通用能力抽象出来,落地平台化,从而能更轻量的辅助策略团队找到模型效果提升的切入点。

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法,在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较,从而确定目标数是在中间数的左边还是右边,将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令: 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体,就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛,这门课会介绍许多方法去利用离散点最大化地逼近这个函数,甚至它的导数、积分,甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目: 解题思路: 第一步: 第二步: 第三步: 总代码: 题目: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验,睡觉过程中突然意识清醒,身体却动弹不了。这时候感觉非常恐怖,希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况,一年有一百多次,那时候很害怕晚上到来,睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别(move-only type,只移型别还有std::mutex等)。 结合一下工厂模式,看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在,但代码中需要用到它,通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需要完成两步操作:一.是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度(?) 不管两个高积木之间的的积木是怎样乱七八糟的高度,最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的,用的是MFC VS2019. 详见:http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936,然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一:区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N,表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源,一般分为两类: 系统内置资源:Android SDK中所提供的已经定义好的资源,用户可以直接拿来使用。 用户自定义资源:用户自己定义或引入的,只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python,NLP,知识图谱,机器学习,深度学习人工智能:知识图谱实战前言一、实体建模工具Protegepython,NLP,知识图谱,机器学习,深度学习 人工智能:知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…