我正在研究神经网络是否适合在一组元组(比如长度和一些传感器值)中检测“兴趣点”(POI)。POI 本质上是不遵循模式的值的快速变化。因此,如果我们的传感器值线性增加,然后突然跳跃 200%,这将是一个 POI。
这是我正在使用的数据的示例:
[(1,10),(2,11),(3,14),(5,24),(6.5,25), (7,26), (8,45)]
在此示例中,假设“(3,14)”、“(5,24)”和“(8,45)”是兴趣点。所以我正在尝试设计一个可以检测这些的神经网络。
我首先创建了一个静态输入长度为 500 个元素的一维卷积层。
在几个隐藏层之后,我应用了一个 sigmoid 函数,它提供了一个 0 和 1 的列表作为输出,其中 1 表示集合中的一个 POI。
我正在尝试解决这种方法的几个问题。
在分类损失函数中[1,0,0,1,0,0]
,例如,如果预期输出是完全不准确的,则输出将被视为完全不准确,[0,1,0,0,1,0]
而实际上这是相当准确的,因为预测的 POI 非常接近真实的 POI。
所以我想做的是找到一个损失函数来优化神经网络。
到目前为止,我已经尝试过:
- Binary Cross Entropy:我读到这对于分类输入可以属于多个类的位置很有用。我尝试了这一点,认为每个 POI 本质上都是一个“类别”。但这似乎不起作用,我认为这是因为我上面提到的。
- 平均绝对误差:这似乎得到了稍微好一点的结果,但经过仔细检查后,它似乎不是很准确,并且几乎可以一致地预测一组 POI。
我已经尝试了其他几个,但运气不佳。
什么损失函数更适合这个?
我尝试的另一个输出不是输出 0 和 1,而是应该只返回兴趣点的索引,比如 3、5 8。这会是更好的输出吗?