【问题标题】:Train a cascaded network with a classifier in between用分类器训练级联网络
【发布时间】:2020-10-02 09:51:49
【问题描述】:

我正在尝试做一个双重任务。输入是一个图像,基于输入我想从一组图像(分类任务)中选择另一个图像,然后使用这两个图像来获得输出张量。显然,如果我知道我应该从该集合中选择哪个图像的基本事实,我可以分别训练这两个模型。但是,我只有输出张量ground truth。

在我看来,问题在于,如果我们使用分类层,梯度将不再可微。我该如何处理这个问题?是否有文献将这种架构用于任何应用程序? TIA

更多细节:我有多个对象/场景的图像,我想将其中两个图像用于某种重建问题。为了最大化重建的性能,如果给定第一张图像,我想巧妙地选择第二张图像。例如,我有三个图像 A、B、C,使用 AC 可以得到最好的结果。我需要一个模型,它给定 A 预测 C,然后使用 AC 我可以实现重建。现在任务清楚了吗?我没有说 AC 比 AB 更好的基本事实。现在任务清楚了吗?

【问题讨论】:

  • 我不确定我是否完全理解您想要做什么。你能用关于手头任务的更多细节来编辑你的问题吗?
  • @JosephBudin 我有多个对象/场景的图像,我想将其中两个图像用于某种重建问题。为了最大化重建的性能,如果给定第一张图像,我想巧妙地选择第二张图像。例如,我有三个图像 A、B、C,使用 AC 可以得到最好的结果。我需要一个模型,它给定 A 预测 C,然后使用 AC 我可以实现重建。现在任务清楚了吗?我没有说 AC 比 AB 更好的基本事实。现在任务清楚了吗?
  • 更清楚是的!谢谢 !我会回答的。
  • 我邀请您将您的评论添加到您的问题中,以便将来的读者更清楚:) @thechargedneutron

标签: python tensorflow machine-learning computer-vision data-science


【解决方案1】:

所以基本上,你想做一个分类任务,然后是一个重建任务。

这是我的建议(我不会假装这是绝对最佳的解决方案,但这就是我解决这个问题的方法):

您可以创建一个执行分类的任务--> 使用单个损失进行重建。让我们仍然把这个网络一分为二,调用net_class进行分类的部分,和net_reconstruct进行重建的部分。 假设您的分类网络预测 {'B': 0.1, 'C': 0.9)。我不会只使用图像“C”进行重建,而是将两对(A-BA-C)输入第二个网络并计算重建损失L(我不是重建专家,但我猜这里面有一些经典的损失)。

因此,您将计算两个损失 L(A-B)L(A-C)。 我的总损失将是0.1 * L(A-B) + 0.9 L(A-C)。这样,您将训练 net_class 以选择最小化重建损失的配对,并且您仍将训练 net_reconstruct 以最小化这两种损失,并且损失是连续的(因此,根据 AI 专家的说法是可微分的;))。

这种损失背后的想法是三方面的:

1 - 改进重构器使损失下降(因为 L(A-B)L(A-C) 都会减少。因此,这种损失应该使您的重构器收敛到您想要的东西。

2 - 假设您的重构器经过大量训练(L(A-B)L(A-C) 相对较低)。然后,您的分类器就有动力去预测重建损失最低的类别。

3 - 现在,您的重构器和分类器将同时训练。你可以期望,在训练结束时,有一个分类器会输出几乎二进制的结果(比如 0.998 对 0.002)。 A此时,您的重建器几乎只会在与0.998 输出相关的场景上进行训练。这应该不是问题,因为如果我正确理解了您的问题,您只想对分类最高的场景执行重建部分。

请注意,如果您不对重建部分执行深度学习,此方法也适用。

如果您想对此类主题有所启发,我建议您阅读一些有关 GAN(生成对抗网络)的博客文章。他们使用相同的两个阶段 - 一个损失技巧(当然有一些细微差别,但想法非常接近)。

祝你好运!

【讨论】:

  • 非常感谢!这更有意义。 GAN 通常用于完全不同的目的,但在这里使用它会很有趣。
  • 是的,很明显,这不是 GAN 的用例,但我认为在思考过程中强调相似性很有趣
  • 这似乎训练得很好。但是,我并不完全相信您建议的称重选择。比如上面的损失函数比(1-0.1) * L(A-B) + (1-0.9) * L(A-C)好多少?我背后的想法是,我们希望net_class 中的任何一个概率非常高,从而使损失减少。你能解释一下这两个损失函数是如何直观地比较的吗?我在这里可能完全错了,但感谢您的耐心等待。
  • 我将在我的回答中解释它(检查传入的编辑)
  • @thechargedneutron 告诉我是否回答了您的问题
猜你喜欢
  • 2015-09-21
  • 2017-11-21
  • 2015-12-16
  • 2012-03-05
  • 2019-05-14
  • 1970-01-01
  • 2014-05-13
  • 2015-06-02
  • 2020-04-08
相关资源
最近更新 更多