具有复杂权重的神经网络

机器算法验证 机器学习 神经网络 梯度下降
2022-04-03 22:33:12

我目前希望给出一个具有复杂值的神经网络起始权重(因为我正在处理的特定任务的性质)。我试图使用来自 scikit learn 的标准神经网络库,它使用的优化函数不适用于复数。因此,我面临以下问题:

数值优化函数f(z)在哪里zC.

我是通过数值包(特别是 python 中的 scipy)来做到这一点的,我注意到这个包中的所有优化方法都是针对域的函数而定制的R. 我玩了一些复杂的优化问题,乍一看,它似乎就像在数值上优化两个变量的函数,因为z=(x,y)z=x+iy.

我知道解析函数的定义比真正的可微函数的定义更严格,因为它应该从所有方向微分Δz=(Δx,Δy)所以事情变得有点复杂。鉴于上述情况,如何处理复域函数的数值优化任务?是否有任何标准例程?

是否有任何用于神经网络和具有复杂权重的梯度下降的作品/标准方法?

2个回答

梯度下降将适用于您的情况。您可以使用 Theano。它支持关于复杂变量的微分。如果您需要更多信息,可以查看此链接。一个重要的注意事项是您的错误函数需要返回一个标量。

我不确定其他算法(例如共轭梯度或准牛顿)是否适用于复数。如果你想实现其他学习算法,你需要验证它们的证明以确保它们也是可能的。

Zimmermann、Minin 和 Kusherbaeva 的 ESANN 2011 论文(Comparison of the Complex Valued and Real Valued Neural Networks Trained with Gradient Descent and Random Search Algorithms)彻底解释了复值和实值网络之间的区别,我推荐阅读.

要点:

  • 前馈函数可能有奇点;您可以通过使用仅在无限值处具有奇点的 sigmoid 复数函数来避免这种情况,并为您的输入使用有界范围以保持安全;

  • 反向传播算法可以通过基于泰勒展开的权重自适应过程来恢复误差 E(W+ΔW)=E(W)+GTΔW+1/2ΔWTGΔW 那么权重适应的规则可以写成 Δw=η.δE/δWη作为学习率。

  • 对初始条件的敏感性导致文章作者推荐使用 RSA(随机搜索算法)而不是直接随机初始化权重。

  • 一旦使用 RSA,复值神经网络将始终收敛,并且据报道与实值网络相当(在实验中略好但不显着)。

总之:如果您的领域需要,您可以在神经网络中使用复杂的权重。但是,您应该花一些时间来构建一个声音特定的库,因为存在一些微妙的陷阱。