Introduction to Machine Learning in Production

一、机器学习生命周期和部署概述

1. 概述

下图展示了一个机器学习项目包含的内容

在这里插入图片描述

2.机器学习的生命周期

机器学习项目的生命周期包括:

  1. 定义项目:确定模型的输入输出
  2. 数据:收集数据、标记数据
  3. 建模:训练模型、误差分析
  4. 部署:部署、监控、维护

在这里插入图片描述

3. 机器学习模型部署的挑战

  1. 概念偏移(concept drift)或数据偏移(data drift):当模型部署完成后数据的分布发生变化

    • 逐渐变化:例如语音识别中年轻人的样本比重逐渐增多
    • 瞬间变化:例如由于新冠大流行,信用卡反诈骗系统失灵了因为个人购买方式发生了巨大变化,由线下购物转为线上购物

    数据偏移通常指数据本身发生变化,概念偏移通常指x->y的过程发生变化。

  2. 软件设计时的要求,包括

    • 实时处理/批处理
    • 云/边缘
    • 计算资源是否足够
    • 延迟、QPS(query per second)
    • 日志记录
    • 安全和隐私

4. 项目部署模式

常见部署用例:

  • 新产品,新功能:常见的设计模式是先启动少量流量,再逐渐增加流量
  • 使用自动化/协助方法完成已有任务:
  • 代替之前的机器学习系统

核心思想:监控和回滚(在系统无法工作时回滚到上一个版本)

部署模式:

  • 影子模式(shadow mode):在初期我们使用影子模式部署,在这个模式中,机器学习算法和人类同时对某任务进行判断,我们会采取人类的判断作为结果。这样做的目的是收集有关学习算法和人类判断进行对比的数据。
  • canary deployment:在中期我们将5%左右的流量交给机器学习算法进行决策并监控算法的好坏。之后可以逐步增加流量来让机器学习算法进行决策。
  • blue green deployment:蓝色代表旧版本,绿色代表新版本,我们通过路由来对版本之间进行迅速切换。优点是方便进行回滚。

自动化程度分类:仅人工->影子模式->ai辅助->半自动->全自动

5. 项目监控

使用dashboard来监控系统的一些指标。

常见的监控指标包括:

  • 软件指标:内存、计算、延迟、生产量和系统负载
  • 输入指标:平均输入长度、平均输入量、缺失值数量、平均图像亮度。主要观察输入分布是否发生变化。
  • 输出指标:返回空值次数、CTR。主要用于判断输出是否发生某种形势的改变。

部署/监控和建模类似,是一个迭代的过程。
在这里插入图片描述
我们通过设定警告阈值来进行监控。

二、建模

AI系统=数据+模型,模型的训练是一个迭代的过程
在这里插入图片描述

1.模型训练的挑战

  • 在重要样本上的表现:例如在网络搜索中,将搜索分为两种,一种是信息检索,例如搜索附近的餐厅,另一种是导航式检测,例如搜索youtube,很显然,我们希望后者更为精准。因此如果我们只是用平均准确率会导致模型在后者表现的很糟糕,解决方法是为后者添加更多的权重,
  • 在关键部分的表现:例如在贷款发放中,我们不能因为性别、地理位置、语言等方面产生歧视。
  • 在稀有分类的表现:例如在医疗诊断问题中,99%的样本都是健康的人,而我们更应该关注剩余1%的样本。

2. 误差分析

我们可以在误差分析中对样本打上不同的标签,以视觉检查为例,标签可以是特定的类型标签(与y有关),可以是图片的质量(模糊度、光照 ),可以是一些元数据(手机品牌、工厂)。

对于不同的标签,我们可以进行分析,例如该标签下的样本误分类率、有多少错误样本包含该标签

3. 性能审计

审计框架:检查准确率、偏差或其他问题。步骤包括

  1. 寻找系统可以出现误差的方法
    • 在数据子集的表现(某一种族、某一性别)
    • 准确率、召回率
    • 在稀有类别的表现
  2. 建立评价指标来评估一部分数据在这些问题上的表现
  3. 在业务逻辑进行分析

