深度学习时序数据处理的综述笔记

news/2025/3/12 17:47:40/文章来源:https://www.cnblogs.com/tyriis/p/18765409

Deep Learning for Sensor-based Human Activity Recognition

Deep Learning for Sensor-based Human Activity Recognition: Overview, Challenges, and Opportunities: ACM Computing Surveys: Vol 54, No 4

进入WHAR后一直苦于找不带一个明确的问题。经帅气师兄推荐看一下这一篇补充材料。先做出内容总结再设想一下以后可能可以着手的工作。

Abstract

sensor IoT发展的很快,很有希望。

但是存在一些难点。

dl在很多领域取得成功,所以可以试试~

本文对sota的dl方法进行survey。

首先,介绍感官数据multimod,提供公共数据集用以评估

其次,提出whar的分类。

最后,讨论一些悬而未决的方法并且提供一些insight

1. Intro

to intro...

WHAR中的挑战

挑战也可以说是难点。

DL的应用

本文的contribution

2. Sensor Modality & Datasets

sensor mod

datasets

3. Challenges (难点

3.1 feature extraction

3.1.1 single-modal feature extraction methods

文章将特征抽取方法分类为:时序特征,多模态特征、统计学特征

最粗糙的特征有mean和variance。

高级一点的方法:

a) Time-Frequency-Spectral

将时间序列从时域转换到频域来利用频谱功率随时间的变化。

什么是时域什么是频域呢?
时域:数据以时间作为x轴(自变量)。时域数据表示主要关注数据在不同时间点上的值和变化。
频域:数据以频率作为x轴,关注信号在不同频率上的强度
要将时域数据转变到频域数据,可以使用快速傅里叶变换。

上图就是对该方法的一个简单展示。将sensor数据利用Short-time Discrete Fourier Transform (STDFT)转化成time-frequency-spectral image,再将频域图利用cnn进行特征抽取。

b) RNN

RNN的方法就比较好理解。先把原始数据用滑动窗口切分,再送进RNN抽取特征。

值得注意的是文中提到传统rnn会面临梯度爆炸和梯度消失的问题。但是LSTM将这种问题克服。

c)CNN

CNN的做法和图像领域的比较一致。在不同的信号上进行一个一维cnn的采样。

面对一维数据我们首先需要去思考如何进行特征的抽取。以上三种方法以及这三种的混搭可以大概的可以满足特征抽取的需要。那么,在WHAR中通常是一个多模态的情况:加速度计、陀螺仪等等。有研究表明多模态的数据可以获得更加好的效果。于是产生一个问题:如何进行多模态特征的提取?

文章给出两个方法:

3.1.2 multi-modal feature fusion methods

a)feature fusion

特征融合的大致思路是将不同模态的特征分别提取,再将他们作为输入给到一个特征融合网络。让该网络吐出一个特征向量进行分类。

那么这种feature fusion也是有很多的方法,作者对这些方法进行了分类:

a.1) Early Fusion

首先是early fusion,前期融合。就是说在数据处理的前期就试图把数据融合到一起。(p.s.对于融合这个词我一开始也不太理解,但是就是通过一些方法把不同的数据合在一起)

方法一:统计学方法描述数据

文中有这样一句话我看不懂:

A simple fusion approach in Reference [76] transformed the raw x, y, and z acceleration data into a magnitude vector by calculating the Euclidean norm of x, y, and z values.

啥是magnitude vector:描述一组数据的强度的一个度量。

啥是euclidean norm:换个名字就懂了:L2Norm

所以这个方法就明了了。就是将输入数据算出一个类似mean、var的统计学意义的数值进行描述。

方法二:concat

有人将多模态数据直接一个模态一个模态水平地接起来,然后再用一维的方法去抽特征。也有人将多模态数据竖直地堆起来变成一个二维的图,然后再用二维的方法去抽特征。还有人将数据reshape成3D的,再用3D-cnn去抽。

CNN懂得都懂,是用一个核把数据扫一遍,所以它是可以抽取到局部的一些信息(令人难受的就是我不知道这个“信息”到底是什么),但是对于视界稍大一些的情况它的效果可能没有那么好(也是想想的)。于是就有人搞了一种特殊的数据排列方式,可以让其中的序列信号都有机会和其他每个序列相邻,只要相邻了就可以被CNN抽特征。

