<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://svivek.com//writing/feed.xml" rel="self" type="application/atom+xml" /><link href="https://svivek.com//" rel="alternate" type="text/html" /><updated>2026-01-28T06:54:00-07:00</updated><id>https://svivek.com//writing/feed.xml</id><title type="html">Vivek Srikumar | Writing</title><subtitle>Vivek Srikumar&apos;s website</subtitle><entry><title type="html">Named Neurons</title><link href="https://svivek.com//writing/2026-01-28-named-neurons.html" rel="alternate" type="text/html" title="Named Neurons" /><published>2026-01-28T00:00:00-07:00</published><updated>2026-01-28T00:00:00-07:00</updated><id>https://svivek.com//writing/named-neurons</id><content type="html" xml:base="https://svivek.com//writing/2026-01-28-named-neurons.html"><![CDATA[<p>In our 2019 paper on augmenting neural networks with logic <a class="citation" href="#li2019augmenting">(Li &amp; Srikumar, 2019)</a>, <a href="https://users.cs.utah.edu/~tli/">Tao Li</a>, and I wrote
about something called a <strong>named neuron</strong>. We introduced it as a concept that
helped bind a symbol in first-order logic to an element of a neural network.
Essentially, named neurons are symbols in neural networks. Over the years, I
have found myself thinking about the idea often, and discussed them most
recently in my <a href="https://svivek.com/teaching/neurosymbolic-modeling">neurosymbolic modeling
class</a>.</p>

<p>I am writing this note to elaborate on the idea. To get things started, we will
look at what a representation is. Then we will look at symbols and neurons,
focusing on how they both derive aspects of their meaning because of the
computation they admit. Finally, we will see what all this has to do with named
neurons.</p>

<h2 id="what-is-a-representation">What is a representation?</h2>

<p>A representation is simply a mapping from one conceptual domain to another. In
this relationship, one domain “stands in” for the other. Let us see some
examples.</p>

<div class="inset-image-full with-accent">
  <img src="/writing/img/babylonian-map.png" alt="A Babylonian stone tablet in the center, with a drawing of its content on the left and a map of ancient Babylon represented by the tablet on the right" />
  
  <p class="image-caption" style="margin-top: 0.5em; font-size: 0.85em;">An ancient map. Images courtesy Wikipedia</p>
  
</div>

<p>A map is a representation of a territory. Every region in a map corresponds to
some region in a territory. For example, consider this image of <a href="https://en.wikipedia.org/wiki/Babylonian_Map_of_the_World">an ancient
Neo-Babylonian stone tablet supposedly representing the
world</a>
above.<sup id="fnref:wikipedia-ack"><a href="#fn:wikipedia-ack" class="footnote" rel="footnote" role="doc-noteref">1</a></sup> The stone tablet in the middle is an ancient map that
does not follow modern conventions of map design. Wikipedia has a helpful
diagram (shown left) that highlights the key information on the tablet. The
diagram represents the tablet which in turn represents a territory (on the
right). A map of a map, a representation of a representation!<sup id="fnref:nitpick"><a href="#fn:nitpick" class="footnote" rel="footnote" role="doc-noteref">2</a></sup></p>

<p>Sometimes a representation is built of names or symbols: elements of a (possibly
infinite) discrete set. Emojis are fantastic examples of symbolic
representations that convey <em>prefabricated</em> thoughts. For example, the symbol ⚠️
represents the idea of “warning” and ♀️represents the concept of “femininity” or
“womanhood”. Words and phrases like <code class="language-plaintext highlighter-rouge">curiosity</code>, <code class="language-plaintext highlighter-rouge">transformer neural network</code>
and <code class="language-plaintext highlighter-rouge">Emmy Noether</code> also refer to concepts that may be well-defined or vague.</p>

<p>Such names of concepts are useful because we can use them as prepackaged units
to talk to others. Moreover, such names also relate to one other. For example,
it is probably safe to say that the concepts of <code class="language-plaintext highlighter-rouge">cat</code> and <code class="language-plaintext highlighter-rouge">dog</code> are mutually
exclusive.</p>

