0

我有一个完全工作的 seq2seq 注意力模型,带有光束搜索,它确实提供了改进的结果。但是在 k=5(k 是我的假设)的情况下进行推理(批量大小 1024)需要 > 1 分钟,因为它们都没有被并行化。一切都一次发生 1 个样本。

任务(简体)
目标是句子翻译,15 个单词 Lang A 到 15 个单词 Lang B。

  • 编码器是一个 RNN,它接收 15 个单词的句子并对它的表示进行编码,给出一个 [timestep, 512] 矩阵以及最终的隐藏状态。
  • 解码器是另一种 RNN,将编码器隐藏状态作为初始状态,使用 [timestep, 512] 矩阵进行注意力,并输出翻译后的单词 [batch] 一次一个时间步长。当然,到目前为止,还有某种形式的并行化。
  • 在推理阶段,使用波束搜索。在解码器的每个时间步,我不是采用概率最高的预测词,而是采用 k 个最佳词。并提供 k 个单词作为下一个时间步的输入,以便它可以预测句子中的下一个单词(算法的其余部分如下所示)。算法使得解码不那么贪婪地预测结果,在后续时间步中具有更高的总概率。
for each element in the test-set
    calculate initial k (decoder-encoder step)
    for range(timesteps-1)
        for each prev k
            get hidden state
            obtain its best k
            save hidden state
        find new k from k*k possible ones
        ##update hypotheses based on new found k
        for element in k 
            copy hidden state
            change hypotheses if necessary
            append new k to hypotheses

有 6 个张量和 2 个列表来跟踪和处理状态变化。这里有加速或并行化的空间吗?也许每个 k 可以同时通过编码解码?任何帮助深表感谢。

4

0 回答 0