应该在 seq2seq 模型中使用的目标词词汇表的大小是否有限制?
Is there a limit to the size of target word vocabulary that should be used in seq2seq models?
在机器翻译 seq2seq 模型(使用 RNN/GRU/LSTM)中,我们提供源语言的句子并训练模型将其映射到另一种语言的单词序列(例如,英语德语).
这个想法是,解码器部分生成一个分类向量(具有目标词词汇表的大小),然后对该向量应用 softmax,然后是 argmax 以获得最可能词的索引。
我的问题是:目标词的词汇量是否有上限,考虑到:
- 性能仍然合理(softmax 对于较大的向量会花费更多时间)
- 预测accuracy/correctness可以接受
词汇量的主要技术限制是 GPU 内存。词嵌入和输出投影是模型中最大的参数。如果词汇量太大,您将被迫使用小批量训练,这会大大减慢训练速度。
另外,也不一定是词汇量越大性能越好。自然语言中的词是按照Zipf's law分布的,也就是说词的出现频率随着出现频率的排序呈指数下降。随着词汇量的增加,您会添加语言中越来越不常见的单词。只有当单词出现在训练数据中时,单词嵌入才会更新。由于词汇量很大,不常用词的嵌入最终训练不足,模型无论如何也无法正确处理它们。
MT 模型通常使用 30k-50k 标记的词汇表。然而,这些不是词,而是所谓的子词。使用统计启发式对文本进行分段,以便大多数常用词保持原样,而不常用的词被拆分为子词,最终拆分为单个字符。
在机器翻译 seq2seq 模型(使用 RNN/GRU/LSTM)中,我们提供源语言的句子并训练模型将其映射到另一种语言的单词序列(例如,英语德语).
这个想法是,解码器部分生成一个分类向量(具有目标词词汇表的大小),然后对该向量应用 softmax,然后是 argmax 以获得最可能词的索引。
我的问题是:目标词的词汇量是否有上限,考虑到:
- 性能仍然合理(softmax 对于较大的向量会花费更多时间)
- 预测accuracy/correctness可以接受
词汇量的主要技术限制是 GPU 内存。词嵌入和输出投影是模型中最大的参数。如果词汇量太大,您将被迫使用小批量训练,这会大大减慢训练速度。
另外,也不一定是词汇量越大性能越好。自然语言中的词是按照Zipf's law分布的,也就是说词的出现频率随着出现频率的排序呈指数下降。随着词汇量的增加,您会添加语言中越来越不常见的单词。只有当单词出现在训练数据中时,单词嵌入才会更新。由于词汇量很大,不常用词的嵌入最终训练不足,模型无论如何也无法正确处理它们。
MT 模型通常使用 30k-50k 标记的词汇表。然而,这些不是词,而是所谓的子词。使用统计启发式对文本进行分段,以便大多数常用词保持原样,而不常用的词被拆分为子词,最终拆分为单个字符。