a.2) sensor-based fusion

这种方法就是对不同的模态先去抽特征,然后再把特征进行融合。有一种方法是做一个confidence calculation net,让该net对不同modal的特征给出一个权重,然后进行加权求和。

a.3) axis-based fusion

这种方法大意就是:对传感器收集的不同的数据(x、y、z等)都做一个网络去抽,抽完再去fuse。所以我们可以注意到上图种有n个modal,但是特征抽取器有k个。

a.4) shared-filter fusion

所谓shared-fliter,指的是对所有的axis都用同样的抽取器。你说这好吗?好不好我不知道,但是肯定快一点。

b)classifier ensemble

在不同模态进行特征抽取,之后在不同模态进行classify。对各个模态的分类结果进行ensemble。

有一种和前面a.2confidence calculation类似的方法,即给每个分类器的结果分配一个权重。

这种方法相较于feature fusion,显然,更加具备延展性:当modal数量发生变化后,我们只需要修改分配给每个分类结果的权重即可。

当然,相较于feature fuison,这种方法在特征抽取方面要更加粗糙。

3.2 annotation scarcity

标注稀缺。就是说有标记的数据太少了,那咋办?解决方法有无监督学习和半监督学习。

3.2.1 Unsupervised Learning无监督学习

一些深度生成式网络如Deep Belief Net,auto-encoder。

在DBN结构中,先用大量的无标签数据训练DBN的特征提取能力;再在DBN后接上一个分类器,用少量的有标签数据对整个模型架构进行微调。(虽然文中把这个方法列在无监督里,但是我觉得这个方法整体来说还是算半监督)

3.2.2 semi-supervised Learning半监督学习

半监督就是说无标签数据和有标签数据一起进行训练。

Co-training是一种半监督学习。在co-training中有一个view的概念,可以将其先简单理解成modality。co-training的方法大致可以描述为:用不同的模态内的少量有标签数据训练一个分类器。用该分类器对对应模态数据进行分类。把分类置信度较高的一些预测标签再投入到分类器训练中,以增加标签的方式实现数据增强。

当然,这里有一个概念是多数投票。由于WHAR数据是在同一时间对同一目标的多个模态进行采集的,所以同一时间段的数据所对应的标签是相同的(人只能有一个动作)。故,在对一段数据进行分类时,我们采用多个模态分类器投票的方式进行预测标签的确定。

但是,这种方法的错误点也显而易见:分类器可能给出错误的预测标签。这样的话就一步错步步错了。

Active Learning也是一种半监督学习。简单来说,就是用一个小的有标签数据集训练一个分类器,让分类器去看一遍无标签的数据集(或者其中的一部分),找到一个对训练最有用的样本(最有用可以是高交叉熵、最不确定等度量方法)。把样本丢给人去标记,再投入数据集参与训练。

但是这种方法再WHAR里怎么实现呢?什么人可以对着一堆传感器数据看出来是什么运动啊?

Data augmentation通过合成数据进行数据增强意味着从少量真实数据中生成大量虚假数据,用虚假数据促进模型的训练。

这个豪哥的LRMDM就是这种方法。

3.3 class imbalance

这就是说,不同数据的获取概率自然的就是不一样的。而数据集的大小很大程度上影响了后续任务的效果。可以看出这个问题好像没什么解法,文章中这里的篇幅一页纸都不到。

Data level首先就从数据集角度上做一点平衡。要么把大的数据减少一点,要么用DA的方法把小数据集变大一点。这两种方法来说,后者比较好。

Algorithmic Level就是改进算法框架。比如说用F1-score而不是交叉熵来衡量损失。这是合理的,因为F1-score表示的是一种比例,管你数据集大小怎么样,比例的scale都是一样的。

3.4 distribution discrepancy

数据分布差异。很多的sota会把训练数据和测试数据当成独立同分布来看。但是这是有问题的。数据分布差异的原因可以分为:用户不同,时间不同,传感器状态不同。还有一种分类是同质差异和异质差异的区分。这种区分主要是看特征的维度是否有不同,若改变传感器导致特征空间维度发生变化,那就是异质的差异。

