我正在训练一个神经网络,给定一些输入,这里我们称之为x和y,它能够预测输出z,所以z=f(x,y)一旦神经网络被正确训练,我希望能够获得一个模型,给定z和x,返回另一个输入:我的意思是要得到这样的模型:y = g (x, z)这在Tensorflow中可能吗?提前谢谢你!
这个问题让我左右为难。
如果你认为理论上当且仅当你的网络没有像ReLU这样的非线性,并且有可逆的权重矩阵(加上偏置),这是可能的。然而,当你的维度增加时,矩阵乘法仍然是一个问题。
但在实践中,机器学习模型倾向于用给定的输入概括问题. 如果你可以为f(x,y)建立一个模型那么你也可以为g(x,z)建立另一个模型因为问题没有太大的不同。如果你考虑复杂的模型,它将不实用. 这样做对我来说也没有意义。这将是知识的损失。
所以即使你能做到,它也需要很多额外的工作。在我看来,它不值这个奖。换一种新模式应该不会那么痛苦。
你不能反转一个通用的非线性神经网络,但是有一个神经网络架构可以让你简单地做到这一点(首先在这里提出,第3.2节https://arxiv.org/pdf/1605.08803.pdf)。
基本上,你把输入分割成2个向量,u1和u2,然后像这样变换它:
v1 = f1(u2) + g1(u2)u1
v2 = u2
则逆为:
u1 = (v1 - f(v2))/g(v2)
u2 = v2
请注意,要计算一个逆需要除以g(乘以g逆),所以你必须确保g的逆存在。