<h2 id="what-do-symbols-mean">What do symbols mean?</h2>

<p>Symbolic logic is a language of symbol compositions. There are many families of
symbolic logic; let us take an informal look at first-order logic here.<sup id="fnref:2"><a href="#fn:2" class="footnote" rel="footnote" role="doc-noteref">3</a></sup>
First-order logic has several different types of symbols, summarized in the
table below.</p>

<table>
  <tbody>
    <tr>
      <td><em>Constants</em></td>
      <td>Refer to objects and concepts. They could be real or imaginary, and concrete or abstract</td>
      <td><code class="language-plaintext highlighter-rouge">Salt Lake City</code>, $\pi$, <code class="language-plaintext highlighter-rouge">Emmy Noether</code>, ⚠️, ♀️, <code class="language-plaintext highlighter-rouge">curiosity</code>, <code class="language-plaintext highlighter-rouge">transformer neural network</code>, <code class="language-plaintext highlighter-rouge">Exit 213</code></td>
    </tr>
    <tr>
      <td><em>Predicates</em></td>
      <td>State relationships between objects that could either be <code class="language-plaintext highlighter-rouge">true</code> or <code class="language-plaintext highlighter-rouge">false</code></td>
      <td><code class="language-plaintext highlighter-rouge">IsHappy</code>, <code class="language-plaintext highlighter-rouge">IsTall</code>, <code class="language-plaintext highlighter-rouge">BrotherOf</code></td>
    </tr>
    <tr>
      <td><em>Functions</em></td>
      <td>Relate objects to each other</td>
      <td><code class="language-plaintext highlighter-rouge">NextIntegerOf</code>, <code class="language-plaintext highlighter-rouge">RightEyeOf</code></td>
    </tr>
  </tbody>
</table>

<p>Using such symbols, we can write down claims like:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">IsTall(John)</code>: “John is tall”, which may or may not hold.</li>
  <li><code class="language-plaintext highlighter-rouge">IsEven(4)</code>: “The number 4 is even”, which is <code class="language-plaintext highlighter-rouge">true</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">IsEven(NextIntegerOf(4))</code>: “The integer that follows 4 is even”, which is
<code class="language-plaintext highlighter-rouge">false</code> .</li>
</ul>

<p>The language also includes the standard Boolean operators ($\wedge, \vee, \neg,
\rightarrow, \leftrightarrow$) and the universal and existential quantifiers
$\forall, \exists$ respectively. With these operators, we can compose statements
like:</p>

\[\forall x \in \mathbb{Z}, \texttt{IsEven(c)} \rightarrow \neg\texttt{IsEven(NextIntegerOf(x))}\]

<p>Using a rule like $\forall$ <code class="language-plaintext highlighter-rouge">x</code>, <code class="language-plaintext highlighter-rouge">Father(x, y)</code>$\to$ <code class="language-plaintext highlighter-rouge">Parent(x,y)</code> and the
observation <code class="language-plaintext highlighter-rouge">Father(Bob, Rich)</code>, we can conclude that <code class="language-plaintext highlighter-rouge">Parent(Bob, Rich)</code>. This
is an application of an inference rule.</p>

<p>But do the symbols <em>by themselves</em> have any meaning? That is, what do <code class="language-plaintext highlighter-rouge">IsEven</code>,
<code class="language-plaintext highlighter-rouge">transformer neural networks</code> and <code class="language-plaintext highlighter-rouge">IsTall</code> mean? They look like English phrases,
which is helpful for communication. But the machinery of inference does not
depend on the meaning and choice of the symbols. We could systematically rename
all the symbols and the computational steps of inference would not change.</p>

<p>For example, if we rename <code class="language-plaintext highlighter-rouge">Father</code> and <code class="language-plaintext highlighter-rouge">Parent</code> as <code class="language-plaintext highlighter-rouge">Pred31</code>and <code class="language-plaintext highlighter-rouge">Pred81</code>
respectively, but keep the names of the people as is, we would arrive at the
conclusion <code class="language-plaintext highlighter-rouge">Pred81(Bob, Rich)</code>. This predicate is uninterpretable, and
practically anonymous. What we have done here is similar to renaming variables
in a program: refactoring correctly should not change the behavior of a program.</p>

