为语言生成模型选择字符嵌入的大小

数据挖掘 Python 张量流 nlp 嵌入 文本生成
2022-01-27 12:13:24

我正在开发一个基于字符的语言生成器,大致基于TensorFlow 2.0 网站上的本教程按照示例,我正在使用一个Embedding()层来生成字符嵌入:我希望我的模型逐个字符地生成文本。

我的词汇表有86 个独特的字符我应该选择什么嵌入尺寸?

我应该总是选择比词汇量更短的嵌入大小吗?上面示例中的嵌入大小比词汇量大得多,我不明白这如何建立一个有效的模型(但显然它确实如此,如果它是一个官方教程,如果有人能解释我为什么会这样非常感激)。


编辑:

我觉得令人费解的另一件事是:当我们生成词嵌入时,是因为我们想要一个词义的密集表示。让它比我们开始使用的实际 one-hot 编码向量更大是否有意义?

1个回答

嵌入维度有一个理论上的下界

我会敦促你阅读这篇论文,但它的要点是可以根据语料库统计选择维度。

GLOVE 论文讨论了嵌入,请查看第 7 页的图表。我想通过这个参考说的是,您可以将其视为超参数并找到您的最佳值。

编辑:这是我个人/借用的谷歌经验法则。嵌入向量维度应该是类别数的第 4 根,从那个开始,然后我玩弄它。当他们解释他们的嵌入时,请阅读这篇文章。为什么可以(它不能)有意义:什么是 BOW,而不是你的 n-gram 的一种热编码

让它变大有意义吗?这取决于。一方面你是对的,如果我们让它太大,我们会失去词嵌入矩阵的分布式表示属性,另一方面它在实践中有效。