43

最小熵原理系列:词向量的维度应该怎么选择?

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw%3D%3D&%3Bmid=2247511748&%3Bidx=1&%3Bsn=66d7c88aca765d506681ac2c1a9df91c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

EnAnQz.gif!mobile

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

随着 NLP 的发展,像 Word2Vec、Glove 这样的词向量模型,正逐渐地被基于 Transformer 的 BERT 等模型代替,不过经典始终是经典,词向量模型依然在不少场景发光发热,并且仍有不少值得我们去研究的地方。本文我们来关心一个词向量模型可能有的疑惑: 词向量的维度大概多少才够?

先说结论,笔者给出的估算结果是:

更简约的话可以直接记,其中 N 是词表大小,n 就是词向量维度,是自然对数。当 n 超过这个阈值时,就说明模型有足够的容量容纳这 N 个词语(当然 n 越大过拟合风险也越大)。

这样一来,当 N=100000 时,得到的 n 大约是 96,所以对于 10 万个词的词向量模型来说,维度选择 96 就足够了;如果要容纳 500 万个词,那么 n 大概就是 128。

jiuMzu2.png!mobile

背景

之所以想起这个问题,是因为昨天在 Arxiv 上刷到了论文 Word2vec Skip-gram Dimensionality Selection via Sequential Normalized Maximum Likelihood   [1]  ,遗憾的是,从这篇论文中笔者并没有找到想要的答案。顺带搜索了一下,发现也有类似文献研究同样的问题,比如 On the Dimensionality of Word Embedding   [2]   ,但答案依旧不是笔者想要的。

为什么这样说呢?很显然,这个问题的最标准答案应该是靠反复实验来确定最优维度,所以不能指望理论分析给出相当精确的答案。

我们平时用到的词向量维度,一般有 64、100、128、256、300 等,不同的维度之间效果差别其实也没多少,所以笔者只希望能从最简洁直观的方式推导一下一般词向量模型所需要的维度量级,比如几十或者几百,不应该出现太过复杂的分析。

由于没有找到比较满意的现有结果,因此笔者从最小熵原理角度分析了一下,得到了一个接近自己心中所想的答案。

IbQFVj6.png!mobile

分析

本文要分析是基于 Skip Gram 思想的词向量模型,多数词向量模型其实都是它的变种,至于 CBOW 类的模型,在以往的实验里,它的表现其实跟 Skip Gram 差不多(尤其是数据量较大时),因此可以认为 Skip Gram 的分析结果应该是通用的。

2.1 最小熵

我们的出发点是信息熵,我们知道,熵是不确定性的度量(参考“熵”不起:从熵、最大熵原理到最大熵模型(一) [3] ),语言本身具有一定的不确定性,而我们在用向量编码词语时,编码结果应该要等于甚至小于这种不确定性,才能保证这种编码是有效的、能充分保留原来语言的信息。所以,我们要消除不确定性,也就是要最小熵。

要注意的是,词向量是基于 Skip Gram 模型的,所以我们要计算的不是词平均熵,而是整个 Skip Gram 模型的平均熵,假设词对的频率是,那么可以估算它的熵为:

BbAFfyb.png!mobile

不同的词向量训练目标也有所差异,有些是在拟合联合概率,有些是在拟合条件概率,但这差别不大,前面说了,本文只是想得到一个概数。所以这里统一假设词向量模型为:

vEfaqib.png!mobile

其中代表两套不同的词向量(中心词向量、上下文词向量),代表词而代表词。这时候它的信息熵是:

2.2 采样近似

为了近似计算上式,我们将求和用采样近似,比如:

qEzyqij.png!mobile

这里的 N 是词表大小。同理:

EVJbmiY.png!mobile

所以我们有近似:

R7nYfi2.png!mobile

2.3 分布假设

观察已有的词向量模型,我们可以发现每个维度的数值有正有负,绝对值大小一般也比较均匀。在此,我们不妨假设每个元素的绝对值大概为 1,那么每个词向量的模长大致就为(n 是词向量的维度,也就是我们要估算的目标,如果觉得这个近似不够准确,也可以自行调整)。

并且进一步假设所有的词向量均匀分布在半径为的 n 维超球面上,那么是它们的夹角,所以:

UBjQ3ue.png!mobile

现在相当于 n 维空间中任意两个向量的夹角,我们在 n 维空间下两个随机向量的夹角分布 [4] 中就求出了它的分布为:

euaEFnu.png!mobile

既然概率密度函数都确定了,那么对于给定的 N 和 n,近似式(8)是完全可以数值计算出来的,而由便可以解出对应的 n。

2.4 结果对比

首先我们数值计算出

nuIvEjI.png!mobile

的一些结果:

vyMr6bV.png!mobile

那么比如 n=64,N=100000,就有。读者可能会觉得奇怪,当 n=128,N=100000时,H 不就是负数了?离散熵怎么可能是负数?

事实上,这是因为我们在前面的推导过程中,使用了采样近似和精确积分相结合的方式,当空间维数 n 足够大时,就算你采样几十万个样本也不一定能准确估计一些统计量,所以采样近似这一步带来了误差。

不过这倒是给我们另外一个确定n的思路: 当出现 H < 0 时,说明 N 个样本已经无法对统计量做很好地估计了,那么反过来说就是此时的n维空间要容纳 N 个样本是“绰绰有余”的

因此,我们可以用 H < 0 简单确定一个边界,而不需要去估算。(或者从另外一个角度想:一定是大于 0 的,因此 H < 0 是的充分条件。)

最后,我们看到关于 n 大概是线性的,,因此,让它小于 0 我们可以解出公式(1)了。

ZJfe2i7.png!mobile

小结

本文从最小熵原理的思想出发分析了词向量的维度选择问题,最终给出了一个近似的估算公式,计算结果表明该估算公式与我们以往的炼丹经验是相符的。

buUbYnQ.png!mobile

参考文献

buUbYnQ.png!mobile

[1] https://arxiv.org/abs/2008.07720

[2] https://arxiv.org/abs/1812.04224

[3] https://kexue.fm/archives/3534

[4] https://kexue.fm/archives/7076

更多阅读

J3eqEzF.png!mobile

U3MNbae.png!mobile

neYzErQ.png!mobile

2mUBJnB.gif!mobile

# 投 稿 通 道 #

让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是 最新论文解读 ,也可以是 学习心得技术干货 。我们的目的只有一个,让知识真正流动起来。

:memo:  来稿标准:

• 稿件确系个人 原创作品 ,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

:mailbox_with_mail:  投稿邮箱:

• 投稿邮箱: [email protected] 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

:mag:

现在,在 「知乎」 也能找到我们了

进入知乎首页搜索 「PaperWeekly」

点击 「关注」 订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击 「交流群」 ,小助手将把你带入 PaperWeekly 的交流群里。

R7nmyuB.gif!mobile

feMfiqY.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK