我目前正在研究多标签分类,我有一些问题(我找不到明确的答案)。
为了清楚起见,我们举一个例子:我想对车辆(汽车,公共汽车,卡车......)及其制造(奥迪,大众,法拉利等)的图像进行分类。
所以我考虑训练两个独立的CNN(一个用于“类型”分类,一个用于“make”分类)但我认为可能只在所有类上训练一个CNN。
我读到人们倾向于使用sigmoid函数而不是softmax来做到这一点。据我所知,sigmoid并不像softmax那样总结为1,但我不明白这样做能做多标签分类吗?
我的第二个问题是:是否有可能考虑到某些类完全独立?
第三,在表现方面(准确性和给新图像分类的时间),是不是更好地训练两个独立的?
感谢那些能给我一些答案或一些想法的人:)
答案 0 :(得分:1)
Softmax是一种特殊的输出功能;它强制输出向量具有单个大值。现在,训练神经网络的工作原理是计算输出向量,将其与目标向量进行比较,然后反向传播误差。没有理由将目标向量限制为单个较大的值,对于多标记,您可以为适用的每个标签使用1.0目标。但是在这种情况下,对输出层使用softmax会导致输出和目标之间出现意外差异,然后反向传播差异。
对于第二部分:定义目标向量;你可以编码你喜欢的任何类型的依赖。
最后,没有 - 组合网络比两个独立的网络表现更好。当网络布局存在差异时,您只能并行运行两个网络,例如:常规的NN和CNN并行可能是可行的。