机器学习——BP神经网络模型

一、什么是BP

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

我们现在来分析下这些话:

  • “是一种按误差逆传播算法训练的多层前馈网络”

BP是后向传播的英文缩写,那么传播对象是什么?传播的目的是什么?传播的方式是后向,可这又是什么意思呢。

传播的对象是误差,传播的目的是得到所有层的估计误差,后向是说由后层误差推导前层误差:

即BP的思想可以总结为

利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。
  • “BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)”

我们来看一个最简单的三层BP:

18df9f4ce2c6f082b74fd4b37db2aec6 1 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

  • 网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。”

BP利用一种称为激活函数来描述层与层输出之间的关系,从而模拟各层神经元之间的交互反应。

激活函数必须满足处处可导的条件。那么比较常用的是一种称为S型函数的激活函数:

e391831ad41209072393d55d71e991ee 1 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

那么上面的函数为什么称为是S型函数呢:

我们来看它的形态和它导数的形态:

p.s. S型函数的导数:

07a7b2c20af8fd39c30d1968febcbe1a 1 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426185502697 1 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

神经网络的学习目的:

希望能够学习到一个模型,能够对输入输出一个我们期望的输出。
学习的方式:
在外界输入样本的刺激下不断改变网络的连接权值
学习的本质:
对各连接权值的动态调整

学习的核心:

权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。

二、有监督的BP模型训练过程

1. 思想

有监督的BP模型训练表示我们有一个训练集,它包括了: input X 和它被期望拥有的输出 output Y

所以对于当前的一个BP模型,我们能够获得它针对于训练集的误差

所以BP的核心思想就是:将输出误差以某种形式通过隐层向输入层逐层反传,这里的某种形式其实就是:

20160426185604231 2 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

也就是一种 “信号的正向传播 —-> 误差的反向传播”的过程:

20160426185627668 2 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

2.具体

20160426185721685 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426185849061 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426185907889 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426185938876 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190037080 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190010514 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190052499 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190128765 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190141769 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190230036 3 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

20160426190216177 5 - 机器学习——BP神经网络模型 |天源股份 – 产业互联网推动者!

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

深度学习在物联网大数据和流分析中的应用

深度学习在物联网中的应用 1 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

在这个物联网与传统商业、生活深度融合的时代,各种各样的传感器每天都在收集并产生着涉及各个领域的数据。

由于商业效率和生活质量提升方面的诉求,对物联网大数据流进行分析成为学界及产业界共同的研究方向。

本文对使用深度学习来改进物联网领域的数据分析和学习方法进行了详细的介绍,从机器学习视角,将处理物联网数据的方法分为物联网大数据分析和物联网流数据分析。对目前不同的深度学习方法进行了总结,并详细讨论了使用深度学习方法对物联网数据进行分析的优势,以及未来面临的挑战。

为了更好的在物联网领域内应用深度学习方法,本文分析了物联网数据的关键特征和主要问题,对目前最先进的深度学习方法及其在物联网领域的应用进行了详细的总结,同时,对目前应用了深度学习方法的大量物联网应用进行了介绍,并且对不同类型的深度神经网络在各种物联网领域的应用进行了概括和对比,强调了深度学习与物联网应用成功结合所面临的挑战和未来的研究方向。

文章结构
深度学习在物联网中的应用 2 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

        物联网快速流数据

目前流数据分析都是基于数据并行计算或增量处理的框架,尽管这些技术减少了从流数据分析框架返回响应的时间延迟,对于物联网应用的严格时间要求,它们并不是最佳方案。

物联网需要在数据源附近的平台(甚至是物联网设备自身)上进行快速流数据分析,以达到实时或近实时性的要求,传统的流数据分析方法则面临着计算、存储以及数据源能量方面的局限和挑战。

        物联网大数据

物联网大数据具有“6V”特点:

容量(Volume): 数据量是将数据集视为大数据、或传统的大规模/超大数据的一个决定性因素,使用物联网设备产生的数据量比以前要多得多,明显符合这一特点。

速度(Velocity): 物联网大数据产生和处理速率要足够高,以支持实时大数据的可用性。鉴于这种高数据率,也证明了需要先进的工具和技术分析才能有效地运作。

多样性(Variety): 一般来说,大数据有不同的形式和类型。这可能包括结构化的、半结构化的和非结构化的数据。各种各样的数据类型可以通过物联网产生,如文本、音频、视频、传感器数据等等。

真实性(Veracity): 真实性是指质量,一致性,和数据的可信性,有真实性的数据才能进行准确的分析。这一点对于物联网来说尤其重要,特别是那些群体感知数据。

易变性(Variability): 这个属性是指数据流的速率不同。由于物联网应用的性质,不同的数据生成组件可能会有不一致的数据流。此外,在特定时间,一个数据源的数据加载速率可能不同。例如,利用物联网传感器的停车服务应用在高峰期的数据加载会达到峰值。

价值(Value): 价值是指大数据转化成为有用的信息和内容,为组织带来竞争优势。数据的价值的高度不仅仅取决于对数据的处理过程或服务,还取决于对待数据的方式。

数据流处理的主要障碍是缺少能部署在系统边缘,甚至是物联网设备上的框架或算法。当采用深度学习方法时,也要折衷考虑运行在系统边缘的网络的深度和性能。

深度学习

与其他传统机器学习方法相比,深度学习结构在近几年受到越来越广泛的关注。
深度学习在物联网中的应用 3 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

Google Trend显示近几年对深度学习的关注呈上升趋势深度学习在物联网中的应用 4 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!深度学习整体训练机制

结构

深度学习在物联网中的应用 5 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!深度学习模型总结

1)卷积神经网络(Convolutional Neural Networks,CNN)

CNN的核心结构是卷积层,有一系列可学习的参数,称作滤波器。训练过程中,滤波器在全图按照卷积顺序进行移动,计算输入和滤波器的乘积,得到该滤波器的特征图。CNN的另一个结构是池化层,将输入划分成不重叠的区域,然后用每个区域的最大值作为输出。CNN的最后一个结构是ReLU激活函数层,既可以缩短训练时间,也能避免影响网络的泛化能力。

CNN和DNN的主要区别在于CNN具有局部相连、权值共享的特性,因此在视觉任务中具有独特的优越性,并且降低了网络的复杂性。

2)循环神经网络(Recurrent Neural Networks,RNN)

深度学习在物联网中的应用 6 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!循环神经网络结构图

        RNN主要适用于输入为序列(例如语音和文本)或时间序列的数据(传感器数据)。RNN的输入既包括当前样例,也包括之前观察的样例。也就是说,时间为t-1时RNN的输出会影响时间为t的输出。RNN的每个神经元都有一个反馈环,将当前的输出作为下一步的输入。该结构可以解释为RNN的每个神经元都有一个内部存储,保留了用之前输入进行计算得到的信息。

3)长短时记忆(Long Short Term Memory,LSTM)

深度学习在物联网中的应用 7 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

LSTM记忆单元结构

        LSTM是RNN的一种扩展。LSTM中,每个神经元除了有反馈环这一储存信息的机制,还有用于控制神经元信息通过的“遗忘门”、“输入层门”及“输出层门”,防止不相关的信息造成的扰动。

4)自动编码器(Autoencoders,AE)

深度学习在物联网中的应用 8 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

自编码器网络结构

        AE的输入层和输出层由一个或多个隐层相连接,其输入和输出神经元数量相同。该网络的目标是通过用最简单的方式将输入变换到输出,以重建输入信息。

5)变分自动编码器(Variational Autoencoders,VAE)

深度学习在物联网中的应用 9 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

变分自动编码器结构

        VAE对数据结构的假设并不强,是较为流行的生成模型框架。它很适用于IoT解决方案,因为IoT数据呈现的多样性,以及标记数据的缺失。模型由两个子网络组成:一个生成样例,一个进行假设推理。

6)生成对抗网络(Generative Adversarial Networks,GAN)

深度学习在物联网中的应用 10 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

生成对抗网络概念图

        GAN由两个神经网络组成,一个生成网络,一个判别网络,共同工作来产生合成的、高质量数据。生成器根据数据在训练数据集中的分布生成新数据,判别器学习判别真实数据和生成器生成的假数据。GAN的目标函数是基于极大极小博弈的,一个网络要最大化目标函数,而另一个要最小化目标函数。

7)受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)

深度学习在物联网中的应用 11 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

受限玻尔兹曼机结构

        RBM是一种随机神经网络,由两层组成,一层是包含输入的可见层,一层是含有隐变量的隐藏层。RBM中的限制是指同一层的任意两个神经元互不相连。除此之外,偏置单元与所有的可见层和隐藏层单元都相连。

8)深度信念网络(Deep Belief Network,DBN)

深度学习在物联网中的应用 12 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

深度信念网络结构图

        虚线表示特征提取通道,实现表示生成通道。DBN是一种生成神经网络,由一个可见层可几个隐层组成。可以提取训练数据的多层表示,并且对输入数据进行重构。DBN的训练过程是逐层训练,将每一层视作一个RBM,在前一层的基础上进行训练。这样的机制使DBN成为深度学习中有效且快速的网络之一。

9)阶梯网络(Ladder Network)

深度学习在物联网中的应用 13 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

两层阶梯网络

        阶梯网络在无监督和半监督学习任务中达到了先进的水平。阶梯网络由两个编码器和一个解码器组成。编码器作为网络的有监督部分,解码器进行无监督学习。训练目标是最小化有监督部分和无监督网络的损失和。

快速实时深度学习结构

使用深度学习模型对数据流进行快速实时的处理仍在起步阶段。

早期工作:

【1】是对超限学习机(Extreme learning machine,ELM)的扩展——OS-ELM,将一个实时序列学习算法应用到单隐层的前馈神经网络。

【2】Ren等人提出的Faster-RCNN在图片中的目标检测中达到了接近实时的速度。他们的目标检测框架的运行时间为5-17fps。然而对于图像处理任务,真正的实时效果需要系统的处理和分析时间达到30fps或更高。

【3】Redmon等人提出了YOLO,将目标检测的速度提高到45fps,以及更小版本的YOLO,速度更是达到了155fps,已经适用于智能相机。

深度学习与其他方法结合

1)深度增强学习(Deep Reinforcement Learning)

深度增强学习是将增强学习和深度神经网络相结合的产物。其目标是创建能自主学习的个体(agent),通过建立成功的交互过程以获得长期的最大正反馈(reward)。

当环境(environment)可由大量状态表示时,传统的增强学习方法稍显不足,而深度神经网络则弥补了这一点。在IoT领域,【4】使用深度增强学习实现了半监督条件下智能校园环境中的定位。

2)迁移学习与深度模型(Transfer Learning with Deep Models)

迁移学习主要应用在域适应和多任务学习的领域。迁移学习对于许多难以收集训练数据的IoT应用来说都是一个可用的解决方案。

例如训练一个通过智能手机的低功耗蓝牙和Wifi fingerpringting的定位系统,同一时间,在同一地点的RSSI值(Received Signal Strength Indication接收的信号强度指示)对于不同的平台来说可能不同。

如果我们对一个平台训练了一个模型,该模型可以迁移到其他平台,而不需要对新平台再收集训练数据。

3)深度学习与在线学习算法

由于IoT的应用产生的数据流会上传到云平台来分析,在线机器学习算法的角色变得越来越重要,因为训练模型需要随数据的增加而更新。

框架

近几年,随着深度学习在各个领域的应用热潮,各种深度学习框架也应运而生。

Tensorflow: Tensorflow是机器学习系统的开源库,可以使用多种深度神经网络。

Tensorflow使用图表示来建立神经网络模型。开发人员也在使用TensorBoard,能可视化神经网络模型,并且观测学习过程,包括参数更新。

Torch: Torch是一个机器学习开源框架,包含大量深度学习算法,可用于深度神经网络模型的简单开发。它基于Lua语言开发,是训练深度学习算法的轻量级快速框架。支持在CPU和GPU上开发机器学习模型,并且提供了训练深度神经网络的并行计算库。

Caffe: Caffe是一个深度学习算法和参考模型集的开源框架。基于C++,支持CUDA进行GPU运算,并且提供Python和Matlab接口。Caffe通过配置文件定义模型,而不需要在源代码中定义参数,将模型表示和实现分开。

深度学习在物联网中的应用 14 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

深度学习框架对比

        深度学习在IoT领域的应用

深度学习在物联网中的应用 15 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

        IoT应用和基础服务:

基础服务

        1)图像识别

物联网的一大部分应用场景中,输入深度学习的数据是图片或视频。每天,每个人都在用手机的高清摄像头拍摄者图片和视频,除此之外,家居、校园或工厂也在使用智能摄像头。所以,图像识别、分类、目标检测是这类设备的基础应用。

        2)语音识别

随着智能手机和可穿戴设备的普及,语音识别也成了人们和自己的设备互动的一种自然而方便的方式。Price等人【5】搭建了一个专用的低功耗深度学习芯片,用于自动语音识别。这种特制芯片的能量消耗要比目前手机上运行的语音识别工具的能量消耗低100倍。

        3)室内定位

室内定位在物联网领域有许多应用,例如智能家居、智能校园、或智能医院。例如DeepFi系统,在线下训练阶段,通过深度学习用之前储存的WiFi通道状态信息数据来训练网络权重,在线上定位阶段通过fingerpringting来测定用户位置。

        4)生理和心理状态检测

物联网与深度学习的结合也应用在了检测各种生理或心理状态中,例如姿态、活动和情绪。许多IoT应用都在交付的服务中整合了人体姿态估计或活动识别模块,例如智能家居、智能汽车、XBox、健康、运动等等。

        5)安全和隐私

