Skip to content
Content

Positional Encoding in Transformers

April 8, 2024
Transformers process all words in a sentence simultaneously, which allows for unparalleled speed and efficiency. However, this parallelization introduces a problem: Transformers lack an inherent understanding of word order. Without addressing this limitation, Transformers cannot fully comprehend the meaning of sentences where word sequence plays a critical role. To resolve this, we incorporate positional encoding, a mechanism that enables the model to recognize the order of words while maintaining the benefits of parallel processing. The self-attention mechanism revolutionizes natural language processing (NLP) by generating context-aware word representations. For instance, the word "apple" in "apple juice" has a different meaning than in "Apple phones." Self-attention excels at capturing such contextual relationships. However, the very feature that enables self-attention to process words simultaneously—its lack of sequential constraints—also poses a challenge. Consider these sentences:
  • "The cat chased the mouse."
  • "The mouse chased the cat."
Although they contain the same words, their meanings differ due to word order. Self-attention, without positional information, treats these sentences as identical, failing to distinguish between them. Reintroducing sequential processing (as seen in RNNs) is not an option because it sacrifices the speed and scalability that Transformers offer. Instead, the creators of the Transformer model introduced positional encoding, a method to embed positional information alongside word embeddings. A straightforward approach would be assigning numerical indices (e.g., 1, 2, 3) to represent word positions. While intuitive, this approach fails because:
  • Neural networks struggle with discrete, non-smooth values.
  • Large positional values in long sentences can lead to unstable gradients and hinder learning.
Sine functions meet the criteria for positional encoding:
  • They are continuous and periodic.
  • Their values remain within a specific range (-1 to 1).
Using sine functions, each word position can be assigned a unique value. For instance:
  • Position 1 → sin(1)
  • Position 2 → sin(2)
  • Position 3 → sin(3)
To address the issue of duplicate values, we combine sine and cosine functions:
  • Position 1 → [sin(1), cos(1)]
  • Position 2 → [sin(2), cos(2)]
  • Position 3 → [sin(3), cos(3)]
The solution involves expanding the encoding by:
  1. Adding additional sine-cosine pairs with varying frequencies.
  2. Creating a longer encoding vector (e.g., 512 dimensions).
  3. Using reduced frequencies (e.g., sin(x/2), sin(x/3)) to ensure a greater range before patterns repeat.
This approach guarantees:
  • Continuous, bounded, and unique values.
  • Compatibility with long input sequences.
The solution involves expanding the encoding by:
  1. Adding additional sine-cosine pairs with varying frequencies.
  2. Creating a longer encoding vector (e.g., 512 dimensions).
  3. Using reduced frequencies (e.g., sin(x/2), sin(x/3)) to ensure a greater range before patterns repeat.
This approach guarantees:
  • Continuous, bounded, and unique values.
  • Compatibility with long input sequences.
The Transformer model uses the following formula for positional encoding:
The positional encoding for even indices (2i) is given by:
Where:
  • pos is the position in the sequence
  • i is the dimension index
  • d_model is the model dimension
Where:
  • pos: The position of the word in the sequence.
  • i: Dimension index.
  • d_model: The total dimensionality (e.g., 512). The sinusoidal functions create a predictable pattern:
  • Nearby positions result in vectors with small differences in lower dimensions.
  • Distant positions show greater variation, even in higher dimensions.
The sinusoidal functions create a predictable pattern:
  • Nearby positions result in vectors with small differences in lower dimensions.
  • Distant positions show greater variation, even in higher dimensions.
This capability stems from the mathematical properties of the sine and cosine waves, which allow relative positions to be represented as linear transformations. Instead of concatenating positional encodings (512 dimensions) with word embeddings (512 dimensions)—which would double the input size—we add them element-wise. This approach:
  • Preserves the original input size.
  • Avoids introducing unnecessary parameters.
At first glance, adding two vectors might seem problematic—wouldn’t this distort the information? Surprisingly, it doesn’t, because:
  • The sinusoidal patterns of positional encodings are distinguishable from the semantic structure of word embeddings.
  • The model learns to interpret both components independently during training.
Experiments confirm this. After adding positional encodings, similar words still cluster together, demonstrating that semantic information remains intact. Positional encoding is a key innovation in Transformers. It:
  • Enables the model to process sequences without sacrificing speed.
  • Efficiently encodes relative positions using predictable sinusoidal patterns.
  • Maintains interpretability and scalability.
By adding positional encodings instead of concatenating them, the model avoids unnecessary complexity while retaining its predictive power. Understanding the inner workings of positional encoding reveals the brilliance of Transformer models. Each design choice, from sinusoidal patterns to efficient integration with word embeddings, plays a vital role in their success. As you dig in deeper, you’ll appreciate how these small details unlock powerful capabilities. Curious to learn more? Subscribe to my newsletter for more in-depth AI and QA Automation content.
Cheers!