我有一个有N个输入节点和N个输出节点的神经网络,其中可能有多个隐藏层和递归,但首先让我们忘记这些。神经网络的目标是学习N维变量Y*,给定N维值X。假设神经网络的输出是Y,学习后应该接近Y*。我的问题是:是否有可能得到输出Y*的神经网络的逆?也就是说,当我放入神经网络时,我如何获得值X*,它将产生Y*?(或与之类似的东西)
问题的主要部分是N非常大,通常在10000或100000量级,但如果有人知道如何解决没有递归或隐藏层的小型网络,这可能已经有所帮助。谢谢。
发布于 2016-04-16 04:19:33
如果您可以选择这样的神经网络,使得每层中的节点数量相同,并且权重矩阵是非奇异的,并且传递函数是可逆的(例如,泄漏relu),则该函数将是可逆的。
这种神经网络简单地由矩阵乘法、偏差加法和传递函数组成。要反转,您只需要以相反的顺序应用每个操作的反转。即取输出,应用逆传递函数,将其乘以最后一个权重矩阵的逆,减去偏差,应用逆传递函数,将其乘以倒数第二权重矩阵的逆,依此类推。
发布于 2013-02-28 18:03:32
这是一个也许可以用autoencoders解决的任务。您可能还会对生成模型感兴趣,例如可以堆叠形成深度信念网络(DBNs)的受限玻尔兹曼机(RBMs)。RBM建立可用于重建v的数据V的内部模型H。在DBN中,第一层的H将是第二层的V,依此类推。
发布于 2016-11-24 18:12:41
泽娜是对的。如果你使用双射(可逆)激活函数,你可以逐层求逆,减去偏差,然后取伪逆(如果每层有相同数量的神经元,在一些温和的规则条件下,这也是精确的逆)。重复条件: dim(X)==dim(Y)==dim(layer_i),det(Wi) not =0
例如:Y= tanh( W2*tanh( W1*X + b1 )+ b2) X= W1p*( tanh^-1( W2p*(tanh^-1(Y) - b2 )) -b1 ),其中W2p和W1p分别表示W2和W1的伪逆矩阵。
https://stackoverflow.com/questions/15131713
复制相似问题