安全和隐私是所有IoT领域应用所关注的一个重要问题。事实上,系统功能的有效性取决于是否能保护机器学习工具和处理过程不受攻击。虚假数据注入(False Data Injection,FDI)是数据驱动系统的一种常见攻击类型。

He等人【6】提出用条件DBN从历史数据中提取FDI特征,然后利用这些特征进行实时攻击检测。作为物联网数据和应用程序的一大贡献者,智能手机也面临着黑客攻击的威胁。

Yuan等人【7】提出用深度学习框架来鉴别安卓应用中的恶意软件,准确率达到了96.5%。深度机器学习方法的安全性和隐私保护是能否在IoT领域应用的最重要因素。

Shokri等人【8】提出了一种解决分布式学习的深度学习模型隐私保护问题的方法。

应用

        1)智能家居:

智能家居的概念涉及广泛的基于IoT的应用,它有助于提高家庭的能源使用和效率,以及居住者的便利性、生产力和生活质量。如今,家电可以与互联网连接,提供智能服务。例如微软和 Liebherr的一个合作项目,对从冰箱内收集的信息应用了Cortana 深度学习。这些分析和预测可以帮助家庭更好地控制他们的家庭用品和开支,并结合其他外部数据,可用于监测和预测健康趋势。

        2)智慧城市:

智能城市服务跨越多个物联网领域,如交通、能源、农业等。智慧城市的一个重要问题是预测群体移动模式,Song等人【9】开发了基于深度神经网络模型的系统,在城市级别实现了这一目标。Liang等人【10】基于RNN模型搭建了实时群体密度预测系统,利用移动手机用户的通信数据对交通站的群体密度进行预测。废物管理和垃圾分类也是智慧城市的一个相关任务,可以通过基于视觉分类任务的CNN模型来实现自动化。Amato等人【11】基于智能相机和深度CNN开发了检测停车场的使用中和空闲车位的系统。

        3)能源:

消费者与智能电网之间的双向通信是IoT大数据的来源。能源供应商希望学习当地的能源消费模式、预测需求,并根据实时分析做出适当的决定。在智能电网方面,从太阳能、风能或其他类型的自然可持续能源中预测电力是一个活跃的研究领域,深度学习在这一领域的许多应用中越来越多地被使用。

        4)智能交通系统:

来自智能交通系统(ITS)的数据是大数据的另一个数据源。Ma等人【12】采用RBM和RNN结构设计了一个交通网络分析系统,模型输入是参与该系统的出租车GPS数据。该系统通过一小时内的累积数据预测交通拥堵的准确率高达88%。ITS也带动了交通标志检测和识别的发展,这一技术在自动驾驶、辅助驾驶系统中都有很重要的应用。除此之外,许多初创公司应用深度学习来完善自动驾驶汽车系统的检测行人、交通标志、路障等任务。

        5)医疗和健康:

IoT结合深度学习也在为个人和组织提供医疗和健康方案中得到应用。例如,开发基于移动应用程序的精确测量饮食摄入量的解决方案,可以帮助提升个人健康和幸福感。Liu等人【13】采用CNN开发了识别食物图片和相关信息的系统。用深度学习对医学图片进行分类和分析是医疗领域的研究热点。Pereira等人【14】通过CNN识别手写图片来鉴定早期帕金森症。除此之外,深度学习与IoT的结合在声音异常检测、乳腺血管疾病检测中也得到了应用

        6)农业:

生产健康作物和发展有效的种植方式是健康社会和可持续环境的要求。使用深度神经网络进行植物病害识别是一个可行的解决方案。深度学习也被用于遥感,进行土地和作物的检测与分类。研究显示,使用CNN进行作物识别准确率达到了85%,相比于MLP或随机森林有很大提高。自动耕作中的预测和检测任务也应用了深度学习。

        7)教育:

IoT和深度学习的结合有助于提高教育系统的效率。移动设备可以收集学生的数据,深度分析方法可以用来预测和解释学生的进步和成就。增强现实技术结合可穿戴设备和移动设备也是深度学习在这一领域的潜在应用,激发学生的兴趣,让教育学习方法更有效。此外,深度学习可以用于个性化推荐模块,向教育者推荐更多相关内容。利用深度学习对大型开放式网络课程数据(MOOC)进行分析,可以帮助学生更好的学习。除此之外,利用CNN监测教室占用率是深度学习在教育方面的另一个应用。

        8)工业:

对于工业部门来说,IoT和网络物理系统(CPS)是推动制造技术迈向智能制造(工业4.0)的核心要素。工业中的广泛应用均可以受益于深度学习模型的引入。通过将装配线中生产车辆的图像及其注释都输入深度学习系统,可以利用AlexNet、GoogLeNet等网络实现视觉检测。

        9)政府:

许多涉及市政的各种任务需要精确的分析和预测。【15】利用美国地质调查局网络的历史数据训练LSTM网络,可进行地震预测。【16】利用极端气候的图片训练CNN,进行极端气候事件探测。此外,城市的基础设施,如道路、供水管道等的损害检测,是IoT和深度学习可以为政府提供便利的另一个领域。

        10)运动和娱乐:

运动分析近年来发展迅速,为团队或运动员带来了竞争优势。【17】提出了深度学习方法打造智能篮球场。【18】采用RNN识别NBA比赛中的球员违规。【19】结合了可穿戴设备传感数据和CNN进行排球运动员活动识别。【20】采用层级结构的LSTM模型研究排球队的整体活动。

        11)零售:

随着移动设备的普及,网上购物的人数大大增加了。最近出现了通过视觉搜索技术向产品图像检索的转变。CNN一直用于服装和时尚市场的视觉搜索,帮助你在网店中找到在电影中看到的或在街上看到的商品。IoT结合深度学习可以搭建视觉购物辅助系统,包括智能眼镜、手套和购物车,目的是帮助视障人士购物。此外,智能购物车的开发可以实现实时自结账的功能。

IoT设备上的深度学习

深度学习在语音和视频方面的成功为IoT的基础服务打下了良好的基础,如何将它们的模型和方法部署在资源受限的设备上成了IoT领域的一个重要研究方向。到目前为止,深度学习方法难以应用于IoT和资源受限设备,因为它们需要大量的资源来运行,如处理器、电池能量和存储器。

幸运的是,近期研究显示,深度神经网络的许多参数是冗余的,有时也不需要大量的隐层。有效的去除这些参数或层可以减少网络的复杂度,同时对输出不会有太大的影响。

方法和技术

        1)网络压缩

在资源受限设备上应用深度神经网络的方法之一是网络压缩,将密集的网络转化为一个稀疏的网络。主要局限性在于,它不足以支持所有类型的网络。它只适用于具有这种稀疏性的特定网络模型。另外,修剪多余的和不重要的参数或神经元,是在资源受限的设备上运行深度神经网络的另一个重要途径。

深度学习在物联网中的应用 16 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

深度神经网络剪枝整体概念图

        2)近似计算:

近似计算是实现在IoT设备上部署机器学习工具的另一种方法,并有助于主机设备的节能。在许多IoT应用中,机器学习的输出不一定是精确的,而是在可接受的范围内提供所需的质量。实际上,将深度学习模型与近似计算相结合,可以为资源受限设备提供更有效的深度学习模型。

        3)加速器:

设计特定的硬件和电路来优化IoT设备中深度学习模型的能量效率和内存占用是另一个活跃的研究方向。目前已有工作为DNN和CNN设计加速器,并且应用Post-CMOS技术进行电子自旋加速。

        4)微处理器:

除了之前所提方法,开发具有强深度学习能力的小尺寸处理器也是研究热点。微处理器的设计尺寸在一立方毫米的范围内,可以用电池驱动,进行深度神经网络分析只消耗大约300毫瓦。通过这种技术,许多对时间要求较高的IoT应用程序可以在设备上执行决策,而不是将数据发送到高性能计算机,等待它们的响应。

IoT的雾和云中心深度学习

最近,人们提出了雾计算,使计算和分析更接近终端用户和设备,而不是仅仅停留在云计算上。实验表明,通过对雾计算节点进行数据分析,可以避免向遥远的云节点传输大量原始数据,从而提高整体性能。还可以在一定程度上进行实时分析,因为雾计算在本地,靠近数据源。

深度学习在物联网中的应用 17 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

一些用于在雾或云上使用深度学习和服务的IoT领域的产品

技术和平台

尽管在雾计算架构上引入了深度学习分析,云计算仍然是许多无法在雾计算中处理的IoT应用的唯一可行的解决方案。因此,设计的可扩展的和高性能的云中心的DNN模型和算法,对大量的IoT数据进行分析,仍然是一个重要的研究领域。

除了在云平台上托管可扩展的深度学习模型基础设施的进步,还需要研究使深度学习模型通过API访问的机制和方法,以便容易地集成到IoT应用程序中。

深度学习在物联网中的应用 18 - 深度学习在物联网大数据和流分析中的应用 |天源股份 – 产业互联网推动者!

在云平台中作为服务的深度学习模型

挑战

在雾计算节点上进行深度学习分析时,也会面临一些挑战:

        深度学习服务发现:设备需要通过深度学习分析的某种扩展服务发现协议,来识别适当的分析提供者的来源。

        深度学习模型和任务分布:在雾节点之间划分深度学习模型和任务的执行,以及在可用节点之间优化数据流分配,对于时间敏感的应用程序是至关重要的。

        设计因素:研究如何雾计算环境的设计因素,以及在这种环境中部署深度学习模型如何影响分析服务的质量是很有必要的。

        移动端:在设计终端辅助的深度学习分析系统时,需要考虑移动端计算环境的动态性,因为移动设备可能会加入或离开系统。

深度学习带来的物联网挑战,以及未来的研究方向

挑战

        1)缺少大型物联网数据集:

缺乏可用的实际IoT应用大数据集将深度学习模型引入IoT的一个主要障碍,因为深度学习需要更多的数据来实现更高的精度。此外,更多的数据也可以防止模型过度拟合。

        2)预处理:

许多深度学习方法需要对数据进行预处理以产生更好的结果,对于IoT应用,预处理会更复杂,因为系统处理的是来自不同数据源的数据,可能有多种格式和分布,而且还可能有数据丢失。

        3)安全和隐私:

确保数据安全和隐私是许多IoT应用的一个主要问题,因为IoT大数据将通过互联网进行分析,因此世界各地都有可能看得到。此外,深度学习训练模型也容易受到恶意攻击,如虚假数据注入或对抗性样本输入,其中IoT系统的许多功能或非功能性要求可能无法得到保证。

        4)IoT大数据”6V“特性:

Volume(数据量)对于深度学习模型的时间消耗和结构复杂性提出了很大的挑战。并且数据量巨大也带来了包括噪声和未标注数据的挑战。

Variety(多样性)带来了管理不同数据源之间冲突的挑战。在数据源没有冲突的情况下,深度学习能够有效处理异质数据。

Velocity(速率)带来了高速处理和分析数据的要求,增强深度学习的在线学习和序列学习的技术仍需进一步研究。

Veracity(可信度),当输入数据不是来自可信的数据源时,IoT的大数据分析则是无用的。

Variability(可变性),IoT大数据的流速可变性对在线分析提出了挑战。

Value(价值),企业经理采用大数据的一个主要挑战是,他们不清楚如何使用大数据分析来获得价值,并改善他们的业务。

        5)IoT设备上的深度学习:

在IoT设备上开发深度学习是一个新的挑战,要考虑在资源受限的设备上处理深度神经网络的需求。

        6)深度学习局限:

尽管深度学习模型在许多应用中显示出令人印象深刻的结果,它仍然有局限性。研究发现,深度网络会将无法识别的图片分类到熟悉的种类中。并且深度神经网络的回归能力有待增强。

未来研究方向

        1)IoT移动数据:

IoT数据的一大部分来自移动设备。研究利用移动大数据与深度学习方法相结合的有效方式,可以为IoT提供更好的服务,特别是在智慧城市场景中。

        2)结合环境信息:

单靠IoT的 传感数据不能理解环境的情况。因此,IoT数据需要与其他数据源融合,即环境信息,以补充对环境的理解。

        3)IoT分析的在线资源供应:

基于雾和云计算的深度学习快速数据分析部署需要在线配置雾或云资源来承载数据流。由于IoT数据的流特性,无法提前知道数据序列的容量。因此,我们需要一种新的基于当前数据流的算法,并且不依赖于数据流的先验知识。

        4)半监督分析框架:

为半监督学习而设计的先进的机器学习算法非常适合于智慧城市系统,可以使用少量的训练数据集训练模型,然后使用大量未标记数据来提高模型的准确性。

        5)可靠的IoT分析:

深度学习方法可以通过分析大量的信息物理系统(CPS)和IoT系统的日志,以识别和预测可能受到攻击的系统的薄弱点。这将有助于系统防止或从故障中恢复,从而提高CPS和IoT系统的可靠性水平。

        6)自组织通信网络:

由于IoT设备的数量庞大,配置和维护他们的基本物理M2M通信和网络变得越来越难。虽然大量的网络节点及其相互关系对传统的机器学习方法是一个挑战,但它为深度学习体系结构提供了一个机会,通过提供自配置、自优化、自修复和自负载平衡等一系列的自我服务足以证明它们在这一领域的能力。

        7)新兴IoT应用:

无人机:无人机被用于许多实时图像分析任务,如监视、搜索和救援行动,以及基础设施检查。这些设备的采用面临包括路由、节约能源、避免私人区域和避障等挑战。深度学习对于该领域的预测和决策任务有很大的影响,可以推动无人机达到最佳性能。

