我有一个vanilla LSTM模型,它通过输出6个类别的概率分布对输入数据进行分类。没什么太疯狂的。
现在,模型工作并给我一个输出,其中我采取最大值来分类我的输入。但是,我认为我们可以做得更多。
而不是实际的类别,对我来说,看到我的LSTM输出的概率分布是非常有用的。
之类的东西[ 0.0528042 , 0.11904617, 0.27744624, 0.37874526, 0.13942425,
0.03253399]
因为这些信息可以告诉我第二个最佳猜测,第三个等,以及LSTM将其标记为某个类别的信心。
有趣的是,我的类别非常相关;比方说,如果第1类和第2类对应的是“非常大的价值”。我知道我的价值很大,而不是第3类和第4类,它们的价值很小'并且'真的很小的价值'。
有没有办法利用类别密切相关的事实,以获得更好的输出?当然,我不想简单地有两个输出('大'和'小'),因为概率分布对我来说非常重要。
答案 0 :(得分:2)
需要实现自定义损失函数来编码类间关系。
假设你的6个类被排序(比如["extremely large", "very large", "large", "small", "very small", "extremely small"]
),合适的损失可能是1D-Wasserstein距离(a.k.a。earth mover's distance)。
有一维EMD的封闭形式公式。例如,您可以尝试实现this paper中描述的内容。