4. 以数据为中心的ai

使用工具来增加数据的质量,进而训练模型。对于非结构化数据我们可以进行数据增强,对于结构化数据我们可以增加特征。

数据增强的目的:创建更多现实的样本,在创建新样本中,我们时刻要注意一下问题

  • 样本是否看起来真实
  • x->y的映射是否发生改变
  • 算法在新数据的表现是否好

另外,我们需要对不同的试验进行跟踪,记录每次试验的模型、超参数和结果。

三、数据定义和baseline

数据标注时可能会对数据有不同的标注,如下图所示
在这里插入图片描述
这三种标注方法都有一定意义,但如果数据集中包含了这三种方法,学习到的模型可能会很糟糕。

提高标签一致性的方法:

  • 多个数据标注人员标注同一张图
  • 创建一个新标签

数据标注的方法:内部自己标注、外包、众包。

1. HLP(人类水平性能)

HLP是指人类在某项任务中可以达到的水平。

HLP的用途包括:

  • 在学术界作为benchmark
  • 为工业项目制定更合理的目标
  • 证明机器学习系统可以比人类在某一任务上更加优秀

提高标签一致性可以提高HLP

2. 数据管道

下图是一个预测用户是否找工作的pipelne

在这里插入图片描述
企业存储解决方案:数据仓库、数据湖

3. 范围确定(scoping)

范围确定流程:
在这里插入图片描述
可行性分析:使用外部基准(文献、其他公司)

4. 数据标注的方法

  • 过程反馈:监控系统输出并获取系统反馈作为标签。例如CTR(点击率预估)
  • 人工标注
  • 半监督学习:使用小部分已标注的数据集合大量未标注数据集结合起来进行训练,前提是不同的标签类会聚类到一起或特征空间中含有可识别的结构
  • 主动学习:通过智能采样选取数据集中最有用的数据子集进行标注并训练,继续选择有用的数据子集不断迭代。主动学习的采样技术包括边界采样、基于聚类的采样
  • 弱监督:利用含有噪声、不准确的标签来进行训练,例如Snorfel方法

5. 特征工程

文本数据预处理方法:词干提取、词性还原、TF-IDF、n-grams、词嵌入等
图像数据预处理方法:翻转、模糊等

特征工程方法:

  • 数值型变量:缩放、归一化、标准化(z-score)
  • 类别型变量:分桶、词袋模型
  • 降维:PCA、t-SNE、UMAP
  • 特征组合:将多个特征组合成一个新特征

特征选择方法:

  • 过滤法:使用相关性检测去除冗余特征,例如皮尔逊相关系数、单变量特征选择、互信息、斯皮尔曼相关系数、F-检验、卡方检验
  • 包装法:选择特征的一个子集进行训练,根据训练结果选择新的子集不断迭代,最终得到需要的特征
    • 前向选择:从一个特征开始,每次迭代增加一个特征,选择效果最好的特征,直到效果不再变好
    • 反向选择:首先选择所有特征,每次迭代删除一个特征,选择效果最好的特征,直到结果不再变好
    • 递归特征消除:使用模型来评估特征的重要性,删除最不重要的特征
  • 嵌入法:L1正则化、使用树模型来计算特征重要性

一些高级数据增强技术:

  • 半监督数据增强:例如UDA、使用GAN进行数据增强
  • 基于策略的数据增强:AutoAugment

6. 元数据

机器学习管道中的每一次运行都会产生元数据,包含各种管道组件执行或训练时产生的信息。当运行出现问题时,我们可以利用这些元数据进行debug。

机器学习元数据库:用来追踪机器学习管道组件之间的元数据 ML Metadata,一些数据实体可视为单元,每个单元包含:

  • artifacts:数据的基本单元,作为组件的输入或组件的输出
  • execution:记录数据管道中的每个组件的执行情况
  • context:工件和执行的分组关系

在这里插入图片描述

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值