Answers.Body: <p>The first classic paper your present uses a genetic algorithm (GA), while you mention genetic programming (GP). In short, a GA uses an evolutionary process to evolve a fixed-length vector, normally a bit string, while a GP evolves variable-length decision trees, which could be a computer program or mathematical function.</p>
  <p>An autoencoder is something that automatically encodes or decodes something. For example, a noisy image is decoded to the original image (very simplified I know), the point here is <em>automatically</em>, so, without any defined process, an autoencoder can &quot;learn&quot; how to remove the noise from the image.</p>
  <p>Generally, an autoencoder is made using a neural network (NN). The noisy image is read in as input and the output is a clear image. To train the NN, backpropagation is used. For backpropagation to work, an error is needed to calculate the weight changes. Alternatively, the weights could be encoded as a vector. A fixed-length vector is then evolved using a GA to evolve the weights of the NN. This is what the &quot;classic paper&quot; mentioned does.</p>
  <p>Using a GA to evolve the weights of a NN is not really efficient, because weights affect each other which means each time crossover happens the weights are totally messed up and the GA can easily get stuck in a local optimum. Gradient descent is probably more efficient.</p>
  <p>The structure of a multi-layered network is important. Here, gradient descent is still used to update the weights, but a GP could be used to evolve the structure of the NN.</p>
  <p>Alternatively, the GP itself could be used to evolve an autoencoder without using a NN. Here, the chromosome will contain nodes such as mathematical operations or computer code that would alter the input to produce the output.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-01-19T17:56:42.023Z
Answers.Text: The second link should now work. So, you may want to address that part of the question too.
Answers.UserDisplayName: nbro
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-12-07T19:03:09.033Z
Answers.LastActivityDate: 2021-01-19T17:56:19.467Z
Answers.LastEditDate: 2021-01-19T17:56:19.467Z
Answers.UserDisplayName: Jason
Body: <p>I am trying to understand how genetic programming can be used in the context of auto-encoders. Currently, I am going through 2 papers</p>
  <ol>
  <li><p><a href="https://www.ijcai.org/Proceedings/89-1/Papers/122.pdf" rel="nofollow noreferrer">Training Feedforward Neural Networks Using Genetic Algorithms</a> (a classific one)</p>
  </li>
  <li><p><a href="http://www.springer.com/cda/content/document/cda_downloaddocument/9783319700953-c2.pdf" rel="nofollow noreferrer">Training Deep Autoencoder via VLC-Genetic Algorithm</a></p>
  </li>
  </ol>
  <p>However, these papers don't really help me to grasp the concept of genetic programming in this specific context, maybe because I'm not very familiar with GP.</p>
  <p>I understand that autoencoders are supposed to reconstruct the instances of the particular classes they have been trained on. If another fed instance is not reconstructed as expected, then it could be called an anomaly.</p>
  <p>But how can genetic programming be used in the context of auto-encoders? You are still required to create a neural network, but, instead of a feed-forward one, you use autoencoder, but how exactly?</p>
  <p>I would appreciate any tutorials or explanations.</p>
  
Tags: <reference-request><applications><autoencoders><genetic-programming>
Title: How can genetic programming be used in the context of auto-encoders?
UserDisplayName: Gabriele
ThreadText: # How can genetic programming be used in the context of auto-encoders?
  
  (Asked by: username_0 on 2018-04-17)
  
  I am trying to understand how genetic programming can be used in the context of auto-encoders. Currently, I am going through 2 papers
  
  1. [Training Feedforward Neural Networks Using Genetic Algorithms](https://www.ijcai.org/Proceedings/89-1/Papers/122.pdf) (a classific one)
  2. [Training Deep Autoencoder via VLC-Genetic Algorithm](http://www.springer.com/cda/content/document/cda_downloaddocument/9783319700953-c2.pdf)
  
  However, these papers don't really help me to grasp the concept of genetic programming in this specific context, maybe because I'm not very familiar with GP.
  
  I understand that autoencoders are supposed to reconstruct the instances of the particular classes they have been trained on. If another fed instance is not reconstructed as expected, then it could be called an anomaly.
  
  But how can genetic programming be used in the context of auto-encoders? You are still required to create a neural network, but, instead of a feed-forward one, you use autoencoder, but how exactly?
  
  I would appreciate any tutorials or explanations.
  
  **Tags:** reference-request, applications, autoencoders, genetic-programming
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-12-07. Score: 1
  
  The first classic paper your present uses a genetic algorithm (GA), while you mention genetic programming (GP). In short, a GA uses an evolutionary process to evolve a fixed-length vector, normally a bit string, while a GP evolves variable-length decision trees, which could be a computer program or mathematical function.
  
  An autoencoder is something that automatically encodes or decodes something. For example, a noisy image is decoded to the original image (very simplified I know), the point here is *automatically*, so, without any defined process, an autoencoder can "learn" how to remove the noise from the image.
  
  Generally, an autoencoder is made using a neural network (NN). The noisy image is read in as input and the output is a clear image. To train the NN, backpropagation is used. For backpropagation to work, an error is needed to calculate the weight changes. Alternatively, the weights could be encoded as a vector. A fixed-length vector is then evolved using a GA to evolve the weights of the NN. This is what the "classic paper" mentioned does.
  
  Using a GA to evolve the weights of a NN is not really efficient, because weights affect each other which means each time crossover happens the weights are totally messed up and the GA can easily get stuck in a local optimum. Gradient descent is probably more efficient.
  
  The structure of a multi-layered network is important. Here, gradient descent is still used to update the weights, but a GP could be used to evolve the structure of the NN.
  
  Alternatively, the GP itself could be used to evolve an autoencoder without using a NN. Here, the chromosome will contain nodes such as mathematical operations or computer code that would alter the input to produce the output.
  
  > **Comments:**
  > **username_2**: The second link should now work. So, you may want to address that part of the question too.  
  
  ---
  
  