词向量的维度大概多少才够?
admin
2024-03-07 02:46:54
0

词向量的维度大概多少才够?先说结论,苏剑林大佬给出的估算结果是
n>8.33log⁡N(1)n > 8.33 \log N \tag{1} n>8.33logN(1)
更简约的话可以直接记n>8log⁡Nn > 8\log Nn>8logN,其中NNN是词表的大小,nnn是词向量的维度。当nnn超过这个阈值时,就说明模型有足够的容量容纳这NNN个词(当然nnn越大过拟合风险也越大)。这样一来,当N=100000N=100000N=100000时,得到的nnn大约是96,所以对于10万个词的词向量模型来说,维度选择96就足够了;如果要容纳500万个词,那么nnn大概就是128

选择最佳的词向量维度应该是靠反复实验来确定的,所以不能指望理论分析给出非常精确的答案,我们平时用到的词向量维度一般有64、128、256等,不同的维度只见效果差别其实并不大,所以本文仅仅只希望从最简洁直观的方式推导一下一般词向量模型所需要的维度量级

最小熵

我们的出发点是信息熵,我们知道,熵是不确定性的度量,语言本身具有一定的不确定性,而我们在用向量编码词语时,编码结果应该要等于甚至小于这种不确定性,才能保证这种编码是有效的、能充分保留原来语言的信息。所以,我们要消除不确定性,也就是要最小熵

要注意的是,词向量是基于Skip Gram模型的,所以我们要计算的不是词平均熵,而是整个Skip Gram模型的平均熵。假设词对(wi,wj)(w_i, w_j)(wi​,wj​)的频率是p~(wi,wj)\tilde{p}(w_i,w_j)p~​(wi​,wj​),那么可以估算它的熵为
H~=−∑i,jp~(wi,wj)log⁡p~(wi,wj)(2)\tilde{H}=-\sum_{i,j}\tilde{p}(w_i,w_j)\log \tilde{p}(w_i,w_j) \tag{2} H~=−i,j∑​p~​(wi​,wj​)logp~​(wi​,wj​)(2)

不同词向量训练目标也有所差异,有些是在拟合联合概率p(wi,wj)p(w_i,w_j)p(wi​,wj​),有些是在拟合条件概率p(wj∣wi)p(w_j\mid w_i)p(wj​∣wi​),但这差别不大,前面说了,本文只是想得到一个概数。所以这里统一假设词向量模型为
p(wi,wj)=e⟨ui,vj⟩Z,Z=∑i,je⟨ui,vj⟩(3)p(w_i, w_j) = \frac{e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}}{Z},\quad Z = \sum_{i,j}e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle} \tag{3} p(wi​,wj​)=Ze⟨ui​,vj​⟩​,Z=i,j∑​e⟨ui​,vj​⟩(3)

其中u,v\boldsymbol{u},\boldsymbol{v}u,v代表两套不同的词向量(中心词向量、上下文词向量),ui\boldsymbol{u}_iui​代表词wiw_iwi​,vj\boldsymbol{v}_jvj​代表词wjw_jwj​。这时候它的信息熵是
H=−∑i,jp(wi,wj)log⁡p(wi,wj)=log⁡Z−1Z∑i,je⟨ui,vj⟩⟨ui,vj⟩(4)H=-\sum_{i, j} p(w_i, w_j)\log p(w_i, w_j)=\log Z-\frac{1}{Z}\sum_{i, j} e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle} \langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle \tag{4} H=−i,j∑​p(wi​,wj​)logp(wi​,wj​)=logZ−Z1​i,j∑​e⟨ui​,vj​⟩⟨ui​,vj​⟩(4)

