谈到分析挖掘,容易想到分类、聚类、序列等算法,这些算法都很重要,但不是关键。如果把业务模型探索看作一次登山运动,那么直接运用上述算法的过程只是登顶这个动作。当前业界已有不少支持分析挖掘的产品,在数据接入、特征工程、基础算法、可视化、模型验证等功能实现方面,各厂家差别不是很大,能够满足大部分模型探索的需求。但这些工具基本都存在一个共性问题,即提供的功能较少考虑人与人、工具与工具之间的协作,即使有,也局限在自家产品范围内,给实践带来诸多不便。
为什么协作在分析挖掘类的产品中如此重要呢?模型探索过程的一个重要特征就是目标不变,方法流程经常变化,探索中的子流程间关系也不是线性的,存在多轮的反复验证;另一方面,分析挖掘工具或平台,很少直接面向最终用户,更多是为其他业务系统提供支撑,如果工具不能支持与外部已有系统的互动,最终产品形态的研发总体上还是低效的。
工具是因需求而生的,需求又与具体的场景紧密相关,场景可大可小,但不能没有场景。中兴通讯AI Explorer(简称AIE),就是基于电信领域,与应用产品共同成长起来的一款分析挖掘工具。它从架构设计之初就把“协作”当作一项重要的特性给予考虑,最终在产品的各个方面也得到了体现。
AI Explorer中的协作
AI Explorer中的协作由高到低,可分为部署级、实验级、用户级三个层次。
-部署方面的协作
AI Explorer支持多种部署方式,单机部署是其基本形态,可运行在Linux、Windows、中兴通讯PaaS等不同的平台之上。当数据量很大时,AI Explorer可与中兴大数据平台DAP/ADMA对接,利用其强大的分布式计算能力,进行复杂的模型计算。如果涉及到深度学习模型,AI Explorer可以将相关任务运行在中兴通讯自研的专业深度学习计算平台ZAIP之上。更为重要的,在AI Explorer中,可以在一个实验中同时使用Python单节点、DAP/ADMA、ZAIP三个不同的计算框架进行协作建模,对上层用户提供透明的操作体验。
当部署两套AI Explorer系统时,可通过AIE提供的实验或模型导入导出功能,在不同系统之间进行共享。甚至可在一套AI Explorer中进行训练并输出模型,在另一套AI Explorer上部署模型并执行推理过程。
AI Explorer支持Spark表、关系数据库、CSV文件等多种数据方式的输入输出。AI Explorer中固化的实验,外部系统可通过Rest接口触发执行,并支持通过参数传递更改每次执行时的输入输出数据源和算法参数。当某些外部系统不提供Rest接口时,用户可将AI Explorer中的实验导出独立的执行包,通过本地API方式调用执行。
-实验级别的协作
实验是AI Explorer中的基本执行单元,一个实验能够完成从数据接入、建模、到模型输出的全流程。实践中,在一个实验完成所有的处理流程,往往非常复杂,而分析建模的特点是需要不断地对算子或参数进行调整,如果流程很复杂,每一次小的改动牵涉面会非常广;另一方面,不同的数据分析师在同一个大的实验中并行工作,也会影响总体的模型探索效率。
AI Explorer支持以实验为单位的再次编排,这样每一个实验可以由不同的数据分析师负责完成。譬如:一个业务分析流程由A、B、C三个实验组成,在实验D中,将三个实验作为算子进行编排,最终用户只看到实验D,并可在实验D调整ABC三个实验中的参数,屏蔽了三个实验的实现细节,起到功能封装的目的。实践中可以递归使用此方法,完成复杂的业务模型。
AI Explorer支持不同用户在同一个实验中协作完成模型探索。在AIE中,实验是与具体用户绑定的,默认情况下当前用户只能操作自己的实验。某些场景下,不同用户需要在一个实验中协作,此时,用户可将自己名下的实验授权给其他用户,授权方式支持只读、执行、修改等三种级别,在修改模式下,用户编辑前首先要获取锁的动作(系统自动判断完成),此时如果其他用户也要编辑,系统会给出警告,只允许查看。当编辑用户执行保存动作,其他用户可及时得到通知并加载最新的实验。
-同一用户下的协作
一个用户往往拥有多个不同的实验。因人员分工的存在,某一用户下的多个实验往往有相似性,为了提高同一类型实验的建模效率,AI Explorer中支持一种特殊的操作模式——算子组合,用户可根据需要将多个算子合并成一个算子。譬如:使用一个分类算子,一般需要“字段选择”“类型修改”“标签设定”等三个算子的配合,可以把这四个算子合成一个并保存到算子树上,这样可以在其他实验中使用这个复合算子,提高建模效率。
AI Explorer支持在同一用户同一个实验中,在不同分支流程中并行的探索模型。譬如:当前实验主要是使用分类算法,用户可在不同分支上尝试不同算法,执行一个分支时,用户可以在其他分支上增加修改算法,提高总体的研发效率的同时也利于不同算法间效果的比较。甚至可以与系统默认的“分支选择算子”协作,在部署阶段根据数据特点自动选择执行合适的分支流程。
-一种特殊的实验间协作:参数自动化寻优
在分析挖掘应用实践中,同样的一套实验在不同的现场部署时,往往需要根据不同的数据特点对算子参数进行微调,以达到理想的分析效果。传统的调参方式严重依赖经验丰富的专家。当前业界在自动化调参方面的实践有:网格搜索、遗传、爬山等软算法。网格搜索方法是将待调整的参数组合成庞大的搜索空间,对每个参数组合进行尝试;遗传和爬山算法是一种思想,需要与具体算法结合起来实现,总体上是侵入式的,虽普适性不强,但在某些场景下,能够达到很好的效果。
AI Explorer的自动化参数寻优,基于强化学习思想实现,架构上与网格搜索方法类似,也需要构造一个参数组合空间。不同点是,本方法中不是蛮力搜索,而是利用强化学习的“试错评估”方式,对每次参数的变换方向进行监督,快速寻找到较优的参数组合,同时利用深度学习网络学习监督过程,模拟人类的经验积累过程,并在不同场景间共享网络记录的调参经验。
AI Explorer应用模式
AI Explorer已经广泛应用在通信、政企项目中。针对不同的业务场景,AI Explorer参与形式不尽相同,基本可分为两种:
-A模式
数据分析师和软件工程师使用AI Explorer系统,客户不感知AIE系统。
在某国内局点,现场研发人员使用AI Explorer进行模型探索,将业务分析目标端到端的在AI Explorer系统上设计,期间不断迭代,优化模型性能,最终将实验流程制作成具体业务场景的分析模板。将模板导入生产系统并实例化成具体的数据分析流程,从而实现分析流程从实验室向生产系统的转换。此模式中,AI Explorer有两个用途:其一,使用AI Explorer可视化建模功能,使用少量历史数据进行在线分析和模型探索,并对模型的泛化能力定期审查。其二,通过AI Explorer提供的服务接口与其他的系统进行集成,提供端到端的服务,在更高产品层次进行成果呈现。每一个分析流程的个性化参数,可以通过服务接口设置。在某案例中,AI Explorer通过Rest接口与中兴通讯的CSON(Center Self Optimization Network)业务系统对接,实现数据从NDS(Network Data System)采集到业务分析的全流程支持,为客户带来价值。
-B模式
客户直接使用AI Explorer中已有的实验,使用过程中只需要少量的参数,它的输出相对简单,可能通过一个表格阐明一个趋势,或为采取一个措施提供依据。本模式中,客户也可以基于AI Explorer创建自己的实验。
完整的业务模型往往由多个实验共同组成,如果用户直接在原始实验上修改参数,操作会非常复杂且容易出错。一般先设计多个小实验,然后用一个父实验串起小实验。
在某国外局点,研发人员针对具体需求设计了多个小型实验流程,主要由下面几个类型:负责原始数据接入的实验、预处理的实验、负责特征选择的实验、负责建模的实验、负责模型展现和输出的实验。然后创建一个父实验,在这个父实验中,每个算子都是上述实验类型中的一个实现,最终用户只能看到这个父实验,子实例的参数调整也在父实验中完成。这样,每个子实验相当于一个子模块,可以同时尝试多个备选子实验方案。
此种方式,在不同局点也容易推广,根据不同场景下的数据特点替换中间的某些子实验即可,这样还能保证父实验操作的一致性。
实践证明,以AI Explorer提供协作方面的功能为基础,以敏捷研发为依托,采用搭积木的研发方式,能够在短时间内快速调动不同领域人员的专业技能,进行快速研发、快速验证、快速交付,缩短了原始需求到最终客户之间的时间距离,保证了产品质量,提高了客户满意度,助力AI应用的普及。