NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何构建阿里小蜜算法模型的迭代闭环?

  • 2020-02-18
  • 本文字数:3175 字

    阅读完需:约 10 分钟

如何构建阿里小蜜算法模型的迭代闭环?

导读:伴随着 AI 的兴起,越来越多的智能产品诞生,算法链路也会变得越来越复杂,在工程实践中面临着大量算法模型的从 0 到 1 快速构建和不断迭代优化的问题,本文将介绍如何打通数据分析-样本标注-模型训练-监控回流的闭环,为复杂算法系统提供强有力的支持。


新技术/实用技术点


  1. 实时、离线场景下数据加工的方案选型

  2. 高维数据的可视化交互

  3. 面对不同算法,不同部署场景如何对流程进行抽象

01 背景

1. 技术背景及业务需求

小蜜系列产品是阿里巴巴为消费者和商家提供的智能服务解决方案,分别在用户助理、电商客服、导购等方面做了很多工作,双十一当天提供了上亿轮次的对话服务。其中用到了问答、预测、推荐、决策等多种算法模型,工程和算法同学在日常运维中会面临着如何从 0 到 1 快速算法模型并不断迭代优化,接下来将从工程角度介绍如何打通数据->样本->模型->系统的闭环,加速智能产品的迭代周期。


2. 实现

实现这一过程分为 2 个阶段


:0->1 阶段


模型冷启动,这一阶段更多关注模型的覆盖率。


实现步骤:


A. 抽取对话日志作为数据源


B. 做一次知识挖掘从日志中挑出有价值的数据


C. 运营人员进行标注


D. 算法对模型进行训练


E. 运营人员和算法端统一对模型做评测


F. 模型发布



1->100 阶段


badcase 反馈和修复阶段,主要目标是提升模型的准确率。


实现步骤:


A. 运营端根据业务反馈(顶踩按钮)、用户不满意会话(如:转人工)收集 badcase 信息


B. 进行数据分析,将分析结果给到不同的模型模块、规则模块


C. 算法端对以上模型分别进行训练


D. 最终发布到线上生效


3. 痛点

在以上过程中,会遇到如下几个痛点:


A. 不同算法需要不同的标注交互形式,如何快速支持


B. 运营方的标注凭借个人感觉,缺少指导,无法保障质量


C. 线上 badcase 如何快速发现和修复


D. 机器人中部署了上百个算法模型,日常维护需要占用工程师大量的精力


E. 数据样本在业务和算法之间来回传递,有安全隐患

02. 闭环迭代模型的产生

1. 模型训练闭环

基于以上的痛点,阿里小蜜团队构建了模型训练闭环。该闭环系统主要包括对话系统层、数据层、样本层和模型层这 4 个部分。



彼此之间的关系、流程如下:


A. 对话系统层:用户端会跟机器人系统进行对话


B. 对话产生的日志经过数仓埋点进入到数据层


C. 数据层由运营人员做标注


D. 完成标注的数据作为样本,借助算法团队提供的训练/评测服务,进入到模型层


E. 模型发布到系统中,形成训练闭环

2. 系统 => 数据

① 多维数据查询这一部分讲述如何从系统层到达数据层,这里会涉及到“多维数据查询”这样一个概念。前面提到,数据来源的渠道是多种多样的;这些数据会具备多种多样的属性,例如:行业属性、用户类型属性等。不同业务的对话日志带有各自的业务属性。



在应用多维数据查询的过程中,难点是属性相交等问题。平台的第一项工作就是数据预处理,遍历出所有的业务-属性组合;运营人员取数据的时候,先选择业务维度;接着从业务维度到数据维度进行一层映射,从而去掉其业务属性(例如,时间、地点、行业等维度分别映射成 A、B、C)



② OLAP 与“数据立方体”


这里用到了联机分析处理(OLAP ,On-Line Analytical Processing,一种数据动态分析模型)技术。首先会构造“数据立方体”这样一种数据结构,将数据分成多种维度,包括:来源维度、路线维度、时间维度。



对数据立方体由上卷和下钻这两种基本操作,生成新的立方体。下图中,右半部分是将城市维度进行了上卷操作,左半部分是将季度维度进行了下钻操作。



数据立方体结构的不足:


