我目前正在尝试理解基于上下文表示单词为向量的word2vec神经网络学习算法背后的架构。
在阅读了Tomas Mikolov的论文后,我遇到了他定义为投影层的概念。尽管这个术语在提到word2vec时被广泛使用,但我无法找到在神经网络背景下它具体是什么的精确定义。
我的问题是,在神经网络的背景下,投影层是什么?它是否是指一个隐藏层,其与前一节点的链接共享相同的权重?它的单元是否真的有某种激活函数?
另一个更广泛涉及该问题的资源可以在此教程中找到,该教程在第67页左右也提到了投影层。
回答:
我觉得之前的回答有点过于复杂了——投影层只是一个简单的矩阵乘法,或者在神经网络的背景下,就是一个常规/密集/线性层,没有最后的非线性激活(如sigmoid/tanh/relu等)。其想法是将(例如)10万维的离散向量投影到600维的连续向量中(我这里随机选择了数字,具体情况可能有所不同)。确切的矩阵参数是通过训练过程学习的。
之前/之后发生的事情已经取决于模型和上下文,不是原问题所问的重点。
(在实践中,你甚至不会费心去做矩阵乘法(因为你是在乘以一个只有单词索引处为1,其余地方全为0的一热向量),而是将训练后的矩阵视为查找表(即,语料库中的第6257个单词 = 投影矩阵中的第6257行/列(具体取决于你的定义方式))。)