Transfer Learning迁移学习是一种解决数据分布差异的 方法,它的主要思想是:当从一个预定义的setting转移到其他setting中时,模型的分类能力还是可以有较好的表现。

3.4.1 User discrepancy

就是说,在测试集上可能会遇到训练集从来没有出现过的用户,这样的话其数据如何进行预测?

迁移学习方法:先用源域的数据进行训练,到测试阶段后用目标域的数据对模型的最后几层进行微调。这叫finetune。

GAN方法:用源域数据生成目标域数据进行DA。

3.4.2 Time discrepancy

没看

3.4.3 Sensor discrepancy

没看

3.5 composite activity

活动识别的目标很多是低语义的动作,走路、站立、跑步之类的。而高语义的一些活动往往是多个低语义活动的组合。高语义活动如工作、吃饭、煮咖啡等,这些高语义的标签含有更多的信息,可以更好的反应人的生活。但是,这样的高语义活动识别可能在只有传感器数据的情况下是不够的,还需要周围环境和上下文信息。所以没人做这个哈哈。

3.6 data segmentation

原始sensor信号是一种连续的流信号。直接滑动窗口切分太暴力。可能把多条运动切到一起也可能把一条运动切开。接下来给出分段的两种分类:

显式分割

a)层级缩小 hierarchical narrow-down

从一个大窗口逐步缩小到小窗口。缩小标准是两个连续的窗口具有不同的标签,或者分类置信度小于阈值。

b)时间步维度上的分类 timestep wise

这里的timestep指的是sensor数据流中的一个点。例如采样频率为Hz,则一个timestep就是在该0.02s中传感器返回的数据。

这种方法就是对每一个时间步骤预测一个label。可想而知这样的分类很细致,但是数据量太大。

隐式分割

Varamin这哥们搞了一个multi-label-architecture,可以直接predict正在进行的活动数量和每个活动的对应概率。

3.7 concurrent activity

concurrent activity就是说会有一些活动是同时发生的。但是文中对这部分的讲解非常少。给出两种方法:1)对所有活动都打标签,都识别一下。2)把所有的活动排列组合一下当作标签。(这么蠢的方法也能发??)

3.8 multi-occupant activity

多人运动。

有两种多人运动:自己管自己;两个人一起玩。这两种运动方式都需要有环境传感器(ambient sensor)来丰富语义信息。

3.9 computation cost

层数太多会算的很慢。

3.10 privacy

说是简单用cnn抽取的特征就能有将近90%的正确率在用户识别任务上。man!

3.11 interpretability

可解释性。

就是说,在多模态的数据流中,对于某个运动的检测任务,可能有一些模态的数据是没多大用的,而某一些数据是起到决定性作用的。

有团队使用可视化的方法将模型的输入展示出来。 Understanding and Improving Deep Neural Network for Activity Recognition

为了突出某部分数据对结果的影响力,有个很好的东西叫attention。

soft attention

In machine learning, “soft” means differentiable.这一段写的蛮清楚的就直接截图了。

用滑动窗口滑出来的数据块长得就像词向量一样,再用attention确定哪块是更加重要的。

hard attention

soft是分0到1的权重,hard就直接分0和1了所以这玩意是不可微的。然后文中讲的我就有点看不懂了。

文中说,hard attention输出的是一种随机的选择,是没有ground truth的。所以做不了loss。

但是,用结合强化学习的思路就可以让模型在选择策略的空间中进行梯度的反向传播。

Future Directions

好的,让我 康康有啥可以研究的。

文中说,chapt. 3里说的11个难点都可以研究。此外,还给出了一下一些问题:

  • 无监督方法。无监督方法在抽特征方面用的多,但是不太能在标签预测上用,能不能想个办法用一下?
  • 新活动的识别。这就是说的zeroshot吗?
  • 未来运动预测。可以对一些时序相关性强的运动进行预测。
  • 对sota的规范化。这应该就不是我可以做的工作了哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897320.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多合一控制器IPU