A. 维度类型。对于商家这种百万数量级的维度,搜索起来效率低下。针对这种缺点,选择对于重点商家重点维度进行存储。


B. 多条件的 or 关系查询,在这种立方体结构中无法实现。


C. 枚举数量和效率的平衡。需要根据具体覆盖业务定义属性等。

3. 数据 => 样本

① 标注组件


数据标注环节由“人工智能训练师”这个角色参与,标注形式会根据算法的选择而调整,包括:标签、实体、属性间关系等。


如下图所示:



组件包括状态栏、搜索框、表格(支持配置),可进行标注分类、文本型精选、排序型筛选、任务操作内容等多个模块(详见下图)。



这样的组件有如下的缺点:


A. 1D 表格无法有效利用算法数据结构


B. 操作繁琐困难


C. 浪费像素空间


D. 无尽的翻页



② 高维数据可视化


基于组件存在的以上种种缺点,我们选择了将数据降维。


什么是高维数据?


高维数据包括:


A. 机器人阿里小蜜的文本数据


B. 图片


C. 语音数据


可视化后的高维数据长什么样子?



可视化前



可视化后


上图是对文本数据可视化后的结果。实现步骤:


A. 对文本数据进行聚类,根据相似度变成平面结构


B. 用颜色区分类别


这种方式可以直观看出线上的语料分布,包括分布类别、分布集中趋势等。


这里用到的技术方案包括:


A. 降维:主要用 PCA 和 T-SNE 两种降维方式


B. 向量化:数据拆分之后,将数据转变为可比较的表示形式。对于文字,主要使用 word2vec;而对于图片,主要使用 phash 编码。


C. 聚类:聚类主要使用 k-means。



③ 散点图塌缩及其交互


下图中的左图是聚类后的效果图。聚类完成后,每一类图片的每一类都会分布到一起;再通过散点图塌缩算法,将每一个压缩成一个散点,通过颜色区分类别种类。


利用这种方式,可以找出 badcase 中占比最高的一类,从而进行修复。



在对的交互中,有一些特殊的操作,例如:框选。上图右图的散点图中,可以通过框选的方式抽取每一类的关键词。


03. 实时布防

1. 语料关键词的识别与添加


上图是某一天猫商家的海报图:某商家正在搞一个促销活动,找易烊千玺作为代言人。由于机器人预先不知道会有这样一个活动发生,模型中自然不包含这样的关键词。商家发现当天的未识别语料全部都和“易烊千玺”相关,但是机器人不识别这个关键词(未识别率达 70%以上)。怎样快速帮商家解决这类问题呢?


2. 实时布防


这类的 AI 能力如何做实时布防呢?将这类问答、意图等 AI 能力在自己的服务器上以日志的形式做埋点,服务器会将日志收集起来通过 flink 平台做实时流式聚类,商家工作台通过标注组件的形式展现当前时段的高频问题,并通过交互式选项选择如何修复(以上图中的蓝色选定区域为例),从而让机器人能够识别该语料。


3. 数据加工

从业务日志中提取模型需要的语料需要进行一些基本的算法加工,这些步骤除了面临大数据的压力,研发工程师还要考虑对这种加工能力的封装和复用。



A. 首先,对日志数据做脱敏:将日志中的手机号、地址、人名等去掉,对单字型文本、语聊型文本的去除;


B. 接下来对数据做去重和向量化;


C. 下一步是对处理完成的数据做聚类;


D. 聚类后的数据做摘要,进而做相似度计算。


整个过程需要很多的算法模块,每一个模块都会封装成一个算法组件,提供到不同的模型迭代中。上图的下半部分就是语料经过了不同算法模块的变化,从向量到聚类,进而抽取不同 Topic。


下图是以上过程抽象成的模板。



模板中包含了算法组件、标注组件、训练组件等不同的组件;运营人员在线上可以挑选不同组件配置模板来优化对应的模型。


在模板执行的过程中,可使用 mapreduce 组件、UDF 组件以及 Spark 组件。Spark 组件是目前通用性较强的组件,既可本地调度,又可远程调度。

4. 构建数据处理引擎

基于 Spark 构建数据处理引擎,分为客户端和计算集群两个系统。客户端包括组件库、调度引擎,以及 Spark Client Runner。



