输出是周期变量时,怎样用神经网络表示输出以及设计损失函数

遇到了同样的问题,也是用网络对角度进行拟合。
实验加分析后发现,角度变量的取值应该是在一个流形(圆)上,用一个标量不能反映角度的周期性,也就是说 【输出是周期变量时,怎样用神经网络表示输出以及设计损失函数】 输出是周期变量时,怎样用神经网络表示输出以及设计损失函数
输出是周期变量时,怎样用神经网络表示输出以及设计损失函数
实际上是同一个点,距离为0,而它们之间的实际距离是 输出是周期变量时,怎样用神经网络表示输出以及设计损失函数
。只要输出是一维的标量,都很难避免这个问题。
所以,我们换一个思路,把网络的输出层设为K-\u0026gt;2的线性层,分别对应角度的正弦值和余弦值。
训练的时候,用网络的输出来拟合真实角度的正余弦值,目标函数可以用L2范数或其它。
预测的时候,用函数
输出是周期变量时,怎样用神经网络表示输出以及设计损失函数

把正余弦值变换成角度。
经过测试,网络可以收敛。

■网友
方法三的loss function不太make sense.
我的直觉是,两个loss, 一个regress顺时针旋转最小角度,一个regress逆时针旋转最小角度。都只有唯一解,可以规避周期性的问题。测试和实现上也都更加简单。

■网友
和我想的一样。方法三最妙。不过只是直觉:连续函数好拟合,那种数据稍微变化一点,输出瞬间跳动的难一些。训练的时候可以加个正则项试试,让平方和倾向1。
■网友
你把你的y normalize到[0, 1)然后直接用sigmoid输出不就好了?


    推荐阅读