<div class="inset-image-full with-accent">
  <img src="/writing/img/rule-renaming-isomorphism.png" alt="An illustration that shows that renaming symbols systematically does not change the computational process of inference" />
  
  <p class="image-caption" style="margin-top: 0.5em; font-size: 0.85em;">Renaming the predicate symbols produces a symbolic system that is isomorphic to the original one in terms of the computations that occur with them.</p>
  
</div>

<p>To a certain extent, this is a strength of symbolic reasoning. The process of
inference does not need to know what the symbols mean. By merely manipulating
symbols, we can arrive at valid conclusions without having any clue about what
the symbols mean, or even if they mean anything at all. Systematic renaming of
symbols will not change how they participate in computation, or what computation
can be performed on them.</p>

<p>To summarize this part, there are two aspects to the meaning of a symbol:</p>

<ol>
  <li><em>Meaning from name</em>: What it intrinsically means according to conventional
understanding allows us to communicate symbols with each other. For example,
when I write <code class="language-plaintext highlighter-rouge">RightEyeOf</code>, (I hope) I do not need to explain what that means.</li>
  <li><em>Meaning from computation</em>: What we can do with it, which does not depend on
any intrinsic meaning of the symbols themselves. Symbols could be a private
language if all we need to do is to perform operations on them.</li>
</ol>

<h2 id="do-neurons-mean-anything">Do neurons mean anything?</h2>

<p>Modern neural networks, particularly transformer-type models, are essentially
units of <em>anonymous compute</em>. They are vast computation graphs where internal
nodes do not require intrinsic meaning to function. We can associate meaning
with some elements of a network, usually at the edges. Let us look at two
examples.</p>

<p>Suppose we use BERT to classify whether a sentence is <em>imperative</em> or
<em>interrogative</em>. These labels have meanings defined by an external label
ontology that is outside the model. The inner nodes of BERT, however, are
“homeless” in terms of a semantic home. They are simply numbers in tensors that
are influenced by data and not directly defined in terms of the linguistic
concepts they help process.</p>

<p>Another example is the classic MNIST digit classification task. In a CNN trained
on the task, the input is an image and the output consists of ten nodes,
together the output of a softmax. Each output node is explicitly grounded to a
digit from zero to nine. The outputs are clearly “named”. But what about all the
activations in the layers between the inputs and the outputs?</p>

<p>There is, of course, work that shows that certain concepts can be discovered in
neural networks. An early example is the “cat face neuron” in a trained
convolutional neural network <a class="citation" href="#le2012building">(Le et al., 2012)</a>. But these were accidents
of training, and not the result of intentional design. That is, nobody
designated a certain neuron to be the cat face neuron when the network
architecture was designed. The designation was a <em>post hoc</em> imposition by an
observer.</p>

<p>Sometimes, inner nodes are designated to bear meaning. A good example is the
decomposable attention network <a class="citation" href="#parikh2016decomposable">(Parikh et al., 2016)</a>, an early
neural network for textual entailment. Given a premise and a hypothesis, the
network first encoded the words in both, aligned them using attention and used
the alignment to generate a representation that led to the final entailment
decision. The metaphor was that attention equals alignment. Nodes inside the
network, trained end-to-end, represented soft versions of
alignment.<sup id="fnref:alignment-caveat"><a href="#fn:alignment-caveat" class="footnote" rel="footnote" role="doc-noteref">4</a></sup></p>

<p>There are attempts to discover symbols inside neural networks by projecting them
into high-dimensional spaces. Embeddings are distributed representations that
pack multiple concepts into a single vector. Mechanistic interpretability
techniques seek to disentangle these using tools like sparse autoencoders <a class="citation" href="#huben2024sparse">(Huben et al., 2024)</a>. To state this differently, mechanistic interpretability
attempts to discover symbols or concepts inside neural networks.</p>

