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

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

新技术 / 实用技术点:

  • 实时、离线场景下数据加工的方案选型
  • 高维数据的可视化交互
  • 面对不
    同算法,不同部署场景如何对流程进行抽象

背景

1. 技术背景及业务需求

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

image.png

2. 实现

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

0->1 阶段:

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

实现步骤:

  • 抽取对话日志作为数据源
  • 做一次知识挖掘从日志中挑出有价值的数据
  • 运营人员进行标注
  • 算法对模型进行训练
  • 运营人员和算法端统一对模型做评测
  • 模型发布

image.png

1->100 阶段:

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

实现步骤:

  • 运营端根据业务反馈(顶踩按钮)、用户不满意会话(如:转人工)收集 badcase 信息
  • 进行数据分析,将分析结果给到不同的模型模块、规则模块
  • 算法端对以上模型分别进行训练
  • 最终发布到线上生效

image.png

3. 痛点

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

  • 不同算法需要不同的标注交互形式,如何快速支持
  • 运营方的标注凭借个人感觉,缺少指导,无法保障质量
  • 线上 badcase 如何快速发现和修复
  • 机器人中部署了上百个算法模型,日常维护需要占用工程师大量的精力
  • 数据样本在业务和算法之间来回传递,有安全隐患

闭环迭代模型的产生

1. 模型训练闭环

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

image.png

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

  • 对话系统层:用户端会跟机器人系统进行对话
  • 对话产生的日志经过数仓埋点进入到数据层
  • 数据层由运营人员做标注
  • 完成标注的数据作为样本,借助算法团队提供的训练 / 评测服务,进入到模型层
  • 模型发布到系统中,形成训练闭环

2. 系统 => 数据

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

image.png

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

image.png

② OLAP 与“数据立方体”

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

image.png

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

image.png

数据立方体结构的不足:

  • 维度类型。对于商家这种百万数量级的维度,搜索起来效率低下。针对这种缺点,选择对于重点商家重点维度进行存储。
  • 多条件的 or 关系查询,在这种立方体结构中无法实现。
  • 枚举数量和效率的平衡。需要根据具体覆盖业务定义属性等。

3. 数据 => 样本

① 标注组件

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

如下图所示:

image.png

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

image.png

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

  • 1D 表格无法有效利用算法数据结构
  • 操作繁琐困难
  • 浪费像素空间
  • 无尽的翻页

image.png

② 高维数据可视化

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

什么是高维数据?

高维数据包括:

  • 机器人阿里小蜜的文本数据
  • 图片
  • 语音数据

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

image.png

可视化前

image.png

可视化后

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

  • 对文本数据进行聚类,根据相似度变成平面结构
  • 用颜色区分类别

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

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

  • 降维:主要用 PCA 和 T-SNE 两种降维方式
  • 向量化:数据拆分之后,将数据转变为可比较的表示形式。对于文字,主要使用 word2vec;而对于图片,主要使用 phash 编码。
  • 聚类:聚类主要使用 k-means。

image.png

③ 散点图塌缩及其交互

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

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

image.png

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

image.png

实时布防

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

image.png

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

image.png

2. 实时布防

image.png

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

image.png

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

image.png

  • 首先,对日志数据做脱敏:将日志中的手机号、地址、人名等去掉,对单字型文本、语聊型文本的去除;
  • 接下来对数据做去重和向量化;
  • 下一步是对处理完成的数据做聚类;
  • 聚类后的数据做摘要,进而做相似度计算。

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

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

image.png

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

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

4. 构建数据处理引擎

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

image.png

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

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

image.png

作者介绍:

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

原文链接:https://www.infoq.cn/article/KPGoUVuFbaAhCsVK2vfH
原文链接:https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497447&idx=1&sn=f47a84f48f4c08b4882b8aecd29c5b3c&chksm=fbd7448bcca0cd9db8d249bfd16a4268f6a6fcaadc6269baee674d87e11bade03a055bfc73c2&scene=27#wechat_redirect

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
17天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
1月前
|
机器学习/深度学习 算法 Python
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。本文详细介绍了随机森林的工作原理、性能优势、影响因素及调优方法,并提供了Python实现示例。适用于分类、回归及特征选择等多种应用场景。
59 7
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
98 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
95 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
88 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
46 4

热门文章

最新文章