machine-learning - 使用 ANN 计算位置向量的长度以及它与 x 轴之间的角度

标签 machine-learning neural-network backpropagation

我是神经网络的新手,并试图通过解决以下任务来掌握它的窍门:

给定一个定义 x 轴上方区域的半圆,我想教 ANN 输出指向该区域内任何位置的向量的长度。另外我还想知道它与x轴的夹角。

我认为这是监督学习的经典示例,并使用反向传播来训练前馈网络。该网络由两个输入、两个输出和组织在可变数量隐藏层中的可变数量隐藏神经元构建。

我的训练数据是该区域内的点的随机且未排序的样本以及各自的期望值。点的坐标作为网络的输入,而我使用计算值来最小化误差。

但是,即使经过数千次训练迭代和网络拓扑的经验更改,我也无法生成误差低于 ~0.2 的结果(半径:20.0,拓扑:2/4/2)。

是否存在我没​​有看到的明显陷阱,或者所选方法是否不适合任务?可以使用哪些其他网络类型和/或学习技术来完成任务?

最佳答案

我不会使用可变数量的隐藏层,我只会使用一个。

然后,我不会使用两个输出神经元,我会使用两个单独的人工神经网络,一个用于您想要的每个值。这应该会做得更好,因为我认为你的输出没有明显的相关性。

然后,我会尝试使用 2 到 10 之间的隐藏神经元数量和不同的激活函数(logistictanh,也许是 ReLU)。

之后,您会扩展数据吗?缩放您的输入和输出可能是值得的。 Sigmoid 单位返回较小的数字,因此如果您也可以将输出调整为较小的值(在 [-1 , 1][0, 1] 中),那就太好了。例如,如果想要以度为单位的角度,请在对 ANN 进行训练之前将所有目标除以 360。然后,当人工神经网络返回结果时,将其乘以 360 并查看是否有帮助。

最后,有多种方法可以训练神经网络。梯度下降是经典的,但可能不是最好的。更好的方法是共轭梯度、BFGS 等。参见此处 optimizers如果您正在使用 python - 即使没有,它们也可能会让您了解用您的语言搜索什么内容。

关于machine-learning - 使用 ANN 计算位置向量的长度以及它与 x 轴之间的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29905455/

相关文章:

machine-learning - 增量(在线)反向传播停止标准

tensorflow - 我可以从 Google Cloud ML Engine 下载训练模型吗?

javascript - 为我自己的神经网络反向传播以解决 XOR 未正确收敛的问题

apache-spark - 苏打水与 H20 相比有何优势 机器学习库

machine-learning - NEAT 算法中调整的适应度

python-2.7 - 哪一个更快?逻辑回归还是带有线性核的 SVM?

machine-learning - ANN 训练集缩放

machine-learning - 需要取多少个主成分?

opencv - 将openCV与openVINO一起使用的正确方法是什么?

artificial-intelligence - 激活函数和初始权重的选择是否会影响神经网络是否陷入局部最小值?