−∑i,jp(wi,wj)log⁡p(wi,wj)=−∑i,je⟨ui,vj⟩Z(⟨ui,vj⟩−log⁡Z)=∑i,je⟨ui,vj⟩Z(log⁡Z−⟨ui,vj⟩)=∑i,je⟨ui,vj⟩Z(log⁡Z−ZZ⟨ui,vj⟩)=∑i,je⟨ui,vj⟩Z(log⁡Z−1Z∑i,je⟨ui,vj⟩⟨ui,vj⟩)=log⁡Z−1Z∑i,je⟨ui,vj⟩⟨ui,vj⟩\begin{aligned} -\sum_{i, j} p(w_i, w_j)\log p(w_i, w_j)&=-\sum_{i,j} \frac{e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}}{Z}(\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle-\log Z)\\ &= \sum_{i,j} \frac{e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}}{Z}(\log Z-\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle)\\ &= \sum_{i,j} \frac{e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}}{Z}(\log Z - \frac{Z}{Z} \langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle)\\ &= \sum_{i,j} \frac{e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}}{Z}(\log Z - \frac{1}{Z} \sum_{i,j}e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle)\\ &= \log Z - \frac{1}{Z} \sum_{i,j}e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle \end{aligned} −i,j∑​p(wi​,wj​)logp(wi​,wj​)​=−i,j∑​Ze⟨ui​,vj​⟩​(⟨ui​,vj​⟩−logZ)=i,j∑​Ze⟨ui​,vj​⟩​(logZ−⟨ui​,vj​⟩)=i,j∑​Ze⟨ui​,vj​⟩​(logZ−ZZ​⟨ui​,vj​⟩)=i,j∑​Ze⟨ui​,vj​⟩​(logZ−Z1​i,j∑​e⟨ui​,vj​⟩⟨ui​,vj​⟩)=logZ−Z1​i,j∑​e⟨ui​,vj​⟩⟨ui​,vj​⟩​

近似采样

为了计算上式的近似,我们将求和用采样近似,例如
Z=∑i,je⟨ui,vj⟩=N2×1N2∑i,je⟨ui,vj⟩≈N2Eui,vj[e⟨ui,vj⟩](5)Z = \sum_{i,j}e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle} = N^2 \times \frac{1}{N^2} \sum_{i,j}e^{\langle \boldsymbol{u}_i,\boldsymbol{v}_j \rangle}\approx N^2 \mathbb{E}_{\boldsymbol{u}_i,\boldsymbol{v}_j}\left[ e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\right] \tag{5} Z=i,j∑​e⟨ui​,vj​⟩=N2×N21​i,j∑​e⟨ui​,vj​⟩≈N2Eui​,vj​​[e⟨ui​,vj​⟩](5)

为什么最后会得到一个期望呢,回想一下期望计算的定义,期望等于值乘以对应的概率。这里我们假设每一项e⟨ui,vj⟩e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j \rangle}e⟨ui​,vj​⟩的概率都是均等的,一共有N2N^2N2项,所以
1N2∑i,je⟨ui,vj⟩=∑i1N∑j1Ne⟨ui,vj⟩=∑i1NEvj[e⟨ui,vj⟩]=Eui,vj[e⟨ui,vj⟩]\begin{aligned} \frac{1}{N^2} \sum_{i,j}e^{\langle \boldsymbol{u}_i,\boldsymbol{v}_j \rangle} &= \sum_i \frac{1}{N}\sum_j \frac{1}{N} e^{\langle \boldsymbol{u}_i,\boldsymbol{v}_j \rangle}\\ &= \sum_i \frac{1}{N} \mathbb{E}_{\boldsymbol{v}_j} \left[ e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\right]\\ &= \mathbb{E}_{\boldsymbol{u}_i,\boldsymbol{v}_j}\left[ e^{\langle\boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\right] \end{aligned} N21​i,j∑​e⟨ui​,vj​⟩​=i∑​N1​j∑​N1​e⟨ui​,vj​⟩=i∑​N1​Evj​​[e⟨ui​,vj​⟩]=Eui​,vj​​[e⟨ui​,vj​⟩]​

这里的NNN是词表大小。同理
∑i,je⟨ui,vj⟩⟨ui,vj⟩≈N2Eui,vj[e⟨ui,vj⟩⟨ui,vj⟩](6)\sum_{i,j} e^{\langle \boldsymbol{u}_i,\boldsymbol{v}_j\rangle} \langle \boldsymbol{u}_i,\boldsymbol{v}_j\rangle \approx N^2 \mathbb{E}_{\boldsymbol{u}_i,\boldsymbol{v}_j} \left[e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j \rangle} \langle \boldsymbol{u}_i, \boldsymbol{v}_j \rangle\right] \tag{6} i,j∑​e⟨ui​,vj​⟩⟨ui​,vj​⟩≈N2Eui​,vj​​[e⟨ui​,vj​⟩⟨ui​,vj​⟩](6)

