我想在时间序列数据上训练一个变压器编码器(例如BERT),用于可以建模为分类的任务。在谈到我面临的问题之前,让我简要描述一下我正在使用的数据。
我正在使用90秒窗口,每秒有100个值(即大小为100的90个向量)。我的目标是预测二进制标签(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])进行回归。一个简单的类比是将每一秒钟视为“单词”,而我可以访问的100个值作为相应的“单词嵌入”。然后的目标是在这些100维嵌入的序列上从头开始训练BERT(所有序列长度都相同:90)。
问题:当处理文本输入时,我们只需将CLS和SEP标记添加到输入序列中,然后让令牌化程序和模型完成其余工作。当直接在嵌入上训练时,我们该怎么做才能考虑到CLS和SEP标记?
我想到的一个想法是在位置0添加一个100维嵌入,代表CLS标记,以及在位置90 + 1 = 91上添加一个100维嵌入,代表SEP标记。但我不知道我应该使用哪些嵌入来表示这两个标记。而且我也不确定这是一个好的解决方案。
有什么想法吗?
(我尝试在Huggingface论坛上问过这个问题,但没有得到任何回应。)
我正在使用90秒窗口,每秒有100个值(即大小为100的90个向量)。我的目标是预测二进制标签(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])进行回归。一个简单的类比是将每一秒钟视为“单词”,而我可以访问的100个值作为相应的“单词嵌入”。然后的目标是在这些100维嵌入的序列上从头开始训练BERT(所有序列长度都相同:90)。
问题:当处理文本输入时,我们只需将CLS和SEP标记添加到输入序列中,然后让令牌化程序和模型完成其余工作。当直接在嵌入上训练时,我们该怎么做才能考虑到CLS和SEP标记?
我想到的一个想法是在位置0添加一个100维嵌入,代表CLS标记,以及在位置90 + 1 = 91上添加一个100维嵌入,代表SEP标记。但我不知道我应该使用哪些嵌入来表示这两个标记。而且我也不确定这是一个好的解决方案。
有什么想法吗?
(我尝试在Huggingface论坛上问过这个问题,但没有得到任何回应。)
machine-learning
[标签信息](https://stackoverflow.com/tags/machine-learning/info)中的介绍和**注意事项**。 - desertnaut