先说结论,笔者给出的估算结果是:更简约的话可以直接记 ,其中 N 是词表大小,n 就是词向量维度, 是自然对数。当 n 超过这个阈值时,就说明模型有足够的容量容纳这 N 个词语(当然 n 越大过拟合风险也越大)。这样一来,当 N=100000 时,得到的 n 大约是 96,所以对于 10 万个词的词向量模型来说,维度选择 96 就足够了;如果要容纳 500 万个词,那么 n 大概就是 128。
背景
之所以想起这个问题,是因为昨天在 Arxiv 上刷到了论文 Word2vec Skip-gram Dimensionality Selection via Sequential Normalized Maximum Likelihood[1] ,遗憾的是,从这篇论文中笔者并没有找到想要的答案。顺带搜索了一下,发现也有类似文献研究同样的问题,比如 On the Dimensionality of Word Embedding[2],但答案依旧不是笔者想要的。为什么这样说呢?很显然,这个问题的最标准答案应该是靠反复实验来确定最优维度,所以不能指望理论分析给出相当精确的答案。我们平时用到的词向量维度,一般有 64、100、128、256、300 等,不同的维度之间效果差别其实也没多少,所以笔者只希望能从最简洁直观的方式推导一下一般词向量模型所需要的维度量级,比如几十或者几百,不应该出现太过复杂的分析。由于没有找到比较满意的现有结果,因此笔者从最小熵原理角度分析了一下,得到了一个接近自己心中所想的答案。
事实上,这是因为我们在前面的推导过程中,使用了采样近似和精确积分相结合的方式,当空间维数 n 足够大时,就算你采样几十万个样本也不一定能准确估计一些统计量,所以采样近似这一步带来了误差。
不过这倒是给我们另外一个确定n的思路:当出现 H < 0 时,说明 N 个样本已经无法对统计量做很好地估计了,那么反过来说就是此时的n维空间要容纳 N 个样本是“绰绰有余”的。因此,我们可以用 H < 0 简单确定一个边界,而不需要去估算 。(或者从另外一个角度想: 一定是大于 0 的,因此 H < 0 是 的充分条件。)最后,我们看到 关于 n 大概是线性的,,因此 ,让它小于 0 我们可以解出公式(1)了。