2022.2.5 第十三次周报

article/2025/10/28 7:32:41

文章目录

  • 前言
  • 一、论文阅读《ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels》
    • Abstract摘要
    • Introduction介绍
    • Method方法
      • Kernels内核
      • Transform转换
      • Classifier分类器
      • Complexity Analysis复杂性分析
    • Experiments实验
    • Conclusion结论
  • 二、膨胀卷积
    • 一般卷积
    • 膨胀卷积
    • 代码
  • 总结


前言

This week ,《ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels》 has read and analyzed .Paper show that simple linear classifiers using random convolutional kernels achieve state-of-the-art accuracy with a fraction of the computational expense of existing methods. At the same time, the expansion convolution that is not understood in the paper is further studied.


一、论文阅读《ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels》

Abstract摘要

大多数时间序列分类方法都具有很高的计算复杂度,即使对于较小的数据集也需要大量的训练时间,并且对于较大的数据集也难以处理。此外,许多现有的方法都专注于单一类型的特征,如形状或频率。
基于卷积神经网络对时间序列分类的最近成功,论文证明了使用随机卷积核的简单线性分类器可以实现最先进的精度,而计算成本仅为现有方法的一小部分。

Introduction介绍

大多数时间序列分类方法都具有很高的计算复杂度,即使对于较小的数据集也需要大量的训练时间,并且根本无法扩展到大型数据集。这推动了更可扩展方法的开发,如邻近森林、TS-CHIEF 和InceptionTime 。

论文中表示,通过使用随机卷积核转换时间序列,并使用转换后的特征来训练线性分类器,即使是这些最新的、更可扩展的方法所需要的时间的一小部分,也可以实现最先进的分类精度。其中称这种方法为Rocket(随机卷积核变换)。

Rocket与最先进的分类器的比较:
在这里插入图片描述
现有的时间序列分类方法通常侧重于单一表示,如形状、频率或方差。卷积核构成了一种单一的机制,可以捕获许多以前需要各自专门技术的特征,并且已被证明在卷积神经网络中有效地用于时间序列分类,如ResNet ,以及InceptionTime。

与典型卷积神经网络中使用的学习卷积核相比,作者证明了生成大量随机卷积核是有效的,这些随机卷积核结合起来可以捕获与时间序列分类相关的特征(尽管单独地,单个随机卷积核可能只能非常近似地捕获给定时间序列中的相关特征)。

