有两种增强训练序列到序列模型的方法,可以提高模型的精确率和可扩展性。
使用装桶法降低训练复杂度
输入序列可以有不同的长度,这使短序列的训练数据添加了大量填充词条。过多的填充会使计算成本高昂,特别是当大多数序列都很短,只有少数序列接近最大词条长度时。假设用数据训练序列到序列网络,其中几乎所有的样本都是100个词条长,只有几个包含1000个词条的异常值除外。若不进行装桶,我们需要用900个填充词条填充大部分训练数据,并且在训练阶段,序列到序列网络必须对填充词条进行循环遍历。这种填充数据会大大减缓训练速度。在这种情况下,装桶法可以较少计算量。我们可以按长度对序列排序,并在不同的批处理期间使用不同的序列长度。我们将输入序列分配到不同长度的桶中,例如长度在5~10个词条之间的所有序列放在一个桶中,然后训练该批次时使用这个序列的桶,例如,先训练5~10个词条之间的所有序列,然后训练10~15个词条之间的所有序列,等等。一些深度学习框架提供了一些装桶工具为输入数据提供最佳装桶方式。
如上图,序列首先按照长度排序,然后仅填充到特定桶的最大词条长度。这样,在训练序列到序列网络时,可以减少所有批处理所需的时刻数量。在特定的批处理中,只在需要的范围内(到最长的序列)展开网络。
注意力机制
与隐性语义分析一样,较长的输入序列(文档)倾向于产生不精确表示这些文档的思想向量。思想向量受LSTM层(神经元数量)维数的限制。对