Methods, systems, and apparatus, including computer programs encoded on computer storage media, for augmenting neural networks with an external memory. One of the systems includes a memory interface subsystem that is configured to perform operations comprising determining a respective content-based weight for each of a plurality of locations in an external memory; determining a respective allocation weight for each of the plurality of locations in the external memory; determining a respective final writing weight for each of the plurality of locations in the external memory from the respective content-based weight for the location and the respective allocation weight for the location; and writing data defined by the write vector to the external memory in accordance with the final writing weights.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. An augmented neural network system for processing a sequence of system inputs to generate a sequence of system outputs, the augmented neural network system comprising: a neural network, wherein the neural network is configured to receive a sequence of neural network inputs and to process each neural network input to generate a neural network output from the neural network input, wherein the neural network output comprises: a system output portion, a read portion, a write key, and a write vector; an external memory; and a memory interface subsystem, wherein the memory interface subsystem is configured to perform operations comprising, for each of the neural network outputs: providing an output derived from the system output portion as a system output in the sequence of system outputs; determining a respective content-based weight for each of a plurality of locations in the external memory from the write key; determining a respective allocation weight for each of the plurality of locations in the external memory based on how available each of the plurality of locations in the external memory is for a modification of the data stored in the location; determining a respective final writing weight for each of the plurality of locations in the external memory from the respective content-based weight for the location and the respective allocation weight for the location; writing data defined by the write vector to the external memory in accordance with the final writing weights; determining one or more sets of reading weights for each of the plurality of locations in the external memory from the read portion; reading data from the external memory in accordance with the sets of reading weights; and combining the data read from the external memory with a next system input in the sequence of system inputs to generate a next neural network input in the sequence of neural network inputs. 2. The augmented neural network system of claim 1, wherein determining a respective allocation weight for each of the plurality of locations in the external memory comprises: determining a respective usage value for each of the locations that represents a degree to which the availability of the location is being used; ordering the locations according to the usage values; and determining the respective allocation weight for each of the locations based on the ordering and on the usage values. 3. The augmented neural network system of claim 2, wherein determining the respective usage value for each of the locations comprises: increasing a previous usage value for the location based on a previous final writing weight used to write to the location for a previous neural network output. 4. The augmented neural network system of claim 3, wherein the neural network output comprises a set of free gates that define an extent to which each of the plurality of locations can be freed when writing to the external memory, and wherein determining the respective usage value for each of the locations comprises: modifying the increased previous usage value for the location based on the extent to which the location can be freed to generate the respective usage value for the location. 5. The augmented neural network system of claim 2, wherein ordering the locations according to the usage values comprises ordering the locations in ascending order of usage. 6. The augmented neural network system of claim 5, wherein determining the respective allocation weight for each of the locations comprises: determining an initial allocation weight for the location by subtracting the usage value for the location from one; and modifying the initial allocation weight based on the usage values for other locations in other positions in the ordering. 7. The augmented neural network system claim 1, wherein the neural network output comprises: an allocation gate that governs interpolation between the content-based weights and the allocation weights, and a write gate that governs a write strength of the write to the external memory, and wherein determining a respective final writing weight for each of the plurality of locations comprises: interpolating between the content-based weight for the location and the allocation weight for the location in accordance with the allocation gate, and gating a result of the interpolation in accordance with the write gate to determine the final writing weight for the location. 8. The augmented neural network system of claim 1, wherein the neural network output further comprises an erase vector, and wherein the operations further comprise, for each of the neural network outputs: erasing from the external memory in accordance with the final writing weights and the erase vector. 9. An augmented neural network system for processing a sequence of system inputs to generate a sequence of system outputs, the augmented neural network system comprising: a neural network, wherein the neural network is configured to receive a sequence of neural network inputs and to process each neural network input to generate a neural network output from the neural network input, wherein the neural network output comprises: a system output portion, a write portion, a write vector, and a respective read key for each of one or more read heads; an external memory; and a memory interface subsystem, wherein the memory interface subsystem is configured to perform operations comprising, for each of the neural network outputs: providing an output derived from the system output portion as a system output in the sequence of system outputs; determining a respective writing weight for each of a plurality of locations in the external memory from the write portion of the neural network output; writing data defined by the write vector to the external memory in accordance with the respective writing weights; for each of one or more read heads: determining a respective content-based reading weight for each of the plurality of locations in the external memory from the read key for the read head, determining one or more respective history weights for each of the plurality of locations in the external memory from weights of previous writing operations performed by the memory interface subsystem, determining a respective final reading weight for each of the plurality of locations from the one or more history weights and the content-based reading weight, and reading data from the external memory in accordance with the final reading weights; and combining the data read from the external memory with a next system input in the sequence of system inputs to generate a next neural network input in the sequence of neural network inputs. 10. The augmented neural network system of claim 9, the operations further comprising, for each of the neural network outputs: determining one or more sets of erasing weights for each of the plurality of locations in the external memory; and erasing data from the external memory in accordance with the sets of erasing weights. 11. The augmented neural network system of claim 9, wherein the neural network output comprises a respective read mode vector for each read head that governs an interpolation between the one or more history weights and the content-based reading weights, and wherein determining a respective final reading weight for each of the plurality of locations from the one or more history weights and the content-based reading weight comprises: interpolating between the one or more history weights for the location and the content-based reading weight for the location in accordance with the read mode vector. 12. The augmented neural network system of claim 9, wherein the operations further comprise: maintaining a temporal link matrix that tracks a history of writing weights for previous writing operations performed on the external memory by the memory interface subsystem. 13. The augmented neural network system of claim 12, wherein the operations further comprise, for each of the neural network outputs: updating the temporal link matrix based on the writing weights for the neural network output. 14. The augmented neural network system of claim 13, wherein determining one or more respective history weights for each of the plurality of locations in the external memory comprises: determining a respective backward history weight for each of the plurality of locations from the updated temporal link matrix. 15. The augmented neural network system of claim 14, wherein determining a respective backward history weight for each of the plurality of locations from the updated temporal link matrix comprises: performing a matrix multiplication between the updated temporal link matrix and a vector derived from the final reading weights for the read head for a previous neural network output. 16. The augmented neural network system of claim 13, wherein determining one or more respective history weights for each of the plurality of locations in the external memory comprises: determining a respective forward history weight for each of the plurality of locations from the transpose of the updated temporal link matrix. 17. The augmented neural network system of claim 16, wherein determining a respective backward history weight for each of the plurality of locations from the updated temporal link matrix comprises: performing a matrix multiplication between the transpose of the updated temporal link matrix and a vector derived from the final reading weights for the read head for a previous neural network output. 18. The augmented neural network system of claim 13, wherein updating the temporal link matrix comprises: determining a respective precedence weight for each of the plurality of locations that represents a degree to which the location was the last location written to; and updating the temporal link matrix using the precedence weighting for each of the plurality of locations and the writing weights for the neural network output. 19. A method of processing a sequence comprising a plurality of system inputs to generate a sequence comprising a plurality of system outputs, the method comprising, for each of the system inputs: obtaining data previously read from an external memory during processing of a preceding system input; combining the data previously read from the external memory with the system input to generate a neural network input; providing the neural network input as input to a neural network, wherein the neural network is configured to process the neural network input to generate a neural network output from the neural network input, wherein the neural network output comprises: a system output portion, a read portion, a write key, and a write vector; determining a respective content-based weight for each of a plurality of locations in the external memory from the write key; determining a respective allocation weight for each of the plurality of locations in the external memory based on how available each of the plurality of locations in the external memory is for a modification of the data stored in the location; determining a respective final writing weight for each of the plurality of locations in the external memory from the respective content-based weight for the location and the respective allocation weight for the location; writing data defined by the write vector to the external memory in accordance with the final writing weights; determining one or more sets of reading weights for each of the plurality of locations in the external memory from the read portion; reading data from the external memory in accordance with the sets of reading weights; and providing an output derived from the system output portion as a system output in the sequence of system outputs. 20. The method of claim 19, wherein determining a respective allocation weight for each of the plurality of locations in the external memory comprises: determining a respective usage value for each of the locations that represents a degree to which the availability of the location is being used; ordering the locations according to the usage values; and determining the respective allocation weight for each of the locations based on the ordering and on the usage values.