<p>What we have, one way or another, is a mapping from elements of neural networks
(inputs, labels, inner nodes, or projections) to external concepts.</p>

<p>The interesting thing is that if you rearrange the matrices in the network, it
is possible to reorganize the network so that the behavior does not change. But
the internal structure is completely different. Nodes in computation graphs do
not care about their specific “address” within the layer. That is, meaning is
not bound to location but to computation. Swapping rows in a matrix produces a
different matrix, but if subsequent computations account for that swap, the
overall behavior remains unchanged.</p>

<p>So the lesson is that meaning in neural networks is bestowed in two ways: by
tying elements to external concepts, and by the computational processes that
operate on them. The meaning of a cat neuron is not intrinsic; it could have
appeared elsewhere if the matrices were shuffled.</p>

<p>Once again, just like symbolic logic, meaning is a function of computation.</p>

<h2 id="what-are-named-neurons">What are named neurons?</h2>

<p>We have seen that both symbols and neurons acquire aspects of their meaning by
the computation they admit. Symbols may have intrinsic (human-understandable)
meaning by the choice of their name, and they are assigned meaning via mappings
to external concepts. The name assigned to a symbol allows us to communicate
about the system and constrain it. Can we similarly assign names to neurons?</p>

<p>In our 2019 paper, we said a named neuron is an element of a neural network that
has external semantics. More precisely, it is a neuron that admits a mapping to
a symbolic space.</p>

<p>Formally, a named neuron is a <em>scalar</em> activation in a neural network that
admits a mapping to a symbol in a formal system, enabling logical reasoning over
the network.</p>

<p>If a representation is a mapping from one domain to another, then a named neuron
is a bridge that closes the gap between the discrete world of symbols and the
continuous world consisting of tensors.</p>

<div class="inset-image-large with-accent">
  <img src="/writing/img/named-neuron.png" alt="A three-way mapping of symbols, computation graph nodes and concepts" />
  
  <p class="image-caption" style="margin-top: 0.5em; font-size: 0.85em;">A three-way mapping of symbols, computation graph nodes and concepts</p>
  
</div>

<p>We can think of this as a three-way mapping. Symbols map to concepts through
interpretations. Some nodes in neural networks map to concepts. We argue for a
mapping between symbols and neural network nodes via named neurons.</p>

<p>In other words, while a neural network may be awash with anonymous units of
compute, named neurons are some nodes in the network which may be recognizable
as concepts.</p>

<p>Now we have a complete picture. Consider the BERT example again. The output node
labeled <em>imperative</em> is a symbol. In fact, it is a predicate. Outputs of neural
networks are predicates. Inputs are objects. This gives us a first-order logic
mapping. When a neural network predicts that a sentence <code class="language-plaintext highlighter-rouge">x</code> is an imperative, we
can think of it as asserting the truth of a proposition <code class="language-plaintext highlighter-rouge">Imperative(x)</code>.</p>

<p>Inner nodes may also be predicates. For example, if the output node
corresponding to a <em>cat</em> label corresponds to the predicate <code class="language-plaintext highlighter-rouge">IsCat(x)</code> for an
input image <code class="language-plaintext highlighter-rouge">x</code>, then the “cat-face” neuron in the CNN might represent a
predicate called <code class="language-plaintext highlighter-rouge">HasCatFace(x)</code>.</p>

<p>How do we find named neurons in practice? Sometimes they are designed in (output
labels and even nodes in hidden layers, though not always), sometimes discovered
post-hoc (cat face neurons), or extracted systematically through mechanistic
interpretability techniques like sparse autoencoders. The field is moving from
accidental discovery to principled extraction.</p>

<h2 id="what-does-naming-neuron-give-us">What does naming neuron give us?</h2>

<p>Why bother naming neurons? Why not let the “distributed representation” handle
everything in its high-dimensional, anonymous way?</p>

<p>Naming a neuron transforms it from a passive statistical artifact to an active
participant in reasoning. Doing so opens the doors to new ways to think about
neural networks.</p>