虚拟/增强现实:虚拟/增强现实是受益于IoT和深度学习的另一个应用领域。增强现实可以用于提供诸如目标跟踪、行为识别、图像分类和对象识别这样的服务。增强现实可以极大地影响如教育,博物馆,智能车等几大领域。

        结论

深度学习和IoT近年来受到研究人员和商业领域的广泛关注,这两项技术对我们的生活、城市和世界都产生了积极的影响。IoT和深度学习构成了一个数据生产者-消费者链,其中IoT生成由深度学习模型分析的原始数据,深度学习模型产生高层次的分析,反馈给IoT系统,以微调和改进服务。

参考文献

【1】N.-Y. Liang, G.-B. Huang, P. Saratchandran, and N. Sundararajan, “A fast and accurate online sequential learning algorithm for feedforward networks,” IEEE Transactions on neural networks, vol. 17, no. 6, pp. 1411–1423, 2006.

【2】S. Ren, K. He, R. Girshick, and J. Sun, “Faster R-CNN: Towards realtime object detection with region proposal networks,” IEEE transactions on pattern analysis and machine intelligence, vol. 39, no. 6, pp. 1137–1149, 2017.

【3】J. Redmon, S. Divvala, R. Girshick, and A. Farhadi, “You only look once: Unified, real-time object detection,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 779–788.

【4】M. Mohammadi, A. Al-Fuqaha, M. Guizani, and J.-S. Oh, “Semisupervised deep reinforcement learning in support of IoT and smart city services,” IEEE Internet of Things Journal, vol. PP, no. 99, pp. 1–12, 2017.

【5】M. Price, J. Glass, and A. Chandrakasan, “A scalable speech recognizer with deep-neural-network acoustic models and voice-activated power gating,” in Proceedings of the IEEE ISSCC2017, 2017.

【6】Y. He, G. J. Mendis, and J. Wei, “Real-time detection of false data injection attacks in smart grid: A deep learning-based intelligent mechanism,” IEEE Transactions on Smart Grid, 2017.

【7】 Z. Yuan, Y. Lu, Z. Wang, and Y. Xue, “Droid-sec: deep learning in android malware detection,” in ACM SIGCOMM Computer Communication Review, vol. 44, no. 4. ACM, 2014, pp. 371–372.

【8】R. Shokri and V. Shmatikov, “Privacy-preserving deep learning,” in Proceedings of the 22nd ACM SIGSAC conference on computer and communications security. ACM, 2015, pp. 1310–1321.

【9】X. Song, H. Kanasugi, and R. Shibasaki, “Deeptransport: Prediction and simulation of human mobility and transportation mode at a citywide level.” IJCAI, 2016.

【10】V. C. Liang, R. T. Ma, W. S. Ng, L. Wang, M. Winslett, H. Wu, S. Ying, and Z. Zhang, “Mercury: Metro density prediction with recurrent neural network on streaming cdr data,” in Data Engineering (ICDE), 2016 IEEE 32nd International Conference on. IEEE, 2016, pp. 1374–1377.

【11】G. Amato, F. Carrara, F. Falchi, C. Gennaro, C. Meghini, and C. Vairo, “Deep learning for decentralized parking lot occupancy detection,” Expert Systems with Applications, 2017.

【12】X. Ma, H. Yu, Y. Wang, and Y. Wang, “Large-scale transportation network congestion evolution prediction using deep learning theory,” PloS one, vol. 10, no. 3, p. e0119044, 2015.

【13】C. Liu, Y. Cao, Y. Luo, G. Chen, V. Vokkarane, and Y. Ma, “Deepfood: Deep learning-based food image recognition for computer-aided dietary assessment,” in International Conference on Smart Homes and Health Telematics. Springer, 2016, pp. 37–48.

【14】C. R. Pereira, D. R. Pereira, J. P. Papa, G. H. Rosa, and X.-S. Yang, “Convolutional neural networks applied for parkinson’s disease identification,” in Machine Learning for Health Informatics. Springer, 2016, pp. 377–390.

【15】Q. Wang, Y. Guo, L. Yu, and P. Li, “Earthquake prediction based on spatio-temporal data mining: An lstm network approach,” IEEE Transactions on Emerging Topics in Computing, 2017.

【16】Y. Liu, E. Racah, J. Correa, A. Khosrowshahi, D. Lavers, K. Kunkel, M. Wehner, and W. Collins, “Application of deep convolutional neural networks for detecting extreme weather in climate datasets,” Int’l Conf. on Advances in Big Data Analytics, 2016.

【17】W. Liu, J. Liu, X. Gu, K. Liu, X. Dai, and H. Ma, “Deep learning based intelligent basketball arena with energy image,” in International Conference on Multimedia Modeling. Springer, 2017, pp. 601–613.

【18】K.-C. Wang and R. Zemel, “classifying nba offensive plays using neural networks,” in Proc. MIT SLOAN Sports Analytics Conf, 2016.

【19】T. Kautz, B. H. Groh, J. Hannink, U. Jensen, H. Strubberg, and B. M. Eskofier, “Activity recognition in beach volleyball using a deep convolutional neural network,” Data Mining and Knowledge Discovery, pp. 1–28, 2017.

【20】M. S. Ibrahim, S. Muralidharan, Z. Deng, A. Vahdat, and G. Mori, “A hierarchical deep temporal model for group activity recognition,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 1971–1980.

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

物联网的一种参考架构(2)

在上一篇中,曾经介详细绍过IoT参考架构RILA(Reference IoT Layered Architecture)的方方面面。当时介绍了该架构的每个层面,并提到后续将有另一篇文章介绍如何将该架构的不同层面对应到现实用例中。

当时承诺的后续文章终于有下文了,本篇我们将侧重于这一参考架构中的架构和概念实现。需要注意的是,我们不能随便挑选一个参考架构并立刻“尝试实现”,而是需要将其作为一种“样式”,据此定义要在IoT“系统”中使用的不同组件。乍看之下具体实现的结果可能与参考架构本身的结构有较大差异,但如果谨慎地将架构与所要实施的组件一一对应,最终将获得完全相同的结果。

为了将RILA与实际用例相互对应,我们从不同行业挑选了两个用例,这两个用例可能很快就会变为现实。下图展示了第一个用例,就叫它“冰箱”用例吧:

000 - 物联网的一种参考架构(2) |天源股份 – 产业互联网推动者!

这个用例的基本想法是在可能出现电力峰值(电网丢负荷)的时候自动触发(全城或部分地区的)电冰箱的制冷操作,借此降低电力峰值对电厂造成的危险。因此该用例的目标在于由电厂触发大量智能电冰箱的“制冷”操作。上图显示的虚线代表冰箱到电厂的(可选)反馈环路,借此电厂可以评估共可以触发多少电冰箱进行制冷,并借此确定冰箱的数量是否足以降低峰值,或是否有必要采取其他(可选)措施。下表列出了该用例涉及的对象,用例想要实现的目标,前提条件,成功场景概括,以及后续情况:

涉及的对象 最终用户,冰箱制造商,供电局,冰箱的板载系统,电厂的控制系统
目标 电厂控制系统冰箱板载系统发送制冷工作信号,让冰箱在某个同一控制的集中时间点开始制冷,避免出现电网丢负荷的情况。
前提条件 冰箱制造商供电局共同制定一套通信协议,通过这个协议让冰箱接收控制信号,并发送相关状态信息。
成功场景概括
  1. 最终用户购买冰箱制造商生产的冰箱。
  2. 最终用户配置冰箱连接到互联网。
  3. 冰箱的板载系统连接到电厂的控制系统
  4. 供电局的电厂控制系统发现出现电力峰值,向冰箱的板载系统发送控制信号。
  5. 冰箱的板载系统收到这个信号,判断冰箱内部温度是否足够低。
  6. 冰箱的板载系统将即将制冷的信息发送给电厂控制系统
  7. 电厂控制系统收到冰箱板载系统发送来的信息,对其进行处理并保存起来。
  8. 冰箱板载系统启动冰箱压缩机开始制冷。
后续情况 冰箱板载系统开始制冷,电厂控制系统知道冰箱已经开始制冷了。

冰箱板载系统和电厂控制系统需要构建并监视相关的上下文情境条件。这个用例中主要涉及两种条件:

  1. 电厂控制系统的上下文情境
  2. 冰箱板载系统的上下文情境

冰箱板载系统需要管理的上下文情境更为简单一些,通过这种上下文,冰箱板载系统可以决定是否需要制冷。电厂控制系统的上下文情境更为复杂,需要通过冰箱的上下文情境做出相应决策。然而在这个场景中,电厂的上下文情境无需对外发布,只要将操作命令发送至冰箱即可。

看过第一个用例后,可以考虑将我们的参考架构RILA与其进行对应。我们定义了包含下列6层内容的架构:

  1. 应用程序集成(Application Integration)
  2. 物件集成(Thing Integration)
  3. 上下文管理(Context Management)
  4. 数据管理(Data Management)
  5. 设备管理(Device Management)
  6. 设备集成(Device Integration)

下图展示了架构中不同层与这个用例的对应关系。

001 - 物联网的一种参考架构(2) |天源股份 – 产业互联网推动者!

上图不同层使用不同颜色显示,分为黑色和灰色。灰色层通常可以用非常简单的方式设计而来,甚至在某些场景中是不需要的。

大致来看,两端都存在所有6层内容,冰箱和电厂需要通过某种方式实施这6层。然而具体实现的复杂度取决于可用条件和用例要实现的功能。为确定每种物件每层的设计和实施范围,需要对每种物件(或每种物件对应的领域,如果采用 领域驱动的设计方法的话)都有所了解。这里需要注意,上图所示场景在具体描述上可能有所差异,对冰箱的上下文情境进行管理只是一个范例,实际情况可能更加复杂,因此用黑色表示。这个用例中需要使用“智能”的冰箱,而本例中我们设想的冰箱是相当“笨”的。参考架构与场景的映射是一回事,每一层的设计是另一回事。下文将介绍该场景中不同层面的具体设计。

在这个场景中,我们假设用户可以使用自己的智能手机与冰箱通信。为了与智能手机应用通信,冰箱必须具备应用程序集成层。另外可能还需要在供电局一端实施某种程度的应用程序集成。不过依然有必要考虑该用例是否需要涉及这个问题(毕竟本例只需要考虑电厂控制系统向冰箱发送控制信息)。

两端都需要实现物件集成,具体方式并不复杂。在这样一个原型中,物件发现模块可能相当简单,我们可以假设冰箱随时都能与电厂通信。最终通信连接的建立则可以使用成熟的规范。

在上下文管理方面,首先需要在冰箱的上下文情境和要向冰箱发送的操作指令之间达成一致。电厂端的上下文管理略显复杂,但冰箱端相对简单一些。电厂端在这里可以视作一个黑盒子,大部分情况下我们只需要将其与检测和预测峰值的现有系统集成即可。一旦检测到峰值便触发冰箱执行制冷操作,并通过物件集成将指令下发至已注册的冰箱。冰箱接到操作指令后开始判断是否需要制冷(在首个原型中可通过简单的时间约束实现)并将判断结果发回给电厂。

类似的数据管理机制在冰箱上实现起来很简单,但在电厂端略微复杂。冰箱基本上只需要记录什么时候温度足够低,什么时候需要再次制冷(可通过温度传感器实现)。电厂需要决定冰箱制冷到足够低的温度之后所耗费的电力是否可以降低峰值。如果还不够,则需要进一步执行后续的其他操作。

冰箱端还需要设备管理和设备集成层。电厂端可以假设已具备负责处理峰值预测和决策的系统,但该系统需要与我们的架构集成在一起(可通过应用程序集成或物件集成的方式实现)。

这里需要注意,为了让这个方案设计投入实用,还需要与两端(电冰箱制造商和供电局)的领域内专家进行合作,才能更好地理解这两个领域并开发出足够好的设计。

尽管我们的设计距离完善还很远,不过依然可以先来看看实现方面的创意(也许可以开始快速创建第一个原型)。上文提过,我们希望最开始的设置尽可能简单。目前已经有装备显示器和各种功能的冰箱,例如新一代Samsung Family Hub,此类型号的功能已经远远超出需求(不过依然可以用)。在这个场景中,制造商并没有为冰箱提供完整的平台,但提供了可与冰箱通信的智能手机应用。这样的冰箱需要具备:

  1. 自带互联网连接和通信接口,这样才能随时与电厂通信(物件集成)。
  2. 供用户通过智能手机访问的接口,这样才能让用户打开或关闭与电厂通信的功能(应用程序集成)。
  3. 相关传感器和逻辑,这样才能让冰箱在接到电厂指令后决定是否可以开始制冷。

实现首个原型的平台可以考虑配合使用Google App Engine和Google Brillo。虽然Brillo尚未正式发布,但已经可以开始设想基于Brillo操作系统的冰箱了。这里可以使用Google Cloud Messaging在智能手机、云冰箱,以及电厂之间实现通信。下图展示了使用Google Brillo和Cloud Messaging搭建的简化环境。请注意,在这里Google只是范例,使用Apple HomeKit、Windows Azure或开源平台也可以实现类似的效果。

002 - 物联网的一种参考架构(2) |天源股份 – 产业互联网推动者!

在冰箱端我们将整个栈打包到Brillo中。对于物件集成层的通信,可以使用Cloud Messaging API。不过电厂在这里依然被看作黑盒子,因为电厂具体使用什么技术无关紧要(反正电厂里通常已经具备现成的系统),我们只需要确保电厂的控制系统(或以此为基础的集成组件)能够实现Brillo和Cloud Messaging API所实施的通信标准即可。

