DeepSense:用于时间序列移动传感数据处理的深度学习框架
2017年08月28日 由 xiaoshan.xiang 发表
349354
0
DeepSense是在移动设备上运行的深度学习框架,它可以完成移动传感器(如运动传感器)数据集上的回归和分类任务。分类任务的第一个例子是异构人类活动识别(HHAR),通过运动传感器检测人类可能从事的活动(步行、骑自行车、站立等)。另一个例子是生物识别运动分析,要求必须从步态识别出用户。回归任务的例子是用加速度测量来追踪汽车的位置。
与最先进的技术相比,DeepSense在汽车追踪问题上提供了一个更小的跟踪误差估计器,在HHAR和生物识别用户识别任务上比最先进技术的算法更具有优势。
处理来自单传感器的数据
首先考虑单传感器(最终我们希望创建由多个传感器的数据组合起来的应用程序)。传感器可提供多维测量。例如,运动传感器报告在x、y和z轴上的运动。我们定期收集d维传感器读数,我们可以用矩阵形式表示如下:
我们要在宽度为τ的非重叠窗口中处理数据。将时间序列样本中的数据点数除以τ可以得到T窗口的总数。例如,如果我们有5秒的运动传感器数据,将它们划分为持续0.25秒的窗口,那么我们将有20个窗口。
时间序列数据中的发现模式在频率维度上比在时间维度上表现更好,因此下一步是取一个T窗口,通过傅里叶变换得到f频率分量,每一个分量都有一个大小和相位。这为每个窗口提供了一个dx2f矩阵。
我们得到了T窗口的所有数据,可以把所有的数据都打包成一个d x 2f x T张量。
把该点上所有的东西都用一个张量来表示是很方便的,但实际上,我们将会在T维中处理切片。每个d x 2f窗口切片都是由一个带有三个阶段的卷积神经网络组成,如下图所示:
首先,我们使用二维卷积滤波器来捕获维度和局部频域之间的交互。然后将输出通过一维卷积过滤器层以捕获高级关系。将最后一个滤波器层的输出平铺,以产生传感器特征向量。
结合来自多个传感器的数据
对于该应用程序使用的每个传感器,都要遵循上述过程。我们现在有K个传感器特征向量,我们可以把它包装成一个K行的矩阵。
然后,传感器特征矩阵通过第二个卷积神经网络组件(与我们刚才看到的结构相同):一个二维卷积滤波器层,接着是两个一维卷积滤波器层。再一次,我们取最后一个卷积滤波器层的输出,并将其平铺成一个组合传感器特征向量。将窗口宽度τ添加到向量的末端。
对于每个卷积层,DeepSenses需要学习64个过滤器,并将ReLU作为激活函数。此外,每一层都应用批量标准化以减少内部协变位移。
现在我们得到了一个时间窗口的组合传感器特征向量。对所有的T窗口重复上述过程。
使用RNN学习时间窗口中的模式
现在我们有了T组合传感器特征向量和每个学习窗口内的交互。学习时间窗口中的窗口内部关系是也是很重要的。为此,将T特征向量输入到RNN中。
在这一点上,我们已经做好了准备。
这里选择使用封闭的循环单元(GRUs)作为RNN层,而不是使用LSTMs。
GRUs和LSTMs在各种任务中表现出相似的性能,但GRUs的表达更简洁,能够降低移动应用程序网络的复杂性。
DeepSense使用一个两层堆叠的GRU结构。当有一个新的时间窗口时,该结构可以以增量的方式运行,从而更快的处理流数据。
输出层
复发层的输出是一系列T向量
,每个时间窗口都有一个T向量。对于基于回归的任务(例如预测汽车位置),输出层是每个向量顶部的完全连接的层,共享权重
和偏差项
,去学习
对于分类任务,先将个体向量组成一个固定长度的向量,再进一步处理。该最终特征向量被输送到softmax层以产生最终的类别预测。
自定义进行中的应用程序
为特定的移动传感和计算任务定制DeepSense,采取以下步骤:
确定传感器输入的数字,并将输入预处理成一组d x 2f x T张量。
确定任务的类型并选择合适的输出层
可以定制成本函数。回归任务默认的成本函数是均方误差,而对于分类任务,则是交叉熵误差。
对于行为识别(HHAR)和用户识别任务,在评估中使用默认的成本函数。对于汽车定位追踪使用negative log likelihood 函数。
重要成果
这是DeepSense在汽车追踪任务上实现的精度(与ensor-fusion 和eNav算法相比较)。地图辅助精度栏显示了位置映射到地图上最近的道路段时所达到的精度。
在HHAR任务中,相对于其他方法,DeepSense的性能提升了10%。
用户识别任务提升了20%
我们通过三个具有代表性的移动感知任务来评估DeepSense,其中DeepSense在利润率方面优于现有技术基准,同时仍然可以通过适度的能耗、在移动和嵌入式平台上的低延迟的方式实现其移动可行性。
评估任务主要集中在运动传感器上,但这种方法可以应用于许多其他传感器类型,包括麦克风、wi - fi信号、气压计和光传感器。