IP Library › Granted Patent US 12,572,782
Granted Patent B2
US 12,572,782 · App. 18/662,972 · Granted Mar 10, 2026

Scalable and compressive neural network data storage system

Inventors: Jack William Rae (London, GB); Timothy Paul Lillicrap (London, GB); Sergey Bartunov (London, GB)
Assignee: GDM Holding LLC
G06N3/045G06F16/2272G06N3/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,572,782
App. No.
18/662,972
Granted
Mar 10, 2026
Kind
B2
Abstract

A system for compressed data storage using a neural network. The system comprises a memory comprising a plurality of memory locations configured to store data; a query neural network configured to process a representation of an input data item to generate a query; an immutable key data store comprising key data for indexing the plurality of memory locations; an addressing system configured to process the key data and the query to generate a weighting associated with the plurality of memory locations; a memory read system configured to generate output memory data from the memory based upon the generated weighting associated with the plurality of memory locations and the data stored at the plurality of memory locations; and a memory write system configured to write received write data to the memory based upon the generated weighting associated with the plurality of memory locations.

Claims (57)

1 . A method for training a neural network memory system having neural network memory system parameters, the method comprising:

receiving a training dataset comprising a plurality of sets of data items, wherein each set of data items in the plurality of sets of data items corresponds to a different respective task;

at each training iteration of a plurality of training iterations:

selecting, from the plurality of sets of data items, an input set of data items for the training iteration, wherein the input set of data items corresponds to a respective task for the training iteration;

storing data representing the input set of data items for the training iteration at a plurality of memory locations in a memory;

generating a plurality of training examples, wherein each training example comprises (i) a respective training data item and (ii) a respective label indicating whether or not the training data item belongs to the input set of data items for the training iteration;

for each training example, processing the respective training data item in the training example using the neural network memory system in accordance with current values of the neural network memory system parameters to generate, based on a weighting associated with the plurality of memory locations and the data representing the input set of data items stored at the plurality of memory locations, a respective training output for the training example indicating whether or not the respective training data item belongs to the input set of data items; and

training the neural network memory system using the respective labels in the plurality of training examples and the respective training outputs to minimize an objective function.

2 . The method of claim 1 , wherein training the neural network memory system using the respective labels in the plurality of training examples and the respective training outputs to minimize an objective function comprises:

updating the neural network memory system parameters using gradients of the objective function with respect to the neural network memory system parameters.

3 . The method of claim 2 , wherein updating the neural network memory system parameters using gradients of the objective function with respect to the neural network memory system parameters comprises:

computing the gradients of the objective function with respect to the neural network memory system parameters; and

backpropagating the gradients of the objective function into the neural network memory system to adjust values of the parameters of the neural network memory system.

4 . The method of claim 1 , wherein the objective function comprises a cross-entropy loss term.

5 . The method of claim 1 , wherein generating the plurality of training examples comprises sampling a predetermined number of data items from the input set of data items.

6 . The method of claim 1 , wherein generating the plurality of training examples comprises sampling a predetermined number of data items from one or more sets of data items in the training dataset that are not the input set of data items.

7 . The method of claim 1 , wherein for each training example, processing the respective training data item in the training example using the neural network memory system in accordance with current values of the neural network memory system parameters to generate, based on a weighting associated with the plurality of memory locations and the data representing the input set of data items stored at the plurality of memory locations, a respective training output for the training example indicating whether or not the respective training data item belongs to the input set of data items comprises:

processing, by a query neural network, the training data item to generate a training query.

8 . The method of claim 7 , wherein processing, by a query neural network, the training data item to generate a training query comprises:

processing, by an encoder neural network, the training data item to generate a representation of the training data item; and

processing, by the query neural network, the representation of the training data item to generate the training query.

9 . The method of claim 7 , further comprising:

generating, from (i) the training query and (ii) a respective key for each of the plurality of memory locations of the memory, a respective weight for each of the plurality of memory locations in the memory;

generating output memory data from the memory based on the respective weights for the plurality of memory locations and data stored at the plurality of memory locations; and

generating, from at least the output memory data, an output that indicates whether or not the training data item belongs to the input set of data items.

