从多类分类模型中添加或删除节点有哪些选项?

数据挖掘 分类 张量流
2022-02-22 15:39:38

我正在构建一个分类模型,该模型需要分类为许多可能的输出之一。我事先知道,随着情况的变化,我需要在输出层中添加和减去节点。请向我推荐您知道的任何可以帮助我了解潜在方法的资源。当然,我每次都可以从头开始重新训练模型。我正在寻找替代品。我只知道两种方法:

  1. 迁移学习:仅使用新的期望输出重新训练最后一层。
  2. 为每个潜在的输出堆叠一个二进制分类器,并通过所有这些分类器流式传输我的数据。

我需要一个非常细化的特定级别,例如,我希望能够识别出一个主要关注“乌兹别克斯坦山羊放牧实践的变化”等主题的文档。这是一个虚构的要求,但关键是它可能具有非常特定的功能。请就我提到的方法的优缺点提供意见,并添加我没有想到的任何方法。

1个回答

@DPCII,我认为在运行时修改输出节点不会对您有所帮助。这是因为,

  • 神经网络在特定数据集上进行训练,并仅预测预定义变量。在反向传播(用于优化)中,梯度是针对每个权重和偏差(或任何其他参数)使用损失函数(也是目标函数)计算的。

  • 为了改变输出节点的数量,假设您已经删除了一些来自上一层的连接。但在训练期间,的激活函数的梯度进行了优化LNLN1LN

  • 因此,在推理时移除输出节点会影响所有先前的层,这反过来会影响最终输出(剩余节点的)。

相反,我建议构建一个预测所有可能类别的神经网络。在需要预测某些所需节点的各种样本上训练此 NN。让我通过一个例子来解释这一点。

  • 假设,我们有一个预测类的神经网络。对于特定样本,我们只需要对类的预测,给定样本对于此示例,我们将标签设置为我们只设置类的值,其余所有类都设置为零。C1,C2,C3,...,CNC1C2X[y1,y2,0,0,0,...,0].C1C2

  • 同样,我们为各种样本分配标签,并只设置那些需要预测的值。其余所有值都设置为零。

  • 这实际上是我们对图像进行的常见分类。对于给定的猫样本,我想预测的数组和狗的样本[1,0][0,1]

因此,我们可以应用这种意识形态,而不是移除节点并干扰 NN。