Answers.Body: <p>What you're describing is called a <a href="https://en.wikipedia.org/wiki/Recurrent_neural_network" rel="nofollow noreferrer">recurrent neural network</a>. There are a large number of designs in this family that all have the ability to remember recent inputs and use them in the processing of future inputs. The "Long Short Term Memory" or <a href="http://colah.github.io/posts/2015-08-Understanding-LSTMs/" rel="nofollow noreferrer">LSTM</a> architecture was one of the most successful in this family.</p>
  
  <p>These are actually very widely used in things like self-driving cars too, so, on their own, they are not enough to overcome the brittleness of current models.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-03-10T17:17:21.697Z
Answers.LastActivityDate: 2019-03-10T17:17:21.697Z
Answers.UserDisplayName: John Doucette
Body: <p>With the recent revelation of severe limitations in some AI domains, such as self-driving cars, I notice that neural networks behave with the same sort of errors as in simpler models, i.e. they may be ~100% accurate on test data, but, if you throw in a test sample that is slightly different from anything it's been trained on, it can throw the neural network off completely. This seems to be the case with self-driving cars, where neural networks are miss-classifying modified/grafitied Stop Signs, unable to cope with rain or snowflakes, or birds appearing on the road, etc. Something it's never seen before in a unique climate may cause it to make completely unpredictable predictions. These specific examples may be circumvented by training on modified Stop Signs, or with rain and birds, but that avoids the point: that NN's seem very limited when it comes to generalizing to an environment that is completely unique to its training samples. And this makes sense of course given the way NNs train.</p>
  <p>The current solution seems to be to manually find out these new things that confuse the network and label them as additional training data. But that isn't an AI at all. That isn't &quot;true&quot; generalization.</p>
  <p>I think part of the problem to blame is the term &quot;AI&quot; in and of itself. When all we're doing is finding a global minimum to a theoretical ideal function at some perfect point before over-fitting our training data, it's obvious that the neural network cannot generalize anymore than what is possible within its training set.</p>
  <p>I thought one way that might be possible to get around this is: rather than being static &quot;one unique calculation at a time&quot;, neural networks could remember the last one or two predictions they made, and then their current prediction, and use the result of that to then make a more accurate prediction. In other words, a very basic form of short-term memory.</p>
  <p>By doing this, perhaps, the neural network could see that the raindrops or snowflakes aren't static objects, but are simply moving noise. It could determine this by looking at its last couple of predictions and see how those objects move. Certainly, this would require immense additional computation overhead, but I'm just looking to the future in terms of when processing power increases how NNs might evolve further. Similar to how neural networks were already defined many decades ago, but they were not widely adopted due to the lack of computational power, could this be the same case with something like short-term memory? That we lack the practical computational power for it but that perhaps we could theoretically implement it somehow for some time in the future when we do have it.</p>
  <p>Of course, this short-term memory thing would only be useful when a classification is related to the prior classifications, like with self-driving cars. It's important to know what was observed a few seconds ago in real life when driving. Likewise, it could be important for a neural network to know what was predicted a few live classifications ago. This might also have a use in object detection: perhaps, a representation could be learned for a moving figure in the distance. Speed could now become a representation in the hidden layers and be used in assistance for the identification of distant objects, something not possible when using a set of single static weights.</p>
  <p>Of course, this whole thing would involve somehow getting around the problem of training weights on a live model for the most recent sample. Or, alternatively, perhaps the weights could still remain static but we'd use two or three different models of weights to represent time somehow.</p>
  <p>Nevertheless, I can't help but see a short-term memory of some form as being a requirement, if AI is to not be &quot;so stupid&quot;, when it observes something unique, and if it's to ever classify things based on time and recent observations.</p>
  <p>I'm curious if there's any research papers or other sources that explore any aspect of incorporating time using multiple recent classifications or something else that could be considered a short-term memory of sorts to help reach a more general form of generalization that the neural network doesn't necessarily see in its training, i.e. making it able to avoid noise using time as a feature to help it do so, or using time from multiple recent classifications as a way to estimate speed and use that as a feature?</p>
  <p>I'd appreciate the answer to include some specific experiment or methodology as to how this sort of thing might be added to neural networks (or list it as a source), or if this is not an area of active research, why not.</p>
  
