多输出神经网络中的缺失输出

数据挖掘 神经网络 喀拉斯 美国有线电视新闻网 缺失数据 多任务学习
2021-10-03 13:22:53

我正在看一项任务,我想从图像中预测多个事物(动物的品种 [分类]、年龄 [连续数字] 和性别 [分类])。不出所料,我的第一个想法是使用神经网络(例如,将多个输出添加到预训练的 covnet),我会先尝试 keras(之前使用过)。我认为尝试在单个 covnet 中完成所有这些操作会很有用(尤其是基于本文的 TWiML 演讲,作者建议一般来说,一个预测目标将有助于改进另一个预测目标的特性,并且考虑到例如如何一个会认识到性别会因品种而异等)。

我的问题出现了,因为对于某些训练/验证/测试图像,多个预测目标中的一些(但不是全部)可能会丢失。有时我们只知道品种,对于某些图像,我们不知道性别,并且可能经常无法获得确切的年龄(但只有动物是成年而不是大约 4 个月以下,人类只需看一眼就可以轻松标记这个动物)。

如果我不得不猜测,我希望missingess会随机丢失(但可能不会完全随机丢失)。例如,对于某些品种和年龄,仅通过观察动物就很难分辨出性别(也许神经网络会设法做到这一点)。因此,只为动物拍照的人可能不知道性别,而人类也不擅长从照片中标记性别。另一个例子:年龄可能不可用,因为有人只是拍了一张他们没有详细信息的动物的照片,或者因为有人买了一只二手动物但从未发现。

有一些标准的方法来处理这个吗?我的直觉是,即使缺少一两个预测目标的记录仍然应该为其他记录提供有用的信息。因此,以列表方式删除具有任何缺失目标信息的所有记录将是非常低效的(甚至可能有问题?!)。

1个回答

由于我们正在讨论多种不同类型的目标(例如类与数值),我们已经需要一个复合损失函数。我将考虑如何平衡此答案范围之外的损失函数的不同复合部分,但如果您研究多任务学习,则有解决方案。您可以做的(在训练和评估中)是掩盖损失函数中未知的部分。

您可以通过在训练期间将权重作为输入传递给样本中的每个输出(无论它是否可用为 1 或 0)作为输入,然后将该分量乘以权重,您可以相当容易地做到这一点(但很麻烦)。对于训练和预测的分析,你需要确保只取可用标签的平均值,否则你的损失值太乐观了。

我确实认为这种方法在很多情况下都非常有价值,这也有助于半监督学习,在这种学习中,你确实有可用于类似任务的标签。