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