<p>First, we could write logical rules that constrain a network’s behavior despite
what it learns during training. For example, we could have a rule that says
“do not predict cat if a cat face is no recognizable”, written as:</p>

\[\neg\texttt{HasCatFace(x)} \to \neg \texttt{IsCat(x)}\]

<p>We could enforce this rule at test time at the cost of extra compute for
verification to get a more robust predictor.</p>

<p>Second, we could define loss functions that encourage rule-following behavior.
This way, we would not need to apply the rule at test time. This approach
promises ways for our models to do better than the data they are trained on.</p>

<p>Finally, named neurons could help enhance interpretability. Techniques like
sparse autoencoders are essentially “naming machines”. They attempt to find
latent symbols buried in the anonymous vectors by projecting them into a new
space that disentangles concepts. We could even close the loop from
interpretability to model improvement with constraints.</p>

<p>By naming a neuron, we give it a role in a larger story, one governed by the
laws of logic, not just the randomness of gradient descent.</p>

<p>In future posts, we will explore how named neurons enable new training
objectives and architectural choices. For now, the key insight is that by naming
neurons, we gain leverage, namely the ability to reason about and constrain what
neural networks do.</p>

<h2 id="references">References</h2>

<ol class="bibliography"><li><span id="li2019augmenting">Li, T., &amp; Srikumar, V. (2019). Augmenting Neural Networks with First-order Logic. <i>Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics</i>, 292–302.</span></li>
<li><span id="russell2021artificial">Russell, S. J., &amp; Norvig, P. (2021). <i>Artificial Intelligence: A Modern Approach</i> (Fourth Edition). Pearson.</span></li>
<li><span id="le2012building">Le, Q. V., Ranzato, M. A., Monga, R., Devin, M., Chen, K., Corrado, G. S., Dean, J., &amp; Ng, A. Y. (2012). Building high-level features using large scale unsupervised learning. <i>Proceedings of the 29th International Coference on International Conference on Machine Learning</i>, 507–514.</span></li>
<li><span id="parikh2016decomposable">Parikh, A., Täckström, O., Das, D., &amp; Uszkoreit, J. (2016). A Decomposable Attention Model for Natural Language Inference. <i>Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing</i>.</span></li>
<li><span id="huben2024sparse">Huben, R., Cunningham, H., Smith, L. R., Ewart, A., &amp; Sharkey, L. (2024). Sparse Autoencoders Find Highly Interpretable Features in Language Models. <i>The Twelfth International Conference on Learning Representations</i>.</span></li></ol>

<hr />

<div class="foldable-note">
  <div class="foldable-note-header">
    <h4 class="foldable-note-title">How to cite this post</h4>
    <span class="foldable-note-toggle">▼</span>
  </div>
  <div class="foldable-note-content">
    <div class="foldable-note-inner">
      
<p><strong>Recommended citation:</strong></p>

<p>Srikumar, Vivek. “Named Neurons.” January 27, 2026. https://svivek.com/writing/named-neurons.html</p>