当然整个系统也可以用相互独立的方式实现。拆箱即用的标准化,是诸如Google Brillo这样的平台所提供的优势之一,用户可以借此对整个系统轻松进行缩放。

至此已经完整介绍了第一个用例。为了证明这套参考架构的灵活性,下文将介绍第二个用例。从中也可以看到RILA所定义的“必备IoT组件”是如何融入整个场景的。

在第二个用例中,有一家销售汽车保险的保险公司希望更清晰地预测(从保险业务的角度来看)哪些客户是“良性”的,哪些是“恶性”的。这家保险公司希望使用驾驶行为数据实现这一目标(也就是所谓的数据科学)。该用例的大致情况如下图所示。

003 - 物联网的一种参考架构(2) |天源股份 – 产业互联网推动者!

在第一个场景中,这家保险公司需要获得大量数据,并通过数据科学为保险业务定义“良性”和“恶性”司机的类别。这些数据并不需要对应到具体司机,匿名数据就够了。数据越多结果越精确。因此这家保险公司希望与汽车制造商合作以获得所需数据。

在第二个场景中,(通过对第一个场景进行扩展)这家保险公司需要根据投保人的个性化驾驶行为进一步定制每份车险的保险策略。这一过程由上图中虚线箭头所代表。

下表描述了该用例涉及的对象,用例想要实现的目标,前提条件,成功场景概括,以及后续情况:

涉及的对象 保险公司、保险公司的系统、汽车制造商、汽车制造商的系统、车主、车载计算机
目标 保险公司收集有关具体车型尽可能多的匿名驾驶行为数据,借此针对具体车型的驾驶行为数据调整保险策略。
前提条件 保险公司汽车制造商确定数据交换策略和涉及的车型。保险公司汽车制造商提供的数据支付一定费用。车主通过匿名分享自己数据得到一定好处(例如汽车制造商提供的低价维修服务)。
成功场景概括
  1. 车主购买一辆车。
  2. 车载计算机询问车主是否要将驾驶行为数据匿名分享给汽车制造商(以及可能的第三方)。
  3. 车主同意分享某些数据。
  4. 车载计算机按照预定义的时间间隔,定期将匿名驾驶行为数据发送到汽车制造商的系统
  5. 汽车制造商的系统存储驾驶行为信息,并通知保险公司的系统某一车型有新数据可用。
  6. 保险公司的系统通过汽车制造商的系统收集驾驶行为数据,并将其存入决策工作使用的数据池。
  7. 保险公司的系统将新数据以功能的形式集成于保险策略使用的预测模型。
后续情况 保险公司可以使用驾驶行为数据更详细地计算保险策略。(随后即可将其用于为保险公司销售人员提供指导等用途。)

这里我们打算专注于第一个场景。与冰箱的用例类似,我们可以将RILA的不同层面映射为下图所示的系统组件。

004 - 物联网的一种参考架构(2) |天源股份 – 产业互联网推动者!

对于保险公司的用例,只需要在汽车中实施完整的RILA堆栈,因为需要集成的设备都在汽车中,其他操作都是在数据传输层面上进行的。在这里可能有人会质疑我们对“物件”的定义。只有设备才算是“物件”吗?我们的定义并不这样认为,并非只有设备才是物件。不过此处的合理推论是,并非所有物件都必须具备设备集成和设备管理层(没有设备,当然也就不需要进行设备集成和管理)。

汽车需要在应用程序集成层具备一些接口,这样车主才能与系统通过某种形式通信(车载系统通常已经具备这样的能力)。数据传输至汽车制造商的系统后,只需要进行少量的上下文情境管理、数据管理,以及物件集成工作即可实现用例需求。保险公司(以及汽车制造商的系统)可能也需要进行应用程序集成,因为还需要使用这些数据执行某些任务,例如运行预测模型的软件必须能通过某种方式访问这些数据。

这个保险公司用例的实现想法在于:汽车的车载计算机可以充当一种应用平台。随后用户即可下载保险公司(与汽车制造商合作)提供的应用,借此让用户控制什么可以分享,什么不能分享。取决于用户的分享意愿,可以由保险公司或汽车制造商为车主提供一定的好处(这就为我们提供了一种理想的业务模式)。一旦实现最终的个性化,就可以通过了解上下文情境的保险策略实现“驾驶即付费”的业务模式,并进一步扩展为“按照驾驶方式付费”的模式。

本文介绍的这两个用例较为宽泛,除了所描述的场景外,通过本文提供的用例还可以构思出很多不同使用场景。为了针对不同用例打造真正实用、有价值的设计,还需要对相关领域有所了解。

确定用例场景后,就可以确定要在参考架构(例如RILA)中使用哪些IoT组件。通信和安全措施的实施方式所实现的标准化程度越高,就能越容易地将IoT系统与以后部署的其他IoT系统相集成。无论其他保险公司或汽车制造商打算使用保险公司用例,或其他电厂或冰箱(制造商)打算使用冰箱用例,只要具备确认有效的合适结构(例如类似Google Brillo这样的机制),集成工作就会变得更简单。参考架构只是为了向大家提供一种通用的模式,帮助大家避免在实际开发中“漏掉”某个重要的组件或设计因素。

总之需要强调的是,最重要的第一步始终是一开始就从功能层面上定义要实现的用例,随后再考虑具体的技术规范细节。

为了确定希望通过系统实现的最终目的,还要明确定义涉及的对象和想要实现的目标。虽然这是一种众所周知的范式,但对IoT世界中的应用程序和系统开发工作,这一点尤为重要,因为具体用例通常更复杂,包含的场景也更多样。领域驱动的设计指南可以帮您实现更有价值的灵活设计。

通过诸如RILA等参考架构,我们可以了解实现IoT应用程序的过程中必不可少的一些组件。通过明确具体用例所要实现的功能规范,就可以确定参考架构中不同组件的具体设计方式。通过功能层面上对用例和设计进行结合,即可确定最终的技术规格和实现方法。随后便可结合专业技能确定将现有平台用于何处才能提供一个或多个参考架构组件所要实现的功能,甚至如何使用现有平台组成某些用例所需的整个技术堆栈。

 

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

物联网的一种参考架构(1)

本文是两篇系列文章中的第一篇,我们在将这一系列文章中首先从一个抽象的角度了解IoT的参考架构,然后分析具体的架构与所选择的用例的实现。第一篇文章将涵盖更具体与完整的架构中的各种定义,而第二篇文章将通过实际的用例应用这种架构。

我们正处在一个崭新的互联世界的入口,处于“物联网”(IoT)或者说是“第四次工业革命”浪潮之中的公司正在开发一种新型的网络,让我们在每日生活中所接触到的事物可以实现互通。IoT实现了“物”(Thing)的互联,通过信息交换的方式,为用户完成各种任务。各种新颖的思想将逐渐变为现实,例如让家里的冰箱不仅能够与你的智能手机通信,甚至还能够与生产者的服务器场或是能源发电厂进行通信。在背后推动这次新技术与通信变革的公司来自于各行各业,不仅像Google、微软或Apple这样的大数据软件巨头正走在这条道路上,此外还有保险公司巨头、外围设备厂家乃至汽车制造商也纷纷投入IoT的怀抱。

在各种不同的“Thing”之间实现通信的关键在于实现标准化。标准化在研究环境中说起来很容易,但要在真实的世界中实现却是相当困难的。参考架构对于实现标准化能够带来很大的帮助,在对于IoT系统实现进行计划工作时,可以参考由这些架构所定义的指南。

为了实现标准化,必须创建高层次的参考架构,正如IoT-A所完成的工作一样。不过,由于高层次的参考架构过于抽象,因而造成了难以理解的现状。如果你正在从事咨询顾问工作就会发现,要为行业中的实际客户展示这种高层次的参考架构是不可能的。

我们希望做到更进一步,通过我们提供的指南,使你了解如何从IoT-A参考架构中生成一个更为具体的架构。我们的想法是为这个抽象的IoT-A参考架构创建一个较低层次的架构,你甚至可以将它写到“管理总结”中,这也正是这篇文章的主体。此外,我们还将选择部分用例,在这个引用架构中进行举例说明,以展示一个完整的生命周期,包括在IoT中实际系统的实现。这一部分将在下一篇文章中进行讲解。

首先,让我们定义一些术语:

  • Thing:这是我们在每日生活中所接触到的某个物体,它就存在于我们的生活环境中。Thing既可以是一辆汽车或一台冰箱,但也可以被抽象为一个完整的房屋或是城市,这取决于我们的用例。
  • 设备:可以表示一个传感器(Sensor)、一个制动器(Actuator)或是一个标识(Tag)。通常来说,设备是Thing的一个组成部分。Thing将处理设备中的上下文信息,并将选定的信息与其他Thing进行通信。此外,Thing还可以将行为传递给制动器。

在每一种IoT参考架构中(例如Google的BrilloIoT-AZ-Wave),你都会(以某种形式)发现大量“无法回避的IoT组件”:

  • Thing与设备的互操作性以及集成组件。
  • 上下文感知计算技术,例如上下文模型或行为模型的定义,以及规则引擎的目标定义。
  • 与整个架构相关的安全性指南。

在某种形式上,当前的IoT架构可以被视为由Anind K. Dey所提出的Context Toolkit框架在更大规模上应用的一种版本。Context Toolkit的设计属于应用层面,因为它是为地理信息系统(GIS)所设计的。而在IoT环境中,我们必须对Context Toolkit在物物互联方面进行扩展。不过,目标、上下文信息以及行为等基本概念在IoT世界中同样适用。

001 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

在IoT的世界中,不仅我们能够在用户层面(即来自于应用程序)定义目标,Thing本身也可以在没有用户积极参与的情况下实现某种目标。最终来说,设备依然是为用户服务的,但他们可以在后台进行自治的工作,这也正是普适计算(Ubiquitous Computing)的思想。

为了更好地理解“上下文”这个术语,我们首先将介绍一个上下文模型,然后再对参考架构进行介绍。上下文定义了处于某个场合、某个时间点上的某个环境的状态(通常来说即用户环境)。上下文模型通常分为上下文元素与上下文情境。上下文元素通常会在设备层面定义特定的上下文,上下文元素的一个例子可以是处于某个具体时间与位置的温度。

(点击放大图像)

002 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

位置与时间本身就属于上下文元素,但他们还扮演了一种特殊的角色,因为要在空间与时间上定位传感器的值,必须了解这些信息。如果不了解某个温度是在哪里、在何时测量的,那么这个温度对于决策来说并没有什么帮助。

某些上下文元素是可以立即实现标准化的(举例来说,一个温度值已经被定义为一个双精度的数值加上一个测量单位,例如摄氏或是华氏温度)。而其他上下文元素则是特定于应用程序的(即“特定于Thing”),因而无法立即实现标准化。这些元素被定义为“高层次”的上下文,对于每个Thing来说,需要一种机制以定义他们。

上下文情境(Context Situation)则是多个上下文元素的一种聚合。因此,上下文情境是对于某个环境在某一位置、某一时间的一种视角。

(点击放大图像)

003 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

正如上文所说,某些上下文元素是可以立即标准化的(因为他们已经实现了标准化),而另一些无法立即标准化(因为他们是特定于用例的)。为了了解某个Thing与另一个Thing之间能否进行通信,需要他们对于某种通信标准达成一致。出于这个原因,我们需要引入上下文情境模式(Schema)。上下文情境模式将以上下文的方式定义某个物的能力。

你可以进一步扩展这个上下文模型,定义某种所有的Thing都必须具备的“标准功能”,以及需要由每种Thing自行定义的“额外功能”,例如Z-Wave标准的做法。

与上下文模型类似,你也可以定义一个行为模型,该模型将定义Thing可以触发的行为(例如打开一个窗口,或是拍摄一张图片)。行为必须由上下文信息(例如某个上下文情境)和已定义的目标的组合所触发。目标通常由规则引擎中的规则进行描述(例如 IF temperature > 25* THEN open window)。当某个上下文情境具体对应到某个Thing之后,这个Thing就需要根据它的已定义目标(即规则)评估是否要触发某个行为。根据用例的不同,与某个Thing对应的上下文、行为与目标模型的复杂度也有所不同。有些Thing只会使用行为的信息,而不会发布上下文信息,而其他Thing则会发布上下文信息(甚至是目标),让其他Thing进行使用。

现在,我们已经理解了上下文感知计算在IoT世界中所扮演的角色,接下来我们可以讨论这个参考IoT分层架构(简称“RILA”)的定义了。在IoT的语境中,RILA将连接Thing、设备与用户,正如下图所示。

(点击放大图像)

004 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

RILA包含6个层,除了这6个层之外,还有两个“横切面层”,他们将影响其他所有层。这两个层即“安全层”与“管理层”。

005 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

让我们来看一看RILA中的每个层与其中的组件。我们将从最底层(设备集成层)开始,随后逐步向上层推进。

设备集成层(Device Integration Layer)负责连接所有不同的设备类型、获取设备的测量数据,并(在设备层面上)实现行为的通信。可以将这一层视为一种能够讲多种不同语言的翻译器。传感器与标识的输出取决于他们所实现的协议,而制动器的输入同样由他们所实现的协议所定义。

(点击放大图像)

006 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

设备集成层包含三个主要的组件。最底层的组件是驱动组件,它负责通过低层次的、特定于供应商以及通信协议的方式在不同的传感器、标识以及制动器之间进行通信。对于系统已知的每种低层设备类型,它都提供了对应的驱动实例。下一个组件是设备发现组件,它能够由两种事件触发,一种事件来自于设备管理层,告诉这个组件需要添加一种新的设备。另一种事件来自于驱动组件,如果添加了某种新的设备,驱动组件就会通知设备发现组件。与之类似,设备发现组件还要处理设备的撤消注册操作。最后一个组件是设备通信组件,它负责在设备管理层与驱动组件之间起到桥梁作用。当设备管理层找到某个设备后,该组件将决定要调用哪个驱动。

