应该使用哪种输出来预测 DNN 中的角度?

人工智能 深度学习 深度神经网络 网络设计
2021-10-21 14:53:22

我正在构建一个预测角度作为输出的模型。可用于预测角度的不同类型的输出有哪些?

例如,

  1. 以弧度输出角度
    • 没有捕捉到角度的循环性质
    • 输出可能在外面[π,π)
  2. 输出角度的正弦和余弦
    • 输出可能不满足sin2θ+cos2θ=1

不同方法的优缺点是什么?

2个回答

正如您所说,由于角度的循环性质,第一个选项不是很合适。但是,如果您不介意离散化这些值,则可以将输出表示为二进制向量。

第二个选项的变体对我来说似乎很完美。您可以输出一个 2D 向量并将该向量的角度用作输出。您可能需要一个用于向量范数的正则化器,仅此而已。

我见过/使用的方法:

场景1:角度在某种形式的2个向量之间,在这种情况下,[π,0)[0,π)是等价的。(在向量空间中,向量之间总是存在两个角度:θ1θ)

  1. 使用 sigmoidσ函数将其置于 0 和 1 之间,然后缩放到[0,π). 由于在这种情况下您没有对整个旋转进行建模,因此这很有效,因为不必将两端建模为等效
  2. 使用余弦相似度,学习 2 个向量表示并使用cos θ=v1Tv2||v1||||v2||然后你可以使用 arccos。

场景2:想在单位圆上学习一个角度,意思是θ对比1θ非常重要,所以你的界限是[π,π)

  1. 使用正弦激活并乘以π(前任:z=πsin(x))通过这种方式,您可以模拟围绕单位圆的周期性(激活最终会不断地回到自身)