<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>research on Saurabh Kumar</title><link>https://saurabh-kumar.com/tags/research/</link><description>Recent content in research on Saurabh Kumar</description><generator>Hugo</generator><language>en-US</language><copyright>Copyright © 2025, Saurabh Kumar.</copyright><lastBuildDate>Sun, 21 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://saurabh-kumar.com/tags/research/index.xml" rel="self" type="application/rss+xml"/><item><title>How Prompt Caching Works</title><link>https://saurabh-kumar.com/articles/2026/06/how-prompt-caching-works/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2026/06/how-prompt-caching-works/</guid><description>&lt;p&gt;Today I learned how prompt caching actually works under the hood in LLM APIs&#10;(Anthropic, OpenAI, Bedrock, etc.), and why it makes long agent loops 5–10×&#10;cheaper and noticeably faster.&lt;/p&gt;&#10;&lt;h2 id="the-problem-it-solves"&gt;The problem it solves&lt;/h2&gt;&#10;&lt;p&gt;In an agent / chat loop, every request to the model looks almost identical to&#10;the previous one:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The same big &lt;strong&gt;system prompt&lt;/strong&gt; (rules, tool descriptions, skills…)&lt;/li&gt;&#10;&lt;li&gt;The same set of &lt;strong&gt;tool definitions&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;The same &lt;strong&gt;history&lt;/strong&gt; of past user/assistant/tool messages, with only a few&#10;new tokens appended at the end&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Without caching, the provider has to re-tokenize and run a full attention&#10;pre-fill over all of that prefix on every turn. For a 100k-token context, that&#10;prefill dominates both cost and latency.&lt;/p&gt;&#10;&lt;h2 id="what-gets-cached-the-kv-state"&gt;What gets cached: the KV state&lt;/h2&gt;&#10;&lt;p&gt;When a transformer processes a prompt, it computes a &lt;strong&gt;key/value tensor pair&#10;for every token in every attention layer&lt;/strong&gt;. That KV state is what attention&#10;queries against on the next decoded token.&lt;/p&gt;&#10;&lt;p&gt;Prompt caching is, mechanically, &amp;ldquo;save those KV tensors for a prefix on the&#10;server, and reuse them next time the same prefix shows up.&amp;rdquo; Output tokens are&#10;never cached — only the prompt-side KV state.&lt;/p&gt;&#10;&lt;h2 id="the-lifecycle"&gt;The lifecycle&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Mark a cache breakpoint.&lt;/strong&gt; The client places a &lt;code&gt;cache_control&lt;/code&gt; marker&#10;(Anthropic) or relies on automatic prefix detection (OpenAI). Everything&#10;&lt;em&gt;before&lt;/em&gt; the marker is the cacheable prefix.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;First request → cache write.&lt;/strong&gt; The provider hashes the cacheable prefix&#10;(model id + tools + messages + cache key, byte-exact), runs the prefill,&#10;and stores the resulting KV tensors keyed by that hash. You&amp;rsquo;re billed&#10;&lt;code&gt;cache_write&lt;/code&gt; tokens, usually a bit &lt;em&gt;more&lt;/em&gt; than normal input&#10;(~1.25× for Anthropic 5-minute cache, ~2× for the 1-hour &amp;ldquo;extended&amp;rdquo;&#10;cache).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Next request → cache read.&lt;/strong&gt; If the new request starts with exactly the&#10;same prefix, the provider looks up the hash, loads the stored KV state,&#10;and only runs fresh compute for the suffix after the last hit. You&amp;rsquo;re&#10;billed &lt;code&gt;cache_read&lt;/code&gt; tokens — often &lt;strong&gt;~10% of the normal input price&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;TTL.&lt;/strong&gt; Entries expire after a TTL (Anthropic: 5 min default, 1 hour&#10;opt-in; OpenAI: a few minutes, automatic). Each hit typically refreshes&#10;the TTL, so an active session keeps the cache warm.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="what-invalidates-the-cache"&gt;What invalidates the cache&lt;/h2&gt;&#10;&lt;p&gt;The hash is over the &lt;strong&gt;exact bytes&lt;/strong&gt; of the prefix. Anything that changes&#10;those bytes forces a fresh &lt;code&gt;cache_write&lt;/code&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Editing the system prompt (even reordering sentences or adjusting&#10;whitespace)&lt;/li&gt;&#10;&lt;li&gt;Adding, removing, or reordering a tool definition&lt;/li&gt;&#10;&lt;li&gt;Inserting/editing/reordering an earlier message in the history&lt;/li&gt;&#10;&lt;li&gt;Switching model id or provider&lt;/li&gt;&#10;&lt;li&gt;Changing the cache key (some providers expose one for tenant isolation)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The corollary: to maximize hit rate, agents should &lt;strong&gt;only append at the end&lt;/strong&gt;&#10;and keep system prompt and tools byte-stable across turns.&lt;/p&gt;&#10;&lt;h2 id="reading-the-usage-block"&gt;Reading the usage block&lt;/h2&gt;&#10;&lt;p&gt;Most providers return a usage object on every response with at least these&#10;fields:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;312&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// fresh, non-cached prompt tokens this turn&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;output&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;845&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// generated tokens&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cacheRead&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;47210&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// prompt tokens served from cache&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cacheWrite&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;// prompt tokens written to cache this turn&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A useful per-turn metric is the &lt;strong&gt;cache hit ratio&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;cacheHitRate = cacheRead / (input + cacheRead + cacheWrite)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;0%&lt;/code&gt; → nothing reused. Normal on the very first turn, or right after the&#10;prefix changed (tool list updated, history compacted, model swapped).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;70–95%&lt;/code&gt; → healthy steady state for a long agent loop.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cacheWrite &amp;gt; 0, cacheRead = 0&lt;/code&gt; → you just primed the cache; the next turn&#10;should be cheap if you don&amp;rsquo;t break the prefix.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="pricing-back-of-the-envelope"&gt;Pricing back-of-the-envelope&lt;/h2&gt;&#10;&lt;p&gt;Rough Anthropic numbers (Claude Sonnet, illustrative):&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Token type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Price multiplier vs. input&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;input&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1×&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;cache_write&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~1.25× (5 min) / ~2× (1h)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;cache_read&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~0.1×&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;output&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~5×&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;So a 100k-token prefix that&amp;rsquo;s hit 20 times across a session costs roughly:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;1 × 1.25 × 100k (one write)&#10;+ 19 × 0.1 × 100k (nineteen reads)&#10;= 1.25 × 100k + 1.9 × 100k&#10;≈ 3.15 × 100k input-equivalent&#10;&#10;vs. uncached:&#10;20 × 1 × 100k = 20 × 100k&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A ~6× saving on the prompt side, plus a big latency win because the server&#10;skips the prefill.&lt;/p&gt;&#10;&lt;h2 id="gotchas"&gt;Gotchas&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Minimum prefix size.&lt;/strong&gt; Most providers require the cacheable prefix to be&#10;above some threshold (e.g. 1024 tokens for Anthropic) before caching kicks&#10;in at all.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Position of the breakpoint matters.&lt;/strong&gt; Putting it after volatile content&#10;(like the latest user message) means nothing ever gets reused.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tool definitions are part of the prefix.&lt;/strong&gt; Dynamically generated tool&#10;lists with shuffled order will silently destroy your hit rate.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Streaming vs. non-streaming&lt;/strong&gt; use the same cache; cache fields show up&#10;in the final usage event.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cost accounting:&lt;/strong&gt; &lt;code&gt;cache_write&lt;/code&gt; is more expensive than &lt;code&gt;input&lt;/code&gt;, so a&#10;flaky prefix that constantly re-writes can be &lt;em&gt;worse&lt;/em&gt; than no caching at&#10;all.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item><item><title>Notes on Understanding Hebbian Learning</title><link>https://saurabh-kumar.com/articles/2025/11/notes-on-understanding-hebbian-learning/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://saurabh-kumar.com/articles/2025/11/notes-on-understanding-hebbian-learning/</guid><description>&lt;p&gt;Hebbian learning describes how correlated neural activity can strengthen connections. It is named after psychologist Donald Hebb, who proposed it in 1949.&lt;/p&gt;&#10;&lt;p&gt;The entire concept boils down to one beautiful phrase:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&amp;ldquo;Neurons that fire together, wire together.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;That is a useful shorthand, not a complete account of learning. Timing and the synapses involved matter.&lt;/p&gt;&#10;&lt;h2 id="breaking-it-down"&gt;Breaking It Down&lt;/h2&gt;&#10;&lt;p&gt;Repeated, correlated activity can strengthen the connection between two neurons. The effect depends on timing and the synapse, rather than simultaneous activity always producing the same change.&lt;/p&gt;&#10;&lt;p&gt;Think of it like this:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;First time: &amp;ldquo;Oh, these two things happened together&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Fifth time: &amp;ldquo;Okay, these definitely seem related&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;Hundredth time: &amp;ldquo;These are basically the same signal now&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="real-examples-that-make-it-click"&gt;Real Examples That Make It Click&lt;/h2&gt;&#10;&lt;h3 id="learning-to-type"&gt;Learning to Type&lt;/h3&gt;&#10;&lt;p&gt;Remember learning to type? At first, finding the &amp;lsquo;Q&amp;rsquo; key required conscious thought. Your brain neurons for &amp;ldquo;want to type Q&amp;rdquo; and &amp;ldquo;move left pinky to top left&amp;rdquo; fired together&amp;hellip; over and over. Now? It&amp;rsquo;s automatic. Those neurons are strongly wired.&lt;/p&gt;&#10;&lt;h3 id="pavlovs-dogs-the-classic"&gt;Pavlov&amp;rsquo;s Dogs (The Classic)&lt;/h3&gt;&#10;&lt;p&gt;Bell rings → food appears → dogs salivate&lt;/p&gt;&#10;&lt;p&gt;Do this enough times, and the neurons for &amp;ldquo;bell sound&amp;rdquo; and &amp;ldquo;food is coming&amp;rdquo; become so tightly linked that just the bell makes dogs salivate. No food needed.&lt;/p&gt;&#10;&lt;h3 id="your-morning-coffee-ritual"&gt;Your Morning Coffee Ritual&lt;/h3&gt;&#10;&lt;p&gt;Why does the smell of coffee make you feel more awake even before you drink it? Neurons fired together thousands of times:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Smell of coffee + feeling of alertness&lt;/li&gt;&#10;&lt;li&gt;Sound of coffee maker + anticipation of energy&lt;/li&gt;&#10;&lt;li&gt;Taste of first sip + actual caffeine effect&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Now they&amp;rsquo;re all wired together into one mega-circuit.&lt;/p&gt;&#10;&lt;h2 id="the-actual-mechanism-simplified"&gt;The Actual Mechanism (Simplified)&lt;/h2&gt;&#10;&lt;p&gt;What&amp;rsquo;s physically happening:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Neuron A fires&lt;/li&gt;&#10;&lt;li&gt;Neuron B fires (around the same time)&lt;/li&gt;&#10;&lt;li&gt;The synapse (connection) between them releases more receptors&lt;/li&gt;&#10;&lt;li&gt;The connection physically strengthens&lt;/li&gt;&#10;&lt;li&gt;Next time A fires, it&amp;rsquo;s easier to activate B&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;It&amp;rsquo;s literally changing the structure of your brain. Learning is physical.&lt;/p&gt;&#10;&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;/h2&gt;&#10;&lt;h3 id="for-understanding-yourself"&gt;For Understanding Yourself&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Habits:&lt;/strong&gt; They form because neurons wire together through repetition&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Memory:&lt;/strong&gt; Retrieving memories strengthens those neural pathways&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Skills:&lt;/strong&gt; Practice literally builds stronger brain connections&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Trauma:&lt;/strong&gt; Unfortunately, negative associations work the same way&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="for-ai-and-machine-learning"&gt;For AI and Machine Learning&lt;/h3&gt;&#10;&lt;p&gt;Hebbian learning inspired artificial neural networks. Modern AI doesn&amp;rsquo;t use pure Hebbian learning anymore (it&amp;rsquo;s evolved into more sophisticated algorithms), but it started here.&lt;/p&gt;&#10;&lt;p&gt;The basic idea - connections that prove useful should get stronger - is still foundational.&lt;/p&gt;&#10;&lt;h2 id="the-flip-side-use-it-or-lose-it"&gt;The Flip Side: &amp;ldquo;Use It or Lose It&amp;rdquo;&lt;/h2&gt;&#10;&lt;p&gt;Here&amp;rsquo;s the thing nobody tells you: it works in reverse too.&lt;/p&gt;&#10;&lt;p&gt;Neurons that STOP firing together will gradually UNWIRE.&lt;/p&gt;&#10;&lt;p&gt;This is why:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;You forget languages you don&amp;rsquo;t practice&lt;/li&gt;&#10;&lt;li&gt;Old skills get rusty&lt;/li&gt;&#10;&lt;li&gt;Memories fade&lt;/li&gt;&#10;&lt;li&gt;Bad habits can actually be broken&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-math-optional"&gt;The Math (Optional)&lt;/h2&gt;&#10;&lt;p&gt;For the nerds: The basic Hebbian rule can be expressed as:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Δw = η × x × y&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Where:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Δw = change in connection strength&lt;/li&gt;&#10;&lt;li&gt;η = learning rate&lt;/li&gt;&#10;&lt;li&gt;x = activity of first neuron&lt;/li&gt;&#10;&lt;li&gt;y = activity of second neuron&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;If both are active (positive values), the connection strengthens. Simple, elegant, powerful.&lt;/p&gt;&#10;&lt;h2 id="practical-takeaways"&gt;Practical Takeaways&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;For Learning Anything:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Repetition isn&amp;rsquo;t just helpful - it&amp;rsquo;s literally how learning works&lt;/li&gt;&#10;&lt;li&gt;Practice needs to be consistent (neurons need to fire together repeatedly)&lt;/li&gt;&#10;&lt;li&gt;Spacing matters (distributed practice &amp;gt; cramming)&lt;/li&gt;&#10;&lt;li&gt;Context matters (learning in similar contexts strengthens related neural patterns)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;For Breaking Bad Habits:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;You need to stop the neurons from firing together&lt;/li&gt;&#10;&lt;li&gt;Replace the pattern with a new one (create competing neural pathways)&lt;/li&gt;&#10;&lt;li&gt;It takes time - you&amp;rsquo;re literally rewiring your brain&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;For Building Skills:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Deliberate practice works because it forces specific neurons to fire together&lt;/li&gt;&#10;&lt;li&gt;Feedback loops help strengthen the right connections&lt;/li&gt;&#10;&lt;li&gt;Muscle memory is real - it&amp;rsquo;s Hebbian learning in motor cortex&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="cool-extensions-of-this-idea"&gt;Cool Extensions of This Idea&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Spike-timing-dependent plasticity (STDP):&lt;/strong&gt; Order matters too. In this simplified account, neuron A firing before neuron B (within ~20ms) can strengthen the connection, while the reverse order can weaken it. The timing and effect depend on the synapse.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Competitive learning:&lt;/strong&gt; When neurons wire together, they can also suppress other connections. This is how your brain specializes - certain neuron clusters become experts at specific patterns.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Associative memory:&lt;/strong&gt; Hebbian associations offer a way to think about connections between faces, names, and songs. They are not a complete explanation of memory.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;If you want to dive deeper:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Donald Hebb&amp;rsquo;s original work: &amp;ldquo;The Organization of Behavior&amp;rdquo; (1949)&lt;/li&gt;&#10;&lt;li&gt;Modern neuroscience textbooks on synaptic plasticity&lt;/li&gt;&#10;&lt;li&gt;Research on long-term potentiation (LTP) - the molecular mechanism behind Hebbian learning&lt;/li&gt;&#10;&lt;li&gt;AI/ML papers on Hebbian learning algorithms&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>