设备管理层(Device Management Layer)负责从设备集成层中获取设备的注册信息以及传感器的测量数据。此外,它还负责将制动器的状态变化向下传递给设备集成层。设备集成层随后将对状态的变化进行校验(即行为),保证它与制动器相一致,并将解释后的状态变化发送给制动器。

(点击放大图像)

007 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

设备管理层负责控制设备,以了解有哪些设备已连接到系统中。对于设备注册信息的更改,以及传入的测量数据必须通过设备集成层与设备管理层进行通信,从而实现信息的更新与保存。设备集成层通过这种方式管理设备的注册(包括添加元数据,例如传感器所发送数据的单位或频度)以及设备的通信(将实际的测量数据传递给数据管理层,并将行为向下传递给制动器设备)。

可以将数据管理层视为一种中央式的数据库,它保存着一个“Thing”的所有数据,但这只是一种可能的实现方式。对于系统中较大的Thing(例如从其他Thing中收集数据的某个设备生命周期监控系统),数据管理层可以扮演一种数据仓库,甚至是一个完整的数据场的角色。数据管理层的实现很大程度上取决于特定的Thing的用例。

(点击放大图像)

008 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

上下文管理层(Context Management Layer)定义了RILA中的核心业务逻辑,并负责完成这6种任务:

  1. 定义Thing的目标。
  2. 获取其他Thing的上下文情境。
  3. 为Thing生成(自有的)上下文情境。
  4. 评估(自有的)上下文情境是否符合目标。
  5. 根据评估的规则触发各种行为,以促进目标的实现。
  6. 向其他Thing发布上下文情境。

(点击放大图像)

009 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

根据以上的任务,我们可以将上下文管理层分解为8种组件,如下图所示。

(点击放大图像)

010 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

规则引擎与人工智能(AI):定义及管理上下文评估所必需的规则。包括目标(它本质上就是规则的一种集合)及用于创建上下文情境和行为的规则。

上下文情境集成模块:侦听其他Thing的上下文情境,并与传入的上下文情境相集成。

行为集成模块:通过这个组件对其他Thing所传入的行为进行评估,并传递给设备管理层。在这个过程中需要考虑到规则的问题,它定义了在哪种情境下可以将来自另一个物的行为进行传递,以触发制动器。

上下文情境创建模块:从系统中收集数据,并构建上下文情境。这一过程也可以由规则进行驱动。

行为创建模块:与上下文情境创建模块相似,在规则评估过程中触发的行为必须创建相应的行为对象。

上下文情境发布模块:为Thing集成层提供上下文情境。根据实现的复杂度不同,上下文情境发布者可以为已订阅的不同Thing提供一系列的上下文情境,或者为所有Thing提供一个单一的上下文情境。上下文情境发布模块必须注意其他Thing的数据权限级别。只有可信的其他Thing才能够收到经过选择的上下文信息。此外,该模块还要负责定义上下文情境模式,这些模式需要与其他订阅的Thing进行通信,它将评估某个Thing是否能够与其他Thing进行通信。

行为发布模块:与上下文情境发布模块类似,该模块负责将行为传递给Thing集成层,让其他Thing能够与行为进行通信。此外,行为模式也是由这个组件负责管理的。

上下文评估模块:对使用(现有的)上下文情境的规则进行评估,并触发那些与底层的设备或行为创建模块进行通信的行为。行为创建模块将把这些创建的行为传递给行为发布者,后者负责将行为传递给其他Thing。评估规则的一种简单方式是为由规则引擎所定义的规则构建相应的决策树。

具体的架构与所提供的功能的复杂度很大程度上取决于所开发的Thing的具体用例。对于在智能方面要求较低的Thing(例如一台冰箱),规则引擎与人工智能组件也不必设计得很复杂。而对于需要从其他设计中收集上下文信息的Thing来说,这些组件将变得非常复杂。高复杂性的例子包括数据科学以及数据挖掘技术。

Thing集成层(Thing Integration Layer)将负责找到其他物,并与其进行通信。

一旦两个Thing找到彼此之后,他们就需要经历一种注册机制。Thing集成层必须评估与另一个Thing之间的通信是否可能。因此,必须对上下文情境及行为模式进行比较,这一功能是由上下文管理层所提供的。

如果对于模式匹配的评估结果是正面的,那么该Thing就能够向另一个Thing发送创建新的上下文情境或行为的通知。传递给其他Thing的上下文情境和行为将由上下文管理层提供。

Thing的注册必须由一个集中式的组件,或是由Thing本身完成(例如自发现的网络扫描)。

(点击放大图像)

011 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

用户将通过应用集成层(Application Integration Layer)与物进行连接。(直接)建立在RILA架构上的应用属于这一层。可以将应用的集成看做一个服务层,甚至是一个简单的UI。这一层具体的实现取决于实际的用例。

012 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

到此为止,我们终于讲完了每个层的作用。现在让我们来面对那些跨层的挑战,首先从安全层开始。在构建IoT系统时,我们必须在每个层上全盘考虑安全性问题。系统必须找到攻击的来源,以找到合适的安全标准。

(点击放大图像)

013 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

我们可以列举出以下攻击来源:

用户:终端用户有可能会成为一种攻击来源,因为这种攻击有可能会人为地、或是无意地影响整个系统。这种类型的攻击中最常见的方式是钓鱼攻击,即尝试从受攻击者那里获取敏感信息。

Web界面:如果应用本身提供了一个web界面,那么它就有可能遭受到一些“传统的”攻击,例如SQL注入或XSS攻击。OWASP(开放式Web应用安全项目)列举了网站最容易遭受的10种攻击的场景。

Thing:智能设备经常会通过某个应用与外部系统进行通信,而这种应用依赖于某种形式的操作系统。这就存在两种主要的受攻击的可能。一是应用本身或许没有采取适当的安全机制,二是底层的操作系统可能会被侵入或感染。

低层次的硬件组件:在考虑硬件组件及其提供的安全措施时,用户必须考虑到计算能力的问题。一个主要的风险在于低运算能力的设备不具备进行安全加密通信所需的CPU能力。在支持多个传感器的场景中,系统可以选择消除异常值,以获得一个准确的值,但这种方式无法保证安全性。如果由传感器所提供数据的准确性对于系统来说十分重要,那么则需要使用更强大的硬件,而这将使系统的成本上升一个数量级。

通信信道:对于通信信道的安全性设置取决于所使用的协议,我们将讨论与IoT相关的协议,以及这些协议为通信的加密所提供的功能。

  • RFID与NFC:标识与读取装置之间的通信是通过无线连接实现的,它很容易被窃听,因此对于数据的加密至关重要。当前能够保证足够安全性的对称式加密算法包括3DES与AES-128。在向新的标识写入数据时,应当更改默认的认证密钥。对于标识的密钥管理是由控制读取装置的系统所完成的。RFID标识本身具有很大的差异性,因此在购买时必须要考虑到安全性的问题。举例来说,Mifare Plus标识就是Mifare Classic标识的一个升级版本,因为前者提供了基于AES-128的加密功能,而Mifare Classic标识使用了一种具有专利权的、基于48位的密钥的算法,但这种算法已经被攻破了。
  • Zigbee:Zigbee设备与应用之间的通信信道是安全的,因为它所采用的加密算法是AES-128。但与对方所进行的初次密钥交换必须被视为不安全的。当某个新的设备加入网络中时,密钥将以明文的方式进行发送,只要时机掌握好,就有可能被嗅探工具所捕获。
  • Thread:两台Thread设备之间的通信将由AES加密保证安全性,一台新设备与应用之间的密钥生成将通过一种密钥交换算法保证安全性。

攻击来源也可以分组为更为技术性的攻击来源,它们将针对系统中的特定组件,包括:

  • 认证
  • 授权
  • 真实性验证:信息的签名
  • 密钥交换策略
  • 加密
  • 配置 —— 糟糕的或默认的配置可能会造成安全威胁
  • 第三方库 —— 可能会包含安全隐患,而如果没有及时更新,还可能包含一些已为人所知的漏洞。
  • 网络安全

下图中的安全性三角形展现了在根据用例选择合适的安全性时所遇到的困境。

014 - 物联网的一种参考架构(1) |天源股份 – 产业互联网推动者!

这个安全性三角性一定程度上反映了每个用例都需要面对的一种妥协。你只能根据你的目的及需求,在三角形所代表的安全性、成本与业务需求之间选择其一。让我们看一下几个例子:

示例1:Acme银行建立了一个银行金库:在这个用例中选择安全的硬件是至关重要的,这方面没有商量的余地。为了实现对业务与安全性需求的最大涵盖,成本必然会极大地上升。

示例2:农场主Billy Bob希望通过某些高大上的传感器,在他的智能手机上了解收成的情况,但他对于安全性没有很高的要求。目前来说,农场主Billy Bob的需求确实已经满足了,他只用了较少的成本,并且结果令他满意。不过,这种好日子等到另一个农场主小Jimmy的儿子小小Jimmy开始学习计算机工程之后就到头了……

因此,为整个架构找到合适的安全措施永远像是走钢丝一样,因为业务需求和成本总是和高度的安全措施相抵触的。此外,某些技术需求可能会限制我们使用最高级安全措施的能力,例如运算能力不足的设备在发送数据包时可能无法接受某种程度上的额外开销,因为这意味着要消耗更多的资源。

到此为止,我们即将结束对于引用架构的介绍。通过本文,我们希望能够为你展示如何将一个IoT系统分解为更具体的层次。上下文感知的计算技术将使这个世界中的某些部分更容易理解。在后续的文章中,我们将为你展示如何通过本文介绍的RILA参考架构派生出对应的用例,以更完整地了解RILA如何实际地帮助我们实现IoT系统。

 

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

时序数据库(TSDB)–为万物互联插上一双翅膀

时序数据库(TSDB)是一种特定类型的数据库,主要用来存储时序数据。随着5G技术的不断成熟(十九大上工信部部长透露在2020年争取实现5G的全球首发),物联网技术将会使得万物互联。物联网时代之前只有手机、电脑可以联网,以后所有设备都会联网,这些设备每时每刻都会吐出大量的按照时间组织的数据,需要存储下来进行查询、统计和分析。时序数据和普通的业务数据在各个方面都有很大的不同,本文将会试图带大家进入TSDB的世界。

TSDB应用场景:哪些场景会用到TSDB?

TSDB目前最大的应用场景是监控业务(哨兵),以哨兵为例,哨兵会在业务服务器上部署各种脚本客户端用来采集服务器指标数据(IO指标、CPU指标、带宽内存指标等等),业务相关数据(方法调用异常次数、响应延迟、JVM GC相关数据等等)、数据库相关数据(读取延迟、写入延迟等等),很显然,这些数据都是时间序列相关的,客户端采集之后会发送给哨兵服务器,哨兵服务器会将这些数据进行存储,并提供页面给用户进行查询。如下图所示,用户可以登录哨兵系统查看某台服务器的负载,负载曲线就是按照时间进行绘制的,带有明显的时序特征:


td1

实际上,TSDB的潜力还没有爆发,至少在现在还没有。在可预知的未来3~5年,随着物联网以及工业4.0的到来,所有设备都会携带传感器并联网,传感器收集的时序数据将严重依赖TSDB的实时分析能力、存储能力以及查询统计能力。

td2

上图是一个智慧工厂示意图,工厂中所有设备都会携带传感设备,这些传感设备会实时采集设备温度、压力等基本信息,并发送给服务器端进行实时分析、存储以及后期的查询统计。除此之外,比如现在比较流行的各种穿戴设备,以后都可以联网,穿戴设备上采集的心跳信息、血流信息、体感信息等等也都会实时传输给服务器进行实时分析、存储以及查询统计。

TSDB数据示例:什么是时序数据?

介绍了TSDB的主要应用场景,再来看看时序数据到底是什么样的数据。下图是一份典型的时序数据:


td3

整个图表征广告业务实时行为数据,包括广告实时浏览量、实时点击量以及实时利润收入等。图中分了三个区域,表示时序数据由3个部分构成,分别为维度列、数值列以及时间列。维度列是最左边的部分,表征广告的基本信息,类似于物体标签,比如广告平台、广告主、广告面向对象以及广告面向国家等。数值列是中间的部分,表示采集的数值有广告浏览量(impressions)、点击量(clicks)以及利润(revenue)。时间列就是一系列的时间点信息。将上图翻译成表结构等价于:

Timestamp

publisher

advertiser

gender

country

impressions

clicks

revenue

2017-01-01T00:00:00

ultrarimfast.com

google.com

male

USA

1800

23

11.24

2017-01-01T00:00:00

bieberfever.com

google.com

male

USA

2074

72

31.22

2017-01-01T00:00:00

ultrarimfast.com

google.com

male

UK

1079

54

9.72

2017-01-01T00:00:01

ultrarimfast.com

google.com

male

USA

1912

11

3.74

2017-01-01T00:00:01

bieberfever.com

google.com

male

USA

897

17

5.48

2017-01-01T00:00:01

ultrarimfast.com

google.com

male

UK

1120

73

6.48

TSDB基本特点:时序业务有哪些特点?

时序业务和普通业务在很多方面都有巨大的区别,归纳起来主要有如下几个方面:

