机器翻译转换器输出 - "unknown" 个标记?
Machine translation transformer output - "unknown" tokens?
在基础 Transformer 模型(Vaswani 等人)上训练后解码/翻译测试数据集时,我有时会在输出中看到这个标记“unk”。
这里的“unk”指的是一个未知的标记,但我的问题是这背后的原因是什么?根据https://nlp.stanford.edu/pubs/acl15_nmt.pdf,是否意味着我为训练集构建的词汇不包含测试集中存在的单词?
作为参考,我使用 Spacy
en_core_web_sm
和 de_core_news_sm
构建了 Vocab
用于德语到英语的翻译任务。
示例输出:
ground truth = ['a', 'girl', 'in', 'a', 'jean', 'dress', 'is', 'walking', 'along', 'a', 'raised', 'balance', 'beam', '.']
predicted = ['a', 'girl', 'in', 'a', '<unk>', 'costume', 'is', 'jumping', 'on', 'a', 'clothesline', '.', '<eos>']
如您所见,jean 在这里是“unk”。
神经机器翻译模型的词汇量有限。原因是您通过将编码器的隐藏状态乘以一个矩阵来获得目标词汇标记的分布,该矩阵对每个词汇标记都有一行。您提到的论文使用 1000 维的隐藏状态。如果你想合理地涵盖英语,你将需要至少 200k 的词汇量,这意味着只有 800MB 才能用于此矩阵。
您提到的论文是 2015 年的过时解决方案,并试图找到尽可能大的词汇量。然而,增加词汇量似乎并不是最好的解决方案,因为随着词汇量的增加,你会在词汇表中添加越来越稀有的词,而用于嵌入这些词的训练信号越来越少,因此模型最终不会学会正确使用这些词。
最先进的机器翻译使用 introduced in 2016 with the BPE algorithm. In parallel, Google came with an alternative solution named WordPiece for their first production neural machine translation system. Later, Google came with an improved segmentation algorithm SentencePiece in 2018 的子词分割。
子词词汇表的主要原则是频繁出现的词保持完整,而较少出现的词被分割成更小的单元。生僻字通常是专有名词,并没有真正得到翻译。对于具有复杂形态的语言,子词分割允许模型学习如何创建相同词的不同形式。
在基础 Transformer 模型(Vaswani 等人)上训练后解码/翻译测试数据集时,我有时会在输出中看到这个标记“unk”。
这里的“unk”指的是一个未知的标记,但我的问题是这背后的原因是什么?根据https://nlp.stanford.edu/pubs/acl15_nmt.pdf,是否意味着我为训练集构建的词汇不包含测试集中存在的单词?
作为参考,我使用 Spacy
en_core_web_sm
和 de_core_news_sm
构建了 Vocab
用于德语到英语的翻译任务。
示例输出:
ground truth = ['a', 'girl', 'in', 'a', 'jean', 'dress', 'is', 'walking', 'along', 'a', 'raised', 'balance', 'beam', '.']
predicted = ['a', 'girl', 'in', 'a', '<unk>', 'costume', 'is', 'jumping', 'on', 'a', 'clothesline', '.', '<eos>']
如您所见,jean 在这里是“unk”。
神经机器翻译模型的词汇量有限。原因是您通过将编码器的隐藏状态乘以一个矩阵来获得目标词汇标记的分布,该矩阵对每个词汇标记都有一行。您提到的论文使用 1000 维的隐藏状态。如果你想合理地涵盖英语,你将需要至少 200k 的词汇量,这意味着只有 800MB 才能用于此矩阵。
您提到的论文是 2015 年的过时解决方案,并试图找到尽可能大的词汇量。然而,增加词汇量似乎并不是最好的解决方案,因为随着词汇量的增加,你会在词汇表中添加越来越稀有的词,而用于嵌入这些词的训练信号越来越少,因此模型最终不会学会正确使用这些词。
最先进的机器翻译使用 introduced in 2016 with the BPE algorithm. In parallel, Google came with an alternative solution named WordPiece for their first production neural machine translation system. Later, Google came with an improved segmentation algorithm SentencePiece in 2018 的子词分割。
子词词汇表的主要原则是频繁出现的词保持完整,而较少出现的词被分割成更小的单元。生僻字通常是专有名词,并没有真正得到翻译。对于具有复杂形态的语言,子词分割允许模型学习如何创建相同词的不同形式。