【发布时间】:2017-08-26 10:22:54
【问题描述】:
如何处理训练神经网络时结果不平衡的多标签分类?我遇到的解决方案之一是惩罚稀有标记类的错误。这是我设计网络的方式:
类数:100。输入层、第 1 隐藏层和第 2 层 (100) 使用 drop-outs 和 ReLU 完全连接。第二个隐藏层的输出是py_x。
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=py_x, labels=Y))
其中 Y 是 one-hot-encoding 的修改版本,为样本的所有标签设置了 1 到 5 之间的值。对于最常见的标签,该值约为 1,对于最稀有的标签,该值约为 5。该值不是离散的,即在 one-hot-encoding 中为标签设置的新值基于公式
= 1 + 4*(1-(percentage of label/100))
例如: 将被转换为 之类的东西。注意:只有原始向量中的 1 值被更改。
这样,如果模型错误地预测了一个稀有标签,它的误差会很高,例如:0.0001 - 5 = -4.9999,与非常频繁的标签的错误标签相比,这将反向传播更大的误差。
这是正确的惩罚方式吗?有没有更好的方法来处理这个问题?
【问题讨论】:
标签: machine-learning tensorflow neural-network