向深度学习工作流程的迈进
深度学习算法最近越来越流行, 可能是因为它们不再需要特征工程步骤。从传感器获得的数据(原始测量)可以直接输入 DL 算法, 如图4所示。
图4 深度学习的工作流程
深度学习算法是基于人工神经网络的。人工神经网络算法受到了生物神经网络结构和功能方面的启发。这些算法的结构形式是由一组相互连接的计算节点(人工神经元)组成的层次结构。 第一层被称为输入层, 它是输入信号或数据的接口。最后一层是输出层, 这一层中神经元输出最终的预测或结果。
在输入和输出层之间, 有一个或多个隐藏层(图5)。 一层的输出通过加权后连接到下一层的节点。网络通过修改这些权重来学习输入和输出之间的映射。通过使用多个隐藏层, 深度学习算法从输入数据中提取特征, 而不需要明确地将特征输入到算法中。 这被称为"特征学习"。
图5 前馈人工神经网络
面向深度学习的系统设计
深度学习最近在软件应用领域取得了成功, 主要是因为技术部件的成熟, 比如硬件中的计算能力增强, 大量的训练数据被标记, 学习算法和网络初始化方面的突破, 以及开放源码软件框架的可用性。
下面是用深度学习系统的主要考虑因素。
拓扑
深度学习是一个不断发展的领域, 目前正在使用许多网络拓扑[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.
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.
“TensorFlow.” TensorFlow. Accessed September 20, 2017.
“Caffe.” Caffe | Deep Learning Framework. Accessed September 20, 2017.
“Keras: The Python Deep Learning library.” Keras Documentation. Accessed September 20, 2017.
“Video: Unlock deeper learning with the new Microsoft Cognitive Toolkit.” Microsoft Cognitive Toolkit. Accessed September 20, 2017.