我最初的任务是根据基因表达模式对各种细胞类型(类别)进行分类,这个问题只涉及从多个类别中预测一个标签。这很容易完成,因为我可以分配一个单热编码向量并训练神经网络。
现在的新问题是样本中可能存在各种细胞的混合物(因此是多标签问题)。新的挑战不仅是检测多个标签,而且是检测每个标签的比例。例如,如果总共有 3 个 cell_type,并且样本包含 2 个
cell_type_1
、1 个 cell_type_2
和 1 个 cell_type_3
,则分类器的输出应为 [0.50, 0.25, 0.25]
,而不是 [1, 1, 1]
。
从我所做的简短研究来看,有多种方法可以进行二元风格分类,但对于比例分类来说,方法并不多。我读过不同的精度函数,例如精确匹配比和汉明损失,它们对于此类问题似乎很有希望。还了解到最后一层的激活函数应该是 sigmoid,而不是 softmax,因为 softmax 分配一个概率,而此属性会削弱其识别多个标签的能力。我想知道在我的情况下这是否会对我有利,因为比例很重要?
我想首先了解这个问题是否可能(我习惯于做分类)、针对这个问题推荐的损失/准确性函数的种类、各种架构(如果之前已经做得很好)以及任何其他建议/资源。另外,我正在 R 中使用 Keras,如果这可能有助于提供更多上下文。
实际上,我没有尝试过这个问题,但我必须写一份关于此类任务的提案,并且必须与我的首席执行官就我的想法的可行性争论很多。(尽管争论的重点不是关于可行性,但是他对深度学习基础知识的误解...)
这是我的想法
这是一种
multi-label classification
任务,但它以与传统 classification
方式略有不同的方式看待模型的输出,即作为类别的比例或比率,而不是概率。(正如我们都知道,这个输出数字首先与概率无关,这只是我们解释它的方式)
重点在于如何准备输入和如何设置损失函数,输入部分这里就不解释了,因为OP写得很清楚了。
至于损失函数,我建议使用MAE或MSE,或者使用
regression
任务中使用的任何东西。(也许MSE不起作用,因为输出值将小于1
并且如果平方,它会变得小得多)
regression
损失有望在最后的 Softmax 函数或 Sigmoid 之后应用。也许您会首先尝试 Softmax,因为它保证所有值总和为 1
,但这不需要额外的 regression
之类的损失,因为这只会导致总和不等于 1
。所以我想,尝试对所有类使用 Sigmoid,并对这些值使用 regression
损失。也许,可能还有另一个技巧来确保最终输出值总和为 1
我知道上面的想法可能是无稽之谈,但至少我认为这种问题应该采用类似
multi-label classification
的架构,并且个人希望我的CEO能够看到这篇文章并理解为什么他对深度学习的整个基础知识的误解导致了我们一天2个小时的讨论,浪费精力……