1. 持续产生海量数据,没有波峰波谷。举几个简单的例子,比如类似哨兵的监控系统,假如现在系统监控1w台服务器的各类指标,每台服务器每秒采集100种metrics,这样每秒钟将会有100w的TPS。再比如说,现在比较流行的运动手环,假如当前有100w人佩戴,每个手环一秒只采集3种metrcis(心跳、脉搏、步数),这样每秒钟也会产生300w的TPS。

2. 数据都是插入操作,基本没有更新删除操作。时序业务产生的数据很少有更新删除的操作,基于这样的事实,在时序数据库架构设计上会有很大的简化。

3. 近期数据关注度更高,未来会更关注流式处理这个环节,时间久远的数据极少被访问,甚至可以丢弃。这个很容易理解,哨兵系统我们通常最关心最近一小时的数据,最多看看最近3天的数据,很少去看3天以前的数据。随着流式计算的到来,时序数据在以后的发展中必然会更关注即时数据的价值,这部分数据的价值毫无疑问也是最大的。数据产生之后就可以根据某些规则进行报警是一个非常常见并重要的场景,报警时效性越高,对业务越有利。

4. 数据存在多个维度的标签,往往需要多维度联合查询以及统计查询。时序数据另一个非常重要的功能是多维度聚合统计查询,比如业务需要统计最近一小时广告主google发布在USA地区的广告点击率和总收入分别是多少,这是一个典型的多维度聚合统计查询需求。这个需求通常对实效性要求不高,但对查询聚合性能有比较高的要求。

TSDB市场发展:现在都有哪些TSDB产品?

在最近的一年时间里,随着物联网技术的不断成熟,很多创业者都希望能借助这个风口得到更多创业机会。试想当年移动互联网刚兴起的时候,也是诞生了一批规模庞大的创业者,而现在,要想在移动互联网创业,难度已经非常之大,基本可以认为现在移动互联网创业都是在玩资本,玩干爹。而物联网这个市场的竞争力还是非常之小,非常纯洁,创业的机会也非常之多。看清楚这样的事实,很多厂商尤其是公有云提供商都不约而同的将目光投到这个领域,他们的目标就是笼络这些小的创业公司,包括百度云、Facebook、阿里云以及华为云都开发提供了TSDB服务,希望能够借着后面这么一股创业热将云计算普及到这些小公司(云计算的最大客户就是小的创业公司,因此对于云计算来讲,得小公司多者得天下)。下图是最近一年各个厂商在TSDB的动作,可见搞个大动作是可以预见的了:


td4

TSDB核心特性:TSDB关注的核心技术点在哪里?

说了这么多,是应该看看TSDB到底在技术层面关注哪些核心点了,基于时序业务的基本特点,总结起来TSDB需要关注的技术点主要有这么几个:

1. 高吞吐量写入能力。这是针对时序业务持续产生海量数据这么一个特点量身定做的,当前要实现系统高吞吐量写入,必须要满足两个基本技术点要求:系统具有水平扩展性和单机LSM体系结构。系统具有水平扩展性很容易理解,单机肯定是扛不住的,系统必须是集群式的,而且要容易加节点扩展,说到底,就是扩容的时候对业务无感知,目前Hadoop生态系统基本上都可以做到这一点;而LSM体系结构是用来保证单台机器的高吞吐量写入,LSM结构下数据写入只需要写入内存以及追加写入日志,这样就不再需要随机将数据写入磁盘,HBase、Kudu以及Druid等对写入性能有要求的系统目前都采用的这种结构。

2. 数据分级存储/TTL。这是针对时序数据冷热性质定制的技术特性。数据分级存储要求能够将最近小时级别的数据放到内存中,将最近天级别的数据放到SSD,更久远的数据放到更加廉价的HDD或者直接使用TTL过期淘汰掉。

3. 高压缩率。提供高压缩率有两个方面的考虑,一方面是节省成本,这很容易理解,将1T数据压缩到100G就可以减少900G的硬盘开销,这对业务来说是有很大的诱惑的。另一个方面是压缩后的数据可以更容易保证存储到内存中,比如最近3小时的数据是1T,我现在只有100G的内存,如果不压缩,就会有900G的数据被迫放到硬盘上,这样的话查询开销会非常之大,而使用压缩会将这1T数据都放入内存,查询性能会非常之好。

4. 多维度查询能力。时序数据通常会有多个维度的标签来刻画一条数据,就是上文中提到的维度列。如何根据随机几个维度进行高效查询就是必须要解决的一个问题,这个问题通常需要考虑位图索引或者倒排索引技术。

5. 高效聚合能力。时序业务一个通用的需求是聚合统计报表查询,比如哨兵系统中需要查看最近一天某个接口出现异常的总次数,或者某个接口执行的最大耗时时间。这样的聚合实际上就是简单的count以及max,问题是如何能高效的在那么大的数据量的基础上将满足条件的原始数据查询出来并聚合,要知道统计的原始值可能因为时间比较久远而不在内存中哈,因此这可能是一个非常耗时的操作。目前业界比较成熟的方案是使用预聚合,就是在数据写进来的时候就完成基本的聚合操作。

6. 未来技术点:异常实时检测、未来预测等等

TSDB总结

TSDB将是未来一个非常具有市场性、挑战性的数据库,现在虽然已经有这样那样的服务,但大多都有这样那样的问题,现在很难谈得上成熟。为了在物联网时代、工业4.0时代中占有一定地位,TSDB是必须要拓展的技术。本文从时序场景、时序业务特点、TSDB市场以及TSDB核心技术点这几个方面对TSDB进行了介绍,希望看官能基本了解TSDB。后续笔者将会推出针对TSDB的系列专题文章,深入分析TSDB本身所要面对的各种技术问题以及解决方案。

作者:范欣欣

原文链接时序数据库-为万物互联插上一双翅膀

 

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

 

区块链傻瓜书:EOS 与以太坊对比

注意:由于 EOS 目前还在开发中,因此本文对该项目的一些描述可能会有所变化。 此外,我并非以太坊开发者,本文中很多对于以太坊的知识来自于搜索引擎。 考虑到这些事实,根据我目前对这两个项目的理解,本文只是我个人对这两个项目的看法(小编:本文也不代表高可用架构立场)。

简介

比特币推出后不久,很多人开始意识到比特币背后的技术的潜力远超仅仅作为新数字货币基础。事实上,在比特币发展的短短几年内,几十个新的去中心化应用程序就建立在比特币背后的区块链技术之上。

比如列出少数几个去中心化应用程序:加密消息传递(Bitmessage),去中心化交易(Bitshares),不信任的赌博 / 博彩(Peerplays),云计算(Golem)以及社交媒体(Steem / Steemit)等。

创新者和应用程序开发人员在这个新的区块链经济中面临的一个挑战是从头构建新的区块链应用程序是很困难的。最重要的是,通过传统的工作量证明(PoW)和权益证明机制(PoS),网络和应用程序的安全性取决于计算能力和 / 或 token。对于小企业主和创业公司来说,这些挑战使得门槛很高。小型创业公司无法独立部署广泛分布而功能强大的计算机网络来保护其应用程序。

当然,其他的共识机制例如 DPOS,可以使用相对较少数量的节点来完成操作,且不存在网络安全问题,尽管其他问题仍然存在,包括获取大规模分发的 token,当然还需要相关密码及区块链技术来与其应用交互。

作为比较,想象一下,如果每个电脑游戏设计师都必须从头开始专门构建一台计算机来运行某个特定的游戏,同时他们必须开发一个特定的操作系统来在游戏和计算机之间传达指令。如果使用这样的方式,那么绝大部分游戏都没法出现。

为了解决这个问题,以太坊网络提出并实现了智能合约平台。以太坊可以被认为是一个去中心化式平台,用于开发和运行去中心化应用程序(DAPP),其优点是用户可以确信这些 DAPP 将按照程序运行而不受第三方干扰。目前,以太坊网络的市值约为 300 亿美元,这证明了市场对智能合约平台的需求。

最近,Dan Larimer(Bitshares,Graphene 和 Steem / Steemit 的发明人)与 eos.io 团队一起宣布开发 EOS,这是一个共识区块链操作系统,提供数据库,帐户权限,日程安排,身份验证和互联网应用通信。EOS 将为开发人员提供他们需要的工具,以便他们可以专注于其应用程序的特定业务逻辑,而不用担心密码实现或与去中心化计算机的通信(即区块链)。此外,EOS 将使用并行化来增强区块链可伸缩性,以便达到每秒数百万次交易。

在这篇文章中,我将比较一些技术能力和局限性的差异,以及 EOS 和以太坊平台之间设计哲学的差异。

本文内容大纲

第 1 章:什么是智能合约?

第 2 章:设计理念

第 3 章:共识机制和治理

第 4 章:可扩展性

第 5 章:拒绝服务攻击

第 6 章:网络经济学:Gas 费用与拥有权益

什么是智能合约

对于那些刚接触加密货币和区块链技术的人来说,首先要了解区块链是什么。本质上,区块链是一个去中心化的系统,其核心是公共账本。账本是一种表示系统当前状态的方法(例如,每个账户中有多少加密货币)。区块链技术与公共账本需要一个共识机制,该机制指示去中心化的节点(即运行区块链的计算机网络)如何更新公共账本的状态。

作为一段有趣的历史,在 1994 年,一位名叫 Nick Szabo 的密码学家意识到去中心化的账本系统可以用来执行智能合约(也称为自动执行合约)。 Szabo 先生实际上创造了 ” 智能合约 ” 一词,其目的是将合约纳入互联网陌生人之间的电子商务协议设计中。

智能合约可以透明地促进资金或财产的转移和交换,同时避免了引入中间人服务。

智能合约还定义了协议中涉及的所有义务和潜在处罚,与传统合约非常相似,但智能合约平台也自动执行所有这些义务和处罚。这些智能合约平台实质上允许去中心化应用程序在网络上运行。以太坊目前是迄今为止去中心化应用最大和最成功的平台,但新平台 EOS 将力求解决以太坊网络面临的若干挑战。

设计理念

5a97a9e37f52e9cb07000005 640 - 区块链傻瓜书:EOS 与以太坊对比 |天源股份 – 产业互联网推动者!

EOS 和以太坊网络之间的主要区别之一在于网络背后的设计理念。以太坊网络几乎是应用无关的,也就是说,它是为所有潜在应用设计的中立平台。正如 Github 上的 Ethereum Design Rationale 文档所述:Ethereum 没有 ” 功能 “,拒绝构建 ” 甚至非常常见的高级用例作为协议的固有部分 “。这种基本原理减少了应用程序的膨胀,但依然有应用程序代码重用的需求,并且如果平台本身提供了某些更常见的功能,则应用程序开发人员肯定会节省很多力气。

与之相反,EOS 认识到许多不同的应用程序需要相同类型的功能,并试图提供这些功能,例如许多应用程序所需的加密和应用程序 / 区块链通信工具的实现。有了这个理念,EOS 将引入通用的基于角色的权限,用于接口开发的 Web 工具包,自描述接口,自描述数据库方案和声明性权限方案。我的理解是,EOS 提供的这些功能对于简化用户帐户生成和管理以及声明性权限和帐户恢复等安全问题特别有用。

共识机制和治理

5a97a9e37f52e9cb07000006 640 - 区块链傻瓜书:EOS 与以太坊对比 |天源股份 – 产业互联网推动者!

EOS 和以太坊之间的另一个重要区别在于区块链共识机制和区块链整体治理方法。鉴于以太坊使用 PoW(即将转而采用混合 PoW/PoS),EOS 将使用石墨烯技术,该技术利用 DPOS 共识机制。这一选择对商业可扩展性具有重要意义,将在下一章中讨论。

Ethereum 网络背后的当前 PoW 实施中的一个问题是,难以修复出现问题的应用程序。例如,最近 DAO 遭遇了严重的安全问题。值得注意的是,那些具有 “code-is-law” 思想的人认为 DAO 攻击是一个 ” 特性 “,而不是故障,用户应该更加负责任地更仔细地理解自己代码。

但无论如何,DAO 安全问题表明,以太坊要么会导致投资者面临潜在的重大损失,要么会造成破坏性的硬分叉。利用以太坊现有的 PoW 机制,每个硬分叉也会导致产生多个竞争链的风险,就像在以太坊安全问题发生后,出现以太坊 Ethereum Classic 分叉一样。此外,为了修复出现安全问题的应用,需要破坏整个以太坊网络进行硬分叉。

相反,EOS 包含冻结和修复破损或冻结应用程序的机制。例如,如果 DAO 已在 EOS 上实施,则可以冻结,修复和更新 DAO,而不会中断其他 EOS 应用程序。此外,EOS 的 DPOS 共识机制在硬分叉期间不会产生多个竞争链。 Steem 网络所经历的 18 次成功的硬分叉证明了这一点,背后采用的就是 Graphene 石墨烯算法。此外,EOS 将包含一个具有法律约束力的共同规范,用于争议解决,并且还可以投票给相应的开发社区分配开发资金。

可扩展性

5a97a9e37f52e9cb07000007 640 - 区块链傻瓜书:EOS 与以太坊对比 |天源股份 – 产业互联网推动者!

为了让平台具有商业上的可行性,可扩展性至关重要。这是 EOS 和以太坊不同的一个关键领域。目前,以太坊网络受限于 CPU 的单线程性能。早期的测试网络实现了每秒 25 次事务处理(在某些优化条件下),通过优化可能会提高到 50 或 100 tx/s。但是,在真实应用程序的负载下,以太坊网络当前的交易限制可能为 10 tx/s 或更低。过去,网络已经不堪重负,交易量超过了最高收费交易被拒绝的程度。这在最近的代币发行融资中尤其明显,例如 Status ICO,其中网络完全不堪重负,ETH 代币遭遇大规模闪电崩盘。请注意,Vitalik Buterin 已经制定了一个 ” 无限可扩展性 ” 的路线图,严重依赖分片的概念。分片是一个技术上具有挑战性的概念,肯定会增加网络的复杂性和攻击面,并可能降低网络的安全性。我并非是说以太坊的分片不能实现,它也可能会成功实现以提高可扩展性。

