Python 具有多值(概率)函数的神经网络回归

Python 具有多值(概率)函数的神经网络回归,python,machine-learning,neural-network,regression,Python,Machine Learning,Neural Network,Regression,我在机器学习方面有点初学者。我一直在想一个相当概念化的问题: 假设我有一个函数X->Y,比如Y=X^2,然后,生成足够的X->Y数据,我可以训练一个神经网络对该函数进行回归,得到任意输入X的X^2。这基本上也是普遍近似定理所建议的 现在,我的问题是,如果我想要逆关系,Y->X?在这种情况下,Y是X的多值函数,例如,对于X>0,X=+-sqrt(Y)。我可以交换X和Y作为输入/输出数据来训练网络,但是对于任何给定的Y,X=sqrt(Y)和X=-sqrt(Y)的概率应该是随机的1/2-1/2。但当然

我在机器学习方面有点初学者。我一直在想一个相当概念化的问题:

假设我有一个函数X->Y,比如Y=X^2,然后,生成足够的X->Y数据,我可以训练一个神经网络对该函数进行回归,得到任意输入X的X^2。这基本上也是普遍近似定理所建议的

现在,我的问题是,如果我想要逆关系,Y->X?在这种情况下,Y是X的多值函数,例如,对于X>0,X=+-sqrt(Y)。我可以交换X和Y作为输入/输出数据来训练网络,但是对于任何给定的Y,X=sqrt(Y)和X=-sqrt(Y)的概率应该是随机的1/2-1/2。但当然,如果用最小平方误差对其进行训练,网络不会知道这是一个多值函数,只会在损失函数上跟随SGD,得到x=0,任意给定y的平均值

因此,我想知道神经网络是否有任何方法可以模拟多值函数?例如,我的猜测是 (1) 神经网络可以输出X的前两个可能值的集合,并使用交叉熵对其进行训练。问题是,如果X是一个向量,甚至是一个矩阵(像位图图像)而不是一个数字,我们不知道Y=X有多少解(很可能是一个无限数,即一个连续的范围),那么“列表”对可能的值和概率的估计是行不通的——理想情况下,神经网络应该输出随机且连续分布在可能的X解上的值。 (2) 也许这属于概率神经网络(PNN)的范畴?PNN模型是否支持向量的给定概率分布(连续或离散)作为其输出?如果是这样的话,有没有可能用Tensorflow+Keras这样的流行框架来实现PNN

(另外,请注意,这与“多变量”不同)函数,在这种情况下,X,Y可以是多分量向量,这仍然是传统网络可以很容易训练的。这里讨论的实际问题是,输出可能是向量的概率分布,这是一个简单的前馈网络无法捕获的,因为它没有内在的随机性。)

谢谢你的帮助


试着阅读以下文章:


本文中提到的Mifflin算法(或其更通用的版本SLQP-GS)是可用的,相应的论文和说明是。

欢迎使用SO,这是关于特定编码问题的;请花点时间阅读和阅读,并注意,要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与SO无关。尝试使用GAN之类的生成模型。这个神经网络的输出是一个随机变量,遵循经过训练的分布。