10 . The method of claim 9 , wherein generating output memory data from the memory based on the respective weights for the plurality of memory locations and data stored at the plurality of memory locations comprises:

computing, for each memory location, a multiplication between the data stored at the memory location and the respective weight for the memory location.

11 . The method of claim 9 , wherein generating, from at least the output memory data, an output that indicates whether or not the training data item belongs to the input set of data items comprises:

processing, by an output representation neural network, at least the output memory data to generate the output that indicates whether or not the training data item belongs to the input set of data items.

12 . The method of claim 11 , further comprising:

processing a representation of the training data item using a write word neural network to generate write data; and wherein

processing, by an output representation neural network, at least the output memory data to generate an output that indicates whether or not the training data item belongs to the input set of data items comprises, processing, by the output representation neural network, at least the write data and the output memory data.

13 . The method of claim 12 , wherein processing, by an output representation neural network, at least the output memory data to generate an output that indicates whether or not the training data item belongs to the input set of data items comprises, processing, by the output representation neural network, the write data, the representation of the training data item and the output memory data.

14 . The method of claim 9 , wherein generating, from (i) the training query and (ii) a respective key for each of a plurality of memory locations of a memory, a respective weight for each of the plurality of memory locations in the memory comprises:

generating, from the training query, a decorrelated query; and

generating, from (i) the decorrelated query and (ii) the respective key for each of a plurality of memory locations of a memory, the respective weight for each of the plurality of memory locations in the memory.

15 . The method of claim 9 , wherein the respective weights are sparse weights that are only non-zero for a proper subset of the memory locations in the memory.

16 . The method of claim 9 , further comprising initializing the neural network memory system with key data prior to the training, wherein the key data remains fixed throughout the training.

17 . A system comprising one or more computers and one or more storage devices storing instructions that when executed by one or more computers cause the one or more computers to perform operations for training a neural network memory system having neural network memory system parameters, the operations comprising:

receiving a training dataset comprising a plurality of sets of data items, wherein each set of data items in the plurality of sets of data items corresponds to a different respective task;

at each training iteration of a plurality of training iterations:

selecting, from the plurality of sets of data items, an input set of data items for the training iteration, wherein the input set of data items corresponds to a respective task for the training iteration;

encoding data representing the input set of data items in a memory for the training iteration at a plurality of memory locations;

generating a plurality of training examples, wherein each training example comprises (i) a respective training data item and (ii) a respective label indicating whether or not the training data item belongs to the input set of data items for the training iteration;

for each training example, processing the respective training data item in the training example using the neural network memory system in accordance with current values of the neural network memory system parameters to generate, based on a weighting associated with the plurality of memory locations and the data representing the input set of data items stored at the plurality of memory locations, a respective training output for the training example indicating whether or not the respective training data item belongs to the input set of data items; and

training the neural network memory system using the respective labels in the plurality of training examples and the respective training outputs to minimize an objective function.

18 . The system of claim 17 , wherein training the neural network memory system using the respective labels in the plurality of training examples and the respective training outputs to minimize an objective function comprises:

updating the neural network memory system parameters using gradients of the objective function with respect to the neural network memory system parameters.

19 . The system of claim 17 , wherein the objective function comprises a cross-entropy loss term.

20 . One or more non-transitory computer-readable storage media storing instructions that when executed by one or more computers cause the one or more computers to perform operations for training a neural network memory system having neural network memory system parameters, the operations comprising:

receiving a training dataset comprising a plurality of sets of data items, wherein each set of data items in the plurality of sets of data items corresponds to a different respective task;

at each training iteration of a plurality of training iterations:

selecting, from the plurality of sets of data items, an input set of data items for the training iteration, wherein the input set of data items corresponds to a respective task for the training iteration;

encoding data representing the input set of data items in a memory for the training iteration at a plurality of memory locations;

generating a plurality of training examples, wherein each training example comprises (i) a respective training data item and (ii) a respective label indicating whether or not the training data item belongs to the input set of data items for the training iteration;

for each training example, processing the respective training data item in the training example using the neural network memory system in accordance with current values of the neural network memory system parameters to generate, based on a weighting associated with the plurality of memory locations and the data representing the input set of data items stored at the plurality of memory locations, a respective training output for the training example indicating whether or not the respective training data item belongs to the input set of data items; and

