(8)卷积神经网络如何处理一维时间序列数据?

概述

许多文章都关注于二维卷积神经网络(2D CNN)的使用,特别是图像识别。而一维卷积神经网络(1D CNNs)只在一定程度上有所涉及,比如在自然语言处理(NLP)中的应用。目前很少有文章能够提供关于如何构造一维卷积神经网络来一些机器学习问题。

何时应用 1D CNN?

CNN 可以很好地识别出数据中的简单模式,然后使用这些简单模式在更高级的层中生成更复杂的模式。当你希望从整体数据集中较短的(固定长度,即kernal size)片段中获得感兴趣特征,并且该特性在该数据片段中的位置不具有高度相关性时,1D CNN 是非常有效的。

1D CNN 可以很好地应用于传感器数据的时间序列分析(比如陀螺仪或加速度计数据);同样也可以很好地用于分析具有固定长度周期的信号数据(比如音频信号)。此外,它还能应用于自然语言处理的任务(由于单词的接近性可能并不总是一个可训练模式的好指标,因此 LSTM 网络在 NLP 中的应用更有前途)。

1D CNN 和 2D CNN 之间有什么区别?

无论是一维、二维还是三维,卷积神经网络(CNNs)都具有相同的特点和相同的处理方法。关键区别在于输入数据的维数以及特征检测器(或滤波器)如何在数据之间滑动:

问题描述

在本文中,我们将专注于基于时间片的加速度传感器数据的处理,这些数据来自于用户的腰带式智能手机设备。基于 x、y 和 z 轴的加速度计数据,1D CNN 用来预测用户正在进行的活动类型(比如“步行”、“慢跑”或“站立”)。

来自加速度计数据的时间序列样例

如何在 Python 中构造一个 1D CNN?

目前已经有许多得标准 CNN 模型可用。我选择了 Keras 网站 上描述的一个模型,并对它进行了微调,以适应前面描述的问题。下面的图片对构建的模型进行一个高级概述。其中每一层都将会进一步加以解释。

让我们深入到每一层中,看看到底发生了什么:

  • 输入数据: 数据经过预处理后,每条数据记录中包含有 80 个时间片(数据是以 20Hz 的采样频率进行记录的,因此每个时间间隔中就包含有 4 秒的加速度计数据)。在每个时间间隔内,存储加速度计的 x 轴、 y 轴和 z 轴的三个数据。这样就得到了一个 80 x 3 的矩阵。由于我通常是在 iOS 系统中使用神经网络的,所以数据必须平展成长度为 240 的向量后传入神经网络中。网络的第一层必须再将其变形为原始的 80 x 3 的形状。
  • 第一个 1D CNN 层: 第一层定义了高度为 10(也称为卷积核大小)的滤波器(也称为特征检测器)。只有定义了一个滤波器,神经网络才能够在第一层中学习到一个单一的特征。这可能还不够,因此我们会定义 100 个滤波器。这样我们就在网络的第一层中训练得到 100 个不同的特性。第一个神经网络层的输出是一个 71 x 100 的矩阵。输出矩阵的每一列都包含一个滤波器的权值。在定义内核大小并考虑输入矩阵长度的情况下,每个过滤器将包含 71 个权重值。
  • 第二个 1D CNN 层: 第一个 CNN 的输出结果将被输入到第二个 CNN 层中。我们将在这个网络层上再次定义 100 个不同的滤波器进行训练。按照与第一层相同的逻辑,输出矩阵的大小为 62 x 100。
  • 最大值池化层: 为了减少输出的复杂度和防止数据的过拟合,在 CNN 层之后经常会使用池化层。在我们的示例中,我们选择了大小为 3 的池化层。这意味着这个层的输出矩阵的大小只有输入矩阵的三分之一。
  • 第三和第四个 1D CNN 层: 为了学习更高层次的特征,这里又使用了另外两个 1D CNN 层。这两层之后的输出矩阵是一个 2 x 160 的矩阵。
  • 平均值池化层: 多添加一个池化层,以进一步避免过拟合的发生。这次的池化不是取最大值,而是取神经网络中两个权重的平均值。输出矩阵的大小为 1 x 160 。每个特征检测器在神经网络的这一层中只剩下一个权重。
  • Dropout 层: Dropout 层会随机地为网络中的神经元赋值零权重。由于我们选择了 0.5 的比率,则 50% 的神经元将会是零权重的。通过这种操作,网络对数据的微小变化的响应就不那么敏感了。因此,它能够进一步提高对不可见数据处理的准确性。这个层的输出仍然是一个 1 x 160 的矩阵。
  • 使用 Softmax 激活的全连接层: 最后一层将会把长度为 160 的向量降为长度为 6 的向量,因为我们有 6 个类别要进行预测(即 “慢跑”、“坐下”、“走路”、“站立”、“上楼”、“下楼”)。这里的维度下降是通过另一个矩阵乘法来完成的。Softmax 被用作激活函数。它强制神经网络的所有六个输出值的加和为一。因此,输出值将表示这六个类别中的每个类别出现的概率。

训练和测试该神经网络

