Answers.Body: <p>To make the dynamic amount of features easier to work with, you can model it as a sequence modeling problem, where for the new task your sequence length increases. (where each &quot;timestep&quot; is a single feature)</p>
  <p>Continual learning literature might still be the right place to look, as they try to solve the same problem of catastrophic forgetting that your problem runs into. <br></p>
  <p>Solutions might work are <strong>generative replay</strong> (catastrophic forgetting literature). Basically a generator that generates samples as if you're sampling from your dataset. Just combine the samples from the generator with the new samples for A and train on that.
  So you will have short sequences from the training dataset generated by  the generator and your longer sequences (longer because of the additional features) in your current training set.</p>
  <p>Arxiv:1705.08690 (<em>Continual Learning with Deep Generative Replay</em>)</p>
  <p>Or <strong>meta learning</strong> how to incrementally learn. (might be able to make this work for your problem but generative replay is definitively the easiest)</p>
  <p>Arxiv:2002.09571 (<em>Learning to Continually Learn</em>) <br>
  Arxiv:1909.00025 (<em>Meta-Learning with Warped Gradient Descent</em>)<br></p>
  <p>Where the whole idea generally is to meta learn another network (that controls the main network) or have meta learned &quot;fixed&quot; layers that make sure that when you update the main network with new information the old information isn't lost.
  So you can learn incrementally without (or at-least less) catastrophic forgetting.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-01-10T12:13:54.343Z
Answers.LastActivityDate: 2022-01-10T13:20:13.080Z
Answers.LastEditDate: 2022-01-10T13:20:13.080Z
Answers.UserDisplayName: hal9000
Body: <p>We shall assume that we have a trained neural network model for some task <span class="math-container">$A$</span>. The dataset used to train the model contained some <span class="math-container">$n$</span> features per sample. Using this dataset, we were able to train a classifier.</p>
  <p>After some time, I get some more data for the same task <span class="math-container">$A$</span>, but with additional features (all relevant). I want to use this new data to improve my existing classifier by utilizing the weights. (whatever it learned from the initial dataset).</p>
  <p>This seems very similar to the problem of transfer learning, but my aim is to use an existing model architecture without modifying it too much and make it a better classifier for the same task A without having to do any retraining. (We can assume that data is lost after training, and all we have are the parameters/weights of our model)</p>
  <p>After doing some reading, this could be a use case of continual learning but most of the work is for training an existing model for different tasks. I am not able to fully wrap my head around how I could use the same model for the same task, but instead, the structure of the data is changing over time. Can you also refer me to any literature in this space, if any?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-06-09T18:30:41.607Z
Comments.Text: When you say that the data is lost, isn't there a way to record it while you're training (e.g. in a database?). That would make the setup simpler as you'd be able to finetune your model on both the old and the new data.
Comments.UserDisplayName: Raphael Lopez Kaufman
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-10-02T22:32:15.687Z
Comments.Text: What kind neural network do you want to train? Like CNN, RNN, ResNet, LSTM, GRU, Super Resolution, GPT, GAN and etc. I think suggestion would be widely different depending on neural network structure/model.
Comments.UserDisplayName: Cloud Cho
Tags: <neural-networks><deep-learning><incremental-learning><representation-learning>
Title: How can I adapt a trained neural network model to learn from newer data containing additional features?
UserDisplayName: user52084
ThreadText: # How can I adapt a trained neural network model to learn from newer data containing additional features?
  
  (Asked by: username_0 on 2022-01-10)
  
  We shall assume that we have a trained neural network model for some task $A$. The dataset used to train the model contained some $n$ features per sample. Using this dataset, we were able to train a classifier.
  
  After some time, I get some more data for the same task $A$, but with additional features (all relevant). I want to use this new data to improve my existing classifier by utilizing the weights. (whatever it learned from the initial dataset).
  
  This seems very similar to the problem of transfer learning, but my aim is to use an existing model architecture without modifying it too much and make it a better classifier for the same task A without having to do any retraining. (We can assume that data is lost after training, and all we have are the parameters/weights of our model)
  
  After doing some reading, this could be a use case of continual learning but most of the work is for training an existing model for different tasks. I am not able to fully wrap my head around how I could use the same model for the same task, but instead, the structure of the data is changing over time. Can you also refer me to any literature in this space, if any?
  
  **Tags:** neural-networks, deep-learning, incremental-learning, representation-learning
  
  > **Comments:**
  > **username_1**: When you say that the data is lost, isn't there a way to record it while you're training (e.g. in a database?). That would make the setup simpler as you'd be able to finetune your model on both the old and the new data.  
  > **username_2**: What kind neural network do you want to train? Like CNN, RNN, ResNet, LSTM, GRU, Super Resolution, GPT, GAN and etc. I think suggestion would be widely different depending on neural network structure/model.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_3 on 2022-01-10. Score: 1
  
  To make the dynamic amount of features easier to work with, you can model it as a sequence modeling problem, where for the new task your sequence length increases. (where each "timestep" is a single feature)
  
  Continual learning literature might still be the right place to look, as they try to solve the same problem of catastrophic forgetting that your problem runs into.
  
  Solutions might work are **generative replay** (catastrophic forgetting literature). Basically a generator that generates samples as if you're sampling from your dataset. Just combine the samples from the generator with the new samples for A and train on that.
  So you will have short sequences from the training dataset generated by the generator and your longer sequences (longer because of the additional features) in your current training set.
  
  Arxiv:1705.08690 (*Continual Learning with Deep Generative Replay*)
  
  Or **meta learning** how to incrementally learn. (might be able to make this work for your problem but generative replay is definitively the easiest)
  
  Arxiv:2002.09571 (*Learning to Continually Learn*)   
  Arxiv:1909.00025 (*Meta-Learning with Warped Gradient Descent*)
  
  Where the whole idea generally is to meta learn another network (that controls the main network) or have meta learned "fixed" layers that make sure that when you update the main network with new information the old information isn't lost.
  So you can learn incrementally without (or at-least less) catastrophic forgetting.
  
  
  ---
  
  