训练用于多标签分类的多类分类模型的理论依据

机器算法验证 机器学习 分类 神经网络 多标签
2022-04-14 01:49:55

在任何数学理论保证下,可以训练多类分类模型并将其用于多标签分类吗?

想象一下以下模型,实际用于(文本)分类的一个机器学习库中:

  1. 一个多类分类器——一个 softmax 终止的MLP从词嵌入馈送,但也可以是其他任何东西——在多标签数据上进行训练。(即,一些/大多数数据项在训练数据中有多个类别名称)。
  2. 每个训练项目的损失是在仅考虑单个目标标签的情况下计算的,该标签是在每个时期随机选择的,从应用于训练数据中的项目的标签中(这里是精确的损失函数,请原谅 C++)。这只是标准随机梯度下降的一个受速度启发的小变体……它应该在多个时期内平均化。
  3. 对于实际使用,最大化整个测试集上的聚合Jaccard 索引的置信度阈值,然后用于过滤作为网络(softmax 归一化)预测输出返回的标签。
  4. 对于模型所做的每个预测,只有那些置信度大于阈值的标签才会被保留并被视为最终的可操作预测。

这可能感觉像是将多类模型强制转换为多标签解释。是否有任何理论保证或反保证,这对多标签语义有用?或者,您将如何减少多标签问题?

1个回答

softmax 输出层似乎没有意义。然后将强制所有类的总概率总和为 1。这在多标签设置中没有意义。相反,使用 sigmoid 似乎更合乎逻辑(允许多个类具有高概率,例如接近 1)。

也许在步骤 2、3 和 4 中所做的事情是必须补偿在输出层使用了 softmax 激活函数的结果?至少步骤 2 中的位确保这与 softmax 激活匹配。我不太确定这是否会在各个时期保持平衡:每个类别在创建的训练数据中出现的频率都低于训练数据中的实际情况,并且您丢弃了有关哪些类别倾向于一起出现的所有信息(除非您有很少有数据担心过度拟合?!)。此外,如果您在每个步骤中确实有多个标签,我假设您将获得更好的性能(= 不是速度方面,而是从预测的角度来看)。

简而言之,我看到了您所描述的内容可能出错的一些原因,并假设(实际上并不知道)该方法中的一些扭曲试图弥补其中的一些扭曲。我知道的不够多,也没有尝试过,所以我不能说这会有多成功。我猜想多个标签之间的相关性是这种方法无法捕捉到的。

就个人而言,我很想将其作为适当的多标签预测来执行,最终密集层的单元数等于类数(即编码为例如 1 0 0 0 1 0 0 1 0 0 .. . 如果一个项目属于第 1、第 4 和第 8 类)和 sigmoid 激活(使用例如二元交叉熵作为损失函数)。我相信这是通常推荐用于这种情况的标准方法。