您可以将特征数据减少到名为嵌入的表示法中,然后比较嵌入,而不是比较手动组合的特征数据。嵌入是通过在特征数据本身上训练受监管的深度神经网络 (DNN) 生成的。嵌入会将特征数据映射到嵌入空间中的向量。通常,嵌入空间的维度比特征数据更少,其采用的方式可以捕获特征数据集的一些潜在结构。类似示例的嵌入向量(例如同一用户观看的 YouTube 视频)最终在嵌入空间中彼此靠近。我们将了解相似度测量如何使用这种“接近度”来量化示例对的相似度。
请记住,我们讨论的是监督式学习,目的只是建立相似度衡量。算法使用相似度衡量(手动或监督)来执行非监督式聚类。
人工衡量和受监管措施的对比
下表介绍了根据您的要求何时使用手动或监督式相似度衡量功能。
要求 | 人工 | 受监管 |
---|---|---|
消除相关特征中的冗余信息。 | 不可以,您需要分别调查特征之间的关联。 | 可以,DNN 可以消除冗余信息。 |
提供计算出的相似度的数据分析。 | 是 | 不可以,嵌入无法被解密。 |
适用于特征较少的小数据集。 | 可以,设计一些包含几项功能的手动衡量非常容易。 | 不,小型数据集没有为 DNN 提供足够的训练数据。 |
适用于具有许多特征的大型数据集。 | 不行,很难手动消除来自多个特征的冗余信息,并加以组合。 | 是的,DNN 会自动消除冗余信息并合并特征。 |
监督式相似性衡量流程
下图展示了如何创建监督式相似度测量:
您已经学习了第一步。本页面将讨论下一步,接下来几页将介绍其余步骤。
根据训练标签选择 DNN
训练一个将输入和标签使用同一特征数据的 DNN,从而将特征数据减少到嵌入。例如,对于房屋数据,DNN 将使用价格、尺寸和邮政编码等特征本身来预测这些特征。为了使用特征数据预测相同的特征数据,DNN 被迫将输入特征数据减少到嵌入。您可以使用这些嵌入来计算相似度。
通过预测输入数据本身学习输入数据的嵌入的 DNN 称为自动编码器。由于自动编码器的隐藏层小于输入层和输出层,因此系统会强制自动编码器学习输入特征数据的压缩表示法。DNN 经过训练后,您可以从最后一个隐藏层中提取嵌入,以计算相似度。
要生成嵌入,自动编码器是最简单的选择。不过,在确定相似度时,某些特征可能比其他特征更重要,那么自动编码器并不是最佳选择。例如,在内部数据中,我们假设“价格”比“邮政编码”更重要。在这种情况下,请仅将重要特征用作 DNN 的训练标签。由于此 DNN 预测的是特定的输入特征,而不是预测所有输入特征,因此它称为预测器 DNN。请遵循以下准则来选择特征作为标签:
首选数值特征作为分类特征作为标签,因为数字特征的损失更易于计算和解读。
请勿将基数为 100 的分类特征用作标签。 \(\lesssim\) 如果这样做,DNN 不会被强制缩减到嵌入的输入数据,因为 DNN 可以轻松预测低基数分类标签。
从用作 DNN 输入的特征中移除特征;否则,DNN 将完美地预测输出。
根据您的标签选择,生成的 DNN 可以是自动编码器 DNN,也可以是预测器 DNN。
DNN 的损失函数
如需训练 DNN,您需要创建一个损失函数,具体步骤如下:
- 计算 DNN 的每个输出的损失。对于符合以下条件的输出:
- 通过将每个输出的损失相加来计算总损失。
对损失求和时,请确保每个特征与损失的贡献成比例。例如,如果将颜色数据转换为 RGB 值,则您有三个输出。但是,对三个输出的损失求和意味着,颜色损失的权重是其他特征的三倍。而是将每个输出乘以 1/3。
在线系统中使用 DNN
在线机器学习系统有不断的新输入数据流。您需要基于新数据训练 DNN。但是,如果您从头开始重新训练 DNN,则嵌入会有所不同,因为 DNN 会使用随机权重进行初始化。您应始终使用现有权重对 DNN 进行温启动,然后使用新数据更新 DNN。