基于强化学习的质量AI在淘系互动业务的实践之路

2024-03-17 03:48

本文主要是介绍基于强化学习的质量AI在淘系互动业务的实践之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


导读:AI人工智能的概念由来已久,因为alphago在围棋领域击败李世石掀起了全世界范围内的AI热潮,最近又随着DeepMind破解蛋白质折叠难题这一诺奖级成果再次让我们发现AI已经进化到了如此强大的程度。与AI在学术界的关注度相反,工业界中AI的应用则显得悄无声息。但是深入到各行各业中却会发现,从人脸识别到物流路径规划,从服务器数据传输到数据安全,AI已经无处不在。

作为软件行业的重要组成部分,质量保障的技术体系经历了脚本CI时代/大数据测试时代,也正在向智能化时代演进。质量保障工作最主要的价值和目标,是全面找到业务的风险点,并围绕这些风险点构建解决方案。遗漏的风险也许就是毁灭拜占庭帝国的凯尔卡门,让产品的用户体验崩塌。

AI如果能类比alphago,在质量保障领域中做得比领域专家更为出色,才能让这一技术成长到奇点,真正改变质量行业。

互动的业务场景如盖楼最为大家所熟知的,本文将从互动的业务场景出发,介绍互动如何构建质量AI,并用质量AI解决了一系列业务痼疾,让质量AI落地生根。


背景&挑战


互联网电商中,迭代速度在竞争中能决定业务的生死。迭代速度和慢工出细活打磨用户体验看上去非常矛盾,在互动这种强用户体验的产品线矛盾更加突出。用户的游戏化体验是由一条条的用户行为路径的顺畅度和产品提供给用户的获得感来决定的,那我们就找到一个很好的切入点,如何用AI将用户行为路径全面模拟出来?

在解决这个问题之前,我们先来看看互动的业务场景。第一类是手淘上现有的三个典型互动产品,金币庄园,淘宝人生和芭芭农场。第二类是大促互动的产品,也就是大家都接触过的盖楼/养猫这样的大促互动。

这些互动产品的共同特点是极度追求用户的体验效果,不断在玩法上求新求变,没有那次大促大家会玩到不变的互动。同时电商场景下对迭代速度的要求也不断趋向极致,2个月需要完成一款其他游戏公司需要半年才能完成的作品。

在这种情况下,互动需要解决如下三个问题:

  • 环境:互动的测试环境数据构造除了基础的部署环境意外,还有大量的用户状态数据、规则配置数据和权益数据,可能构造一个拉100人在盖楼获胜的场景用例需要一整天而测试执行只需要1分钟。如何构造一个高频易用的环境?

  • 用例生成:互动的特色决定了大部分的功能都是新功能,是没有线上流量可以参考的,这种情况下大数据测试方案会陷入没有数据输入的困境。如何解决新功能的更全面的用例生成?

  • 资损:互动有大量的权益发放,基于现有基于对账的事后资损防控方案,在互动这样的巨量场景下只能说是亡羊补牢。如何提供事前更全面的资损风险识别方案?



构建基于强化学习的质量AI


这个时候再回过头来看互动产品的特色,无论是做任务升级领红包,还是拉人盖楼pk领红包,都是由一条条用户的行为节点构成的行为路径来构成,如果我们能把互动的产品按照一个个的行为节点解构成一个有向图,那互动的用例生成也就抽象成了如何构建一个有向图和求解有向图中的路径集的问题?环境问题是AI执行的前置条件,而风险包括资损风险和架构风险的探测则是AI的用武之地。

有了思路,我们再来一步步看如何让AI真正在业务中落地。

▐  高频易用的环境

现有测试环境的解决方案更多基于如何降低系统部署对于分布式系统的影响来解决,包括监控应用的部署/构造隔离的分布式系统的镜像环境/从变更管控角度管控部署的时间段等等,主要解决不同代码部署情况下的环境问题。对于互动这样迭代速度极致求快的业务,这些方案都还是成本太高。

互动的解决思路是不改变部署结构的情况下,通过数据隔离的方式来解决。

互动环境的的目标是隔离稳定和高频易用。

  • 隔离稳定:通过测试账号和影子数据库来实现流量隔离;通过系统架构改造,将互动所有的配置数据读取的方式进行收口,实现配置隔离,只有指定的账号能读取指定的配置。这样可以实现一套部署结构,同时允许正常的业务逻辑运行和测试流量执行,且互不影响

  • 高频易用:由于没有代码和部署解构的变化,环境的准备变成了测试数据包括配置数据的准备,理论上可以做到随备随用。

有了这样的稳定的环境,AI的落地才有了前提条件。


▐  基于强化学习AI的用例生成

既然互动的业务场景抽象成了基于行为节点的有向图构建,已经有了很多针对有向图的算法解决方案。这个时候深入业务的特点和诉求看看要解决的核心问题,再来选取合适的解决方案。

  • 新功能无输入或者少输入:互动的玩法大部分是新功能,能提供的没有大规模可以调用的线上请求数据或者日志数据,只有代码和代码相关的一些接口定义。

  • 要全面:盖楼这样的玩法的用户量级决定了遗漏的风险真的会摧毁整个产品的体验。生成的用例需要更全面,能否发现人难以发现的问题是一个很重要的衡量标准。

  • 自动化:智能化的前提一定是充分的自动化。从给定的输入到训练,从训练到用例生成,从用例生成到用例执行需要完成全自动化。

