RNN 的 EEG 数据布局

数据挖掘 机器学习 神经网络 时间序列 rnn
2022-02-25 06:09:30

应该如何为 RNN 构建输入数据矩阵(包含 EEG 数据)?

通常,RNN 以语言模型的形式呈现,其中你有一个热向量来指示单词的存在。因此,如果您输入的是句子“你好,你好吗”,您将有 4 个一热向量(我认为):

[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]

这些单独的向量如何压缩成一个数据矩阵?

在单通道脑电图(只有 1 个电极)的情况下,每秒 256 个样本,1 秒长的样本,这些数据应该如何构造?会是 256 个向量吗?如果是这样,每个向量代表/包含什么?还是应该是 1 个 256 个元素长的向量?

此外,这如何扩展到多通道脑电图,比如 64 个电极超过 256 个时间样本?

我更喜欢使用原始 EEG 数据,而不是尝试一些降维(计算方法、频谱图等)

1个回答

RNN 并非专门用于进行语言建模,它们旨在处理时间序列数据,而语言恰好可以表示为时间序列。有很多论文展示了如何使用 RNN 对时间序列进行分类和回归(很棒的论文列表)。

One-hot 编码通常用于输入是离散的而不是可以直接输入模型的数字的情况。然而,one-hot 编码实际上并不总是语言建模的规范,一些研究实际上将每个字符(或每个单词,取决于如何建模问题)映射到一个唯一的数字标识符(例如id{0n}; n词汇表的大小)和模型将该标识符映射到向量表示。当词汇量很大并且您希望避免处理大的 one-encoded 向量时,这特别有用。查看word2vecword2vec Tensorflow了解更多详情。

在您的情况下,您想要处理传感器数据。无需一次性编码,因为您的数据是连续的和数字的。也就是说,您可以直接输入记录的脑电数据;尽管通常最好事先清理它们并使其正常化。实际上有很多关于使用 RNN 处理 EEG 数据的论文。

无论数据类型如何,将它们输入 RNN 的想法都是一样的:提供数据样本x对于每个时间步t.

对于使用 1 个电极记录 5 个时间步长的 EEG 数据a,您将有一个一维向量,每个时间步有一个样本:

a=[0.12,0.44,0.134,0.39,0.23]

inputvector=[0.12,0.44,0.134,0.39,0.23]

对于使用 3 个电极记录 5 个时间步长的 EEG 数据a,b,c,您将有一个 3 维向量,每个时间步有一个样本:

a=[0.12,0.44,0.134,0.39,0.23]

b=[0.43,0.92,0.3,0.37,0.4]

c=[0.13,0.1,0.4,0.21,0.14]

inputvector=[[0.12,0.43,0.13],[0.44,0.92,0.1],...]

我强烈建议您阅读我上面链接的一些文献。