Reputation: 355
I have been searching online for papers on inverting feedforward neural networks and it turns out there are NLP and LP algorithms for inverting them. But most of the papers were interested in receiving an inversed mapping one-to-many. I am wondering about this kind of problems:
Say I have a function z=x+y and I will teach my FFNN to approximate this function. Once it has been taught, I would like to take for example x and z as inputs and would like to get y as output. So it is not exactly mapping one-to-many, but is it any easier than problem of having just z and wanting to compute x and y? Are there any algorithms for performing such task?
Upvotes: 0
Views: 364
Reputation: 1259
To best of my knowledge methods that inverse a network are usually Adversarial methods (GANs) or do so by optimizing the networks output (let's say optimizing |f(x, y') - z| where y' is the output in your problem). The first method is more popular.
Let's talk about the first method more, we call the network that you trained to learn x + y = z network D. You will have to teach a network (let's call it G) to get x and z and produce y and then D checks if that's the correct answer (i.e. if x + y = z), we continue this until G learns to satisfy D (I have left some detail out, you can learn more by studying about GANs). However, this is more like reformulating our problem.
If you're familiar with how NNs work, you'll know that it's hard to train a network by determining its desired output and part of input, since we can't use back propagation.
Finally, you might want to check this paper out. there is not much technical details but it is proposing precisely what you asked : https://openreview.net/forum?id=BJxMQbQ3wm
Upvotes: 1