所以我们有近似
H≈log⁡N2+log⁡Eui,vj[e⟨ui,vj⟩]−Eui,vj[e⟨ui,vj⟩⟨ui,vj⟩]Eui,vj[e⟨ui,vj⟩](7)H \approx \log N^2 + \log \mathbb{E}_{\boldsymbol{u}_i, \boldsymbol{v}_j}\left[e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\right] - \frac{\mathbb{E}_{\boldsymbol{u}_i, \boldsymbol{v}_j}\left[e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle\right]}{\mathbb{E}_{\boldsymbol{u}_i, \boldsymbol{v}_j}\left[e^{\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle}\right]}\tag{7} H≈logN2+logEui​,vj​​[e⟨ui​,vj​⟩]−Eui​,vj​​[e⟨ui​,vj​⟩]Eui​,vj​​[e⟨ui​,vj​⟩⟨ui​,vj​⟩]​(7)

分布假设

观察已有的词向量模型,我们可以发现每个维度的数值有正有负,绝对值大小一般也比较均匀。在此,我们不妨假设每个元素的绝对值大概为1,那么每个词向量的模长大致就为n\sqrt{n}n​(nnn是词向量的维度,也就是我们要估算的目标,如果觉得这个近似不够精确,也可以自行调整),并且进一步假设所有的词向量均匀分布在半径为n\sqrt{n}n​的nnn维超球面上,那么⟨ui,vj⟩=ncos⁡θ\langle \boldsymbol{u}_i, \boldsymbol{v}_j\rangle=n\cos \theta⟨ui​,vj​⟩=ncosθ,θ\thetaθ是它们的夹角,所以

H≈log⁡N2+log⁡Eθ[encos⁡θ]−Eθ[encos⁡θncos⁡θ]Eθ[encos⁡θ](8)H\approx \log N^2 + \log \mathbb{E}_{\theta}\left[ e^{n\cos \theta}\right]-\frac{\mathbb{E_{\theta}}[e^{n\cos \theta}n \cos \theta]}{\mathbb{E}_{\theta}[e^{n\cos \theta}]}\tag{8} H≈logN2+logEθ​[encosθ]−Eθ​[encosθ]Eθ​[encosθncosθ]​(8)
现在θ\thetaθ相当于nnn维空间中任意两个向量的夹角,而nnn维空间下两个随机向量夹角的分布为
pn(θ)=Γ(n2)Γ(n−12)πsin⁡n−2θ(9)p_n(\theta) = \frac{\Gamma(\frac{n}{2})}{\Gamma(\frac{n-1}{2})\sqrt{\pi}}\sin^{n-2}\theta \tag{9} pn​(θ)=Γ(2n−1​)π​Γ(2n​)​sinn−2θ(9)
既然概率密度函数都确定了,那么对于给定的nnn和NNN,近似式(8)是完全可以数值计算出来的,而由H~>H\tilde{H}>HH~>H便可以解出对应的nnn

结果对比

首先我们数值计算出hn=log⁡Eθ[encos⁡θ]−Eθ[encos⁡θncos⁡θ]Eθ[encos⁡θ]h_n=\log \mathbb{E}_{\theta} [e^{n\cos \theta}]-\frac{\mathbb{E_{\theta}}[e^{n\cos \theta}n \cos \theta]}{\mathbb{E}_{\theta}[e^{n\cos \theta}]}hn​=logEθ​[encosθ]−Eθ​[encosθ]Eθ​[encosθncosθ]​的一些结果:
n326496128256512hn−7.77471−15.4734−23.1726−30.8718−61.6692−123.264\begin{array}{c|cccccc} \hline n & 32 & 64 & 96 & 128 & 256 & 512\\ \hline h_n & -7.77471 & -15.4734 & -23.1726 & -30.8718 & -61.6692 & -123.264\\ \hline \end{array} nhn​​32−7.77471​64−15.4734​96−23.1726​128−30.8718​256−61.6692​512−123.264​​
那么比如n=64,N=100000n=64,N=100000n=64,N=100000,就有H≈log⁡1000002−15.4734=7.55245H\approx \log 100000^2-15.4734=7.55245H≈log1000002−15.4734=7.55245。读者可能会觉得奇怪,当n=128,N=100000n=128,N=100000n=128,N=100000时,HHH不就是负数了?事实上,这是因为我们在前面的推导过程中,使用了采样近似和精确积分相结合的方式,当空间维数nnn足够大时,就算你采样几十万个样本也不一定能准确估计一些统计量,所以近似采样这一步带来了误差

