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

时间:2019-03-22 11:55:24

标签: python machine-learning neural-network regression

我是机器学习领域的一个初学者。这是我一直想知道的一个相当概念性的问题:

假设我有一个函数X-> Y,例如y = x ^ 2,则生成足够的X-> Y数据,我可以训练神经网络对该函数执行回归,并得到x ^ 2任何输入x。基本上,这也是通用近似定理的建议。

现在,我的问题是,如果我想要反关系Y-> X怎么办?在这种情况下,Y是X的多值函数,例如对于X> 0,x = +-sqrt(y)。我可以交换X和Y作为输入/输出数据来训练网络,但是对于任何给定的y,x = sqrt(y)和x = -sqrt(y )。但是,当然,如果使用最小平方误差对其进行训练,则网络将不会知道这是一个多值函数,而对于损失函数,只需遵循SGD并获得x = 0(对于任何给定y。

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

(另外,请注意,这与“多元”函数不同,后者是X,Y可以是多分量向量的情况,这仍然是传统网络可以轻松训练的。实际存在的问题这里的输出可能是向量的概率分布,这是简单的前馈网络无法捕获的,因为它没有固有的随机性。)

谢谢您的帮助!

Image of forward function Y=X^2 (can be easily modeled by network with regression)

Image of inverse function X=+-sqrt(Y) (the network cannot capture the two-value function and outputs the average value X=0 for any Y)

1 个答案:

答案 0 :(得分:0)

尝试阅读以下文章: https://onlinelibrary.wiley.com/doi/abs/10.1002/ecjc.1028

本文提到的Mifflin算法(或更通用的版本SLQP-GS)在here可用,相应的描述为here的论文。