Answers.Body: <p>The problem you describe is a matter of perspective; although you want to predict the inputs, defining the outputs of the BB (blackbox) as the inputs to a new system (an inverse BB) whose outputs are that of the inputs of the original BB, then one can use previous literature. There are some assumptions using this method such as "each input can be calculated from an inverse function using 1 or more outputs" so take precaution.</p>
  
  <p>I'd recommend reading through <a href="https://pdfs.semanticscholar.org/91a6/d6e2ece6acde237073b4fc102efca682ce0c.pdf" rel="nofollow noreferrer">this</a> paper by Richard Sutton. Its introduction defines the problem mathematically and references some common approaches as well as its own method.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-09-12T04:28:20.363Z
Answers.Text: no practice in that paper
Answers.UserDisplayName: Denis Leonov
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-09-12T04:50:44.313Z
Answers.Text: Do you mean there is no code attached? They have experiments and refer to other methods. Understanding your problem mathematically and concretely is important to solving it.
Answers.UserDisplayName: Jaden Travnik
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-09-12T03:40:23.087Z
Answers.LastActivityDate: 2017-09-12T03:40:23.087Z
Answers.UserDisplayName: Jaden Travnik
Answers.Body: <p>One of the biggest problems in training neural networks is creating high quality data sets. E.g. if you want to classify pictures, you need a huge set of correctly classified pictures as training input. In your scenario, you can automate this laborious job by feeding random data to your blackbox and store the output. Voila, you have your training data.</p>
  
  <p>Your neural network will have the same input and output structure as your blackbox. You can use your generated training data the same way you you would use manually generated training data. I cannot provide any actual implementation, because the training mechanism depends on your technology stack incl. the frameworks you are using. But there is nothing out of the ordinary in your scenario when it comes to the training process itself and you can follow one of the many available tutorials for training neural networks - a pretty basic one for example would be this <a href="https://elitedatascience.com/keras-tutorial-deep-learning-in-python" rel="nofollow noreferrer">tutorial for Keras</a> (if that's your choice of framework).</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-25T05:11:49.480Z
Answers.LastActivityDate: 2017-10-25T05:11:49.480Z
Answers.UserDisplayName: Demento
Body: <p>Imagine that we have a black box that has 100 binary inputs and 30 binary outputs.</p>
  <p>We can generate values for inputs and get a relevant set of outputs.</p>
  <p>How does one teach a neural network to predict the binary inputs (or list of input values with probabilities) using the outputs?</p>
  
Tags: <neural-networks><machine-learning><deep-learning>
Title: How does one teach a neural network to predict the binary inputs using the outputs?
UserDisplayName: Denis Leonov
ThreadText: # How does one teach a neural network to predict the binary inputs using the outputs?
  
  (Asked by: username_0 on 2017-09-11)
  
  Imagine that we have a black box that has 100 binary inputs and 30 binary outputs.
  
  We can generate values for inputs and get a relevant set of outputs.
  
  How does one teach a neural network to predict the binary inputs (or list of input values with probabilities) using the outputs?
  
  **Tags:** neural-networks, machine-learning, deep-learning
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2017-09-12. Score: 3
  
  The problem you describe is a matter of perspective; although you want to predict the inputs, defining the outputs of the BB (blackbox) as the inputs to a new system (an inverse BB) whose outputs are that of the inputs of the original BB, then one can use previous literature. There are some assumptions using this method such as "each input can be calculated from an inverse function using 1 or more outputs" so take precaution.
  
  I'd recommend reading through [this](https://pdfs.semanticscholar.org/91a6/d6e2ece6acde237073b4fc102efca682ce0c.pdf) paper by Richard Sutton. Its introduction defines the problem mathematically and references some common approaches as well as its own method.
  
  > **Comments:**
  > **username_0**: no practice in that paper  
  > **username_1**: Do you mean there is no code attached? They have experiments and refer to other methods. Understanding your problem mathematically and concretely is important to solving it.  
  
  ---
  
  ### Answer by username_2 on 2017-10-25. Score: 2
  
  One of the biggest problems in training neural networks is creating high quality data sets. E.g. if you want to classify pictures, you need a huge set of correctly classified pictures as training input. In your scenario, you can automate this laborious job by feeding random data to your blackbox and store the output. Voila, you have your training data.
  
  Your neural network will have the same input and output structure as your blackbox. You can use your generated training data the same way you you would use manually generated training data. I cannot provide any actual implementation, because the training mechanism depends on your technology stack incl. the frameworks you are using. But there is nothing out of the ordinary in your scenario when it comes to the training process itself and you can follow one of the many available tutorials for training neural networks - a pretty basic one for example would be this [tutorial for Keras](https://elitedatascience.com/keras-tutorial-deep-learning-in-python) (if that's your choice of framework).
  
  
  ---
  
  