经纬恒润高压多合一控制器将新能源汽车中多个动力系统相关模块进行整合,如:整车控制器VCU、电池管理系统BMS等。这种集成化设计旨在减少整车控制器数量,减轻重量,降低成本,提高可靠性及空间利用率。 经纬恒润高压多合一控制器将新能源汽车中多个动力系统相关模块进行…

【第一篇】如何优雅使用多功能调试器上的EEPROM

EEPROMEEPROM是一种带电可擦的可编程只读存储器,相较于FLASH来说,EEPROM的寿命更长,写入数据之前不需要先进行擦写操作。目前市面上常见的eeprom的型号多为at24cxx,其中有02,04,08,16,32等等。在多功能调试器上加入EEPROM的目的:主要是起一个学习作用,因为在多功能调…

linux 中 awk命令利用数组对指定列去重复

001、实例如下:(base) [b20223040323@admin2 test]$ ls a.txt (base) [b20223040323@admin2 test]$ cat a.txt ## 测试数据, 第一列又两类重复 aa 11 bb 89 aa 77 kk 66 aa 88 kk 99 (base) [b20223040323@admin2 test]$ awk …

No.54 ES6---class类

一、class的基本语法ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。 通过 cass 关键字,可以定义类。 基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向…

Bat脚本启动本地Kafka

一:功能介绍本地启动Kafka,当需要测试多个Kafka Broker时使用脚本启动多个实例二:使用介绍编写 bat 文件,将下述代码填入保存,注意路径配置@echo off @REM 声明 UTF-8 编码,避免乱码问题 chcp 65001 setlocal enabledelayedexpansion @REM 代表脚本启动的当前路径,如上…

Pwnable_orw

题源题解 保护只开启了栈保护 分析 进入ida分析 main函数如下seccomp (Secure Computing Mode)是一种 Linux 内核安全机制,它可以 限制进程可执行的系统调用(syscall),用于减少攻击面,提高程序安全性。使用seccomp-tools查看允许调用的函数,即orw(open,read,write) sec…

日期类、Date、Calendar、IO 流、File

DAY9.2 Java核心基础 日期类 java对日期使用提供了良好的封装,包括java.util.Date和java.util.Calender Date Date类使用比较简单,直接通过构造函数实例化对象接口,Date对象标识当前的系统时间,默认的格式并不是我们所熟悉的,一般我们需要对他进行格式化处理,将日常的展现…

深入String、StringBuffer、String 实例化有两种方式、String、StringBuffer常用方法

DAY9.1 Java核心基础 String String 开发使用的频率高 String 实例化有两种方式1、直接赋值 String str1 ="Word";2、通过构造函数创建对象 String str2 =new String("Word");字符串对象底层的基本数据类型是char 比如Word,是char[] str ={W,o,r,d}; 两种…

File类、字节字符流、InputStream和FileReader、OutputStream和FileWriter区别

DAY10.1 Java核心基础 File类 使用该类的构造函数可以创建一个对文件对象表示一个物理资源 File类常用方法方法 描述public File(String pathname) 根据路径创建对象public String getName() 获取文件名public String getParent() 获取文件所在的目录public File getParentFile…

FreeBSD 13.5 正式版发布 - 高性能开源 Unix 系统

FreeBSD 13.5 正式版发布 - 高性能开源 Unix 系统FreeBSD 13.5 正式版发布 - 高性能开源 Unix 系统 The Power To Serve 请访问原文链接:https://sysin.org/blog/freebsd-13/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgFreeBSD 13.5-RELEASE 公告 日期:202…

FreeBSD 13.5 x86_64 OVF (sysin) - VMware 虚拟机模板

FreeBSD 13.5 x86_64 OVF (sysin) - VMware 虚拟机模板FreeBSD 13.5 x86_64 OVF (sysin) - VMware 虚拟机模板 The Power To Serve 请访问原文链接:https://sysin.org/blog/freebsd-13-ovf/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org2025 年 3 月 11 日,F…

2. 创建一个按钮组件

在deepseek中输入:创建一个vue组件 组件实现button的功能 预设4种颜色,分别对应:success: 绿色,危险按钮:红色,警告按钮:橘色,信息按钮:灰色 预设几个带icon的按钮,分别是:搜索,确定,取消,删除,上一页,下一页,分享,编辑 需要让调用该组件是可以自定义一些属性…