处理大量可能输出的模型

数据挖掘 神经网络 模型选择
2022-02-16 23:35:51

我的问题是,在我们需要从大量可能性中预测某事的情况下,可以使用哪种机器学习模型。例如,在 kaggle 竞赛(Instacart 挑战)中,他们要求根据先前的订单预测用户将重新订购哪些产品。

在这种情况下,可能的输出范围是巨大的(有 +40000 种可能的产品)

我研究了一些模型,例如 CNN,通常这些模型的输出是一个 logits 张量,其中包含概率,张量的大小通常对应于分类问题中的可能性。这通常很小(在 cifar-100 中最多有 100 个

但在这种情况下,在我看来这不是一个好方法,因为可能的项目数量。

那么这个 CNN 模型是否适用于这类任务?还可以使用哪些其他方法?

谢谢。

2个回答

有一种叫做“sampled softmax”的东西(例如tensorflow 的实现),它只是对输出空间进行分区,并且在每个训练步骤中只考虑其中一个分区(请参阅本文的第 3 节以学习数学)。采样的 softmax 仅用于加速非常大的输出空间的训练;在推理时,您使用正常的 softmax。

此外,如果您的输出具有分层性质,则可以使用分层 softmax。请参阅此博客文章,了解处理超大分类空间的不同方法。

如您的示例所示,对于所有类型的算法,+40000 个可能的产品或输出都非常大。您可能需要比仅使用一种方法更具创新性。例如,您需要根据您的问题为此类输出定义一个距离函数。很明显,欧几里得等常规距离函数在大向量和您的特定问题的背景下似乎没有意义。但作为建议,您可能想阅读有关结构化支持向量机随机森林的信息。您也可能会发现其他有趣的概率方法,例如HMM

总而言之,我们可能不会像您定义的问题那样专门在现实世界的问题和数据集中寻找绝对答案。了解数据和相关功能将帮助您找到最佳解决方案。