training the neural network memory system using the respective labels in the plurality of training examples and the respective training outputs to minimize an objective function.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2025
From: DEEPMIND TECHNOLOGIES LIMITED
To: GDM HOLDING LLC
Reel/Frame 071498/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2025
From: RAE, JACK WILLIAM; LILLICRAP, TIMOTHY PAUL; BARTUNOV, SERGEY
To: DEEPMIND TECHNOLOGIES LIMITED
Reel/Frame 070766/0063 →
Continuity (4)
Continuation 17102318 · Nov 23, 2020
Continuation 16586102 · Sep 27, 2019
Provisional Application 62737840 · Sep 27, 2018
Related Publication 20250053780A1 · Feb 13, 2025
References Cited (80)
US 5303330A · Gersho · 1994 [cited by applicant]
US 6341281B1 · MacNicol · 2002 [cited by applicant]
US 8428916B2 · Koller · 2013 [cited by applicant]
US 9985984B1 · Chavez · 2018 [cited by examiner]
US 10311058B1 · Kumar · 2019 [cited by applicant]
US 10346727B2 · Lin · 2019 [cited by applicant]
US 10395169B1 · Kumar · 2019 [cited by applicant]
US 10452526B2 · Rajpal · 2019 [cited by applicant]
US 10496885B2 · Hussein · 2019 [cited by applicant]
US 10664725B2 · Riedmiller · 2020 [cited by applicant]
US 10678786B2 · Zeng · 2020 [cited by applicant]
US 10678828B2 · Cramer · 2020 [cited by applicant]
US 10846588B2 · Rae et al. · 2020 [cited by applicant]
US 20130132352A1 · Kaushik et al. · 2013 [cited by applicant]
US 20130254208A1 · Hazel · 2013 [cited by examiner]
US 20160098629A1 · Lipasti et al. · 2016 [cited by applicant]
US 20170228638A1 · Danihelka et al. · 2017 [cited by applicant]
US 20170323199A1 · Wu · 2017 [cited by examiner]
US 20170329552A1 · Baldwin · 2017 [cited by applicant]
US 20180121377A1 · Woo et al. · 2018 [cited by applicant]
US 20180314627A1 · Orme · 2018 [cited by examiner]
US 20190147298A1 · Rabinovich · 2019 [cited by applicant]
US 20190251423A1 · Shazeer · 2019 [cited by applicant]
US 20190354859A1 · Xu · 2019 [cited by applicant]
US 20190362154A1 · Moore · 2019 [cited by applicant]
US 20190378008A1 · Markram · 2019 [cited by applicant]
US 20200104677A1 · Rae et al. · 2020 [cited by applicant]
CN 102609446 · 2012 [cited by applicant]
CN 108431832 · 2018 [cited by applicant]
Alex Shinn, “Indeed MPH: Fast and Compact Immutable Key-Value Stores”, published on Feb. 2, 2018 to https://engineering.indeedblog.com/blog/2018/02/indeed-mph, retrieved on Dec. 2, 2024. (Year: 2018). [cited by examiner]
Alex Morrison, “The Rise of Immutable Data Stores”, published on Oct. 9, 2015 to https://www.odbms.org/2015/10/the-rise-of-immutable-data-stores, retrieved on Dec. 2, 2024. (Year: 2015). [cited by examiner]
“Favoring Immutability in Database Design”, published originally on Sep. 5, 2011 to https://softwareengineering.stackexchange.com/questions/105851/favoring-immutability-in-database-design, retrieved on Dec. 2, 2024. (Ye… [cited by examiner]
Machine Learning for Artists, “How neural networks are trained”, published on Jun. 13, 2016 to https://ml4a.github.io/ml4a/how_neural_networks_are_trained, retrieved Jun. 10, 2025. (Year: 2016). [cited by examiner]
Michael Mitzenmacher, “A Model for Learned Bloom Filters and Related Structures”, published on Feb. 3, 2018 to arXiv, retrieved Jun. 11, 2025. (Year: 2018). [cited by examiner]
Keyur Paralkar, “Understanding loss functions, activations and optimisation”, published on Aug. 3, 2018 to https://medium.com/@keur.plkar/understanding-loss-functions-activations-and-optimisation-d0d39d2ec9bc, retrieved… [cited by examiner]
Yoonho Boo, etc., “Structured Sparse Ternary Weight Coding of Deep Neural Networks for Efficient Hardware Implementations”, published on Jul. 1, 2017 to arXiv, retrieved Jun. 10, 2025. (Year: 2017). [cited by examiner]
Xiaotian Zhu, etc., “Improving Deep Neural Network Sparsity through Decorrelation Regularization”, published via the Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence (IJCAI-18)… [cited by examiner]
Shikun Liu, etc., “End-to-End Multi-Task Learning with Attention”, published on Mar. 28, 2018 to arXiv, retrieved Oct. 17, 2025. (Year: 2018). [cited by examiner]
Can Li, etc., “Multi-task learning with dynamic re-weighting to achieve fairness in healthcare predictive modeling”, published via Biomed Inform. Jul. 2023 ; 143: 104399, retrieved Oct. 17, 2025. (Year: 2023). [cited by examiner]
Rich Caruana, “Multitask Learning”, published on May 31, 2010 to https://www.cs.comell.edu/˜caruana/mlj97.pdf, retrieved Oct. 17, 2025. (Year: 2010). [cited by examiner]
Sarawoot Kongyoung, etc., “Multi-Task Learning using Dynamic Task Weighting for Conversational Question Answering”, published via Proceedings of the 5th International Workshop on Search-Oriented Conversational AI, pp. 1… [cited by examiner]
Michael Mitzenmacher, “Optimizing Learned Bloom Filters by Sandwiching”, published on Mar. 5, 2018 to arXiv, retrieved Dec. 22, 2025. (Year: 2018). [cited by examiner]
Adam Santoro, etc., “Meta-Learning with Memory-Augmented Neural Networks”, published via Proceedings of the 33rd International Conference on Machine Learning, New York, NY, USA, 2016, retrieved Dec. 22, 2025. (Year: 201… [cited by examiner]
Laurent Dinh, etc., “Density Estimation using Real NVP”, published on Feb. 27, 2017 to arXiv, retrieved Dec. 22, 2025. (Year: 2017). [cited by examiner]
Arora et al., “Do GANs actually learn the distribution? An empirical study,” arXiv, Jul. 2017, 11 pages. [cited by applicant]
Chen et al., “Pixelsnail: An improved autoregressive generative model,” arXiv, Dec. 2017, 6 pages. [cited by applicant]
Dinh et al., “Density estimation using Real NVP,” https://arxiv.org/abs/1605.08803v1, May 2016, 29 pages. [cited by applicant]
Jing Chi etc., “Research and Application on Bloom Filter in Routing Planning for Indoor Robot Navigation System”, published or made available via the 2009 Pacific-Asia Conference on Circuits, Communications and System, … [cited by applicant]
Jing Chi, “Application and Research on Weighted Bloom Filter and Bloom Filter in Web Cache”, published in IEEE Xplore on Sep. 4, 2009, retrieved Nov. 16, 2023. (Year: 2009). [cited by applicant]
Jouppi et al., “In-datacenter performance analysis of a tensor processing unit,” arXiv, Apr. 2017, 17 pages. [cited by applicant]
Kalchbrenner et al., “Efficient neural audio synthesis,” arXiv, Jun. 2018, 10 pages. [cited by applicant]
Kalchbrenner et al., “Video pixel networks,” arXiv, Oct. 2016, 16 pages. [cited by applicant]
Karras et al., “Progressive growing of gans for improved quality, stability, and variation,” arXiv, Feb. 2018, 26 pages. [cited by applicant]
Kingma et al., “Glow: Generative flow with invertible 1x1 convolutions,” arXiv, Jul. 2018, 15 pages. [cited by applicant]
Kolesnikov et al., “Deep probabilistic modeling of natural images using a pyramid decomposition,” Semantic Scholar, Dec. 2016, 9 pages. [cited by applicant]
Kraska et al., “The Case for Learned Index Structures,” https://arxiv.org/abs/1712.01208v1, Dec. 2017, 27 pages. [cited by applicant]
Lu et al., “Study on Cloud Storage Model of Map/Reduce-based Index Data,” Journal of Ningbo University, Jul. 2011, 24(3):5 pages (with English abstract). [cited by applicant]
Mescheder et al., “Which Training Methods for GANs do actually Converge?” arXiv, Jul. 2018, 39 pages. [cited by applicant]
Mitzenmacher, “Optimizing Learned Bloom Filters by Sandwiching,” https://arxiv.org/abs/1803.01474, Mar. 2018, 3 pages. [cited by applicant]
Office Action in Chinese Appln. No. 201980063938.9, dated Aug. 9, 2024, 8 pages (with English translation). [cited by applicant]
Office Action in Chinese Appln. No. 201980063938.9, dated Jan. 5, 2024, 17 pages (with English translation). [cited by applicant]
Office Action in European Appln. No. 19782527.6, dated Oct. 17, 2023, 11 pages. [cited by applicant]
Oord et al., “Conditional image generation with pixelcnn decoders,” arXiv, Jun. 2016, 13 pages. [cited by applicant]
Oord et al., “Wavenet: A generative model for raw audio,” arXiv, Sep. 2016, 15 pages. [cited by applicant]
Parmar et al., “Image transformer,” arXiv, Jun. 2018, 10 pages. [cited by applicant]
PCT International Preliminary Report on Patentability in International Appln. No. PCT/EP2019/076143, mailed on Apr. 8, 2021, 13 pages. [cited by applicant]
PCT International Search Report and Written Opinion in International Appln. No. PCT/EP2019/076143, mailed on Jan. 8, 2020, 19 pages. [cited by applicant]
Rae et al., “Meta-Learning Neural Bloom Filters,” https://arxiv.org/abs/1906.04304, Jun. 2019, 14 pages. [cited by applicant]
Rae et al., “Scaling Memory-Augmented Neural Networks with Sparse Reads and Writes,” https://arxiv.org/abs/1610.09027, Oct. 2016, 17 pages. [cited by applicant]
Reed et al., “Parallel multiscale autoregressive density estimation,” arXiv, Mar. 2017, 16 pages. [cited by applicant]
Santoro et al., “Meta-Learning with Memory-Augmented Neural Networks,” Proceedings of The 33rd International Conference on Machine Learning, Jun. 2016, 48:1842-1850. [cited by applicant]
The blog at the bottom of the sea, “Estimating Set Membership With a Bloom Filter”, published on Feb. 8, 2015 to https://blog.demofox.org/2015/02/08/estimating-set-membership-with-a-bloom-filter, retrieved Nov. 16, 2023… [cited by applicant]
Vaswani et al., “Attention is all you need,” arXiv, Dec. 2017, 15 pages. [cited by applicant]
Vaswani et al., “Tensor2tensor for neural machine translation,” arXiv, Mar. 2018, 9 pages. [cited by applicant]
Vinyals et al., “Matching Networks for One Shot Learning,” https://arxiv.org/abs/1606.04080, last revised Dec. 2017, 12 pages. [cited by applicant]
Wu et al., “Google's neural machine translation system: Bridging the gap between human and machine translation,” arXiv, Oct. 2016, 23 pages. [cited by applicant]
Yanqing Peng etc., “Persistent Bloom Filter: Membership Testing for the Entire History”, made available at SIGMOD'1 8 in Houston TX USA on Jun. 10-Jun. 15, 2018, retrieved Nov. 16, 2023. (Year: 2018). [cited by applicant]
Zalan Heszberger etc., “Adaptive Bloom Filters for Multicast Addressing”, presented via High-Speed Networks 2011 Workshop at IEEE INFOCOM 2011, retrieved Nov. 16, 2023. (Year: 2011). [cited by applicant]
Dinh et al., “Density estimation using Real NVP,” CoRR, submitted on, May 27, 2016, arXiv:1605.08803v3, 32 pages. [cited by applicant]
Extended Search Report in European Appln. No. 25189428.3, mailed on Oct. 13, 2025, 12 pages. [cited by applicant]