Patent Publication Number: US-2020285940-A1

Title: Machine learning systems with memory based parameter adaptation for learning fast and slower

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to U.S. Provisional Application No. 62/578,319, filed on Oct. 27, 2017. 
    
    
     BACKGROUND 
     This specification relates to systems and methods implementing a memory structure in a machine learning system such as an artificial neural network. 
     Neural networks are machine learning models that employ one or more layers of nonlinear units to predict an output for a received input. Some neural networks include one or more hidden layers in addition to an output layer. The output of each hidden layer is used as input to the next layer in the network, i.e., the next hidden layer or the output layer. Each layer of the network generates an output from a received input in accordance with current values of a respective set of parameters. 
     Some neural networks are recurrent neural networks. A recurrent neural network is a neural network that receives an input sequence and generates an output sequence from the input sequence. In particular, a recurrent neural network can use some or all of the internal state of the network from a previous time step in computing an output at a current time step. An example of a recurrent neural network is a long short term (LSTM) neural network that includes one or more LSTM memory blocks. Each LSTM memory block can include one or more cells that each include an input gate, a forget gate, and an output gate that allow the cell to store previous states for the cell, e.g., for use in generating a current activation or to be provided to other components of the LSTM neural network. 
     Neural networks can be used in various ways. For example, neural networks are often used as part of a reinforcement learning system in which an agent interacts with an environment by performing actions that are selected by the reinforcement learning system in response to receiving observations that characterize the current state of the environment. 
     Some reinforcement learning systems select the action to be performed by the agent in response to receiving a given observation in accordance with an output of a neural network. 
     SUMMARY 
     This specification describes methods and systems which may be implemented as computer programs on one or more computers in one or more locations for processing an input data item. 
     In broad terms a neural network function approximator as described herein comprises a neural network coupled to an auxiliary or episodic memory. The neural network slowly learns to output an approximate function of an input to the network whilst the auxiliary memory allows the function approximator to adapt quickly to new information. Thus the neural network, which may include a convolutional or recurrent neural network, has an input, typically a vector, and an output and is trained so that the output approximates a function of the input, using a loss function. The auxiliary memory is coupled to receive an intermediate output from the neural network, which represents a feature or embedding of the input to the neural network. The auxiliary memory produces a memory output in response to the feature or embedding at a memory input. The memory output is used to temporarily adapt the parameters (weights) of one or more layers of the neural network, preferably one or more output layers of the neural network. These one or more layers may thus be a sub-network of the neural network. The adapted parameters are used to produce an output from the neural network function approximator, for example at inference time, but the modifications to these parameters may then be discarded. The parameters may be slowly changed by training the neural network using any suitable loss function, for example in the usual manner. 
     The memory output may comprise one or more memory values for use in approximating the function; the values may be, for example, memory values representing probabilities such as logits. The memory output provides a local context for the input, that is because the memory output is derived from a lookup using the input the memory output is likely to be relevant to the input. Using an intermediate feature to perform the lookup makes it more likely that the lookup employs a semantically meaningful feature of the input. 
     The lookup is preferably a soft lookup, based on similarity between the feature or embedding at the input and stored features indexing the memory values. The memory output may therefore comprise multiple values, each weighted by a corresponding similarity function or kernel which measures the similarity of an indexing element or key to an input query. The indexing elements or keys of the memory may have the same format as the lookup feature/embedding. 
     In principle the values retrieved from the memory could simply be averaged or combined in a weighted average, for use in determining a function approximator output value. However this can be improved upon. Thus in some implementations the parameters of the neural network, more particularly the parameters of the sub-network part of the neural network may be adapted using the memory values whilst generating the function approximator output, but preferably only temporarily. In this way the function approximator the values stored in the memory can be used to correct the output of the neural network before the parameters of neural network have been trained to approximate new data; the neural network learns to approximate the new data over slower time. A gradient descent method may be used to adapt the parameters of the sub-network, preferably starting from the current parameters of the neural network sub-network. This may adapt the parameters of the sub-network so that the output of the neural network function approximator more closely approximates a function defined by the values stored in the memory. For example a suitable loss function may comprise a weighted sum or average of differences between the values stored in the memory and those provided by the sub-network; the weights may be defined by a measure of similarity between the query feature/embedding and the key or indexing features of the memory. Optionally gradients from this training may be backpropagated beyond the sub-network to adapt parameters of the neural network in layers before the intermediate output, which may help the neural network to learn useful representations. 
     Values may be stored in the auxiliary memory using any of a variety of strategies. For example a new entry may be made every time a new feature/embedding is encountered; or every time a new feature/embedding is encountered which is different to an existing key by more than a threshold measure. The values may be stored during training. The values stored depend upon the application; for example in a classification task a value may be a classification or classification probability, or in a reinforcement learning task that stored value may be, for example, a 1-step or n-step Q-value estimate. 
     The auxiliary memory may be physically or logically separate from the neural network and/or distributed, for example across one or more data repositories. Where the memory is trained it may be trained in conjunction with or separately from the neural network. In some implementations the auxiliary memory may be a differentiable memory such as the Differentiable Neural Dictionary described in “Neural Episodic Control”, Pritzel et al, arXiv:1703.01988. However it is not essential that the memory be differentiable because gradients need not flow back through the memory. Although Pritzel et al, describes a memory used with a neural network, the method/systems described here are different, for example because they use the memory to change weights of the neural network rather than using the output of the memory directly. 
     Although in some implementations the function approximator comprises a neural network other models with adaptable parameters may also be employed, for example a regression model. Thus more generally in the above description the neural network may be replaced by a model which models the output function and the auxiliary memory may be employed to adapt parameters of a subset of the model. 
     The approximated function may be any function. For example the system may implement a classifier and the function may define a probability that an input belongs to a class. Alternatively the input may define a sequence such as a sequence of words or parts of words in a natural language, or a waveform or encoded waveform; preferably the neural network then comprises a recurrent neural network. 
     In some implementations the neural network function approximator may comprise part of a reinforcement learning system. Thus the input may comprise an observation of a real or simulated environment, or data characterizing a current state of the environment. The output may then indicate an action to be performed by the agent operating in the environment in response to the received data. The output may identify a particular action, or may provide a probability distribution over a set of possible actions, or may provide a Q-value for an action. The environment may be a real-world environment; the agent may be agent a mechanical agent such as a robot interacting with the environment to accomplish a specific task or an autonomous or semi-autonomous vehicle navigating through the environment; the actions may be control outputs to control the robot or the autonomous vehicle. 
     In still other examples the real-world environment may be a manufacturing plant or service facility, the observations may relate to operation of the plant or facility, for example to resource usage such as power consumption, and the agent may control actions or operations in the plant/facility, for example to reduce resource usage. 
     In some other applications the agent may control actions in an environment comprising items of equipment, for example in a data center or grid mains power or water distribution system, or in a manufacturing plant. Then the observations may comprise observations of power or water usage by equipment, or observations of power generation or distribution control, or observations of usage of a resource or of waste production. The agent may control actions in the environment to increase efficiency, for example by reducing resource usage, and/or reduce the environmental impact of operations in the environment, for example by reducing waste. 
     In a first aspect there is provided a method of processing an input data item. The method may comprise processing the input data item using a neural network to generate output data, wherein the neural network comprises a first sub-network and a second sub-network. The first and second sub-networks may comprise successive neural network processing stages of the neural network. The processing may comprise: processing, by the first sub-network, the input data to generate a query data item; retrieving, from a memory storing data point-value pairs, at least one data point-value pair based upon the query data item; modifying the second sub-network based upon the retrieved at least one data point-value pair; and generating the output data based upon the modified second sub-network to generate the output data. 
     More generally, however, the input data item may be processed according to the above method using any sort of parametric model, such as a regression model, the comprising a first sub-model and a second sub-model. At least the second sub-model should have continuous parameters or weights. 
     Thus in some implementations the method/system modifies weights of the second sub-model during inference, although the weights may also be modified during training. Preferably but not essentially the weights are modified temporarily, and may be reset to their previous values after modification for inference. This can provide advantages as described later including more accurate inference with reduced training, reduced model for example neural network size, and reduced compute requirements. 
     In some implementations modifying the second sub-network comprises modifying the weights of the second sub-network whilst leaving the inputs to the second sub-network unchanged. The weights may be modified temporarily based on the memory retrieval, to allow the system/method to rapidly adapt for inference, but the original weights, or a close approximation of these, may then be replaced to allow learning (training) to take place in slower time. Thus the modified weights (temporarily) modify a parametric model, in some implementations a neural network, but there may be no memory-based change to the input/source of data for the second sub-network, which is still the output of the first sub-network. Instead the weights may be adapted in response to a stored local context for the input data item retrieved from the memory. The memory output may be indexed by features of the input, which may be learned features. Local context may refer to a process weighting memory outputs by the similarity of their indexing features to one or more corresponding features extracted from the input. 
     Modifying the second sub-network based upon the retrieved at least one data point-value pair may comprise generating a plurality of weights for the second sub-network. Generating weights may comprise initializing and/or adapting weights of the second sub-network. That is, weights of the second sub-network may be modified based on an output from the memory prior to processing the input data or data generated therefrom. The weights are typically weights associated with nodes of the sub-network. For example, the second sub-network may be trained in an initial training phase in any convenient way. The weights of the trained second sub-network may then be modified based upon data obtained from the memory. 
     The plurality of weights may be generated based upon a relationship between a data point and a value of the data point-value pairs. Modifying the second sub-network based upon the retrieved at least one data point-value pair may comprise minimizing a loss function. The loss function may be based upon a relationship between the at least one data point-value pair and the second sub-network. The loss function may be further based upon the query data item. For example, the loss function may be weighted based upon a relationship between the query data item and the data point-value pair. The weighting may, for example, weight data point-value pairs that have a high degree of similarity to the query data item highly such that the influence of the data point-value pairs having a high degree of similarity is relatively high, whereas data point-value pairs that have a low degree of similarity to the query data item may have a relatively low weight. 
     For example, a set of weights θ for the second subset may be determined by minimizing a local version of the negative log-likelihood (NLL): 
     
       
         
           
             
               θ 
               x 
             
             = 
             
               
                 argmin 
                 θ 
               
                
               
                 L 
                  
                 
                   ( 
                   
                     x 
                     , 
                     θ 
                     , 
                     D 
                   
                   ) 
                 
               
                
               
                   
               
                
               with 
             
           
         
       
       
         
           
             
               L 
                
               
                 ( 
                 
                   x 
                   , 
                   θ 
                   , 
                   D 
                 
                 ) 
               
             
              
             
                 
             
             = 
             
               
                 ∑ 
                 
                   i 
                   = 
                   1 
                 
                 N 
               
                
               
                 
                   K 
                    
                   
                     ( 
                     
                       
                         
                           f 
                           γ 
                         
                          
                         
                           ( 
                           x 
                           ) 
                         
                       
                       , 
                       
                         h 
                         i 
                       
                     
                     ) 
                   
                 
                  
                 
                   ( 
                   
                     
                       
                         
                           g 
                           θ 
                         
                          
                         
                           ( 
                           
                             h 
                             i 
                           
                           ) 
                         
                       
                       
                         y 
                         i 
                       
                     
                     - 
                     
                       log 
                        
                       
                         ( 
                         
                           
                             ∑ 
                             
                               k 
                               = 
                               1 
                             
                             c 
                           
                            
                           
                             e 
                             
                               
                                 
                                   g 
                                   θ 
                                 
                                  
                                 
                                   ( 
                                   
                                     h 
                                     i 
                                   
                                   ) 
                                 
                               
                               k 
                             
                           
                         
                         ) 
                       
                     
                   
                   ) 
                 
               
             
           
         
       
     
     where: 
     K is a smoothing kernel that weights the importance of each of the at least one data point-value pairs h i , y i  based upon its similarity to the query data item f y (x) corresponding to a hidden layer of the first sub-network; 
     γ is the weights of the first sub-network; 
     e g     θ     (h     i     )     k    is the k-th component of a logit vector produced by the second sub-neural network; 
     D is the memory. 
     The weights may be generated using gradient descent, for example by performing a fixed number of gradient descent steps. 
     The query data item may comprise a hidden state of the first sub-network. The memory may comprise an episodic memory. The episodic memory may be a memory that stores data associated with previously processed input data items. The query data item may be used to determine a predetermined number of most similar entries in the memory. The data point-value pair may for example comprise a data point of the data point-value pair associated with a hidden state of the first sub-network and a value of the data point-value pair associated with output of the second sub-network for the a data point-value pair data point. The query data item may be used to perform a look up operation in the memory to identify data point-value pairs having a data point most similar to the query data item. Alternatively, each data point-value pair may be used in a minimization operation as described above, with weights for each data point-value pair being determined based upon similarly between the data point of the data point-value pair and the query data item. Each data point-value pair of the episodic memory may comprise a hidden layer and output value obtained during processing of a previous input data item. 
     The first sub-network may comprise a first plurality of first neural network layers and the second sub-network comprises one or more second neural network layers. An output or uppermost layer of the first sub-network may provide an input for the second sub-network. In some implementations the number of first neural network layers is greater than the number of second neural network layers. That is, the first sub-network may be larger and/or more complex than the second sub-network. The one or more second neural network layers may be the final layers of the neural network. 
     The method may further comprise resetting the second sub-network after the output data is generated based upon the modified second sub-network. For example, the weights of the second subset may be reset to a value prior to being adapted based on the retrieved at least one data point-value pair. The input data item may be processed as part of a reinforcement learning system. 
     The input data item may be a data item associated with data of a category selected from the group consisting of: image data, video data, motion data, speech data, audio data, an electronic document, data representing a state of an environment and data representing an action. A plurality of data items may be processed as part of an online learning process. The neural network may, for example, comprise a language modelling system, image processing system, action selection system. 
     In a second aspect there is provided a neural network system for processing an input data item implemented by one or more computers, the neural network system comprising: a memory storing a plurality of data point-value pairs; and a neural network comprising a first sub-network and a second sub-network; wherein the first sub-network is configured to process the input data item to generate a query data point; and wherein the second sub-network is modified based upon at least one data point-value pair, the data point-value pair being retrieved from the memory based upon the query data point; wherein the neural network is configured to generate output data based upon the modified second sub-network. 
     In a third aspect there is provided a system comprising one or more computers and one or more storage devices storing instructions that when executed by the one or more computers cause the one or more computers to perform the operations of the respective method of the first aspect. 
     In a fourth aspect there is provided one or more computer storage media storing instructions that when executed by one or more computers cause the one or more computers to perform the operations of the respective method of the first aspect. In a fifth aspect there is provided one or more computer storage media storing instructions that when executed by one or more computers cause the one or more computers to implement the system of the third aspect. 
     The neural networks can be configured to receive any kind of digital data input and to generate any kind of score, classification, or regression output based on the input. 
     For example, if the inputs to the neural network are images or features that have been extracted from images, the output generated by the neural network for a given image may be scores for each of a set of object categories, with each score representing an estimated likelihood that the image contains an image of an object belonging to the category. 
     As another example, if the inputs to the neural network are Internet resources (e.g., web pages), documents, or portions of documents or features extracted from Internet resources, documents, or portions of documents, the output generated by the neural network for a given Internet resource, document, or portion of a document may be a score for each of a set of topics, with each score representing an estimated likelihood that the Internet resource, document, or document portion is about the topic. 
     As another example, if the inputs to the neural network are features of an impression context for a particular advertisement, the output generated by the neural network may be a score that represents an estimated likelihood that the particular advertisement will be clicked on. 
     As another example, if the inputs to the neural network are features of a personalized recommendation for a user, e.g., features characterizing the context for the recommendation, e.g., features characterizing previous actions taken by the user, the output generated by the neural network may be a score for each of a set of content items, with each score representing an estimated likelihood that the user will respond favorably to being recommended the content item. 
     As another example, if the input to the neural network is a sequence of text in one language, the output generated by the neural network may be a score for each of a set of pieces of text in another language, with each score representing an estimated likelihood that the piece of text in the other language is a proper translation of the input text into the other language. 
     As another example, if the input to the neural network is a sequence representing a spoken utterance, the output generated by the neural network may be a score for each of a set of pieces of text, each score representing an estimated likelihood that the piece of text is the correct transcript for the utterance. 
     The subject matter described in this specification can be implemented in particular embodiments so as to realize one or more of the following advantages. 
     A method for augmenting neural networks with a memory, such as an episodic memory may be provided so as to allow for rapid acquisition of new knowledge while preserving high performance and good generalization. The first and second sub-networks may provide a parametric model and the memory may provide a non-parametric model and the subject matter may therefore provide for combination of both parametric and non-parametric. The weights of the first sub-network may adapt to input data items slowly, whereas the weights of the second sub-network may allow rapid adaptation to new data items. The neural network can therefore generally learn slowly leading to strong performance and generalization, whilst still allowing rapid adaptation to newly seen data. By resetting the second sub-network after processing a data item, long term consequences of adaptation to newly seen data can be avoided where it is undesirable. 
     The method/systems described here are different to Pritzel et al, ibid, for example because they use the memory to change weights of the neural network rather than using the output of the memory directly. 
     In some implementations the memory-augmented neural network systems and methods described herein are able to operate effectively without needing access to large training data sets. They can also adapt to changes in the task they are performing such as changes in the data distribution. For example they can perform effectively with only a fraction of the training data which would normally be needed. Thus the memory-augmented neural network systems and methods described can enable substantial reductions in the memory storage and computing power needed for an effective system. The memory-augmented neural network systems and methods described herein are also able to operate with unbalanced training data, that is with training data in which different types of examples are not equally represented. This is a common characteristic of real-world data, and thus the systems and methods described herein are able to operate more effectively with real-world data than some other systems. They are also able to adapt to incremental changes in input data distribution, for example in a task which involves continual learning. 
     Thus one advantage of the described systems and methods is that they are able to adapt to different tasks, for example the introduction of one or more new classes in a classification system, or a shift in an input data distribution. The change from one task to another may be gradual or stepwise. The system can adapt quickly to a change and then more slowly learn to improve generally on the task. 
     Additionally, in some implementations, the described techniques allow the data point-value pairs that are retrieved using the query to be stored in memory, e.g., in RAM, instead of on disk, e.g., on a hard drive. Thus, querying the data point-value pairs can be done with minimal latency, allowing the described systems to generate outputs with comparable speed to existing systems but with much better accuracy because of the modification to the weights made by based on the retrieved data point-value pairs. In particular, because the size of the memory, i.e., the maximum number of pairs that can be stored at any given time, can be fixed to a number of data point-value pairs that can fit in memory, e.g., in RAM, the described systems can ensure that the data point-values can be efficiently and quickly queried. 
     The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  shows a schematic of a neural network system during inference; 
         FIG. 2  shows a schematic of the neural network system during training; 
         FIG. 3  is a flow diagram of an example process for training the neural network system of  FIGS. 1 and 2 ; 
         FIG. 4  shows a schematic of the neural network system during inference; 
         FIG. 5  shows a flow diagram of an example process for using the neural network system in inference; 
         FIG. 6  is a flow diagram of an example process for generating output data from the neural network system; and 
         FIG. 7  conceptually illustrates operation of the neural network system. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  shows a schematic of a neural network system  1  during inference according to an implementation. The neural network system  1  may be implemented as one or more computer programs on one or more computers in one or more locations. 
     The neural network system  1  comprises an embedding network  2 , a memory  3  and an output network  4 . The embedding network  2  and the output network  4  form a parametric component  5  of the system and the memory  3  forms a non-parametric component  6  of the system. The neural network system  1  is used during inference to process input data  7  to generate output data  10 . In particular, input data  7  is processed by the embedding network  2  to generate a query data item  8  and the query data item  8  is used to query the memory  3 . A returned query  9  from the memory  3  is used to modify the output network  4 . In particular, such modification may relate to modifying parameters of the output network  4 . The output data  10  may then be generated based on the modifications made to the output network  4 . For example, the query data item  8 , output by the embedding network  2 , may be processed by the output network  4  having the modified parameters so as to output the output data  10 . 
       FIG. 2  shows a specific implementation of the neural network system  1  during training and  FIG. 4  shows the specific implementation of the neural network system  1  during inference. In the implementation shown, the embedding network  2  (which notationally may be written as f γ ), and the output network  4  (which notationally may be written as g θ ), are standard parametric (feed forward or recurrent) neural networks with parameters, γ and θ, respectively. That is, γ and θ are the weights of the neural networks f γ  and g θ . The memory  3  is a dynamically-sized memory module that stores key, h i , and value, v i , pairs, M={(h i ; v i )}, where each pair relates to a specific input x i . Thus the memory may store episodic memories, i.e. data relating to specific training examples which have previously been presented to the system. 
     The memory  3  may store the key and value pairs in an append only fashion, and thus the memory size may increase (up to a limit) as new data items are stored. The keys {h i } are given by the embedding network  2  and the values {v i } correspond to a desired output y i . For classification, y i  may be the true class label, whereas for regression, y i  may be the true regression target. The size of the memory may depend on the number of training examples, for example it may be capable of storing 1% or more of the training examples. 
     The neural network system  1  is used differently depending on whether the system  1  is being trained or used in inference. During training of the neural network system  1 , for a given input x, the conditional likelihood of an output, y, given an input, x, may be parameterized with a deep neural network given by the composition of the embedding network  2 , f γ , and the output network  4 , g θ . Thus the conditional likelihood may be given by: 
       p train (y|x,γ,θ)=g θ (f γ (x))
 
     In the case of classification, the last layer of the output network  4  is configured to be a softmax layer. The parameters γ and θ may be estimated by maximum likelihood estimation, using for example back propagation. 
     During training of the neural network system  1 , data derived from observed data, x, which is used to train the system  1  is also stored to the memory  3 . For example, upon observing a j-th example, x j , the memory  3  is updated by appending  11  the corresponding pair (h i , v i ) to the memory  3 , where: 
       h j ←f γ (x j )
 
       v j ←y j  
 
     The memory  3  may have a fixed size and act as a circular buffer, such that when it is full, the oldest data is overwritten first. Subsequent retrieval from the memory  3 , described later, may comprise performing a K-nearest neighbor search on the keys {h i } with e.g. Euclidean distance to obtain the K most similar keys and associated values. 
     With reference to  FIG. 3 , there is now described a method for training the neural network system  1 . 
     At step S 1 , a mini-batch of one or more training examples B={(x b , y b )} b  is sampled from training data. 
     At step S 2 , an embedded mini-batch B′={(f γ (x b ), y b ): x b , y b ∈B} is determined using the embedding network  2 ,f γ . 
     At step S 3 , the parameters γ and θ are updated by maximizing the likelihood of γ and θ with respect to the mini-batch of examples B. 
     At step S 4 , the embedded mini-batch examples B′ are added to the memory  3 , M:M←M∪B′. 
     As can be seen from  FIG. 2 , in implementations the memory  3  stores data from the examples during training but at training time it is not used in generating an output from the system, nor is the stored data used for training. Thus in implementations it is not necessary for the memory to be differentiable. 
       FIG. 4  shows an example of the neural network system  1  during use in inference. 
     During use in inference the embedding network  2  receives an input x and the embedding network  2  processes x to generate a key embedding h for the input x. The key embedding h output from the embedding network  2 , which may be written as query q=f γ (x)=h, is used to query the memory  3  and obtain the returned query  9 . The returned query  9  from the memory  3  is used to modify the parameters θ of the output network  4 . The returned query  9  may, in an implementation, indicate the K nearest key embeddings  13  in the memory  3  to the current key embedding h according to a distance measure, such as Euclidean distance using, for example, a kernel function. Optionally an approximate nearest neighbor search, such as a k-NN search, may be used. In the schematic representation show in  FIG. 4 , five nearest neighbors are retrieved from the memory. However, it will be appreciated that any suitable number of nearest neighbors may be retrieved. The nearest neighbors are combined in a weighted sum to provide the returned query. The weights of the weights sum may correspond to the distance measure i.e. to the kernel function for the corresponding value. 
     In an implementation, the returned query  9  defines a context C of an input x, where the context C input x is defined as the keys h i , values v i  and associated weights w i  of the K nearest neighbors  13  to the query q=f γ (x). The associated weights w i  may be determined by the system  1  from distances between the K nearest key embeddings  13  and the current key embedding h. Thus the context C may be written as: 
       C={(h k   (x) , v k   (x) , w k   (x) )} k=1   K    
     In an implementation, the weights are dependent upon a similarity between the query and the stored keys. For example in some implementations w k   (x) ∝kern(h k   (x) , q), where kern(h k   (x) , q) is a kernel function dependent upon the closeness of the query to each key h k  in the set of nearest neighbor keys to (x). The weights may be normalized, i.e. divided by the sum of kern(h k   (x) , q) over the nearest neighbors. An example kernel function is: 
     
       
         
           
             
               kern 
                
               
                 ( 
                 
                   
                     h 
                     k 
                     
                       ( 
                       x 
                       ) 
                     
                   
                   , 
                   q 
                 
                 ) 
               
             
             = 
             
               1 
               
                 ϵ 
                 + 
                 
                   
                      
                     
                       h 
                       - 
                       q 
                     
                      
                   
                   2 
                   2 
                 
               
             
           
         
       
     
     where ε is a predetermined constant to avoid a division by zero. The neural network system  1  can therefore select K key embeddings in the memory  3  that have the shortest distances to the current key embedding h according to the kernel function. 
     Using the context C described above, the parametrization of the likelihood of an output, y, given an input, x, takes the form: 
       p(y|x, θ x )=p(y|x, θ x , C)=g θ     x   (f γ (x))
 
     where θ x  are the weights of the output network  4  as modified by the weighted values read from the memory  3 , i.e. as modified by a soft read from the memory  3 . 
     Thus the parameterization of the likelihood differs from the standard parametric approach g θ (f γ (x)), used during training and described above, in that θ has been replaced with θ x . In implementations θ x =θ+Δ M (x, θ), with Δ M (x, θ) being a contextual update of the parameters of the output network  4 , e.g. being based upon the input x. Updating of parameters according to the p(y|x, θ x ) corresponds to decreasing the weighted average negative log-likelihood over the retrieved neighbors in C. 
     In implementations the parameters of the output network  4  are only modified temporarily during inference. The soft read from the memory applies a correction Δ M (x, θ) to the parameters of the output network which is dependent upon the specific input presented to the system at that time. However this “local adaptation” is afterwards discarded, allowing the weights of the parametric part of the system, that is of the embedding and output networks, to learn slowly thus facilitating generalization and long-term improved performance. As the model becomes better at fitting the training data the correction diminishes. 
     Given input x and context C, the maximum a posteriori likelihood of θ x  over the context C, given the parameters θ obtained after training , can be written as: 
     
       
         
           
             
               
                 max 
                 
                   θ 
                   x 
                 
               
                
               
                 log 
                  
                 
                     
                 
                  
                 
                   p 
                    
                   
                     ( 
                     
                       
                         θ 
                         x 
                       
                        
                       θ 
                     
                     ) 
                   
                 
               
             
             + 
             
               
                 ∑ 
                 
                   k 
                   = 
                   1 
                 
                 K 
               
                
               
                 
                   w 
                   k 
                   
                     ( 
                     x 
                     ) 
                   
                 
                  
                 log 
                  
                 
                   p 
                    
                   
                     ( 
                     
                       
                         
                           v 
                           k 
                           
                             ( 
                             x 
                             ) 
                           
                         
                          
                         
                           h 
                           k 
                           
                             ( 
                             x 
                             ) 
                           
                         
                       
                       , 
                       
                         θ 
                         x 
                       
                       , 
                       x 
                     
                     ) 
                   
                 
               
             
           
         
       
     
     The second term is a weighted likelihood of the data in C; the superscript (x) on the weights denotes that these depend on the particular input x. The first term can be thought of as a regularization term. For example in some implementations 
     
       
         
           
             
               log 
                
               
                   
               
                
               
                 p 
                  
                 
                   ( 
                   
                     
                       θ 
                       x 
                     
                      
                     θ 
                   
                   ) 
                 
               
             
             ∝ 
             
               - 
               
                 
                   
                      
                     
                       
                         θ 
                         x 
                       
                       - 
                       θ 
                     
                      
                   
                   2 
                   2 
                 
                 
                   2 
                    
                   
                     α 
                     M 
                   
                 
               
             
           
         
       
     
     i.e. a Gaussian prior on θ x  centered at θ, where α M  is the learning rate, which inhibits θ x  from moving too far away from θ to help prevent overfitting. 
     A fixed number of gradient descent steps, including just one, may be carried out to minimize the maximum a posteriori over the context C, where the fixed number of steps is represented by loop  12  in  FIG. 4 . One step of gradient descent to the loss in the maximum a posteriori over the context C with respect to θ x  yields: 
     
       
         
           
             
               
                 Δ 
                 M 
               
                
               
                 ( 
                 
                   x 
                   , 
                   θ 
                 
                 ) 
               
             
             = 
             
               
                 
                   - 
                   
                     α 
                     M 
                   
                 
                  
                 
                   
                     ∇ 
                     θ 
                   
                    
                   
                     
                       ∑ 
                       
                         k 
                         = 
                         1 
                       
                       K 
                     
                      
                     
                       
                         w 
                         k 
                         
                           ( 
                           x 
                           ) 
                         
                       
                        
                       log 
                        
                       
                           
                       
                        
                       
                         p 
                          
                         
                           ( 
                           
                             
                               
                                 v 
                                 k 
                                 
                                   ( 
                                   x 
                                   ) 
                                 
                               
                                
                               
                                 
                                   h 
                                   k 
                                   
                                     ( 
                                     x 
                                     ) 
                                   
                                 
                                  
                                 
                                   θ 
                                   x 
                                 
                               
                             
                             , 
                             x 
                           
                           ) 
                         
                       
                     
                   
                 
               
               - 
               
                 β 
                  
                 
                   ( 
                   
                     θ 
                     - 
                     
                       θ 
                       x 
                     
                   
                   ) 
                 
               
             
           
         
       
     
     where α M  is the learning rate and β is a scalar hyper-parameter which defines the relative weight of the second, regularization term; the superscript (x) denotes that the nearest neighbor weights and values depend on x. Other forms of regularization term may be used, e.g. an L2 regularization, or this term may be omitted. The probability of value v k  may be given, for example, by the output of the parametric model, g θ (h k ); e.g. in the case of a classification system, from a logit vector prior to a final softmax layer. Thus a correction to the output may be made by determining a gradient with respect to the parameters of the output network  4  of a loss function, which gradient depends upon an output of the parametric system, for each of a set of nearest neighbors to the query, weighted by the similarity to the query in the embedding space. The gradient is multiplied by a learning rate to determine an adjustment to the parameters of the output network. An example number of gradient adjustment steps is in the range 1-20; an example learning rate is in the range 0.1-1.0. 
     The updated parameters θ x  of the output network  4  are then used when processing the current embedding h, where h is the output f γ (x) obtained from the embedding network  2  for given input x. The updated parameters θ x  are discarded after use. That is, when a subsequent input is queried during inference, the contextual update Δ M (x, θ) is recalculated for the subsequent input and the recalculated values are used by the output network  4  to process the output f γ (x) of the embedding network  2 . 
     Modifying the output network  4  in the way described herein allows the system  1  to output an improved prediction to an unseen example, when the unseen example closely matches examples that have previously been seen during training. For example, the system  1  may be used as a classifier to classify numbers, and may have seen a number of examples of each character from 1 to 9. When the system  1  receives an input, such as the number 7, the memory  3  is queried using the embedding h of the input. The system  1  determines entries in the memory  3  which closely match the input, e.g. other examples of 7. The other examples of 7 are then used to modify the output network  4  such that the output network  4  is more likely to correctly classify the input as the number 7. The use of a memory  3  as described is particular advantageous when there is limited training data available for training the system  1 . The contextual update Δ M (x, θ) is such that, as the parametric model becomes better at fitting the training data (and consequently the episodic memories), it self-regulates and diminishes. Therefore, the system  1  is able to generate more accurate outputs when training data is limited, with the effect of the memory  3  gradually reducing as more training data becomes available and is used to train the system  1 . 
     In some implementations the output network  4  may be simpler than the embedding network  2 ; this can facilitate adapting the output of the neural network system by adapting the parameters of the output network. For example the output network may comprise a last fully-connected layer and/or a softmax output layer of the neural network system. In some implementations the memory may store input data e.g. images from pixels such as raw pixel values, but look-ups may still be based on distance in the embedding space and the embeddings may be periodically re-computed to refresh them. 
     With reference to  FIG. 5 , there is now described a method for use of the neural network system  1  in inference. 
     At step S 5 , an input x is processed by the embedding network  2  to generate query q=f γ (x). 
     At step S 6 , the K-nearest neighbors to the query q are retrieved from the memory  3 , and context C is determined, i.e. the keys, values and weights for the K-nearest neighbors. 
     At step S 7 , a contextual update Δ M (x, θ+Δ total ) is calculated for one or more steps, for example using the formula given above, or a variant thereof. Initially Δ total ←0 and at each step Δ total ←Δ total +ΔM(x). 
     At step S 8 , prediction ŷ is output, where ŷ=g θ+Δ     total   (h)=g θ     x   (f γ (x)). 
     With reference to  FIG. 6 , there will now be described a method of processing an input data item using a parametric model to generate output data, where the parametric model comprises a first sub-model and a second sub-model. The first sub model may be the embedding model  2  and the second sub-model may be the output network  4  as described above. 
     At step S 9  the input data is processed by the first sub-model to generate a query data item. For example, the query data item may be query data item  8  shown in  FIG. 1 . 
     At step S 10  at least one data point-value pair is retrieved from a memory storing data point-value pairs, the at least one data point-value pair being based upon the query data item. The memory may form part of a non-parametric model, and may be the memory  3  described above. 
     At step S 11 , weights of the second sub-model are modified based upon the retrieved at least one data point-value pair. 
     At step S 12 , the output data is generated based upon the modified second sub-model to generate the output data. The output data may be output data  10  shown in  FIG. 1 . 
       FIG. 7  conceptually illustrates operation of the neural network system  1  on a regression task: A query  15  has 4 nearest neighbors h 1  . . . h 4  with corresponding values. The parameters of the output network  4  are adjusted from those of the trained model, g θ   16 , to parameters g θ     x    defining curve  17 . This allows a more accurate fit to the data in the episodic memory than, for example, an attention-based model as represented by curve  18 . 
     The neural network system  1  may, for example, be used for any suitable purpose, such as in a language modelling system, an image processing system, or an action selection system. The neural network system  1  may be used for supervised and unsupervised learning tasks. For example, the supervised learning tasks may include classification tasks, such as image processing tasks, speech recognition tasks, natural language processing tasks, word recognition tasks, or optical character recognition tasks. The unsupervised learning tasks may include reinforcement learning tasks where an agent interacts with one or more real or simulated environments to achieve one or more goals. 
     The input data x may comprise, for example, one or more of: image data, moving image/video data, motion data, speech data, audio data, an electronic document, data representing a state of an environment, and/or data representing an action. For example, the image data may comprise color or monochrome pixel value data. Such image data may be captured from an image sensor such as a camera or LIDAR sensor. The audio data may comprise data defining an audio waveform such as a series of values in the time and/or frequency domain defining the waveform; the waveform may represent speech in a natural language. The electronic document data may comprise text data representing words in a natural language. The data representing a state of an environment may comprise any sort of sensor data including, for example: data characterizing a state of a robot or vehicle, such as pose data and/or position/velocity/acceleration data; or data characterizing a state of an industrial plant or data center such as sensed electronic signals such as sensed current and/or temperature signals. The data representing an action may comprise, for example, position, velocity, acceleration, and/or torque control data or data for controlling the operation of one or more items of apparatus in an industrial plant or data center. These data may, generally, relate to a real or virtual, e.g. simulated, environment. 
     The output data may similarly comprise any sort of data. For example in a classification system the output data may comprise class labels for input data items. In a regression task the output data may predict the value of a continuous variable, for example a control variable for controlling an electronic or electromechanical system such as a robot, vehicle, data center or plant. In another example of a regression task operating on image or audio data the output data may define one or more locations in the data, for example the location of an object or of one or more corners of a bounding box of an object or the time location of a sound feature in an audio waveform. In a reinforcement learning system the output data may comprise, for example, data representing an action, as described above, the action to be performed by an agent operating an in environment, for example a mechanical agent such as a robot or vehicle. 
     The data representing an action may comprise, for example, data defining an action-value (Q-value) for the action, or data parameterizing a probability distribution where the probability distribution is sampled to determine the action, or data directly defining the action, for example in a continuous action space. Thus in a reinforcement learning system the neural network system  1  may directly parameterize a probability distribution for an action-selection policy or it may learn to estimate values of an action-value function (Q-values). In the latter case multiple memories and respective output networks may share a common embedding network, to provide a Q-value for each available action. 
     The system and methods described herein may also be used as a component or module within a larger machine learning system, such as a component or module of a reinforcement learning system. 
     This specification uses the term “configured” in connection with systems and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions. 
     Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non transitory storage medium for execution by, or to control the operation of, data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. 
     The term “data processing apparatus” refers to data processing hardware and encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can also be, or further include, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can optionally include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. 
     A computer program, which may also be referred to or described as a program, software, a software application, an app, a module, a software module, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub programs, or portions of code. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a data communication network. 
     In this specification, the term “database” is used broadly to refer to any collection of data: the data does not need to be structured in any particular way, or structured at all, and it can be stored on storage devices in one or more locations. Thus, for example, the index database can include multiple collections of data, each of which may be organized and accessed differently. 
     Similarly, in this specification the term “engine” is used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers. 
     The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA or an ASIC, or by a combination of special purpose logic circuitry and one or more programmed computers. 
     Computers suitable for the execution of a computer program can be based on general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few. 
     Computer readable media suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. 
     To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user&#39;s device in response to requests received from the web browser. Also, a computer can interact with a user by sending text messages or other forms of message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return. 
     Data processing apparatus for implementing machine learning models can also include, for example, special-purpose hardware accelerator units for processing common and compute-intensive parts of machine learning training or production, i.e., inference, workloads. 
     Machine learning models can be implemented and deployed using a machine learning framework, .e.g., a TensorFlow framework, a Microsoft Cognitive Toolkit framework, an Apache Singa framework, or an Apache MXNet framework. 
     Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data, e.g., an HTML page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device. 
     While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination. 
     Similarly, while operations are depicted in the drawings and recited in the claims in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. 
     Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some cases, multitasking and parallel processing may be advantageous.