为了更好地服务于目标客户, 嵌入式设计团队也在研究新技术, 如机器学习和深度学习。 深度学习允许这些设计师以有限的资源更快地开发和部署复杂的系统和设备。 通过这些技术, 设计团队可以使用数据驱动的方法建立系统或复杂的系统模型。
机器学习和深度学习不是用基于物理的模型来描述系统的行为, 而是从数据推导出系统的模型。当需要处理的数据量相对较小, 而且问题的复杂性较低时, 传统的机器学习算法是有用的。但是, 如果有更多的数据, 比如无人机, 那么更大的问题又如何呢? 这个挑战需要深度学习技术。 这种技术将把我们推向下一个控制设计和物联网应用的时代。
机器学习在工业资产中的应用
首先, 考虑机器学习技术在工业资产状态监测中的应用。机器学习将基于条件的监测应用从被动和预防性维护的时代过渡到预测性维护。 这些技术用来检测异常行为, 诊断问题, 并在某种程度上预测了工业资产的剩余使用寿命, 比如马达, 水泵和涡轮机等等。
基于机器学习开发和部署模型的工作流程如图1所示:
图1 分析工作流程与机器学习
看看这个流程是如何用来监测马达健康状况的。数据来自于多种类型的传感器, 如加速度计, 热电偶和电动机上的电流传感器等。 特征工程通常由两部分组成: 特征提取和特征提炼(图2)。
图2 特征工程
特征提取是用来从原始数据(或波形)中获取有用信息, 以了解资产的健康状况。例如, 从电动机发出的电流信号的频谱包含了可用于检测故障的信息, 如图3所示。 频谱中不同频段的平均振幅可以作为从当前信号中提取的特征。 从多个传感器中提取的特征可能有冗余信息。
图3 从电机电流信号中提取特征
一种特征提炼的方法是主成分分析(PCA) , 可以用来减少最终用于构建模型的特性数量。、特征数量的缩减可以减少所使用机器学习模型的复杂性。缩减的特征集被表示为向量(或数组) , 并输入到模型使用的机器学习算法中。
机器学习的类型
模型创建和验证是一个迭代过程, 通过这个过程, 可以实验几种机器学习算法, 并选择最适合目标应用的算法。一种非监督的机器学习算法, 如高斯混合模型(GMM) , 可以用来模拟电机的正常行为, 并检测电机何时开始偏离其基线。 非监督的方法有利于发现数据中隐藏的模式, 而无需对数据进行标记。
虽然非监督学习可以用来检测马达中的异常, 而监督学习则需要检测异常的原因。 在监督学习中, 提出了一对输入数据和所需输出的算法。这些数据被称为标记数据。该算法是将输入映射到输出的函数。用于训练机器学习算法的数据包括在正常和错误条件下提取的特征。 这些特特征是用一组标签来清楚地标识出马达的状态。 支持向量机、 Logit模型和人工神经网络是常用的监督式机器学习算法。
对传统机器学习技术的挑战是特征提取过程。 这是一个脆弱的过程, 需要领域专家的知识, 通常是机器学习工作流程中的胜负关键。
向深度学习工作流程的迈进
深度学习算法最近越来越流行, 可能是因为它们不再需要特征工程步骤。从传感器获得的数据(原始测量)可以直接输入 DL 算法, 如图4所示。
图4 深度学习的工作流程
深度学习算法是基于人工神经网络的。人工神经网络算法受到了生物神经网络结构和功能方面的启发。这些算法的结构形式是由一组相互连接的计算节点(人工神经元)组成的层次结构。 第一层被称为输入层, 它是输入信号或数据的接口。最后一层是输出层, 这一层中神经元输出最终的预测或结果。
在输入和输出层之间, 有一个或多个隐藏层(图5)。 一层的输出通过加权后连接到下一层的节点。网络通过修改这些权重来学习输入和输出之间的映射。通过使用多个隐藏层, 深度学习算法从输入数据中提取特征, 而不需要明确地将特征输入到算法中。 这被称为"特征学习"。
图5 前馈人工神经网络
面向深度学习的系统设计
#p#分页标题#e#深度学习最近在软件应用领域取得了成功, 主要是因为技术部件的成熟, 比如硬件中的计算能力增强, 大量的训练数据被标记, 学习算法和网络初始化方面的突破, 以及开放源码软件框架的可用性。
下面是用深度学习系统的主要考虑因素。
拓扑
深度学习是一个不断发展的领域, 目前正在使用许多网络拓扑[1]。其中一些网络显示了对控制和监控物联网应用的承诺:
深层神经网络(Deep Neural Network, DNN)是一种完全连接的人工神经网络, 具有许多隐藏层(因此深层)。 这些网络是极好的函数逼近器, 例如, 可用于电力行业中电子控制的应用。控制系统的仿真模型可用于使用深度网络构建控制器, 并生成训练数据。通过这种方法, 可以探索通常难以使用传统方法控制的状态(边界/交叉条件)
卷积神经网络(Convolutional Neural Network, 简称 CNN)是利用输入信号的二维结构, 如输入图像或语音信号。一个卷积网络由一个或多个卷积层(过滤层)组成, 然后是一个完全连接的多层神经网络。 这些网络在成像和目标识别中的缺陷检测等问题上取得了成功。它们也被用于驾驶员援助系统(ADAS)中的场景。
循环神经网络(Recurrent Neural Network, RNN)是基于利用顺序(或历史)信息进行预测的算法。这些网络有利于时间序列分析。传统的神经网络假设所有的输入(和输出)在时间或到达的顺序上相互独立。记录状态信息, 存储过去的信息, 并使用迄今为止计算出来的信息进行下一个预测。 在物联网应用中, RNN有利于学习历史行为, 并用于预测未来的事件, 例如资产的剩余使用寿命。 长短期记忆(LSTM)网络也适用于这类应用[2]。
深度强化学习(DRL)对于在复杂动态环境中运行的自适应控制系统是有好处的。 考虑控制在仓库操作中部署的机器人, 这些机器人必须动态地适应新的任务。 以强化学习为基础的控制者学习一项任务时, 它们通过执行一个动作, 使他们更接近目标而获得的奖励。例如, 控制器接收来自摄像机的图像, 该照片显示了机器人手臂的当前位置, 并利用图像中的信息来学习如何将手臂移近目标(图6)[3]。 基于DLC的控制器可以通过机器人模拟器或者通过观察实际的机器人来训练。
图6 机器人控制应用的深度强化学习
训练
DNN需要大量的训练数据, 这些数据最好包括来自学习所需要的所有不同状态或条件的数据。对于大多数应用而言, 现有数据主要来自系统的正常工作状态, 其中包括从其他状态获取的少量数据。
数据增强/泛化是一种用来改善数据不平衡的技术, 可以从现有的小样本集开始, 通过数据转换创建额外的合成版本,还可以使用该系统的模拟模型来创建训练数据。
另一个挑战是难以收集训练这些网络所需的大量数据。转移学习是可以用来缓解这个问题的方法之一。 使用转移学习, 可以从预训练的神经网络开始(大多数深度学习框架提供了可以下载的经过完全训练的模型) , 并用应用中的数据对其进行微调。
硬件
训练深度网络有着巨大的处理要求。GPU已经成为训练深度网络的主要选择。由于计算性能高, 内存大, 以及编程工具的选择, GPU很有吸引力, 几乎成为训练的必要条件。
此外, FPGA是部署训练网络的良好目标。FPGA提供了更低的延迟, 更好的功率效率,特别是在嵌入式设备上部署这些网络, 用于与I/O紧密操作的控制系统。
软件
快速采用和成功的一个原因是成熟软件框架的可用性。 一些常见的框架有 TensorFlow, Caffe, Keras 和 Computational Network Toolkit (CNTK)[4,5,6,7]。 这些框架支持不同的操作系统, 如 Windows 和 Linux, 以及 Python 和 C语言。 大多数这些框架都有支持或实例来实施最新的深度网络,也支持GPU的使用。
深度学习: IoT 控制设计的新方向
深度学习是人工智能领域中一个令人兴奋的新方向, 也是解决工业控制设计应用中一个有前途的技术。
快速开始掌握深度学习的方法是下载前面提到的开源框架, 并且用教程示例进行实验。 从一个类似于应用程序的示例开始, 然后使用转移学习来快速操作。
References:
Veen, Fjodor Van. "The Neural Network Zoo." The Asimov Institute. October 28, 2016. Accessed September 20, 2017.
"Long short-term memory." Wikipedia. August 27, 2017. Accessed September 20, 2017. https://en.wikipedia.org/wiki/Longshort-termmemory.
#p#分页标题#e#Zhang, Fangyi, Jürgen Leitner, Michael Milford, Ben Upcroft, and Peter Corke. "Towards Vision-Based Deep Reinforcement Learning for Robotic Motion Control." [1511.03791] Towards Vision-Based Deep Reinforcement Learning for Robotic Motion Control. November 13, 2015. Accessed September 20, 2017. https://arxiv.org/pdf/1511.03791.pdf.
"TensorFlow." TensorFlow. Accessed September 20, 2017. https://www.tensorflow.org/.
"Caffe." Caffe | Deep Learning Framework. Accessed September 20, 2017.
"Keras: The Python Deep Learning library." Keras Documentation. Accessed September 20, 2017. https://keras.io/.
"Video: Unlock deeper learning with the new Microsoft Cognitive Toolkit." Microsoft Cognitive Toolkit. Accessed September 20, 2017. https://www.microsoft.com/en-us/cognitive-toolkit/.
【本文来自51CTO专栏作者“老曹”的原创文章,作者微信公众号:喔家ArchiSelf,id:wrieless-com】
戳这里,看该作者更多好文
【编辑推荐】
容器化应用环境安全:需要进行这8条安全检查
IoT安全问题严重 但大多数公司并未掌握检测ICS攻击的方法
外媒速递:Android应用开发领域的那些顶级编程语言
算法太多挑花眼?教你如何选择正确的机器学习算法
如何把复杂单体应用快速迁移到微服务