【发布时间】:2021-02-22 18:05:57
【问题描述】:
我想针对可以建模为分类的任务训练时间序列数据的 Transformer 编码器(例如 BERT)。在谈论我面临的问题之前,让我们先简要介绍一下我正在使用的数据。
我正在使用 90 秒的窗口,每秒可以访问 100 个值(即 90 个大小为 100 的向量)。我的目标是每秒预测一个二进制标签(0 或 1)(即生成长度为 90 的 0 和 1 的最终向量)。
我的第一个想法是将其建模为一个多标签分类问题,我将使用 BERT 生成一个大小为 90 的向量,其中填充了 0 到 1 之间的数字,然后使用 nn.BCELoss 和 groundtruth 标签进行回归(y_true 看起来像 [0,0,0,1,1,1,0,0,1,1,1,0...,0])。一个简单的类比是将每一秒视为一个 word,而我可以访问的 100 个值作为相应的word embedding。然后目标是在这些 100 维嵌入序列(所有序列长度相同:90)上训练 BERT(从头开始)。
问题:在处理文本输入时,我们只需将 CLS 和 SEP 标记添加到输入序列中,然后让标记器和模型完成剩下的工作。直接在嵌入上进行训练时,我们应该如何考虑 CLS 和 SEP 令牌?
我的一个想法是在位置 0 添加一个 100 维嵌入表示 CLS 令牌,并在位置 90+1=91 添加一个 100 维嵌入表示 SEP 令牌。但我不知道我应该为这两个令牌使用什么嵌入。我也不确定这是否是一个好的解决方案。
有什么想法吗?
(我尝试在 Huggingface 论坛上提出这个问题,但没有得到任何回应。)
【问题讨论】:
-
我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅介绍和 注意 在
machine-learningtag info.
标签: python deep-learning time-series bert-language-model huggingface-transformers