Peter Webb和Lucio Cetto,Mathworks
我们将走过端到端的工作流程,特别强调将流数据集成到开发环境中,以及对模拟生产环境的数据科学家的益处。我们展示了物理模型如何加速自动启动系统。我们在MLOPS的背景下讨论该系统。我们结束,随着这些建筑权衡在运营系统中通知系统的演变而摘要
谢谢你今天来的谈话。我是彼得韦伯。我在MathWorks的工作侧重于Matlab部署和远程执行。我今天加入了Lucio Cetto,他们更加了解机器学习和数学比我更重要。
我们在这里与您分享一个用例故事。我们使用联合机器学习为工业冷却风扇开发了预测的维护应用。我们培训了一种模型来检测来自风扇和触发服务警报的传感器数据中的异常。我们在30天内准备好生产。
我们如何快速地放置一个大系统?没有大秘密。我们使用了一个盒子 - 你知道,那盒一切都出现了。开箱即用,从机架上 - 我们可以获得和使用的软件。我们需要一种物理准确的模拟器来生成培训数据,流媒体服务,以将传感器数据传输到分析引擎以及度量标准可视化平台。我们不得不配置将所有碎片粘合在一起的连接器。
但随后我们可以专注于重要的工作。Lucio必须编写机器学习分析。而且我必须创建该指标仪表板。但在我们到达那之前,有点关于项目本身。
所以这是一般的想法。从工厂扫描由FANS产生的数据以生成服务警报。但我们不仅仅是一家工厂。他们每个人都知道其他人没有。
如果我们将所有来自所有工厂的所有数据组合,我们将具有更好的模型,但这需要额外的基础架构,一个中央服务器培训和更新模型,以及一些大管将数据推向该服务器。然后,一旦模型更新,本地分类器必须暂停以获取新模型。该架构有效,但我们认为我们可以做得更好。
我们想要的是被称为联合学习。我们替换了中央计算服务器,具有更简单和更便宜的数据存储。然后我们需要来回发送的唯一信息是模型及其参数,无需这些昂贵的数据管道。每个工厂的当地分类器仍然受益于同龄人累积的知识。
这给我们留下了一个问题。联合学习能够建立一个像教练一样精确的模型,并且能够访问所有的数据吗?稍后,您将看到Lucio的一些分析,帮助我们理解权衡。
我们正在使用联合学习来简化我们的基础架构。但另一个重要用例是数据隐私。由于数据永远不会离开拥有它的站点,因此它包含的任何秘密仍然是本地的。虽然风扇传感器数据可能对此可能没关系,但对于医疗或其他类型的受调控或受保护数据来说,这可能对此非常重要。
谈到数据,我们的培训算法需要很多,很多。但这不仅仅是一个音量问题。如果是,我们可以将模型连接到粉丝的数据,我们的数据科学家将无法完成工作。因此,我们转向一个可以为我们提供信号和标签的来源 - 物理准确,多域仿真模型。
关于标签的那部分值得强调。由于模型生成数据流以来,它知道风扇无法正常工作并标记培训师的那部分信号。没有模型,我们有很多手动分类。
我们需要模拟这些粉丝的三种特征 - 电气,机械,热量 - 以及扫描每个域中的异常。例如,负载异常表示外部温度很快地升起,或许响应风扇冷却的装置上的负荷增加。它不足以独立模拟域,因为在真正的粉丝中,他们互动。
例如,当温度升高时,风扇控制器提高了电源电压。电机运行得更快,冷却速度增加。这为我们提供了足够的准确性,在第一天准备生产。
所以在这里,我们在一天。粉丝正在将数据流传输到分类器。仪表板提供了操作员的系统近实时视图。
但现在我们有另一个标记数据的来源。分类器正在标记现场风扇数据。我们如何利用它来改进算法?现在我们需要一个人的循环。
操作员可以定期确定分类器遗漏了一个真正的异常或发出了一个错误警报。这种情况不应该经常发生。但当它出现时,操作员可以将错误的分类信号和正确的标签发送给训练者。
当足够累计保证刷新时,教练员更新模型并将其发送回分级器。手动分类才变得可行,因为偶尔需要。机器学习算法处理大部分工作。
与此同时,我希望我已经给你了解下一节的背景。Lucio将告诉您我们的建模技术以及我们如何评估其有效性。卢西奥。
所以今天,我将参加数据科学家的角色。对我来说,没有比具有物理模型开始的更好的场景。这将有助于我们更好地了解我们在手头的问题,从而提出一个增量和联合的学习方法,可以让我们检测和分类粉丝的异常。
让我们首先了解我们可以观察的数据。我们在每个系统中观察来自传感器的三种不同的变量。或者,如果你愿意,我们也可以称他们为粉丝。我们观察施加到电动机的电压,风扇的灵敏度和温度。
出于可视化的目的,在这些示例中,我们引入了更多通常预期的异常。异常情况在第一个图的顶部作了注解。异常有三种类型。
当系统正在处理过载的条件时,检测到负载异常。也就是说,我们要求更多地对系统设计的工作。当电动机或风扇的机械子系统发生不良时,检测到风扇异常。最后,电源异常是一种缺乏,其在电压下降。
现在让我放大一个小区域。该地区约2米。在我们的示例中,异常在迹线上表现为小脉冲,持续10到100秒之间的东西。请注意,不同类型的异常具有不同的配置文件。这些迹线中只有一个包含的信息通常不足以做出不同类型的异常的完美分类,因为一种异常或另一个异常可以在几个信号中表现出。
这里有一些复杂性。例如,定义速度的第二异常的脉冲是 - 让我向您展示在这里 - 是在噪声幅度内。而且,温度迹线朝向末端存在两个表观脉冲。但他们不代表任何异常。
这些是我们可以识别在这个问题中的数据分析挑战。系统条件在不同的位置各不相同。例如,负载标度 - 您可以在右侧看到第二条迹象,温度沿当天变化。
各个系统是不同的。这意味着每个粉丝的年龄可能是不同的。因此,特征可能是不同的,我们衡量的东西。
此外,观察到的异常在几个位置不同。有一些情况下,在一些工厂,我们只能观察一种异常的异常。最后,异常检测滞后应按秒。所以我们不能使用大窗户来纠正这些信号。
在谈论联邦学习之前,让我们做出一些假设。正如我们在前一级的幻灯片上看到的那样,有局部系统条件是依赖于工厂,工厂或个人风扇本身的依赖。例如,给定的工厂在受控温度环境中可以具有一系列风扇。或者他们可能会在减少时间工作24/7。
此外,每个粉丝可能在其生命周期中的不同点。因此,我们假设这些可变条件主要由信号趋势线的小变化表示。对于这样,我们将使用剩余的使用寿命和趋势的一些强大的机制。
我不会详细介绍这一点。我们已经在我们上一年前的演讲中谈过了这一点。但是,我将在应用这些校正后向您展示数据的效果。
在这里,我仅通过仅查找两个变量来绘制数据点。我们可以看到,在删除本地效果后,我们可以清楚地将负载异常与正常数据分开。顺便说一下,当我们看看在这些图中未绘制的模型电压时,电源异常也很容易地歧视。
最重要的是,让我强调有关当地条件的任何信息 - 这意味着强大的转发和剩余的使用寿命 - 不传达给其他系统,也不是联邦。它将保持每个模型的本地。
现在让我们去建模技术。为了模拟异常,我们使用一组二进制分类器来模拟给定类型的异常与正常行为。我们尝试了增量线性支持向量机和增量天真贝叶斯分类器。金宝app
SVMS使用随机梯度缩减算法来更新从随机超平面启动的模型。Naive-Bayes分类器更新代表独立正态分布的夏季统计信息。天真贝叶斯分类器具有它们可以在概率框架内提供分数的优点。但是,在我们的实验中,我们发现支持向量机更准确地对此类型的问题。金宝app
现在,回想一下,并非所有的异常都可以在每个节点上充分地代表。因此,我们只培训那些我们有足够证据的风扇的那些二元学习者。让我们制作一个关于标签的小括号。
我们假设这些由以下两种方式提供。在第一种情况下,给定工厂的操作员可以在遇到它们之后标记异常,将信息改装为极端。在第二种情况下,我们可以考虑在给定工厂的某些条件下启动系统操作的工程团队,他们创建了一个生理计算机模型,它在标签中生成数据。
好的,让我们看看联邦如何工作。让我们假设我们有五个节点。每个节点都以增量学习算法训练到其本地数据。模型参数和模型权重被发送到联合。
权重是一个值,其中包含我们在每个本地节点的每个异常所观察到的证据量。在联合会上,我们还保持全球模型参数和全球体重,由Waught和Theta Naught。我们可以简单地使用加权和计算模型参数。在支持向量机的情况下,我们计算新的水镀金宝app系数和偏置。在幼稚贝叶斯的情况下,分类器我们为标准偏差和每个变量的平均值计算重量本身。
该计算可能是同步或异步的。也就是说,我们可以在收到一个模型更新时立即更新全局模型。或者我们可以在收到所有型号更新时批量更新。稍后,彼得将向您展示我们可能还会在每个节点上计算全局更新。
有三个重要方面需要记住。联邦利用每种异常类型的证据量对模型参数进行加权。该联盟还负责协调节点报告的新型异常。这意味着,当新的异常出现时,联邦将更新已知异常的清单。
正如我已经说过的,全球联盟权重上限是一个任意值。因此,我们继续考虑节点引入的新颖性。然后将新的更新发送回联邦。我们更新了每一个,每一个粉丝的模型。
让我们来看看分类模型的准确性。回想一下,在这里,我们正在呈现两种不同的范式 - 增量学习和联合学习的组合。要了解更好的准确性如何对这些步骤探讨这些步骤的准确性。因此,让我们首先通过查看这种简单的线性SVM的准确性。这是一个离线线性SVM。所以我们得到所有数据,我们立即训练SVM。
让我们来看看离线线性SVM模型的比较图表。这里的准确性通过在超过24小时内运行的10个风扇系统的所有数据上查看五倍的交叉验证来计算。第一行和列代表正常数据,您可以看到它显然是最常见的条件。
接下来我们有三种类型的异常。最后一行和列是最不常见的条件。对于我们来说,当我们同时观察两个或更多异常时,它代表了这是一种非常罕见的条件。您可以注意到我们;只缺少在非重叠案件上标记七个真正的正常异常。
让我们与一个增量支持向量机学习者进行比较。金宝app在这里,我们通过在24小时内观察预测预测来测量准确性。请注意,我们也会错过很少的异常。但是,该模型产生了更苛刻的警报。
值得突出的东西是我们不会错误分类异常。这是由于建模的性质。也就是说,因为我们在正常数据和异常类型之间使用二进制模型,因此在错误分类将暗示在两个二进制学习者中有错误,这可能要小得多。总之,这两个方案都具有非常低的假负率和假发现率,这很好。
好的,现在让我们与增量联合学习方法进行比较。在这种情况下,每个本地模型只使用一种类型的异常列车。然后将该模型发送到联合,我们测量使用联合模型的预测预测的准确性。我们仍然错过了很少的真正的异常。
但在这些条件下,错误的发现率大约增加了每200标记的异常的错误。让我在这里强调,虽然左侧的增量模型需要访问所有数据,但右侧的联合模型不需要共享或传达任何数据。相反,我们只分享个人模型,即联合学习范例。
让我给你们看一些我们正在做的典型错误。最常见的错误是两个异常同时发生。我们实际上预料到会出现这种类型的错误,因为信息的数量不足以调整模型。
系统暂态过程中出现另一个错误。这也是意料之中的。对于这个问题,有两种可能的变通方法,我们在概念验证中没有完全实现。首先,我们可以考虑一些小的滞后。我们还可以将系统分数或后验概率纳入系统中,以便给操作员提供任何检测到的异常的重要性的概念。
要关闭此演示文稿的数据分析部分,请让我向您展示我如何将我们刚才描述的算法打包。有三个流函数。其中两个在每个节点处在本地运行。和两个更新联合模型。异常预测器接收具有观察的流,并馈送到具有异常类型和分数的输出流。
分类模型以及本地条件有其他输入。虽然第一个不需要更新,但需要更新每个模型或风扇的本地条件。回想一下,我们将当地条件保留为每个风扇或系统。
递增学习异常分类器的函数具有类似的签名,不同之处在于它也在输入流中接收异常级别。并用更新后的参数对分类模型进行更新。最后,更新联邦模型的函数不接收任何数据、标签或本地条件。输入和输出只是分类模型和被证明的权重。
就是这样。所以现在让我回到彼得,谁会告诉我们他如何通过一些实现细节来推断整个系统并驱动我们。谢谢你。
感谢Lucio,用于解释异常检测器如何将模拟信号转变为方波,离散状态变化,我们需要计算。这是我们开始的任务,毕竟扫描了一组实时信号,为冷却系统运营商创建预测性维护解决方案。所以让我们来看看那个系统以及我们如何快速将它放在一起放在一起。
该系统基本上由三个组件组成 - 数据源,分析引擎和度量标准仪表板。连接器链接或与流服务交互以通过该管道管理消息流。所以这是整个系统的高级抽象视图。但在我们填写这些抽象之前,它不会做任何事情。
现在我们返回盒子并拔出所有复杂的软件。Simscape的多域模型生成我们的培训数据。MATLAB生产服务器运行培训和分类算法。Redis保留模型参数和其他状态。和涌入和Grafana提供仪表板。
为了帮助你理解构建这样一个系统的权衡,我认为我们应该跟踪信号在管道中的旅程。我们将在这三个部分中每一个停下。或者我会强调我们面临的挑战和我们做出的选择。让我们来看看数据生成。
这个模型允许我改变在给定时期内发生的异常的类型和数量。这种变化增加了我可以扔给训练者的场景的多样性,并提高了模型的最终准确性。您看到的颜色表示不同的模拟域。
这是在工作中的模拟器,产生大约一个小时标记的合成数据。这里有四个图表 - 三个风扇信号和负载异常。并且在它运行时,您会看到异常标签的意思。
负荷异常是那些远离顶部图表中看到的那些。在本节中,您可以看到我们的几个注入的负荷异常。壳体温度升高,风扇加速,绘制更多的功率和补偿。
在顶部图表中,您可以看到标签,它是逻辑值,在发生异常发生的时间内真实,并且在一切正常时都是假的。这就是为什么异常信号是方波。这是一个电压异常。看到底部图表中的大电压下降和风扇速度的相应放缓。温度稍微上升,但不足以触发异常标签。
另一件事要注意的是,这些红色区域中的每一个宽约90秒,因此包含大约900条消息。那些方波标签被切成大量的小块。这将在后来很重要。我们的旅行信号的下一个停止是分类器,我们将看到如何为高吞吐量设计联合。
这是我们一个知识共享工厂的异常检测管道。让我们看一下这个信号分类器的内部。每个工厂都有许多异常探测器,每个探测器都使用型号缓存在本地数据存储中。联合所需的参数存储在所有工厂都可以访问的共享数据存储中。异常探测器同时运行,每个处理信号来自一组独特的风扇。
当它是时候将来自其他工厂的参数集成到本地模型时,我们想尽可能短的时间暂停每个本地检测器。事实证明,如果我们将联合纳入每个探测器,我们的数据存储器的原子读取右保证使得每个探测器可以完全独立地操作。一旦任何给定的检测器确定它已经看到足够的数据以可衡量的方式更改参数,它会从共享商店中提取新参数并更新其模型。
请注意,同时,绿色工厂将更新发送到共享商店。联邦探测器是否会更新?这并不重要。如果没有,它将在下一个周期上得到它。重要的是,其他探测器没有停止,并且参数数据没有损坏。
然后联合检测器更新工厂的模型和本地商店。同时,不同的探测器加载模型。再次,我们不知道它是否有更新的版本或更新版本,它并不重要。由于每个探测器都可以自己联合,因此不需要同步阶段,这将使其中一些等待。这使我们的吞吐量很高。
我们的信号现在已经变成了一个方形波浪,它朝着仪表板行进。我将使用我们信号的最后阶段,以突出几个关于时间序列数据的微妙点。当您设计自己的数据模型时,您需要至少考虑这些问题。虽然这两个信号看起来像原子不可分割的单位,但采样率将它们划分为段。这就是它们如何通过系统运输 - 作为多个消息。
现在你可能已经看到了这个问题。高吞吐量所需的数据并行性可以与网络延迟结合以扰乱信号。大多数消息传递服务将为您的数据提供摄取或抵达时间戳。这就是系统接受消息的时间。
但是为了将这些消息重新组合在一起,我们需要事件时间戳,它记录了信号生成的时间。因此,如果您正在生成时间序列数据,请确保您的数据模型包含事件时间。现在我们的信号在外面,通过网络传输。我们将在其中一个连接点遇到它。
我们可怜的小方波被分成了四块,而这四块已经不整齐了。但是连接器使用消息时间戳重新组装它,将其放入称为窗口的小缓冲区中。然后它将每个窗口作为单个更大的消息发出。在我们的示例中,窗口指向inflxdb。
我希望你能看到为什么使用时间戳很重要。请注意,异常信号跨越窗口边界。这就是为什么信号用这些小方块装饰。那些代表一个单独的唯一信号标识符,即数据库查询用于将Windows加入并加入。
所以最后,仪表板的绑定数据的时间一致的数据窗口。让我们来看看它到达那里会发生什么。您已经看到了风扇传感器数据的视频,所以我以为我会从分类器开始,然后向您展示仪表板。
这是在开发期间的分类器。我正在使用Matlab会话作为Airside服务器,生产的生产率太慢,但对调试非常方便。现在我们停在一个休息点。我们可以看一下风扇输入数据,该数据被存储为时间表。
有一些传感器信号的值。通过生产功能通过此数据后,我们可以检查结果。如果我是一个更好的数据科学家,我会更好地判断这些是否正确。但我相信Lucio的数学,所以我相信他们是。
现在同样的分类器在我的八个工人本地服务器上运行。主要是,我想突出显示此处的吞吐量,因为每个请求包含大约1,000条消息。您可以看到我们每秒在6,000到8,000条消息之间处理。
这是仪表盘。这是冷却系统的概述——顶部的异常数,柱状图;在它下面,是异常的扇形分解图。在右边,是所有异常的时间轴,显示了它们发生的时间。
我们还可以深入了解每个粉丝的详细信息。这是粉丝六。您可以看到触发它们的异常计数和信号值。
现在我们已经走得更远了,你可以看到又有一些粉丝上线了。让我们看看第九扇。目前只报告了一种异常。在右边,你可以看到风扇速度图中有更多向下的峰值。
现在我会回到主屏幕。你可以看到我们积累了几百个异常。这是我们开发的Grafana仪表板的概述。
所以这就是我们所学到的。物理模型提供的培训数据给您一个头部开始。并使用现成的组件让您确实将系统迅速放在一起。
Federation使您的模型更加智能。对关注点和界面设计的谨慎分离使得在必要时更容易进行扩展。物理模型为鲁棒预测性维护分类器的快速发展提供了种子。非常感谢。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。