不过这倒是给我们另外一个确定nnn的思路:当出现H<0H<0H<0时,说明NNN个样本已经无法对统计量做很好地估计了,那么反过来说就是此时的nnn维空间要容纳NNN个样本是绰绰有余的。因此,我们可以用H<0H<0H<0简单确定一个边界,而不需要去估算H~\tilde{H}H~(或者从另一个角度想:H~\tilde{H}H~一定是大于0的,因此H<0H<0H<0是H

最后,我们看到hnh_nhn​关于nnn大概是线性的,hn/n≈−0.24h_n/n\approx -0.24hn​/n≈−0.24,因此H≈log⁡N2−0.24nH\approx \log N^2 -0.24nH≈logN2−0.24n,令H<0H<0H<0,我们就可以解出公式(1)了

Reference

  • 最小熵原理(六):词向量的维度应该怎么选择?

相关内容

热门资讯

西安四天旅游攻略和费用是多少,... 嘿,宝子们!如果你打算来一场历史文化与美食交织的旅行,那西安绝对是你的不二之选。这座城市就像一部活的...
原创 暴... 2025年上半年,泰国旅游业面临严峻挑战,特别是中国游客数量大幅减少,对行业造成沉重打击。据统计,今...
如果这个世界上有八号当铺,你愿... 如果这个世界上有八号当铺,你愿意进去典当吗?我愿意进去典当,因为我觉得用自己不是那么在意的东西去换取...
能不能推荐几本校园青春小说,不... 能不能推荐几本校园青春小说,不要连载的,要有大结局的,求你啦!拽丫头与校草同居左耳,离歌,沙漏,会有...
电影《穿靴子的猫》十四分钟半左... 电影《穿靴子的猫》十四分钟半左右那段音乐,好像是小号吹的吧是americano
“贞子”是什么? “贞子”是什么?山上长得一种植物.果实外边有一层硬皮砸开之后瓤可以吃1998年,由松岛菜菜子、真田广...
海贼王火影死神哪部好看 海贼王火影死神哪部好看这三部动画都很出名,我想问下大家他们各自的含义,还有听听看大家的意见火影胜在剧...
求穿越搞笑的小说 求穿越搞笑的小说俏皮小妞之天下无双极品家丁......
胃镜检查需要全麻吗,大约需要多... 胃镜检查需要全麻吗,大约需要多长时间胃镜根本不用麻醉。。。
《我为歌狂》续集的顺序是什么? 《我为歌狂》续集的顺序是什么?《我为歌狂》有两部互相无关的续集,一部是《我为歌狂终结本8848》,另...
彼岸花开,花开彼岸。花开不见叶... 彼岸花开,花开彼岸。花开不见叶,叶生不见花,相念相惜不相见。传说种的花和叶永不相见,就这样吗?彼岸花...
参天小银瓶好不好? 参天小银瓶好不好?建议买小样试试,每个人肤质都不同。
大耳朵图图简介? 大耳朵图图简介?该剧讲述了小朋友图图和他的父母一家三日的生活琐事,其中图图是个小捣蛋儿,脑瓜里充满了...
狱血魔神觉醒流程 狱血魔神觉醒流程觉醒任务:  达到48级后,找G.S.D接取觉醒任务任务名称 完成条件 觉醒-狂暴...
红莲是怎么死的? 红莲是怎么死的?谁能给我讲一下从红莲和三尾斗,昏迷后被幽鬼丸叫醒一直到红莲死有关红莲的事?先谢谢了,...
中级口译? 中级口译?想考中级口译,不太了解这个考试,有2个问题1,中口先考笔译然后才能口译,中间可以间隔多长时...
实体书是什么意思 实体书是什么意思实体书是什么意思顾名思义,就是指已经出版发行了,并且印刷完成推向市场,读者能够在书店...
求男主角回到过去,又遇上了以前... 求男主角回到过去,又遇上了以前的自己,然后和以前的自己在一起的小说你是的这 是小说?自己爱上自己.那...
治疗肺癌的名老中医 治疗肺癌的名老中医你好,我最近老是觉得腹胀的厉害,经常咳嗽的上不来气,老是觉得嗓子跟有东西似的,开始...
肉唐僧为什么不在嫣牛博上写博客... 肉唐僧为什么不在嫣牛博上写博客了?他可能去西天取经路上到了没有wifi的地方,过两天有网了他就写了~...