处理移动端传感器时序数据的深度学习框架:DeepSense

DeepSense 是一种在端设备上运行的深度学习框架,它可以在本地获取需要处理的传感器数据,并且在不上传到云端的情况下对这些数据应用深度学习模型,如卷积神经网络或门控循环神经网络等。

DeepSense 是一种在移动设备上运行的深度学习框架,可以根据来自移动传感器(例如,运动传感器)的数据进行回归和分类任务。分类任务的一个例子是异构人体活动识别(HHAR),即基于运动传感器测量数据来检测某人可能在进行哪些活动(步行,骑车,站立等等)。另一个例子是生物特征运动分析,即从步态识别出用户。回归任务的一个例子是利用加速度测量数据来跟踪汽车的位置并推断汽车以后的位置。

与最先进的框架相比,DeepSense 特别提供了一个估计量(estimator),该估计量的跟踪误差远小于汽车跟踪问题的误差,并且明显优于 HHAR 和用户识别任务方面的最先进的算法。

尽管我们一般将多数移动应用程序转移到远程云处理,但是转移过程对时间延迟要求很高,而且高传感器采样频率(如加速器,陀螺仪)导致数据传输难以支撑,因此我们更希望在本地设备上执行大型传感器任务。因此,我们通过在两种不同类型的智能设备上针对所有三项任务的适度能耗和低开销进行测试,展现了在移动设备上实现和部署 DeepSense 的可行性。

对于许多潜在的应用程序来说,本地处理也是保护隐私的一个重要组成部分。所以现在很多研究者对于这种端设备上的深度学习很感兴趣。本文作者深入了解了 DeepSense 的工作原理,并重点给我们介绍该框架的核心网络设计,其余的评估细节等我们应该很容易从论文中找到。

处理单传感器数据

我们先考虑单个传感器(最终我们希望构建应用程序,将多个传感器的数据组合起来)。单传感器可以提供多维测量,例如运动传感器,它会沿着 x、y 和 z 轴报告运动。我们每隔一段时间(即时间序列)收集这三个维度中的传感器读数,我们可以用如下形式表示:

处理移动端传感器时序数据的深度学习框架:DeepSense

我们要在宽度为τ的非重叠窗口中处理数据。将时间序列样本中的数据点数除以τ可以得到总的窗口数。例如,如果我们有 5 秒的运动传感器数据,并打算将它们划分为持续 0.25 秒的窗口,那么我们将得到 20 个窗口。

处理移动端传感器时序数据的深度学习框架:DeepSense

在频率维度上对时间序列数据中寻找模式比在时间维度上更好,所以下一步是将 T 窗口中的每一个小窗口通过傅立叶变换传递给 f 频率分量(frequency components),每个频率分量具有大小和相位。每个窗口得到一个 d x 2f 阶的矩阵。

处理移动端传感器时序数据的深度学习框架:DeepSense

我们有了这些 T,就可以将所有数据打包到一个 d x 2f x T 的 3 阶张量。

处理移动端传感器时序数据的深度学习框架:DeepSense

将所有的信息都很好地封装在单个张量中这一点是很方便实现的,但实际上我们将在 t 维中逐层处理(一次一个窗口)。每个 d x 2f 窗口切片通过卷积神经网络组件包括三个阶段,如下图所示:

处理移动端传感器时序数据的深度学习框架:DeepSense

首先,我们使用二维卷积滤波器捕捉局部频率域各维度之间的交互。然后输出通过一维卷积滤波器层来捕获高级关系。最后一个滤波器层的输出被展平以产生传感器特征向量。

整合多传感器数据

按照上述应用程序使用每 K 个传感器的流程。我们现在有了 K 个传感器特征向量,我们可以把它打包成一个具有 K 行的矩阵。

处理移动端传感器时序数据的深度学习框架:DeepSense

然后传感器特征矩阵通过与我们刚刚看到结构相同的第二个卷积神经网络组件传送。也就是说,二维卷积滤波层后面是两个一维向量层。最后,我们将最后一个滤波器的输出压平为整合后的传感器特征向量。窗口宽度τ附加在在该矢量的末端。

对于每个卷积层,DeepSenses 学习 64 个滤波器,并使用 ReLU 作为激活函数。另外,在每层施加批量归一化以减少内部协变量(covariate)的变化。

现在一个时间窗口有组合的传感器特征向量。并且我们需要对所有 T 窗口重复上述过程。

所以现在我们有 T 个组合的传感器特征向量,每个都学习窗口内的相互作用。当然,跨时间窗口学习窗口之间的关系也很重要。为了做到这一点,T 特征向量被馈送到 RNN 中。关于这一点,我想我们已经准备好了一张示例图来说明问题。

处理移动端传感器时序数据的深度学习框架:DeepSense

作者在 RNN 层中采用了门控循环单元(GRU)而不是 LSTM。

GRU 在各种任务中表现出与 LSTM 相似的性能,同时具有更简单的结构,这降低了移动应用程序的网络复杂性。

DeepSense 使用两层的堆叠式 GRU 结构。当有新的时间窗口时,此结构可以逐增地(incrementally)运行,从而更快地处理流式数据。

将其全部数据输出到输出层

循环层的输出是一系列 T 向量处理移动端传感器时序数据的深度学习框架:DeepSense, 每个时间窗口一个 T 向量。

对于回归类任务(例如,预测汽车位置),输出层是所有向量之上的全连接层,这些全连接层共享用于学习的权重处理移动端传感器时序数据的深度学习框架:DeepSense和偏置项处理移动端传感器时序数据的深度学习框架:DeepSense,从而学习处理移动端传感器时序数据的深度学习框架:DeepSense

对于分类任务,将单个矢量组成一个固定长度的单矢量以便进一步处理。我们可以使用类似注意力网络学习的加权平均值一样的技巧,但是在本文中,通过取时间的平均值(累加向量并除以 T)可以获得优异的结果。最终特征向量被传送到 softmax 层以生成最终类别预测分数。

自定义目前的应用程序

遵从以下步骤将 DeepSense 打磨成适合特定的移动测绘和计算任务的系统:

  • 确定传感器的输入个数 k,将输入预处理到一组 d x 2f x T 张量中。
  • 确定任务类型并选择合适的输出层。
  • 可选择自定义成本函数。回归任务的默认成本函数是均方误差,分类任务默认的成本函数是交叉熵误差。

对于评估中的活动识别(HHAR)和用户识别任务,使用默认成本函数。对于汽车位置跟踪任务,使用负对数似然函数(详见 4.2 节)。

主要成果

以下是 DeepSense 相对于传感器融合和 eNav 算法在汽车跟踪任务上的准确度。地图辅助准确度栏显示了位置被映射到地图最近道路段时得到的准确度。

处理移动端传感器时序数据的深度学习框架:DeepSense

处理移动端传感器时序数据的深度学习框架:DeepSense

DeepSense 在 HHAR 任务上优于其它方法 10%。

处理移动端传感器时序数据的深度学习框架:DeepSense

在用户识别任务上优于其它方法 20%。

处理移动端传感器时序数据的深度学习框架:DeepSense

相关推荐