如何进行多标签分类(CNN)?

时间:2017-05-09 09:14:45

标签: deep-learning

我目前正在研究多标签分类,我有一些问题(我找不到明确的答案)。

为了清楚起见,我们举一个例子:我想对车辆(汽车,公共汽车,卡车......)及其制造(奥迪,大众,法拉利等)的图像进行分类。

所以我考虑训练两个独立的CNN(一个用于“类型”分类,一个用于“make”分类)但我认为可能只在所有类上训练一个CNN。

我读到人们倾向于使用sigmoid函数而不是softmax来做到这一点。据我所知,sigmoid并不像softmax那样总结为1,但我不明白这样做能做多标签分类吗?

我的第二个问题是:是否有可能考虑到某些类完全独立?

第三,在表现方面(准确性和给新图像分类的时间),是不是更好地训练两个独立的?

感谢那些能给我一些答案或一些想法的人:)

1 个答案:

答案 0 :(得分:1)

Softmax是一种特殊的输出功能;它强制输出向量具有单个大值。现在,训练神经网络的工作原理是计算输出向量,将其与目标向量进行比较,然后反向传播误差。没有理由将目标向量限制为单个较大的值,对于多标记,您可以为适用的每个标签使用1.0目标。但是在这种情况下,对输出层使用softmax会导致输出和目标之间出现意外差异,然后反向传播差异。

对于第二部分:定义目标向量;你可以编码你喜欢的任何类型的依赖。

最后,没有 - 组合网络比两个独立的网络表现更好。当网络布局存在差异时,您只能并行运行两个网络,例如:常规的NN和CNN并行可能是可行的。