分享嘉宾:许特 阿里小蜜
文章整理:王吉东
内容来源:DataFunLive
出品平台:DataFun
温馨提示:疫情期间,勤洗手,戴口罩。
导读:伴随着AI的兴起,越来越多的智能产品诞生,算法链路也会变得越来越复杂,在工程实践中面临着大量算法模型的从0到1快速构建和不断迭代优化的问题,本文将介绍如何打通数据分析-样本标注-模型训练-监控回流的闭环,为复杂算法系统提供强有力的支持。
新技术/实用技术点:
3. 面对不同算法,不同部署场景如何对流程进行抽象
小蜜系列产品是阿里巴巴为消费者和商家提供的智能服务解决方案,分别在用户助理、电商客服、导购等方面做了很多工作,双十一当天提供了上亿轮次的对话服务。其中用到了问答、预测、推荐、决策等多种算法模型,工程和算法同学在日常运维中会面临着如何从0到1快速算法模型并不断迭代优化,接下来将从工程角度介绍如何打通数据->样本->模型->系统的闭环,加速智能产品的迭代周期。
badcase反馈和修复阶段,主要目标是提升模型的准确率。
A. 运营端根据业务反馈(顶踩按钮)、用户不满意会话(如:转人工)收集badcase信息
B. 进行数据分析,将分析结果给到不同的模型模块、规则模块
A. 不同算法需要不同的标注交互形式,如何快速支持
B. 运营方的标注凭借个人感觉,缺少指导,无法保障质量
D. 机器人中部署了上百个算法模型,日常维护需要占用工程师大量的精力
E. 数据样本在业务和算法之间来回传递,有安全隐患
基于以上的痛点,阿里小蜜团队构建了模型训练闭环。该闭环系统主要包括对话系统层、数据层、样本层和模型层这4个部分。
D. 完成标注的数据作为样本,借助算法团队提供的训练/评测服务,进入到模型层
这一部分讲述如何从系统层到达数据层,这里会涉及到“多维数据查询”这样一个概念。前面提到,数据来源的渠道是多种多样的;这些数据会具备多种多样的属性,例如:行业属性、用户类型属性等。不同业务的对话日志带有各自的业务属性。
在应用多维数据查询的过程中,难点是属性相交等问题。平台的第一项工作就是数据预处理,遍历出所有的业务-属性组合;运营人员取数据的时候,先选择业务维度;接着从业务维度到数据维度进行一层映射,从而去掉其业务属性(例如,时间、地点、行业等维度分别映射成A、B、C)
这里用到了联机分析处理(OLAP ,On-Line Analytical Processing,一种数据动态分析模型)技术。首先会构造“数据立方体”这样一种数据结构,将数据分成多种维度,包括:来源维度、路线维度、时间维度。
对数据立方体由上卷和下钻这两种基本操作,生成新的立方体。下图中,右半部分是将城市维度进行了上卷操作,左半部分是将季度维度进行了下钻操作。
A. 维度类型。对于商家这种百万数量级的维度,搜索起来效率低下。针对这种缺点,选择对于重点商家重点维度进行存储。
B. 多条件的or关系查询,在这种立方体结构中无法实现。
C. 枚举数量和效率的平衡。需要根据具体覆盖业务定义属性等。
数据标注环节由“人工智能训练师”这个角色参与,标注形式会根据算法的选择而调整,包括:标签、实体、属性间关系等。
组件包括状态栏、搜索框、表格(支持配置),可进行标注分类、文本型精选、排序型筛选、任务操作内容等多个模块(详见下图)。
基于组件存在的以上种种缺点,我们选择了将数据降维。
这种方式可以直观看出线上的语料分布,包括分布类别、分布集中趋势等。
B. 向量化:数据拆分之后,将数据转变为可比较的表示形式。对于文字,主要使用word2vec;而对于图片,主要使用phash编码。
下图中的左图是聚类后的效果图。聚类完成后,每一类图片的每一类都会分布到一起;再通过
散点图塌缩
算法,将每一个类压缩成一个散点,通过颜色区分类别种类。
利用这种方式,可以找出badcase中占比最高的一类,从而进行修复。
在对
类
的交互中,有一些特殊的操作,例如:框选。上图右图的散点图中,可以通过框选的方式抽取每一类的关键词。
上图是某一天猫商家的海报图:某商家正在搞一个促销活动,找易烊千玺作为代言人。由于机器人预先不知道会有这样一个活动发生,模型中自然不包含这样的关键词。商家发现当天的未识别语料全部都和“易烊千玺”相关,但是机器人不识别这个关键词(未识别率达70%以上)。怎样快速帮商家解决这类问题呢?
这类的AI能力如何做实时布防呢?将这类问答、意图等AI能力在自己的服务器上以日志的形式做埋点,服务器会将日志收集起来通过flink平台做实时流式聚类,商家工作台通过标注组件的形式展现当前时段的高频问题,并通过交互式选项选择如何修复(以上图中的蓝色选定区域为例),从而让机器人能够识别该语料。
从业务日志中提取模型需要的语料需要进行一些基本的算法加工,这些步骤除了面临大数据的压力,研发工程师还要考虑对这种加工能力的封装和复用。
A. 首先,对日志数据做脱敏:将日志中的手机号、地址、人名等去掉,对单字型文本、语聊型文本的去除;
整个过程需要很多的算法模块,每一个模块都会封装成一个算法组件,提供到不同的模型迭代中。上图的下半部分就是语料经过了不同算法模块的变化,从向量到聚类,进而抽取不同Topic。
模板中包含了算法组件、标注组件、训练组件等不同的组件;运营人员在线上可以挑选不同组件配置模板来优化对应的模型。
在模板执行的过程中,可使用mapreduce组件、UDF组件以及Spark组件。Spark组件是目前通用性较强的组件,既可本地调度,又可远程调度。
基于Spark构建数据处理引擎,分为客户端和计算集群两个系统。客户端包括组件库、调度引擎,以及Spark Client Runner。
这种架构的好处:
算法可以在本地开发spark组件,直接集成到模板中;同时支持远程集群模式和本机轻量级调度,大小数据量都适用;同时spark拥有 SQL和spark mllib两个组件库,研发通过封装可以直接开放给业务使用。
职位推荐:
欢迎加入DataFunTalk交流群,跟同行零距离交流。如想进群,请加逃课儿同学的微信(微信号:DataFunTalker),回复:交流,逃课儿会自动拉你进群。
分享嘉宾
▬
许特
——END——
文章推荐:
阿里小蜜:智能服务技术实践及场景探索
知识结构化在阿里小蜜中的应用