Machine learning LSTM预测问题中时间信息的编码

Machine learning LSTM预测问题中时间信息的编码,machine-learning,deep-learning,lstm,recurrent-neural-network,Machine Learning,Deep Learning,Lstm,Recurrent Neural Network,我正试图建立一个基于谷歌最近一篇论文的模型,该论文名为“电子健康记录的可伸缩和准确的深度学习”。本文描述了如何为下游预测任务嵌入医疗数据 在补充材料中,他们有一节描述了如何通过执行以下操作嵌入医疗数据(图片也附在下面): 1) 在每个时间步中获取每个患者的原始医疗数据并将其嵌入(如在word嵌入中如何实现) 2) 将该患者在该时间段的所有病史合并到一个长向量中 2a)对于相同类型的多个信息,使用学习加权平均嵌入 3) 创建另一个包含时间信息(秒)的向量 我对LSTMs比较陌生,但我发现一些代码

我正试图建立一个基于谷歌最近一篇论文的模型,该论文名为“电子健康记录的可伸缩和准确的深度学习”。本文描述了如何为下游预测任务嵌入医疗数据

在补充材料中,他们有一节描述了如何通过执行以下操作嵌入医疗数据(图片也附在下面):

1) 在每个时间步中获取每个患者的原始医疗数据并将其嵌入(如在word嵌入中如何实现)

2) 将该患者在该时间段的所有病史合并到一个长向量中

2a)对于相同类型的多个信息,使用学习加权平均嵌入

3) 创建另一个包含时间信息(秒)的向量

我对LSTMs比较陌生,但我发现一些代码需要修改,以便吸收嵌入和时间信息:

class LSTMClassifier(nn.Module):

def __init__(self, embedding_dim, hidden_dim, vocab_size, label_size):
    super(LSTMClassifier, self).__init__()
    self.hidden_dim = hidden_dim
    self.embeddings = nn.Embedding(vocab_size, embedding_dim)
    self.lstm = nn.LSTM(embedding_dim, hidden_dim)
    self.hidden2label = nn.Linear(hidden_dim, label_size)
    self.hidden = self.init_hidden()

def init_hidden(self):
    # the first is the hidden h
    # the second is the cell  c
    return (autograd.Variable(torch.zeros(1, 1, self.hidden_dim)),
            autograd.Variable(torch.zeros(1, 1, self.hidden_dim)))

def forward(self, sentence):
    embeds = self.embeddings(sentence)
    x = embeds.view(len(sentence), 1, -1)
    lstm_out, self.hidden = self.lstm(x, self.hidden)
    y = self.hidden2label(lstm_out[-1])
    log_probs = F.log_softmax(y)
    return log_probs
最后,在补充材料中指出:

嵌入顺序进一步减少到较短的长度 序列通常,较短的序列分为时间步 12小时,其中嵌入了中一个类别内的所有特征 采用加权平均法对同一天进行合并。加权 通过将每个特征与非负特征关联来进行平均 与模型联合训练的重量。这些权重也是 用于预测属性。平均时间增量的日志 在每个时间步除以因子(由超参数控制) 也嵌入到一个小的浮点向量中(它也是 随机初始化)并在每个 时间步长

我的一般问题是:我实际上如何插入这个时间向量

我很困惑,因为它说序列被分成了12个小时的时间步。如果是这样,为什么需要时间向量?然后,它声明您只需将时间向量连接到输入嵌入。为什么像这样的简单连接会起作用?模型如何知道将时间信息与输入的适当部分相关联?我对实际的工具有点茫然,因此非常感谢您的指导