Aquarium华人CEO分享:机器学习在自动驾驶中落地,核心不是模型,是管道( 二 )

Aquarium华人CEO分享:机器学习在自动驾驶中落地,核心不是模型,是管道
文章图片
Aquarium华人CEO分享:机器学习在自动驾驶中落地,核心不是模型,是管道
文章图片
Aquarium华人CEO分享:机器学习在自动驾驶中落地,核心不是模型,是管道
文章图片
图注:许多不同的自动驾驶深度学习团队 , 其模型管道的迭代周期都相当相似 。 从上到下:Waymo , Cruise和Tesla 。 我曾经认为 , 机器学习主要是模型 。 实际上 , 工业生产中的机器学习主要是管道 。 成功的最佳预测因素之一是在模型管道上有效迭代的能力 。 这不仅仅意味着快速迭代 , 还意味着智能迭代 , 第二部分很关键 , 否则你的管道很快就会产生糟糕的模型 。 大多数传统软件都强调快速迭代和敏捷交付过程 , 因为 , 产品需求是未知的 , 必须通过适应来发现 , 所以与其在前期用不稳定的假设做详尽的规划 , 不如快速交付一个MVP并进行迭代 。 正如传统软件需求是复杂的一样 , 机器学习系统必须处理的数据输入领域确实很庞大 。 与正常的软件开发不同 , 机器学习模型的质量取决于它在代码中的实现 , 以及代码所依赖的数据 。 这种对数据的依赖意味着机器学习模型可以通过数据集构建/管理来“探索”输入领域 , 允许它理解任务要求 , 并随着时间的推移适应它 , 而不必修改代码 。 为了利用这个特性 , 机器学习需要一个连续学习的概念 , 这个概念强调对数据和代码的迭代 。 机器学习团队必须:发现数据或模型性能中的问题诊断问题发生的原因改变数据或模型代码以解决这些问题验证模型在重新训练之后变得更好部署新模型并重复团队应该尝试至少每个月都要经历这个周期 。 如果你表现好 , 也许每周都要进行 。 大型公司可以在不到一天的时间内完成模型部署周期 , 但是对于大多数团队来说 , 快速而自动地构建基础设施是非常困难的 。 如果更新模型的频率低于这个频率 , 就可能导致代码腐化(模型管道由于代码库的更改而中断)或数据域转移(生产中的模型不能泛化到数据随时间的变化) 。 大型公司可以在一天之内完成模型的部署周期 , 但是对于大多数团队来说 , 快速而自动地构建基础设施是非常困难的 。 更新模型的频率如果低于这个频率 , 就会导致代码腐化(模型管道由于代码库的更改而中断)或数据域转移(生产中的模型不能泛化到数据随时间的变化) 。 然而 , 如果处理得当 , 团队可以进入一个良好的节奏 , 他们将改进后的模型部署到生产环境中 。 3建立反馈回路Aquarium华人CEO分享:机器学习在自动驾驶中落地,核心不是模型,是管道
文章图片
校准模型的不确定性是一个诱人的研究领域 , 模型可以标记它认为可能失败的地方 。 对模型进行有效迭代的一个关键部分是集中精力解决最具影响力的问题 。 要改进一个模型 , 你需要知道它有什么问题 , 并且能够根据产品/业务的优先级对问题进行分类 。 建立反馈回路的方法有很多 , 但是首先要发现和分类错误 。 利用特定领域的反馈回路 。 如果有的话 , 这可能是获得模型反馈的非常强大和有效的方法 。 例如 , 预测任务可以通过对实际发生的历史数据进行训练来“免费”获得标签数据 , 使他们能够不断地输入大量的新数据 , 并相当自动地适应新情况 。 设置一个工作流程 , 让人可以审查你的模型的输出 , 并在发生错误时进行标记 。 当人们很容易通过许多模型推断捕获错误时 , 这种方法尤其适用 。 这种情况最常见的发生方式是当客户注意到模型输出中的错误并向机器学习团队投诉 。 这是不可低估的 , 因为这个渠道可以让您直接将客户反馈纳入开发周期!一个团队可以让人类双重检查客户可能错过的模型输出:想象一下一个操作人员看着一个机器人在传送带上对包进行分类 , 当他们发现一个错误发生时 , 就点击一个按钮 。 设置一个工作流程 , 让人可以审查你的模型的输出 , 并在发生错误时进行标记 。 当人类审查很容易捕捉到大量模型推论中的错误时 , 这就特别合适 。 最常见的方式是当客户注意到模型输出中的错误并向ML团队投诉时 。 这一点不容小觑 , 因为这个渠道可以让你直接将客户的反馈纳入开发周期中一个团队可以让人类仔细检查客户可能错过的模型输出:想想一个操作人员看着机器人在传送带上分拣包裹 , 每当他们发现有错误发生时就点击一个按钮 。 当模型运行的频率太高 , 以至于人们无法进行检查时 , 可以考虑设置自动复查 。 当很容易针对模型输出编写“健全性检查”时 , 这尤其有用 。 例如 , 每当激光雷达目标检测器和二维图像目标检测器不一致时 , 或者帧到帧检测器与时间跟踪系统不一致时 , 标记 。 当它工作时 , 它提供了许多有用的反馈 , 告诉我们哪里出现了故障情况 。 当它不起作用时 , 它只是暴露了你的检查系统中的错误 , 或者漏掉了所有系统出错的情况 , 这是非常低风险高回报的 。 最通用(但困难)的解决方案是分析它所运行的数据的模型不确定性 。 一个简单的例子是查看模型在生产中产生低置信度输出的例子 。 这可以表现出模型确实不确定的地方 , 但不是100%精确 。 有时候 , 模型可能是自信地错误的 。 有时模型是不确定的 , 因为缺乏可用的信息进行良好的推理(例如 , 人们很难理解的有噪声的输入数据) 。 有一些模型可以解决这些问题 , 但这是一个活跃的研究领域 。 最后 , 可以利用模型对训练集的反馈 。 例如 , 检查模型与其训练/验证数据集(即高损失的例子)的不一致表明高可信度失败或标记错误 。 神经网络嵌入分析可以提供一种理解训练/验证数据集中故障模式模式的方法 , 并且可以发现训练数据集和生产数据集中原始数据分布的差异 。 4自动化和委托