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

https://stackoverflow.com/questions/45497160
复制相似问题