<p><strong>BibTeX:</strong></p>
<div class="language-bibtex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">@misc</span><span class="p">{</span><span class="nl">srikumar2026named</span><span class="p">,</span>
  <span class="na">author</span> <span class="p">=</span> <span class="s">{Srikumar, Vivek}</span><span class="p">,</span>
  <span class="na">title</span> <span class="p">=</span> <span class="s">{Named Neurons}</span><span class="p">,</span>
  <span class="na">howpublished</span> <span class="p">=</span> <span class="s">{\url{https://svivek.com/writing/named-neurons.html}}</span><span class="p">,</span>
  <span class="na">year</span> <span class="p">=</span> <span class="s">{2026}</span><span class="p">,</span>
  <span class="na">month</span> <span class="p">=</span> <span class="s">{January}</span><span class="p">,</span>
  <span class="na">note</span> <span class="p">=</span> <span class="s">{Blog post}</span>
<span class="p">}</span>
</code></pre></div></div>


    </div>
  </div>
</div>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:wikipedia-ack">
      <p>All three images are courtesy Wikipedia:
[<a href="https://en.wikipedia.org/wiki/Babylonian_Map_of_the_World#/media/File:BabylonianWorldMap2.jpg">1</a>],
[<a href="https://en.wikipedia.org/wiki/Babylonian_Map_of_the_World#/media/File:Baylonianmaps.JPG">2</a>]
and [<a href="https://commons.wikimedia.org/wiki/File:Meso2mil-English.JPG">3</a>] <a href="#fnref:wikipedia-ack" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:nitpick">
      <p>If you want to nitpick, you might observe that even the rightmost
image is a representation because it is just a map, not the actual
territory. So what we have is a map of a map of a map. And if you want to
nitpick more, you might note we have an image, i.e., a representation, of
the stone tablet, not the tablet itself. <a href="#fnref:nitpick" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2">
      <p>If you are interested, Russell and Norvig’s AI book <a class="citation" href="#russell2021artificial">(Russell &amp; Norvig, 2021)</a> has an excellent introduction to logic that
presents this more formally in the context of AI. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:alignment-caveat">
      <p>Of course, not every use of the attention mechanism is
interpretable. Self-attention within transformer networks are not. <a href="#fnref:alignment-caveat" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="neuro-symbolic modeling" /><category term="lecture notes" /><summary type="html"><![CDATA[This post elaborates on the concept of a named neuron, which bridges neural networks with symbolic logic.]]></summary></entry><entry><title type="html">Five Million Years of Solitude</title><link href="https://svivek.com//writing/2025-11-23-5-million-years-of-solitude.html" rel="alternate" type="text/html" title="Five Million Years of Solitude" /><published>2025-11-23T00:00:00-07:00</published><updated>2025-11-23T00:00:00-07:00</updated><id>https://svivek.com//writing/5-million-years-of-solitude</id><content type="html" xml:base="https://svivek.com//writing/2025-11-23-5-million-years-of-solitude.html"><![CDATA[<div class="inset-image-small with-accent">
  <img src="img/A-kadabba-reading.png" alt="A silhouette of A. kaddaba reading a stack of papers" />
  
</div>

<p>How big is the <a href="https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1">FineWeb
corpus</a>? The
documentation tells us that it has 15 trillion tokens, but the number is hard to
picture.</p>

<p>Instead, let’s go back in time to meet the <em><a href="https://en.wikipedia.org/wiki/Ardipithecus_kadabba">Ardipithecus
kadabba</a></em>. It is an early
hominid that lived about 5.7 million years ago, soon after ancestral chimps and
early hominids parted ways from their common ancestral hearth.</p>

<p>Imagine that an A. kadabba decided to start reading the corpus at the pace of a
modern American leisure reader. Busy with her reading, she would have bypassed
the whole Homo erectus, Neanderthal and Denisovan business, missed the birth of
the first Homo sapiens, and would be wrapping up her reading just in time to use
a modern chatbot.</p>

<p>Of course, she would be no match for the chatbot because she has only been
pretrained, and that too largely on 21st century English text. I suspect that
the surprisingly literate and well-read hominid would have been disappointed and
questioning the purpose of having stayed up (and alive) doing all that reading.
She would still need instruction tuning and preference alignment. But still,
they say reading builds character. And character, like personality, goes a long
way.</p>

<p>Maybe the lesson isn’t about how much data we can shovel into the system, but
that we need a better way to structure the intelligence we build.</p>

<div class="foldable-note">
  <div class="foldable-note-header">
    <h4 class="foldable-note-title">Technical details: Why 5.7 million years?</h4>
    <span class="foldable-note-toggle">▼</span>
  </div>
  <div class="foldable-note-content">
    <div class="foldable-note-inner">
      
<p>How did we arrive at the number 5.7 million for the number of years will take to
read the FineWeb corpus? If you’re curious, and don’t mind some aggressive
approximations, read on.</p>

<h3 id="tokens-to-words">Tokens to words</h3>

<p>The FineWeb corpus has 15 trillion tokens. According to <a href="https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1">the blogpost describing
the corpus</a>,
the tokens are constructed using the GPT2 tokenizer. The exchange rate between
tokens and words is not 1:1. Words can, and are, broken down into subwords by
the tokenizer. Small words may be retained as is, and bigger words will be
broken down. As of now, <a href="https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them">the rule of thumb suggested by
OpenAI</a>
suggests that we can of 100 tokens as 75 words, which gives an exchange rate of
1.33 tokens per word.</p>

<p>But that is for the more recent tokenizer, whose vocabulary size (i.e., the
number of word pieces) is much larger. GPT2’s vocabulary contains about 50,000
tokens. If we make the vocabulary smaller, then more words will not be in it,
and will get broken up. As a result, the number of tokens we get from a word
will be bigger.</p>

<p>Consequently, we can think of one word as 1.5 tokens. With this exchange rate,
the FineWeb corpus will have 10 trillion words.</p>

<h3 id="words-to-books">Words to books</h3>

<p>Now that we have an estimate of how many words are in the corpus, let us now
estimate how many books they can fill up. Of course, we will need to make
aggressive approximations here. Books can be long (Marcel Proust’s <em>In Search of
Lost Time</em> is about 1.2 million words long), and books can be short (Animal Farm
has about 30,000 words.) However, an average book has about 80,000 to 100,000
words. Let us take the upper end for simplicity.</p>

<p>FineWeb has 10 trillion words. At 100,000 words per book, the corpus corresponds
to 100 million books!</p>

<h3 id="books-to-years">Books to years</h3>

<p>Finally, let us see how long it takes to read 100 million books. <a href="https://worldpopulationreview.com/country-rankings/average-books-read-per-year-by-country">According to
the World Population
Review</a>,
an average American reader reads 17 books per year. To read 100 million books,
it will take about 5.88 million years. Conveniently, this is quite close to when
the A. kadabba lived, except for a slight error. Maybe the A. kadabba in our
story is a faster reader, and shaves off 0.18 million years. This gives us the
5.7 million years.</p>


    </div>
  </div>
</div>]]></content><author><name></name></author><category term="satire" /><summary type="html"><![CDATA[Suppose an early hominid started reading the FineWeb corpus...]]></summary></entry><entry><title type="html">Welcome</title><link href="https://svivek.com//writing/2025-11-22-welcome.html" rel="alternate" type="text/html" title="Welcome" /><published>2025-11-22T00:00:00-07:00</published><updated>2025-11-22T00:00:00-07:00</updated><id>https://svivek.com//writing/welcome</id><content type="html" xml:base="https://svivek.com//writing/2025-11-22-welcome.html"><![CDATA[<p>Over the years, I have been explaining my research to slightly different
audiences: <a href="/students.html">students</a>, linguists, mental health experts, <a href="https://www.price.utah.edu/ai/upskilling-in-ai">Utah
faculty learning about AI</a>, etc.
Each conversation has been slightly different, but has taught me more about AI.</p>

<p>This blog is an attempt to continue those conversations and working through
ideas publicly. What kinds of ideas? That the most interesting AI challenges are
not just about scale. That techno-solutionism without context from domain
experts may be problematic. You can find more about <a href="/research">my research interests
here</a>. My current research focuses on neuro-symbolic methods,
low-data domains and resources, and systematic benchmarking.</p>

<p><strong>What I’ll write about</strong>: Research ideas. Lecture notes on topics like
<a href="/teaching/neurosymbolic-modeling">neuro-symbolic methods</a>. Thinking about
benchmarking beyond metrics. Thinking about linguistic phenomena. Making AI do
interesting things with limited data or compute resources. Commentary about AI
and society.</p>

<p>But I will likely also write about topics that are not just AI-related. I
generally like nerdy things, sometimes do recreational math for relaxation,
enjoy reading and writing good code, and am almost always reading a book or two
if I can find the time.</p>]]></content><author><name></name></author><category term="meta" /><summary type="html"><![CDATA[Why this blog exists]]></summary></entry></feed>