这种架构的好处:算法可以在本地开发 spark 组件,直接集成到模板中;同时支持远程集群模式和本机轻量级调度,大小数据量都适用;同时 spark 拥有 SQL 和 spark mllib 两个组件库,研发通过封装可以直接开放给业务使用。


本次分享就到这里,谢谢大家。


作者介绍


许特,阿里小蜜高级开发工程师。


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497447&idx=1&sn=f47a84f48f4c08b4882b8aecd29c5b3c&chksm=fbd7448bcca0cd9db8d249bfd16a4268f6a6fcaadc6269baee674d87e11bade03a055bfc73c2&scene=27#wechat_redirect


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-02-18 14:001653

评论 1 条评论

发布
用户头像
如今微信成了InfoQ的渠道
2020-02-18 18:02
回复
没有更多了
发现更多内容

一周信创舆情观察(12.20~12.26)

统小信uos

百度智能云产业智能化新生态,新在哪里?

百度开发者中心

人工智能

Spring Cloud Alibaba 2.2.7 版本正式发布

阿里巴巴中间件

云计算 开源 微服务 中间件 spring cloud ali

ARMS 应用安全-你的应用运行时的隐形安全卫士

阿里巴巴中间件

云原生 中间件 RASP Arms

以 Kubernetes 的方式来运行极狐GitLab Runner

极狐GitLab

阿里云王志坤:强劲可靠、无处不在的云,为创新保驾护航

阿里云弹性计算

弹性计算 年度峰会

『SphereEx 年终贺礼』专注为用户提供更好的使用体验

SphereEx

开源 ShardingSphere 一键部署 SphereEx-Boot 开源公司

性能工具之代码级性能测试工具ContiPerf

zuozewei

单元测试 性能测试 测试工具 12月日更

LabVIEW图像增强算法(基础篇—5)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像增强算法

年底考勤管理汇总难?织信OA管理系统无缝对接外部应用助你解决

优秀

低代码 考勤管理 OA管理系统

KubeCon China 2021 阿里云专场来了!这些首日亮点不容错过

阿里巴巴中间件

阿里云 云原生 中间件 cncf KubeCON

迷雾中的自动化测试体系建设

CODING DevOps

自动化测试 接口测试 业务驱动测试

中科柏诚:加速银行数字化转型的新引擎

联营汇聚

游戏用户LTV预测实践

bilibili游戏技术

不用任何框架,Java 就能实现定时任务的 3 种方法!

CRMEB

设计消息队列存储消息数据的MySQL 表格

Steven

架构实战营

Kubernetes常见组件

Rayzh

Docker Kubernetes 云原生

Java中的深拷贝和浅拷贝

Ayue、

深拷贝

高效工作?畅快游戏?来开发者Meetup探索AI技术新玩法

OpenI启智社区

人工智能 飞桨领航团

最近火热的web3到底是什么?

石云升

区块链 28天写作 12月日更 web3

使用Kubernetes部署应用

Rayzh

Kubernetes 云原生

开源社庄表伟:开源要出圈了,推坑文化、沉浸式养鱼塘,社区建设心法了解一下 I OpenTEKr 大话开源 Vol.5

OpenTEKr

大话开源

突破底层基础架构瓶颈,揭秘TDSQL存储核心技术

腾讯云数据库

tdsql 国产数据库

首个国产分布式数据库调研:TDSQL产品技术及服务能力排名

腾讯云数据库

tdsql 国产数据库

RocketMQ Streams:将轻量级实时计算引擎融合进消息系统

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

为什么说绿色区块链是未来金融范式的必要底层?

CECBC

Cube 技术解读 | Cube 小程序技术详解

阿里巴巴终端技术

小程序 ios android 移动开发 客户端

腾讯云分布式数据库TDSQL在东吴证券新一代核心交易系统中成功落地

腾讯云数据库

tdsql 国产数据库

一年又要过去了!盘点2021年区块链的6个关键词

CECBC

TDengine在水电厂畸变波形分析及故障预判系统中的应用

TDengine

数据库 大数据 tdengine 物联网 时序数据库

作业帮检索服务基于 Fluid 的计算存储分离实践

阿里巴巴中间件

云计算 云原生 中间件 存储分离 Fluid

如何构建阿里小蜜算法模型的迭代闭环?_软件工程_DataFunTalk_InfoQ精选文章