Rocket在UCR档案中的数据集上实现了最先进的分类精度(Dau等人,2019年),但只需要现有方法训练时间的一小部分。图1显示了Rocket与来自UCR档案的85个“烘烤”数据集上的几种最先进的时间序列分类方法的平均排名(。受限于单个CPU核心,Rocket的总训练时间为:-拥有最大训练集的“烘烤”数据集(ElectricDevices,有8,926个训练示例)为6分钟,而邻近森林为1小时35分钟,TS-CHIEF为2小时24分钟,InceptionTime为7小时46分钟(在gpu上训练);时间序列最长的“bake off”数据集(HandOutlines,时间序列长度为2709)为4分52秒,而InceptionTime(在gpu上训练)为8小时10分钟,Proximity Forest为近3天,TS-CHIEF为4天以上。

Rocket在所有85个“烘烤”数据集上的总计算时间(训练和测试)是1小时50分钟,相比之下,InceptionTime(使用gpu训练和测试)超过6天,Proximity Forest和TS-CHIEF每个都超过11天。对于大型数据集,Rocket也更具有可扩展性,训练复杂度在时间序列长度和训练示例数量上都是线性的。Rocket可以在1小时15分钟内从100万个时间序列中学习,与邻近森林(Proximity Forest)的精度相似,后者需要超过16个小时才能对相同数量的数据进行训练。

Method方法

Rocket使用大量随机卷积核(即具有随机长度、权重、偏差、膨胀和填充的核)来转换时间序列。

转换后的特征被用来训练线性分类器。实际上,Rocket和逻辑回归的组合形成了一个具有随机核权重的单层卷积神经网络,其中转换的特征形成了训练过的softmax层的输入。然而,在实践中,对于除了最大的数据集之外的所有数据集,我们使用岭回归分类器,它具有正则化超参数(而没有其他超参数)快速交叉验证的优点。

尽管如此,由于使用随机梯度下降训练的逻辑回归对于非常大的数据集更具有可扩展性,当训练示例的数量远远大于特征的数量时,我们使用逻辑回归。

将Rocket与典型卷积神经网络中使用的卷积层,以及与之前使用时间序列的卷积核(包括随机核)四个方面的区别:

  1. Rocket使用了大量的内核。由于只有一层核,并且不学习核权值,计算卷积的计算成本很低,并且可以使用大量的核,而计算成本相对较低。

  2. Rocket使用了大量不同的内核。与典型的卷积网络相反,在典型的卷积网络中,一组内核共享相同的大小、膨胀和填充,对于Rocket来说,每个内核都有随机的长度、膨胀和填充,以及随机的权重和偏差。

  3. 特别是,Rocket关键地使用了内核膨胀。与卷积神经网络中扩张的典型使用相反,在卷积神经网络中,扩张随着深度呈指数级增长(例如,Yu和Koltun 2016;Bai等。2018;Franceschi et al. 2019),我们对每个内核随机进行膨胀采样,产生各种各样的内核膨胀,捕捉不同频率和尺度的模式,这对方法的性能至关重要。

  4. 除了使用生成的特征图的最大值(广义上讲,类似于全局最大池化),Rocket还使用了一个额外的,据我们所知,新颖的特性:正值的比例(或ppv)。这使分类器能够在时间序列中衡量给定模式的流行程度。这是Rocket架构中最关键的一个元素,对其卓越的精度至关重要。

实际上,Rocket的唯一超参数是核数k。

在设置k时,分类精度和计算时间之间存在权衡。一般来说,k值越大分类准确率越高(见4.3.1节),但代价是计算量相应地变长。(变换的复杂度与k成线性关系。)然而,即使有非常多的内核(我们默认使用10,000个),Rocket也非常快。

Kernels内核

Rocket使用卷积核来转换时间序列,就像在典型的卷积神经网络中发现的那样。本质上,内核的所有方面都是随机的:长度、权重、偏置、膨胀和填充。对于每个内核,这些值设置如下:

——长度。长度从{7,9,11}中随机选择,概率相等,使得内核在大多数情况下比输入时间序列短得多。

——重量。权重从正态分布∀w∈W, W∼N(0,1)中采样,设置后均值居中。

——偏见。偏差从均匀分布b ~ U(−1,1)中采样。仅使用特征图中的正值。

——扩张。膨胀以指数尺度d = 2x进行采样.

——填充。当生成每个内核时,将决定(随机地,具有相等的概率)在应用内核时是否使用填充。

——步伐永远是一个。我们不应用非线性,如ReLU的结果特征映射。

Transform转换

每个核应用于每个输入时间序列,产生一个特征映射。卷积运算涉及核和输入时间序列之间的滑动点积。对给定的时间序列X,从X中的位置i应用核ω,膨胀d,得到的结果为:
在这里插入图片描述
Rocket从每个特征映射中计算两个聚合特征,每个内核生成两个实数作为特征,并组成我们的变换:

——最大值(一般来说,相当于全局最大池);

——正值的比例(或ppv)。
池化,包括全局平均池化(Lin et al. 2014)和全局最大池化,用于卷积神经网络的降维和空间(或时间)不变性。Rocket在每个特征图上计算的另一个特征是ppv。ppv直接捕获与给定模式匹配的输入的比例。
对于k个内核,Rocket在每个时间序列中生成2k个特征(即ppv和max)。

Classifier分类器

转换后的特征被用来训练线性分类器。原则上,火箭可以与任何分类器一起使用。我们发现,当与线性分类器一起使用时,Rocket非常有效(线性分类器有能力利用大量特征中每个特征的少量信息)。

逻辑回归。Rocket可以与逻辑回归和随机梯度下降结合使用。

Complexity Analysis复杂性分析

Rocket的计算复杂度有两个方面:(1)变换本身的复杂度;(2)利用转换后的特征训练线性分类器的复杂度。

Experiments实验

本节在UCR档案评估了Rocket,证明了Rocket与当前最先进的方法相比具有竞争力,在85个“烘焙”数据集上获得了最佳平均排名。

根据训练集大小和时间序列长度来评估可伸缩性,证明Rocket比目前的方法快几个数量级。我们还评估了不同内核参数的影响,显示了Rocket的几个备选配置性能相似,这很好地表明了这个想法的力量,而不是它的微调。除非另有说明,所有实验都使用10,000粒核。

(实验结果不做分析)

Conclusion结论

卷积核是一种单一的、功能强大的工具,它可以捕获现有时间序列分类方法所使用的许多特征。论文表明,与其学习核权重,大量的随机核(虽然孤立地只近似相关模式)组合在一起对于捕获时间序列中的判别模式是非常有效的。

此外,随机核具有非常低的计算需求,使得学习和分类非常快。论文提出的方法利用随机卷积核来转换和分类时间序列,Rocket,以现有方法的一小部分计算成本实现了最先进的精度。Rocket还可以扩展到数百万个时间序列。

Rocket主要利用正数值的比例(或ppv)来总结特征图的输出,允许分类器在给定的时间序列中对模式的流行程度进行加权。论文发现这实际上比在传统的最大池化操作中应用的简单最大更有效。可以肯定的是,ppv对其他数据类型(如图像)也有效。

在未来的工作中,作者建议探索Rocket的特征选择,Rocket在多元时间序列中的应用,Rocket在时间序列数据之外的应用,以及将Rocket的方面与学习的内核一起使用。

二、膨胀卷积

一般卷积

在这里插入图片描述

膨胀卷积

Dilation 卷积,也被称为:空洞卷积、膨胀卷积
dilation 是对 kernel 进行膨胀,多出来的空隙用 0 padding。用于克服 stride 中造成的 失真问题
在这里插入图片描述
如上图,膨胀卷积的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者自然语言处理中需要较长的sequence信息依赖的问题中,都能很好的应用。
在这里插入图片描述
对应关系是 kd = ( k − 1 ) × d + 1, 对原始kernel 进行 d 倍 dilation 之后得到新的 kd , k 一般是奇数,d一般是偶数,从而保证了 kd 也是奇数。注意,使用dilation的时候,先把 k dilation 成 kd ,去卷积运算,生成下一层的 feature map。但是参数存储的还是原始的 k的大小.
例子:这样最大的好处就是卷积核的参数没变(还是9个),但是感受野从 3x3 变成了 5x5. 虽然一个格子,计算的是5x5 感受野里的 9个格子,但是卷积核整体看到了 7x7 的field,而不是 dilation 之前 5x5 的 field。

代码

tf.nn.atrous_conv2d(value,filters,rate,padding,name=None

value:输入的卷积图像,[batch, height, width, channels]。
filters:卷积核,[filter_height, filter_width, channels, out_channels],通常NLP相关height设为1。
rate:正常的卷积通常会有stride,即卷积核滑动的步长,而膨胀卷积通过定义卷积和当中穿插的rate-1个0的个数,实现对原始数据采样间隔变大。
padding:”SAME”:补零 ; ”VALID”:丢弃多余的

总结

本周对论文《ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels》进行了学习,了解到了一个新的模型Rocket(随机卷积核变换),其中论文表明,与其学习核权重,大量随机卷积核(即具有随机长度、权重、偏差、膨胀和填充的核)组合在一起对于捕获时间序列中的判别模式是非常有效的。并且对论文中不懂的膨胀卷积进行了进一步学习。


http://chatgpt.dhexx.cn/article/U9ade924.shtml

相关文章

并发编程(十五)-CompletableFuture中常用方法的使用与分析

文章目录 一、CompletableFuture API介绍1. 描述2. CompletionStage3. CompletableFuture 4个核心静态方法(1)runAsync(Runnable runnable)(2)runAsync(Runnable runnable, Executor executor)(3)supplyAsy…

Java 编程问题:十一、并发-深入探索

原文:Java Coding Problems 协议:CC BY-NC-SA 4.0 贡献者:飞龙 本文来自【ApacheCN Java 译文集】,自豪地采用谷歌翻译。 本章包括涉及 Java 并发的 13 个问题,涉及 Fork/Join 框架、CompletableFuture、ReentrantLock…

线程(十二)---CompletableFuture(三)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢! 示例五:异常处理 接着上一篇记录一下CompletableFuture的异常处理,异常处理通常使用…

dice loss

Dice Loss 最先是在VNet 这篇文章中被提出,后来被广泛的应用在了医学影像分割之中。 Dice 系数 Dice系数作为损失函数的原因和混淆矩阵有着很大的关系,下图给出的是一个混淆矩阵: 其中的一些关键指标如下: 精确率(precision)表…

Hinge loss

声明: 参考自维基百科后面可能会更新 Hinge Loss 在机器学习中,hinge loss作为一个损失函数(loss function),通常被用于最大间隔算法(maximum-margin),而最大间隔算法又是SVM(支持向量机support vector machines)用到的重要算法…

【深度学习】一文读懂机器学习常用损失函数(Loss Function)

【深度学习】一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点以及应用范围&#x…

Pytorch之loss(损失函数)

损失函数也在torch.nn下,具体可以参考文档,也可以参考官网 先根据L1Loss举例 我个人感觉这里的描述还是到官网的文档找比较好,公式看的比文档清楚 import torch from torch import nninputs torch.tensor([[3, 2, 1],[1, 2, 3]], dtypetorch…

机器学习 损失函数 Loss function

损失函数 最小二乘法极大似然估计法交叉熵 【本文根据B站-王木头学科学-视频所学】 在梯度下降中,所求的梯度其实就是损失函数的梯度。 损失函数有三种设计方法: (1)最小二乘法 (2)极大似然估计法 &#x…

Focal loss 损失函数详解

Focal loss 目前目标检测的算法大致分为两类,One Stage 、Two Stage。 One Stage:主要指类似YOLO、SGD等这样不需要region proposal,直接回归的检测算法,这类算法检测速度很快,但是精度准确率不如使用Two stage的模型。 two St…

机器学习之常见的损失函数(loss function)

解决一个机器学习问题主要有两部分:数据和算法。而算法又有三个部分组成:假设函数、损失函数、算法优化。我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数,但是损…

深度学习loss函数理解

机器学习中的范数规则化之L0、L1、L2范数及loss函数 监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。 最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我…

CE Loss,BCE Loss以及Focal Loss的原理理解

一、交叉熵损失函数(CE Loss,BCE Loss) 最开始理解交叉熵损失函数被自己搞的晕头转向的,最后发现是对随机变量的理解有偏差,不知道有没有读者和我有着一样的困惑,所以在本文开始之前,先介绍一下…

损失函数loss

http://blog.csdn.net/pipisorry/article/details/23538535 监督学习及其目标函数 损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示。 损失函数是经…

机器学习模型中的损失函数loss function

1. 概述 在机器学习算法中,有一个重要的概念就是损失函数(Loss Function)。损失函数的作用就是度量模型的预测值 f ( x ) f\left ( \mathbf{x} \right ) f(x)与真实值 y \mathbf{y} y之间的差异程度的函数,且是一个非负实值函数。…

损失函数(Loss)

如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据。但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标来评价它的拟合程度,所使用到的函数就称…

focal loss详解

文章目录 focal loss的整体理解易分辨样本、难分辨样本的含义focal loss的出现过程focal loss 举例说明focal loss的 α \alpha α变体 focal loss的整体理解 focal loss 是一种处理样本分类不均衡的损失函数,它侧重的点是根据样本分辨的难易程度给样本对应的损失添…

深度学习——损失函数(Regression Loss、Classification Loss)

简介 Loss function 损失函数 用于定义单个训练样本与真实值之间的误差 Cost function 代价函数 用于定义单个批次/整个训练集样本与真实值之间的误差 Objective function 目标函数 泛指任意可以被优化的函数 损失函数用于衡量模型所做出的预测离真实值(GT)之间的偏离程度。 …

深度学习中常见的损失函数(L1Loss、L2loss)

损失函数定义 损失函数:衡量模型输出与真实标签的差异。 L1_loss 平均绝对误差(L1 Loss):平均绝对误差(Mean Absolute Error,MAE)是指模型预测值f(x)和真实值y之间距离的平均值,公式如下: 优…

损失函数(loss function)

文章目录 1、什么是损失函数2、为什么要使用损失函数3、损失函数分类1、分类一2、分类二3、分类三3.1基于距离度量的损失函数3.1.1 均方误差损失函数(MSE)3.1.2 L2损失函数3.1.3 L1损失函数3.1.4 Smooth L1损失函数3.1.5 huber损失函数 3.2 基于概率分布…

Focal Loss损失函数(超级详细的解读)

什么是损失函数? 1、什么是损失呢? 在机器学习模型中,对于每一个样本的预测值与真实值的差称为损失。 2、什么是损失函数呢? 显而易见,是一个用来计算损失的函数。它是一个非负实值函数,通常使用L(Y, f(x))来表示。 3、…