我正在建立一个用于年龄分类的 CNN 模型。假设一个人的年龄在 1-100 之间,我的最后一个线性层包含 100 个输出神经元。
现在我想为这个分类问题找到一个合适的损失函数。
我不想使用回归
我的观察:
- 我不能使用MSE 或 BCE损失,因为它们仅在元素方面起作用,因此不适合,就好像实际年龄为 25 岁那样,预测的 26 岁和 50 岁将有相同的损失。(预测将是 100 个元素向量,因为最后一层有 100 个神经元。)
- 我发现了Hinge Loss 和 Cosine Proximity Loss。但我不认为它们可以用于这种类型的分类,因为它们只发现两个向量之间的相似性,而不给附近的实际预测对赋予任何重要性或权重(例如实际年龄 25 和预测年龄 26 应该有一个非常低的损失)
谁能为这个分类问题建议我一个合适的损失函数(最好在 Pytorch 中)?
编辑
假设我想要一个损失函数 (L(predicted, actual)) 使得(假设为 5 类分类)
let actual = [0,0,1,0,0]
L([0,0,1,0,0], actual) < L([0,1,0,0,0], actual) < L([1,0,0,0,0], actual)
L([0,0,1,0,0], actual) < L([0,0,0,1,0], actual) < L([0,0,0,0,1], actual)