我们的解法是基于强化学习来构建用例生成的AI。

  • 新功能少输入:用户的行为节点分为两种,一种是无系统数据传输的比如页面的滑动等纯前端交互事件,另一种是有系统数据传输的如按钮点击,这一种我们定义为用户的有效行为。在系统实现上有效行为最后会变成对后端接口的调用。因此基于接口定义而不是基于请求数据来建立有向图模型能极大减少需要的输入。在互动的实践中,只需要配置好需要的接口和对应的入参类型即可。

  • 全面的用例生成:互动的接口调用我们认为是有先后顺序的,这是从接口的参数来体现的。因此有向图的路径构建问题,我们选用了强化学习来构建。这其中最关键的路径覆盖全面问题是一个十分复杂的问题,逻辑调用路径是代码接口调用路径和数据逻辑路径等众多因素的组合体。在互动的实践中,我们针对最急迫的冒烟用例覆盖问题,对探索策略也结合pagerank和dfs做了一些改进,同时对激励函数做了接口参数状态覆盖优先的优化。从最终的实践效果来看,发现了很多人容易遗漏的状态遗漏和动态概率计算问题。

  • 全面自动化:这里最重要要解决的工程问题是将算法跑出来的接口调用路径,转化成可以有最终用户使用的可重复执行的用例,这里不做赘述。


▐  体验还原

自动化生成出来的用例要最终在业务线产生世纪作用,提高易用性是关键。而提高易用性的关键是打通端到端,让生成出来的用例不只是数据,更要成为具像化的可交互的端上的效果。

受益于近几年前端的数据驱动架构演进的红利,我们可以方便地在工程上实现给定接口数据,即可在端上复现出对应的交互行为。结合图像断言等技术可以打通用例自动验证这个测试智能化的最后一公里。



质量AI解决业务问题


当我们在互动场景中解决了环境的问题和用例的自动化生成问题,在工程上也打通了端到端的体验还原,构建了基于强化学习的质量AI,需要真正解决业务中的问题才能业务真正带来价值。

▐  权益链路预跑

资损问题最近两年成为了业界的一个棘手问题,也出现了很多基于对账的资损问题发现的思路和产品。但是如前所述对于互动特别是盖楼这样量级和短周期的产品,事后的亡羊补牢虽然能减少损失但是损失的量级依然很大,互动需要能事前探测资损风险的方案。这样的方案难点主要有二:

  • 什么样的场景会发生资损难定位:资损场景虽然是业务逻辑场景的其中一个子集,如果业务逻辑场景本身都有遗漏,资损场景遗漏更加难以避免。现在的大数据测试方案对于回归类型可以解决,对于新功能新变更还是存在输入数据不够的问题。

  • 资损发生的方式难模拟:资损发生的方式花样繁多,代码逻辑错误/异常处理/并发处理/数据污染/配置错误等等情况层出不穷。

对于质量AI来说,问题1可以归纳用例如何生成更全,问题2可以归纳为环境准备问题。在实现了冒烟用例的AI化之后,互动通过对AI的迭代加入更多如代码路径覆盖/数据血缘分析/异常的执行环境注入等方式逐渐演进风险探测的准确率。目前互动已经实现了核心权益发放场景完全基于智能AI的权益链路预跑。

▐  容错探测


在分布式系统中,单点的故障不仅仅影响自身功能。因此每个系统在做好自身功能验证的事后,还需要考虑对关联系统和关联功能的容错能力,保障极端情况下的自身功能可用性和用户体验。

目前互动核心的功能故障点的容错探测都以实现AI化。



总体展望


质量保障整体上在整个研发体系中处于守门员的角色,在整个世界都在全力拥抱数字化的大背景下,系统的复杂度提升越来越快,业务对迭代效率的诉求也越来越强,传统的解决方案越来越难以满足时代的要求。

智能化给出了质量行业的另一个产品化的解决,未来的质量保障一定是通过研发更好的质量产品来保障业务的快速迭代,而根据各个业务定义的质量AI会是下一代质量产品的最佳选择。虽有曲折,必有改变。


淘宝技术部-质量团队-招贤纳士

淘系技术质量团队负责保障整个淘宝和天猫主站的业务质量,在这里有丰富多样的业务场景和技术挑战。在这里你能够面对双十一海量峰值流量,沉淀最具挑战的大促稳定性保障产品,在这里可以为过亿DAU的互动产品保驾护航,感受行业最复杂的营销玩法技术魅力,在这里可以近距离了解目前炙手可热的内容电商,见识李佳琦、薇娅等是怎样成为带货红人,在这里还可以探索大数据驱动下的前线业务和增长策略,在3D、AI、5G等新技术加持下打造一个个电商领域的新赛道。

简历投递至:zongma.xb@taobao.com

扫描上方二维码了解职位详情

✿  拓展阅读



作者|徐兵(纵马)

编辑|橙子君

出品|阿里巴巴新零售淘系技术

这篇关于基于强化学习的质量AI在淘系互动业务的实践之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817707

相关文章

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J