但是,就可扩展性而言,EOS 与 Ethereum 网络相比具有两大优势,一旦实施,EOS 可能将成为唯一可以处理真正的商业规模去中心化应用的平台。首先,EOS 将依靠石墨烯技术,已经在压力测试中显示出每秒达到 10,000-100,000 次交易。其次,EOS 将使用并行化来扩展网络,可能高达每秒数百万次的交易。如果实现这些基准,EOS 应该能够支持数千个商业规模的 DAPP。 EOS 将使用异步通信和单独的身份验证来实现加速,并且由于它不会有交易费用,因此 EOS 也不需要计数操作。

拒绝服务 DoS 攻击

5a97a9e37f52e9cb07000008 640 - 区块链傻瓜书:EOS 与以太坊对比 |天源股份 – 产业互联网推动者!

相对于网络的扩展能力,讨论网络潜在的攻击问题也很重要。在本章中,我将简要讨论 DoS 攻击的可能性。这种类型的攻击是恶意攻击者利用流量对网络进行垃圾流量攻击,以阻止合法流量通过。我的理解是,以太坊网络已被证明容易受到此类 DoS 攻击的影响,而 EOS 则好很多。

在以太坊网络中,众所周知,矿工优先选择高费用交易来添加区块链。由于只有有限的带宽和计算能力,因此很容易设想一种情况,即网络被许多高费用垃圾交易淹没,从而有效地阻止了许多低费用的合法交易。你可能会认为这通常需要昂贵的攻击成本,但有些情况下可以通过财务激励来实现。

例如,在最近的 Status ICO 中,实际上这是一场向 ICO 智能合约进行交易的竞赛,交易成功的用户可以用折扣的价格接收 ICO token。这就激励富有的玩家通过高费用交易来欺骗网络,以确保他们的交易能够顺利进行。然而,这给以太坊网络带来了严重的缺点,因为单一应用或智能合约可以有效地冻结整个网络。

相比之下,EOS 不易受到 DoS 攻击。 EOS token 的所有权赋予用户在网络带宽,存储和计算能力方面的比例。因此,垃圾邮件发送者只能消耗 EOS token 拥有的网络比例。对于特定的应用程序,DoS 攻击可能是可能的,具体取决于应用程序设计,但这些攻击永远不会破坏整个网络。即使许多其他恶意行为者尝试发送几个大型网络应用程序,刚进入网络的初创应用也有保证能够得到合适的带宽和计算能力的保证。

网络经济学:Gas 用与拥有权益

5a97a9e37f52e9cb07000009 640 - 区块链傻瓜书:EOS 与以太坊对比 |天源股份 – 产业互联网推动者!

最后,我想简要讨论 EOS 和以太坊网络的不同经济模型。基本上,这有点像比较所有权模式和租赁模式。通过以太坊,每次计算,存储操作和带宽利用都需要 gas。此外,由于矿工优先选择收费最高的交易,所需费用波动可能高得惊人(小编:可以了解 ” 加密猫 ” 火爆时以太坊交易费影响的波动图)。特别是最近火爆的各种 ICO,其中 100 美元的 gas 费仍然太小(即使是微不足道的交易)。此外,正如前一章所讨论的,这种经济模型创造了一个场景,富人可以通过高费用交易来淹没整个网络。此外,这种模式要求开发人员和创业公司在开发和部署应用程序时不断消耗 gas。

相比之下,EOS 将利用所有权模式,在该模式下,持有 EOS token 可以为用户提供网络带宽,存储和处理能力的成比例份额。这意味着,如果某人拥有 1% 的 EOS token,则无论网络其他部分的负载如何,他们总能获得 1% 的网络带宽。通过这种方式,小型创业公司和开发人员可以购买相对较少的 token,以获得可靠的,可预测的网络带宽和计算能力,并在需要扩展应用程序时,购买更多的 EOS token。此外,由于网络的交易费用为零,除了最初购买 EOS token 外,没有网络开发成本。然而如果愿意,也可以始终出售 token 以回收最初的投资。

结论

当然,我信仰石墨烯及相关技术,主要是因为它们具有令人印象深刻的可扩展性和最低的交易费用。 我承认这篇文章有明显偏向 EOS,但也要知道,以太坊目前是一个非常有活力的项目,市值达 300 亿美元,而 EOS 仍在开发中,目前的市值为 0 美元(小编:上面是文章发表时候状况,目前以太坊市值 850 亿美元,EOS 市值 60 亿美元)。 如果你想要我的中肯意见,我对 EOS 和以太坊都很看好,我相信即使推出 EOS,这两个平台仍然都有很大的发展空间。 另外,不要把这篇文章中的任何内容都当作投资建议,并且记得始终做自己的尽职调查和研究!

 

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理

一文读懂AlphaGo背后的强化学习

作者 | Joshua Greaves
编译 | 刘畅,林椿眄

本文是强化学习名作——“Reinforcement Learning: an Introduction”一书中最为重要的内容,旨在介绍学习强化学习最基础的概念及其原理,让读者能够尽快的实现最新模型。毕竟,对任何机器学习实践者来说,RL(强化学习,即Reinforcement Learning)都是一种十分有用的工具,特别是在AlphaGo的盛名之下。

第一部分,我们将具体了解了MDPs (马尔可夫决策过程)以及强化学习框架的主要组成部分;第二部分,我们将构建并学习有关价值函数和Bellman (贝尔曼方程)的理论知识,它是强化学习中最重要公式,我们将一步一步地推导、解释,以揭开强化学习的神秘面纱。

当然,本文只是尽力用最快、最直观的方式带你来理解强化学习背后的理论,而要加深自己在该话题上的理解,Sutton和Barto所写的“Reinforcement Learning:An Introduction”肯定值得你用心读一读。此外,AlphaGo身后的大神David Silver在YouTube上所讲强化学习十课也值得你认真学一学。

监督学习VS评估学习

对于很多感兴趣的问题,监督学习的范例没有办法给我们提供所需要的灵活性。监督学习和强化学习这两者之间最主要的区别在于收到的反馈是评估性的还是指导性的。指导性的反馈告诉你如何达到目标,而评估性的反馈则告诉你将会把目标完成到什么程度。监督学习以指导性的反馈为基础来解决问题,而强化学习则是基于评估性反馈来解决问题的。图像分类就是用带有指导性反馈的监督学习解决问题的一个实际例子;当算法尝试分类一些特定的数据时,它将从指导性的反馈中了解到哪个才是真正的类别。而另一方面,评估性的反馈仅仅告诉你完成目标的程度。如果你用评估性反馈来训练一个分类器,你的分类器可能会说“我认为这是一个仓鼠”,然后它会得到50分。但是,由于没有任何语境信息,我们不知道这 50 分是什么。我们需要进行其他的分类,探索50分意味着我们是准确或是不准确。或许10000分是一个更好的分值,因此我们还是不知道它是什么,除非我们尝试去对其他数据再进行分类。

317f228694334beb905123f96783cf48 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
猜到是仓鼠就可以得到两个金色星星和一个笑脸,而猜沙鼠能得到一个银色星星和一个大拇指

在我们感兴趣的很多问题中,评估性反馈的想法是更直观的,更易实现的。例如,想象一个控制着数据中心温度的系统。指导性反馈在这里似乎没有任何用处,你怎样告诉你的算法在任意给定的时间步中每个零件正确的设置是什么?评估性反馈在这里就将发挥它的用处了。你能很容易的知道在一个特定的时间段用了多少电,或者平均温度是多少,甚至有多少机器温度过高了等数据。这实际上就是谷歌使用强化学习解决这些问题的方式。让我们直接来学习吧。

马尔科夫决策过程

假定我们知道状态 s,如果未来的状态条件独立于过去的状态,那么状态 s 就具有马尔科夫性质。这意味着s描述了所有过去的状态直到现在的状态。如果这很难理解,那我们就用一个例子来解释,让这个问题显得更简单一点。假设一个球飞过空中,如果它的状态是由它的位置和速度决定,并足以描述它当前的位置和接下来的位置(不考虑物理模型和外界影响)。因此,这一状态就具备马尔科夫性质。但是,如果我们只知道这个球的位置不知道它的速度,它的状态就不再是马尔科夫。因为现在的状态并不是所有以前状态的归纳,我们需要以前的时间点所得到的信息去构建合适的球的模型。

强化学习通常可以建模为一个马尔科夫决策过程,即MDP(Markov Decision Process)。MDP是一个有向图,它有节点和边的状态,可以描述马尔科夫状态之间的转变,下面是一个简单的例子:

fb62718922204775960a563f890cf184 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
一个简单的马尔科夫决策过程

这个MDP展示了学习马尔科夫决策的过程。在最开始你在一个“不理解”的状态中,接下来,你有两个可能的动作,学习或者不学习。如果你选择不学习,则有100%的可能性返回到不理解的状态里。但是,如果你选择学习,只有20%的可能性让你回到最开始的地方,即80%的可能性变成理解的状态。

实际上,我确定转换到理解状态的可能性超过80%,MDP的核心其实很简单,在一个状态你可以采取一系列的动作,在你采取行动之后,这里有一些你能转化去什么状态的分布。在采取不学习动作的例子中,这个转化也能被很好的确定。

强化学习的目标是去学习怎么花更多的时间在更有价值的状态上,为了有一个更有价值的状态,我们需要MDP提供更多的信息。

85f712bd1fb540bc9ca2e0c62d09c6b0 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
你不需要一个MDP来告诉自己饿了要吃饭,但是强化学习的机制是需要它的

这个MDP增加了奖励机制,你每转化到一个状态,就会获得一次奖励。在这个例子中,由于接下来状态是饥饿,你会得到一个负面的奖励,如果接下来状态是饿死,那会得到一个更负面的奖励。如果你吃饱了,就会获得一个正面的奖励。现在我们的MDP已经完全成型,我们可以开始思考如何采取行动去获取能获得的最高奖励。

由于这个MDP是十分简单的,我们很容易发现待在一个更高奖励的区域的方式,即当我们饥饿的时候就吃。在这个模型中,当我们处于吃饱状态的时候没有太多其它的选择,但是我们将会不可避免的再次饥饿,然后立马选择进食。强化学习感兴趣的问题其实具有更大更复杂的马尔科夫决策过程,并且在我们开始实际探索前,我们通常不知道这些策略。

形式化强化学习问题

现在我们有了很多我们需要的基础材料,接下来我们需要将目光转向强化学习的术语。最重要的组成是智能体(agent)和环境(environment)。智能体是被间接控制的,且存在于环境中。回顾我们的马尔科夫决策模型,智能体可以在给定的状态下选择一个对它有显著影响的动作。然而,智能体并不能完全的控制环境的动态,环境会接收这些动作,然后返回新的状态和奖励

37a8edb40a454e829516a9a717c4b6ba - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
来自Sutton和Barto的书“Reinforcement Learning: an Introduction”(这是强烈推荐的)的这张图,很好的解释了智能体和环境之间的相互作用。在某个时间步t,智能体处于状态s_t,采取动作a_t。然后环境会返回一个新的状态s_t+1和一个奖励r_t+1。奖励处于t+1时间步是因为它是由环境在t+1的状态s_t+1返回的,因此让它们两个保持一致更加合理(如上图所示)。

我们现在已经有一个强化学习问题的框架,接下来准备学习如何最大化奖励函数。在下一部分中,我们将进一步学习状态价值(state value)函数和动作价值(action value)函数,以及奠定了强化学习算法基础的贝尔曼(Bellman)方程,并进一步探索一些简单而有效的动态规划解决方案。

奖励与回报

正如前面所说的,强化学习中的智能体学习如何最大化未来的累积奖励。这个用来描述未来的累积奖励的词称为回报,通常用R表示。我们还使用下标t来表示在某个时间步骤下的返回值。数学公式的表示如下:

aa62850f41ab470a9b6a004ca8a865c9 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
如果我们让这个级数无限延伸,那么我们可能会得到无穷的回报,但这样的话使得这个问题的定义失去意义。因此,只有当我们期望得到的奖励是有限级的,这个等式才有意义。有终止程序的任务称为情景任务。纸牌游戏是情景性问题的好例子。情景的开始是向每个人发牌,并且不可避免地根据特定的游戏规则而结束。然后,下一轮另一个情景又开始,再次处理这些纸牌。

比起使用未来的累积奖励,更为常用地是使用未来累积折扣奖励:

fb3138f1b1794427a74d8c2e3961a796 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
在这里0<γ<1。以这种方式来定义回报值有两个好处:不仅能够以无限级数来定义回报值,而且还能为随后的回报赋予更好的权重,这意味着我们更关心即将到来的回报,而不是我们将来会得到的回报。γ的值越小,就越正确。在特殊情况下,我们令γ等于0或者1。当γ等于1时,我们就回到了第一个等式,我们关心的是所有的回报,而不是考虑到未来有多远。另一方面,当γ等于0时,我们关心的是当前的回报,而不考虑之后的任何回报。这将导致我们的算法缺乏长远性。它将学会采取最适合当前情况的行动,但不会考虑此行动对未来的影响。

策略

策略,被记为Π(s,a),描述了行动的一个方式。它是一个这样的函数:接受一个状态和一个动作,并返回在该状态下采取这个动作的概率。因此,对于一个给定的状态,它必须满足 。在下面的例子中,当我们饿时,我们可以在吃和不吃两个动作之间做出选择。