下面是一段用以训练模型的 Python 代码,批大小为 400,其中训练集和验证集的分割比例是 80 比 20。

该模型在训练数据上的准确率可达 97%。

根据测试集数据进行测试,其准确率为 92%。

原文地址:Introduction to 1D Convolutional Neural Networks in Keras for Time Sequences

译文出自:掘金翻译计划 并有简化。

关注微信公众号《当交通遇上机器学习》,后台回复“数据”即可获取高达175G的四个月的滴滴GPS数据和滴滴订单数据的获取方式,以及从数据处理(Oracle数据库)、模型构建(机器学习)、编程实现(python)到可视化(ArcGIS)等一系列视频教程。

公众号以交通大数据为主线,专注于人工智能、机器学习、深度学习在道路交通和轨道交通领域内的科研前沿与应用,在交通大数据与机器学习的道路上越走越远!

(8)卷积神经网络如何处理一维时间序列数据?相关推荐

  1. 卷积神经网络如何处理一维时间序列数据?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自 | 人工智能与算法学习 概述 许多文章都关注于二维卷积神 ...

  2. 卷积神经网络处理一维信号(故障诊断)

    卷积神经网络处理一维信号(故障诊断) (注:从小白角度出发,刚接触卷积神经网络的小伙伴,很多人和我一样就是想知道这段代码怎么把信号输入进去,怎么看输出结果,怎么把输出结果与测试集的数据进行对比,从而知 ...

  3. 一维卷积神经网络结构图,一维卷积神经网络原理

    1.卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Fe ...

  4. 基于卷积神经网络的多保真数据聚合

    目录 一.方法 二.实验 三.讨论 3.1. 卷积层效应 3.2. 梯度信息的影响 一.方法 让和分别表示低保真度和高保真度生成模型.考虑两个模型之间的一般关系如下: (1) 其中是一个未知函数,它捕 ...

  5. 一维卷积神经网络原理,一维卷积神经网络应用

    1.CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别? 如下: 1.DNN:存在着一个问题--无法对时间序列上的变化进行建模.然而,样本出现的时间顺序对于 ...

  6. 卷积神经网络之一维卷积、二维卷积、三维卷积

    1. 二维卷积 图中的输入的数据维度为14×1414×14,过滤器大小为5×55×5,二者做卷积,输出的数据维度为10×1010×10(14−5+1=1014−5+1=10).如果你对卷积维度的计算不 ...

  7. 漫画:卷积神经网络为什么适合处理图片数据?

    传统的神经网络(全连接)如下所示: 比如一张图片如果是64*64的,那么它的数据量就是64×64×3,因为每张图片都有 3 个颜色通道.那么图片的特征向量维度为 12288. 对的!64×64还是比较 ...

  8. 简单入门循环神经网络RNN:时间序列数据的首选神经网络

    更多深度文章,请关注:https://yq.aliyun.com/cloud 随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘.人工智能的背后源自于大数据 ...

  9. 【时间序列】时间卷积神经网络

    在深度学习的知识宝库中,除了前面文章中介绍的RNN,还有一个重要的分支:卷积神经网络(CNN),其广泛应用于视觉,视频等二维或者多维的图像领域.卷积网络具有深度,可并行等多种特性,这种技术是否可以应用 ...

最新文章

  1. 4G LTE/EPC UE 的业务请求流程
  2. 分类器评价与在R中的实现:混淆矩阵
  3. 网络防火墙实战-基于pfsense(1)
  4. Taro+react开发(71):Taro.nextTick
  5. google浏览器 隐藏功能开启
  6. 深入理解Mysql - 索引原理详解
  7. C++内存泄漏的几种情况
  8. python3.6安装cv2库_win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法...
  9. ---单元数组-创建获取重塑单元数组----求解形如A(B)
  10. 如何能够做好主动沟通
  11. 基于springboot的贫困帮扶系统
  12. SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据
  13. matlab 改变图片比例尺,ps修改图片尺寸和比例尺方法图解
  14. amd zen服务器芯片,【关注】ZEN架构32核64线程!AMD公布Naples服务器芯片预览
  15. AUC与ROC曲线面积的意义(细扒sklearn的AUC计算方法)
  16. eleme项目框架搭建及eslint常见报错(含图标字体库说明)
  17. 增长黑客手册:如何用数据驱动爆发式增长_思维导图
  18. 护眼灯有必要买贵的吗?央视推荐的护眼灯是哪款?
  19. 虚拟机上搭建Ubuntu系统步骤
  20. 如何把.dat文件转换成.mat文件

热门文章

  1. JavaScript基础知识梳理
  2. Python爬虫:scrapy辅助功能实用函数
  3. 如何抓包微信小程序修改数据
  4. 浙江商人的23条做人原则
  5. 基于物体颜色的目标检测与跟踪
  6. php 自动翻译函数(中文翻译成英文)
  7. python求年利率_python-3.x - 如何在python 3中计算年利率 - SO中文参考 - www.soinside.com...
  8. 用Python快速实现一个垃圾分类APP|附带微信小程序
  9. fan4801开关电源原理图_FAN41501
  10. 题解 洛谷P1209 【[USACO1.3]修理牛棚 Barn Repair】