在之前的文章《最小熵原理(六):词向量的维度应该怎么选择?》中,我们基于最小熵思想推导出了一个词向量维度公式“n>8.33logN�>8.33log�”,然后在《让人惊叹的Johnson-Lindenstrauss引理:应用篇》中我们进一步指出,该结果与JL引理所给出的O(logN)�(log�)是吻合的。
既然理论上看上去很完美,那么自然就有读者发问了:实验结果如何呢?8.33这个系数是最优的吗?本文就对此问题的相关内容做一个简单汇总。
词向量 #
首先,我们可以直接,当N�为10万时,8.33logN≈968.33log�≈96,当N�为500万时,8.33logN≈1288.33log�≈128。这说明,至少在数量级上,该公式给出的结果是很符合我们实际所用维度的,因为在词向量时代,我们自行训练的词向量维度也就是100维左右。可能有读者会质疑,目前开源的词向量多数是300维的,像BERT的Embedding层都达到了768维,这不是明显偏离了你的结果了?
事实上,像FastText之类的开源词向量是300维,也没法否定128维能够达到类似效果的可能性。至于BERT,它本身并不是一个词向量模型,所以它选多少维跟词向量维度的选择也没有直接关系,何况ALBERT已经表明,将Embedding层进行低秩分解(降到128维)几乎不会改变模型效果,因此BERT的768维Embedding多多少少是有冗余的。
关于词向量的评价,2015年有一篇比较全面的论文《How to Generate a Good Word Embedding?》可以参考,文中显示其实词向量在超过50维之后的提升就比较弱了,这也算是n>8.33logN�>8.33log�的一个佐证吧~
https://kexue.fm/archives/8711
标签:log,选择,logN,8.33,Embedding,维度,向量 From: https://www.cnblogs.com/ExMan/p/17994531