fe03d20aa428416fbd70bf1d09fa6a89 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
我们的策略应该描述如何在每个状态下采取行动。因此,一个等概率的随机策略就该像这样子: 其中E代表吃的行动, 代表不吃的行动。这意味着,如果你处于饥饿状态,你在选择吃或者不吃的概率是相同的。

我们使用强化学习的目标是为了去学习一个最优的策略Π*,它告诉我们如何行动以得到最大化的回报。这只是一个简单的例子,容易知道例子中的最优决策是饿了就吃 。在这个实例中,正如许多MDPs (马尔可夫决策过程)一样,最优的决策是确定性的。每一个最佳状态都有一个最佳行动。有时这被写成

Π*(s)=a,这是一个从状态到这些状态下最优决策行动的一个映射。

价值函数

我们利用价值函数来得到学习的最优策略。强化学习中有两种类型的价值函数:状态价值函数,表示为V(s);和行为价值函数,表示为Q(s,a)。

状态价值函数描述了在执行一个策略时的状态值。这是一个从状态s开始执行我们的策略Π所得到的预期回报:

214 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!

值得注意的是,即使在相同的环境下,价值函数也会根据策略而改变。这是因为状态的价值函数取决于你的行为方式,因为你在某一个特定的状态下的行为会影响你预期的回报。同样要注意的是期望的重要性。(期望就像一个平均值,就是你期望看到的回报)。我们使用期望的原因在于:当你到达一个状态时,会发生一些随机状况。你可能有一个随机策略,这意味着我们需要将我们所采取的所有不同行动的结果结合起来。同样地,过渡函数可以是随机的,也就是说,我们不能以100%的概率结束任何状态。记住上面的这个例子:当你选择一个行动时,环境将返回下一个状态。可能有多个状态可以返回,甚至是一个动作。更多的信息我们将会在Bellman方程(贝尔曼方程)中得到。期望将所有的随机性都考虑在内。

我们将使用另一个价值函数是动作价值函数。动作价值函数是指我们采取某一特定策略时,在某个状态下采取一个动作所产生的价值。这是在策略Π下,对给定状态和行动时所返回的预期回报:

275 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!

对状态价值函数的注释同样适用于动作价值函数。它将考虑到未来行动的随机性,以及从环境中返回状态的随机性。

贝尔曼方程

Richard Bellman是一位美国应用数学家,他推导了以下方程,让我们能够开始求解这些MDPs (马尔可夫决策过程)。在强化学习中,贝尔曼方程无处不在,必须了解强化学习算法是如何工作的。但是在我们了解贝尔曼方程之前,我们需要了解一些更有用的符号。我们P和R定义为如下:

307 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!

649 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!

是另一种表达我们从状态s开始,采取行动a,到状态s’的期望 (或平均) 奖励的表达方式。

最后,有了这些知识,我们准备推导Bellman方程 (贝尔曼方程)。我们将把状态价值函数考虑到Bellman方程(贝尔曼方程)之内。根据回报的定义,我们可以修改公式(1)为如下所示:

4b6628bdb2bd4142a1726105b74383a8 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
如果我们想从总和回报中提出第一个奖励,公式可以被改写为这样:

368ebb9fcb4549d7abd2840dbcee20e8 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
在这里期望可以被描述如果我们采取策略Π时,继续从状态s出发的期望回报。可以通过对所有可能的动作和所有可能的返回状态的求和来描述期望。接下来的两个方程可以帮助我们迈出下一步。

7335ce407d0c4726852f077f296454c0 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
通过对这两个部分分配期望值,我们就可以将我们的方程转化为如下形式:

2a8701168d1f437f81c3cbf51f9b6945 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
值得注意得是,方程(1)和这个方程的结束部分是一样的。因此,我们可以将其替换,得到如下:

9dec9675510a4e7297b2735b25584b55 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
Bellman方程(贝尔曼方程)的动作价值函数可以以类似的方式推导出来。感兴趣的人可以在文章的最后看到具体的步骤。其最终结果如下:

72439ddb077c4c1d832e71f39eb05ca4 - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
Bellman方程的重要性在于,它能让我们将一个状态的值表达成其他状态的值。这意味着当我们知道状态st+1的值时,我们可以轻松地计算出状态st的值。这为我们解决每个状态值的迭代计算问题打开了大门,因为如果我们知道下一个状态的值,我们就能知道当前状态的值。在这里,最重要的是要记住方程式的编号。最后,随着Bellman方程(贝尔曼方程)的出现,我们可以开始研究如何计算最优策略,并编写我们的第一个强化学习智能体程序。

下一步:动态规划

在下一篇文章中,我们将研究使用动态规划来计算最优策略,这将为更高级的算法奠定基础。然而,这将是第一个实际编写强化学习算法的机会。我们将研究策略迭代和值迭代以及他们的优缺点。在此之前,感谢您的阅读。

正如所承诺的:推导Bellman方程的动作价值函数(贝尔曼方程)

正在我们推导出Bellman方程状态价值函数的过程一样,我们用相同的推导过程得到了一系列的方程,下面我们从方程(2)开始继续推导:

832aec6ca3a84e6c84b7bc9041d3156a - 一文读懂AlphaGo背后的强化学习 |天源股份 – 产业互联网推动者!
转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理。

整理:深度学习 vs 机器学习 vs 模式识别

pexels photo 317385 - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

【编者按】本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人Tomasz Malisiewicz的个人博客文章,阅读本文,你可以更好的理解计算机视觉是怎么一回事,同时对机器学习是如何随着时间缓慢发展的也有个直观的认识。

以下为正文:

本文我们来关注下三个非常相关的概念(深度学习、机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系。

5510f4de93adf - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

图1 人工智能并非将人放入一台计算机中(图片来源于 WorkFusion 的博客)

环绕四周,你会发现不缺乏一些初创的高科技公司招聘机器学习专家的岗位。而其中只有一小部分需要深度学习专家。我敢打赌,大多数初创公司都可以从最基本的数据分析中获益。那如何才能发现未来的数据科学家?你需要学习他们的思考方式。

三个与“学习”高度相关的流行词汇

模式识别(Pattern recognition)、机器学习(machine learning)和深度学习(deep learning)代表三种不同的思想流派。模式识别是最古老的(作为一个术语而言,可以说是很过时的)。机器学习是最基础的(当下初创公司和研究实验室的热点领域之一)。而深度学习是非常崭新和有影响力的前沿领域,我们甚至不会去思考后深度学习时代。我们可以看下图所示的谷歌趋势图。可以看到:

1)机器学习就像是一个真正的冠军一样持续昂首而上;
2)模式识别一开始主要是作为机器学习的代名词;
3)模式识别正在慢慢没落和消亡;
4)深度学习是个崭新的和快速攀升的领域。

5510f50129889 - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

2004年至今三个概念的谷歌搜索指数(图来源于 谷歌趋势

1. 模式识别:智能程序的诞生

模式识别是70年代和80年代非常流行的一个术语。它强调的是如何让一个计算机程序去做一些看起来很“智能”的事情,例如识别“3”这个数字。而且在融入了很多的智慧和直觉后,人们也的确构建了这样的一个程序。例如,区分“3”和“B”或者“3”和“8”。早在以前,大家也不会去关心你是怎么实现的,只要这个机器不是由人躲在盒子里面伪装的就好(图2)。不过,如果你的算法对图像应用了一些像滤波器、边缘检测和形态学处理等等高大上的技术后,模式识别社区肯定就会对它感兴趣。光学字符识别就是从这个社区诞生的。因此,把模式识别称为70年代,80年代和90年代初的“智能”信号处理是合适的。决策树、启发式和二次判别分析等全部诞生于这个时代。而且,在这个时代,模式识别也成为了计算机科学领域的小伙伴搞的东西,而不是电子工程。从这个时代诞生的模式识别领域最著名的书之一是由Duda & Hart执笔的“模式识别(Pattern Classification)”。对基础的研究者来说,仍然是一本不错的入门教材。不过对于里面的一些词汇就不要太纠结了,因为这本书已经有一定的年代了,词汇会有点过时。

5510f556a4ef4 - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

图2 一个字符“3”的图像被划分为16个子块。

自定义规则、自定义决策,以及自定义“智能”程序在这个任务上,曾经都风靡一时(更多信息,可以查看这个 OCR 网页)

小测试:计算机视觉领域最著名的会议叫CVPR,这个PR就是模式识别。你能猜出第一届CVPR会议是哪年召开的吗?

2. 机器学习:从样本中学习的智能程序

在90年代初,人们开始意识到一种可以更有效地构建模式识别算法的方法,那就是用数据(可以通过廉价劳动力采集获得)去替换专家(具有很多图像方面知识的人)。因此,我们搜集大量的人脸和非人脸图像,再选择一个算法,然后冲着咖啡、晒着太阳,等着计算机完成对这些图像的学习。这就是机器学习的思想。“机器学习”强调的是,在给计算机程序(或者机器)输入一些数据后,它必须做一些事情,那就是学习这些数据,而这个学习的步骤是明确的。相信我,就算计算机完成学习要耗上一天的时间,也会比你邀请你的研究伙伴来到你家然后专门手工得为这个任务设计一些分类规则要好。

5510f5a57e7ea middle - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

图3 典型的机器学习流程(图来源于 Natalia Konstantinova 博士的博客)。

在21世纪中期,机器学习成为了计算机科学领域一个重要的研究课题,计算机科学家们开始将这些想法应用到更大范围的问题上,不再限于识别字符、识别猫和狗或者识别图像中的某个目标等等这些问题。研究人员开始将机器学习应用到机器人(强化学习,操控,行动规划,抓取)、基因数据的分析和金融市场的预测中。另外,机器学习与图论的联姻也成就了一个新的课题—图模型。每一个机器人专家都“无奈地”成为了机器学习专家,同时,机器学习也迅速成为了众人渴望的必备技能之一。然而,“机器学习”这个概念对底层算法只字未提。我们已经看到凸优化、核方法、支持向量机和Boosting算法等都有各自辉煌的时期。再加上一些人工设计的特征,那在机器学习领域,我们就有了很多的方法,很多不同的思想流派,然而,对于一个新人来说,对特征和算法的选择依然一头雾水,没有清晰的指导原则。但,值得庆幸的是,这一切即将改变……

延伸阅读:要了解更多关于计算机视觉特征的知识,可以看看原作者之前的博客文章:“ 从特征描述子到深度学习:计算机视觉的20年 ”。

3. 深度学习:一统江湖的架构

快进到今天,我们看到的是一个夺人眼球的技术—深度学习。而在深度学习的模型中,受宠爱最多的就是被用在大规模图像识别任务中的卷积神经网络(Convolutional Neural Nets,CNN),简称ConvNets。

5510f5cdaa82f middle - 整理:深度学习 vs 机器学习 vs 模式识别 |天源股份 – 产业互联网推动者!

图4 ConvNet框架(图来源于 Torch的教程

深度学习强调的是你使用的模型(例如深度卷积多层神经网络),模型中的参数通过从数据中学习获得。然而,深度学习也带来了一些其他需要考虑的问题。因为你面对的是一个高维的模型(即庞大的网络),所以你需要大量的数据(大数据)和强大的运算能力(图形处理器,GPU)才能优化这个模型。卷积被广泛用于深度学习(尤其是计算机视觉应用中),而且它的架构往往都是非浅层的。

如果你要学习Deep Learning,那就得先复习下一些线性代数的基本知识,当然了,也得有编程基础。我强烈推荐Andrej Karpathy的博文:“ 神经网络的黑客指南 ”。另外,作为学习的开端,可以选择一个不用卷积操作的应用问题,然后自己实现基于CPU的反向传播算法。

对于深度学习,还存在很多没有解决的问题。既没有完整的关于深度学习有效性的理论,也没有任何一本能超越机器学习实战经验的指南或者书。另外,深度学习不是万能的,它有足够的理由能日益流行,但始终无法接管整个世界。不过,只要你不断增加你的机器学习技能,你的饭碗无忧。但也不要对深度框架过于崇拜,不要害怕对这些框架进行裁剪和调整,以得到和你的学习算法能协同工作的软件框架。未来的Linux内核也许会在Caffe(一个非常流行的深度学习框架)上运行,然而,伟大的产品总是需要伟大的愿景、领域的专业知识、市场的开发,和最重要的:人类的创造力。

其他相关术语

1)大数据(Big-data):大数据是个丰富的概念,例如包含大量数据的存储,数据中隐含信息的挖掘等。对企业经营来说,大数据往往可以给出一些决策的建议。对机器学习算法而言,它与大数据的结合在早几年已经出现。研究人员甚至任何一个日常开发人员都可以接触到云计算、GPU、DevOps和PaaS等等这些服务。

2)人工智能(Artificial Intelligence):人工智能应该是一个最老的术语了,同时也是最含糊的。它在过去50年里经历了几度兴衰。当你遇到一个说自己是做人工智能的人,你可以有两种选择:要么摆个嘲笑的表情,要么抽出一张纸,记录下他所说的一切。

结论

关于机器学习的讨论在此停留(不要单纯的认为它是深度学习、机器学习或者模式识别中的一个,这三者只是强调的东西有所不同),然而,研究会继续,探索会继续。我们会继续构建更智能的软件,我们的算法也将继续学习,但我们只会开始探索那些能真正一统江湖的框架。

 

转载声明:本网部分文章或图片来源于公开网络资料,本网转载使用出于传递更多信息和供人学习之目的。如转载涉及版权方面的问题,请作者及时与本网联系,本网将按法律规定予以及时删除或者采取其他方式妥善处理