对于word embedding的输入,为什么要乘以 √d

转自:https://zhuanlan.zhihu.com/p/442509602

看看论文里的介绍

Similarly to other sequence transduction models, we use learned embeddings to convert the input tokens and output tokens to vectors of dimension 𝑑𝑚𝑜𝑑𝑒𝑙 . We also use the usual learned linear transformation and softmax function to convert the decoder output to predicted next-token probabilities. In our model, we share the same weight matrix between the two embedding layers and the pre-softmax linear transformation, similar to [24]. In the embedding layers, we multiply those weights by 𝑑𝑚𝑜𝑑𝑒𝑙 .

1.1 从Embedding开始讲起

对Embedding熟悉的可以直接跳到1.2 看结论

1.1.1 Why Embedding

Embedding在深度学习中的作用,就是构建了一个查找表。

对于一个容量为30000的字典,我们可以用 one-hot encoding 对字典中的每个字进行表示,但这样存在一些问题,比如one-hot 的表达是稀疏,因为对于其中的每一个字都需要维度为30000的向量进行唯一标识(表示)。

使用word embedding 可以将稀疏表达变为稠密表达,降低表征一个词所需要的空间维度,即

实现高纬度稀疏向量的到低纬度稠密向量的特征降维

1.1.2 How Embedding

假如,我需要将 (30000,30000) 的 one-hot matrix 降维成 (30000,512) 的 embedding matrix,那么我只需要对one-hot matrix 做矩阵乘法进行降维就好了:

(30000,30000)×(30000,512)=(30000,512)

𝑂𝑛𝑒𝐻𝑜𝑡∗𝑊=𝐸𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔

基于torch 中nn.Embedding 的实现方式,nn.Embeddig.weight 默认的初始化为 𝑁(0,1) 分布,即W矩阵中每个值服从𝑁(0,1) 分布。但根据该回答中的阐述(不确定是否正确,看过代码或者相关介绍的同学可以私信我,如果错了我会修改回答):

8.为何在获取输入词向量之后需要对矩阵乘以embedding size的开方?
embedding matrix的初始化方式是xavier init,这种方式的方差是1/embedding size,因此乘以embedding size的开方使得embedding matrix的方差是1,在这个scale下可能更有利于embedding matrix的收敛。

模型的初始化方式使得embedding matrix 的分布为 𝑁(0,1/𝑑𝑚𝑜𝑑𝑒𝑙)

1.2 为什么需要乘以 𝑑𝑚𝑜𝑑𝑒𝑙

基于Transformer的初始化方式,正态总体Embedding matrix 的抽样分布满足:

𝑒𝑙𝑒𝑚𝑒𝑛𝑡 𝑜𝑓 𝐸𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔 𝑣𝑒𝑐𝑡𝑜𝑟∼𝑁(0,1/𝑑𝑚𝑜𝑑𝑒𝑙)

这会导致一个问题,Embedding matrix 元素分布的方差会随着 𝑑𝑚𝑜𝑑𝑒𝑙 变化,如果 𝑑𝑚𝑜𝑑𝑒𝑙 较大,输出值的波动会比较小。通过乘以 𝑑𝑚𝑜𝑑𝑒𝑙 ,可以使embedding matrix的分布回调到 𝑁(0,1) ,有利于训练(为什么有利于以后再探讨,挖个坑先)。

2. 总结

embedding matrix 初始化后的方差为 1/𝑑𝑚𝑜𝑑𝑒𝑙 ,即 1/𝑒𝑚𝑏𝑒𝑑𝑑𝑖𝑛𝑔 𝑠𝑖𝑧𝑒 ,乘以 𝑑𝑚𝑜𝑑𝑒𝑙 ,可以使embedding matrix的分布回到 𝑁(0,1) ,有利于训练。

posted @   有何m不可  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示