神经网络的本地逆。

7
我有一个神经网络,它有N个输入节点和N个输出节点,可能还有多个隐藏层和循环,但让我们先不考虑它们。神经网络的目标是学习一个N维变量Y*,给定N维值X。假设神经网络的输出是Y,在学习后应该接近Y*。我的问题是:是否可能获得神经网络输出Y*的逆?也就是说,当放入神经网络时,如何获得会产生Y*的值X*?(或者接近它)
问题的主要部分在于N非常大,通常在10000或100000的数量级,但如果有人知道如何解决没有循环或隐藏层的小型网络问题,这可能已经有所帮助了。谢谢。
5个回答

3
如果您可以选择神经网络,使每个层中的节点数量相同,并且权重矩阵是非奇异的,传递函数是可逆的(例如泄漏ReLU),那么该函数将是可逆的。
这种类型的神经网络只是矩阵乘法、偏置加和传递函数的组合。要求反转,只需按相反顺序应用每个操作的反向操作。即,取输出,应用反向传递函数,乘以最后一层权重矩阵的逆,减去偏置,应用反向传递函数,乘以倒数第二个权重矩阵的逆,以此类推。

请问如何反转LeakyReLU函数? - Emmanuel
@Emmanuel 你搞清楚如何反转一个Leaky ReLU函数了吗? - user157522

2
这是一个可能可以通过autoencoders解决的任务。您也可能对生成模型感兴趣,例如可以叠加形成深度置信网络(DBNs)的限制玻尔兹曼机(RBMs)。RBMs构建了数据v的内部模型h,可以用于重构v。在DBNs中,第一层的h将成为第二层的v,以此类推。

自编码器会复制其输入,而这里的问题是找到网络的反函数。也许您的意思是添加原始网络的镜像,并将复合网络端对端地训练为自编码器? - Yan King Yin

1
以下论文是一个关于从神经网络中学习反转函数的案例研究。它是来自工业界的案例研究,对于理解如何设置问题是一个很好的开始。

这是一篇本科论文,我不知道这位本科生如何对钢铁行业的问题产生兴趣,除非很可能是教授在这方面给他灌输了思想... - Yan King Yin
(不是说它错了...作为应用数学,它完全没问题) - Yan King Yin
这里有一篇更深入分析的论文: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.17.5892&rep=rep1&type=pdf - Yan King Yin

1

zenna是正确的。 如果您使用双射(可逆)激活函数,您可以逐层反转,减去偏差并取伪逆(如果每个层具有相同数量的神经元,则在某些温和的正则条件下这也是精确逆),重申条件:dim(X)==dim(Y)==dim(layer_i),det(Wi)不等于0。

一个例子: Y = tanh( W2*tanh( W1*X + b1 ) + b2 ) X = W1p*( tanh^-1( W2p*(tanh^-1(Y) - b2) ) -b1 ),其中W2p和W1p分别表示W2和W1的伪逆矩阵。


1
你有关于这种方法的数值稳定性的详细信息吗?在我看来,它似乎可能会出现严重问题。 - user2180519
是的,它可能会出现这种情况,例如如果 |W2p*(tanh^-1(Y) - b2) |>1,那么函数参数将超出 tanh^-1(\cdot) 的定义域。 - userčina
但这种情况不会发生,因为sigmoid或tanh的输出范围都在[0,1]或[-1,1]之间。 - Yan King Yin
实际上,如果权重矩阵是非奇异的,那么它的逆矩阵是唯一的。但是在实践中,小的扰动(在“输出”方面)会导致巨大的波动(在“输入”方面)。这是混沌的特征。 - Yan King Yin

1
一种获得所需的x以产生期望的y的替代方法是从随机的x(或输入作为种子)开始,然后通过梯度下降(类似于反向传播的算法,不同之处在于找到的不是权重和偏差的导数,而是x的导数。也不需要小批量处理),重复调整x直到产生的y接近所需的y。这种方法的优点是允许输入种子(起始x,如果没有随机选择)。此外,我有一个假设,即最终的x将与初始x(种子)有些相似,这意味着该算法具有根据神经网络应用的上下文进行转置的能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接