监督式相似度衡量

您可以将特征数据减少到名为嵌入的表示法中,然后比较嵌入,而不是比较手动组合的特征数据。嵌入是通过在特征数据本身上训练受监管的深度神经网络 (DNN) 生成的。嵌入会将特征数据映射到嵌入空间中的向量。通常,嵌入空间的维度比特征数据更少,其采用的方式可以捕获特征数据集的一些潜在结构。类似示例的嵌入向量(例如同一用户观看的 YouTube 视频)最终在嵌入空间中彼此靠近。我们将了解相似度测量如何使用这种“接近度”来量化示例对的相似度。

请记住,我们讨论的是监督式学习,目的只是建立相似度衡量。算法使用相似度衡量(手动或监督)来执行非监督式聚类。

人工衡量和受监管措施的对比

下表介绍了根据您的要求何时使用手动或监督式相似度衡量功能。

要求人工受监管
消除相关特征中的冗余信息。 不可以,您需要分别调查特征之间的关联。 可以,DNN 可以消除冗余信息。
提供计算出的相似度的数据分析。 不可以,嵌入无法被解密。
适用于特征较少的小数据集。 可以,设计一些包含几项功能的手动衡量非常容易。 不,小型数据集没有为 DNN 提供足够的训练数据。
适用于具有许多特征的大型数据集。 不行,很难手动消除来自多个特征的冗余信息,并加以组合。 是的,DNN 会自动消除冗余信息并合并特征。

监督式相似性衡量流程

下图展示了如何创建监督式相似度测量:

输入特征数据。选择 DNN:自动编码器或预测器。提取嵌入。选择测量:点积、余弦或欧几里得距离。
图 1:创建监督式相似度测量的步骤。

您已经学习了第一步。本页面将讨论下一步,接下来几页将介绍其余步骤。

根据训练标签选择 DNN

训练一个将输入和标签使用同一特征数据的 DNN,从而将特征数据减少到嵌入。例如,对于房屋数据,DNN 将使用价格、尺寸和邮政编码等特征本身来预测这些特征。为了使用特征数据预测相同的特征数据,DNN 被迫将输入特征数据减少到嵌入。您可以使用这些嵌入来计算相似度。

通过预测输入数据本身学习输入数据的嵌入的 DNN 称为自动编码器。由于自动编码器的隐藏层小于输入层和输出层,因此系统会强制自动编码器学习输入特征数据的压缩表示法。DNN 经过训练后,您可以从最后一个隐藏层中提取嵌入,以计算相似度。

自动编码器与预测器 DNN 之间的比较。起始输入和隐藏层相同,但输出由预测器模型中的关键特征进行过滤。
图 2:自动编码器与预测器之间的比较。

要生成嵌入,自动编码器是最简单的选择。不过,在确定相似度时,某些特征可能比其他特征更重要,那么自动编码器并不是最佳选择。例如,在内部数据中,我们假设“价格”比“邮政编码”更重要。在这种情况下,请仅将重要特征用作 DNN 的训练标签。由于此 DNN 预测的是特定的输入特征,而不是预测所有输入特征,因此它称为预测器 DNN。请遵循以下准则来选择特征作为标签:

  • 首选数值特征作为分类特征作为标签,因为数字特征的损失更易于计算和解读。

  • 请勿将基数为 100 的分类特征用作标签。 \(\lesssim\) 如果这样做,DNN 不会被强制缩减到嵌入的输入数据,因为 DNN 可以轻松预测低基数分类标签。

  • 从用作 DNN 输入的特征中移除特征;否则,DNN 将完美地预测输出。

根据您的标签选择,生成的 DNN 可以是自动编码器 DNN,也可以是预测器 DNN。

DNN 的损失函数

如需训练 DNN,您需要创建一个损失函数,具体步骤如下:

  1. 计算 DNN 的每个输出的损失。对于符合以下条件的输出:
    • 数值,请使用均方误差 (MSE)。
    • 一元分类,使用对数损失。 请注意,您无需自行实现日志损失,因为您可以使用库函数来计算损失。
    • 多价分类,使用 softmax 交叉熵损失。请注意,您无需自行实现 Softmax 交叉熵损失,因为您可以使用库函数进行计算。
  2. 通过将每个输出的损失相加来计算总损失。

对损失求和时,请确保每个特征与损失的贡献成比例。例如,如果将颜色数据转换为 RGB 值,则您有三个输出。但是,对三个输出的损失求和意味着,颜色损失的权重是其他特征的三倍。而是将每个输出乘以 1/3。

在线系统中使用 DNN

在线机器学习系统有不断的新输入数据流。您需要基于新数据训练 DNN。但是,如果您从头开始重新训练 DNN,则嵌入会有所不同,因为 DNN 会使用随机权重进行初始化。您应始终使用现有权重对 DNN 进行温启动,然后使用新数据更新 DNN。