本部分重点介绍两种获取嵌入的常用技术:
- 降维
- 从更大的神经网络模型中提取嵌入
降维技术
目前有许多数学技术可用来捕获重要的 是低维空间中的高维空间结构。从理论上讲, 这些技术都可以用来为机器创建 学习系统。
例如,主成分分析 (PCA) 之前已经用来创建字词嵌入。假设有一组实例, 词袋向量,PCA 会尝试 来寻找高度相关的维度,这些维度可以合并为 维度。
将嵌入训练为神经网络的一部分
您可以在训练 神经网络,用于 目标任务。通过这种方法,你可以获得适合自己业务模式的 但可能比单独训练嵌入花费的时间更长。
一般来说,你可以在神经元中创建一个大小为 d 的隐藏层, 被指定为 嵌入层,其中 d 既表示隐藏层中的节点数量, 嵌入空间中维度的大小。该嵌入层可与 任何其他特征和隐藏层。与任何深度神经网络一样, 将在训练期间进行优化,以最大限度地降低 输出层。
回到我们的食品推荐示例,我们的目标是 根据用户当前的喜好预测用户会喜欢的新餐点 餐点。首先,我们可以收集关于用户五大最爱 食品。然后,我们可以将此任务建模为监督式学习问题。我们将 其中五种食物中的 4 种为特征数据,然后随机选取 第五种食物作为我们的模型要预测的正类别标签, 使用 softmax 的模型预测 损失。
在训练期间,神经网络模型将学习 第一个隐藏层(用作嵌入层)中的节点。 例如,如果模型的第一个隐藏层包含三个节点, 系统也许能够判断出与食物有关的三个相关性最高的维度是 三明治、甜度和液态。图 12 显示了 “hot dog”的输入值转换为三维向量。
![图 12. 用于热狗独热编码的神经网络。第一层
包含 5 个节点的输入层,每个节点标有
代表(罗宋汤、热狗、沙拉...和沙威玛)。这些节点
值 [0, 1, 0, ..., 0] 分别表示独热
编码为“hot dog”。输入层连接到 3 节点嵌入
层,其节点的值为 2.98、-0.75 和 0。通过
嵌入层连接到 5 节点隐藏层,
连接到 5 节点输出层。](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=5&hl=da)
hot dog
的独热编码
作为输入提供给深度神经网络。嵌入层会将
将独热编码输入到三维嵌入向量中,
[2.98, -0.75, 0]
。
在训练过程中,嵌入层的权重将被优化, 求嵌入向量 与每个相似的 其他。嵌入层的各个维度(即每个 嵌入层表示的)很少像“甜度”那样易于理解或 “液态性”有时它们的“含义”但有时 情况。
嵌入通常特定于任务,并且各不相同 。例如,素食者和 非素食分类模型可能有两个维度:肉类含量 和乳制品而早餐生成的嵌入与 适用于美式菜肴的晚餐分类器的维度可能略有不同: 卡路里含量、谷物含量和肉类含量。“谷物”和 “鸡蛋和培根三明治”在很多词元的嵌入空间中 但早餐与晚餐分类器在嵌入空间中的 素食与非素食分类器。
训练字词嵌入
在上一部分中,您了解了 模型中语义关系的可视化 word2vec 嵌入空间。
Word2vec 是用于训练字词嵌入的众多算法之一。 它依赖分布假设来映射 生成几何相近的嵌入向量。分布 假设 通常相邻字词的相邻字词往往 语义上相似。“dog”和“cat”经常出现在 “兽医”一词这一事实反映了它们在语义上的相似性。 正如语言学家约翰·弗斯 (John Firth) 在 1957 年所言:“您应该知道 它会一直保持下去。”
以下视频介绍了创建字词嵌入的另一种方法, 使用一个更简单的模型训练神经网络的过程:
静态嵌入与上下文嵌入
如上面视频中讨论的那样,字词嵌入的一个局限性是 它们是静态的。每个字词由向量中的一个点表示 即使它可能具有多种不同的含义, 它在句子中的用法。在上一个练习中, 你发现将单词的语义相似度 orange:表示某种颜色或水果种类。
上下文嵌入正是为解决这些缺点而开发的。 内容相关嵌入允许 相同字词的类似描述,每个 使用该字词时的上下文。在上下文嵌入中, orange 可能有两种不同的表示法:一种用于捕获“颜色” 例如“我最喜欢的毛衣有橙色 条纹”另一组是拍摄“水果”的某些词的用法,例如 “橙子在完全成熟之前就从树上摘下。”