嵌套:获取嵌入

您可以通过多种方式获取嵌入,包括 Google 最先进的算法。

标准降维技术

许多现有数学技术可用于在低维空间中捕获高维度空间的重要结构。理论上,这些技术均可用于为机器学习系统创建嵌入。

例如,主成分分析 (PCA) 已用于创建字词嵌入。鉴于一组字词向量(例如字词向量袋),PCA 会尝试查找高度相关且可以收起为单个维度的维度。

Word2vec

Word2vec 是 Google 发明用于训练字词嵌入的算法。Word2vec 使用分布假设将语义上相似的字词映射到几何接近的嵌入向量。

分布假设表明,相邻的字词通常在语义上是相似的。“狗”和“猫”经常出现靠近“兽医”一词的情况,这表明它们的语义相似度较高。正如语言学家 John Firth 于 1957 年所说,“你应该知道一家公司保留的一个词”。

Word2Vec 通过训练神经网络将实际共同出现的单词组与随机分组的字词区分开,以利用此类上下文信息。输入层采用目标字词的稀疏表示法以及一个或多个上下文字词。此输入会连接到单个较小的隐藏层。

在一种算法中,系统以随机随机字词替换目标字词来举出反面示例。鉴于正面示例“飞机飞行”,系统可能会换入“慢跑”来形成对比鲜明的负例“慢跑飞行”。

另一版算法通过将真实的目标字词与随机选择的上下文字词配对来创建反例。因此,它可能需要取正例((平面)、平面(飞行)和负例(编译、平面)、(人、平面){/1},并学习确定哪些文本对实际一起出现于文本中。

不过,分类器不是这两种系统版本的实际目标。 训练模型后,您将获得一个嵌入。您可以使用权重将输入层与隐藏层连接起来,从而将字词的稀疏表示法映射到较小的向量。此分类可在其他分类器中重复使用。

如需详细了解 word2vec,请参阅 tensorflow.org 上的教程

将嵌入作为大型模型的一部分进行训练

您还可以将神经网络作为目标任务的神经网络的一部分进行学习。这种方法可让您针对特定系统量身定制嵌入,但所需时间可能比单独训练嵌入所花的时间更长。

通常,当您具有稀疏数据(或要嵌入的密集数据)时,您可以创建一个嵌套单元,它只是一个大小为 d 的特殊类型的隐藏单元。此嵌入层可与任何其他特征和隐藏层结合使用。与任何 DNN 一样,最后一层就是正在优化的损失。例如,假设我们执行协作过滤,目的是从其他用户的兴趣中预测用户的兴趣。我们可以将这种情况作为监督式学习问题进行建模,具体做法是随机选取(或留出)用户观看过的一小部分影片作为正类别标签,然后优化 Softmax 损失。

图 5. 用于从协作过滤数据学习影片嵌入的示例 DNN 架构。

再举一个例子,如果您想在 DNN 中针对房地产广告词创建嵌入层来预测房价,可以使用训练数据中的已知房价作为标签来优化 L2 损失。

学习 d 维嵌套时,每一项都会映射到 d 维空间中的一个点,以使类似项在此空间中相邻。图 6 说明了在嵌入层中学到的权重与几何视图之间的关系。输入节点与 d 维嵌入层中的节点之间的边的权重对应了 d 维坐标轴中每一维的坐标值。

嵌入层权重与嵌入的几何视图之间的关系图。

图 6. 嵌入层权重的几何视图。