Tags: <reference-request><recurrent-neural-networks><adversarial-ml><generalization><model-request>
Title: Is there any research on models that make predictions by also taking into account the previous predictions?
UserDisplayName: user4779
ThreadText: # Is there any research on models that make predictions by also taking into account the previous predictions?
  
  (Asked by: username_0 on 2019-03-10)
  
  With the recent revelation of severe limitations in some AI domains, such as self-driving cars, I notice that neural networks behave with the same sort of errors as in simpler models, i.e. they may be ~100% accurate on test data, but, if you throw in a test sample that is slightly different from anything it's been trained on, it can throw the neural network off completely. This seems to be the case with self-driving cars, where neural networks are miss-classifying modified/grafitied Stop Signs, unable to cope with rain or snowflakes, or birds appearing on the road, etc. Something it's never seen before in a unique climate may cause it to make completely unpredictable predictions. These specific examples may be circumvented by training on modified Stop Signs, or with rain and birds, but that avoids the point: that NN's seem very limited when it comes to generalizing to an environment that is completely unique to its training samples. And this makes sense of course given the way NNs train.
  
  The current solution seems to be to manually find out these new things that confuse the network and label them as additional training data. But that isn't an AI at all. That isn't "true" generalization.
  
  I think part of the problem to blame is the term "AI" in and of itself. When all we're doing is finding a global minimum to a theoretical ideal function at some perfect point before over-fitting our training data, it's obvious that the neural network cannot generalize anymore than what is possible within its training set.
  
  I thought one way that might be possible to get around this is: rather than being static "one unique calculation at a time", neural networks could remember the last one or two predictions they made, and then their current prediction, and use the result of that to then make a more accurate prediction. In other words, a very basic form of short-term memory.
  
  By doing this, perhaps, the neural network could see that the raindrops or snowflakes aren't static objects, but are simply moving noise. It could determine this by looking at its last couple of predictions and see how those objects move. Certainly, this would require immense additional computation overhead, but I'm just looking to the future in terms of when processing power increases how NNs might evolve further. Similar to how neural networks were already defined many decades ago, but they were not widely adopted due to the lack of computational power, could this be the same case with something like short-term memory? That we lack the practical computational power for it but that perhaps we could theoretically implement it somehow for some time in the future when we do have it.
  
  Of course, this short-term memory thing would only be useful when a classification is related to the prior classifications, like with self-driving cars. It's important to know what was observed a few seconds ago in real life when driving. Likewise, it could be important for a neural network to know what was predicted a few live classifications ago. This might also have a use in object detection: perhaps, a representation could be learned for a moving figure in the distance. Speed could now become a representation in the hidden layers and be used in assistance for the identification of distant objects, something not possible when using a set of single static weights.
  
  Of course, this whole thing would involve somehow getting around the problem of training weights on a live model for the most recent sample. Or, alternatively, perhaps the weights could still remain static but we'd use two or three different models of weights to represent time somehow.
  
  Nevertheless, I can't help but see a short-term memory of some form as being a requirement, if AI is to not be "so stupid", when it observes something unique, and if it's to ever classify things based on time and recent observations.
  
  I'm curious if there's any research papers or other sources that explore any aspect of incorporating time using multiple recent classifications or something else that could be considered a short-term memory of sorts to help reach a more general form of generalization that the neural network doesn't necessarily see in its training, i.e. making it able to avoid noise using time as a feature to help it do so, or using time from multiple recent classifications as a way to estimate speed and use that as a feature?
  
  I'd appreciate the answer to include some specific experiment or methodology as to how this sort of thing might be added to neural networks (or list it as a source), or if this is not an area of active research, why not.
  
  **Tags:** reference-request, recurrent-neural-networks, adversarial-ml, generalization, model-request
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-03-10. Score: 4 | Accepted answer
  
  What you're describing is called a [recurrent neural network](https://en.wikipedia.org/wiki/Recurrent_neural_network). There are a large number of designs in this family that all have the ability to remember recent inputs and use them in the processing of future inputs. The "Long Short Term Memory" or [LSTM](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) architecture was one of the most successful in this family.
  
  These are actually very widely used in things like self-driving cars too, so, on their own, they are not enough to overcome the brittleness of current models.
  
  
  ---
  
  