Explain self-attention in simple terms.
Self-attention lets each token decide how much to 'pay attention' to every other token when building its representation. Each token produces a query, key, and value; the query is compared against all keys to get attention weights, which then combine the values. In 'the animal didn't cross the street because it was tired', attention helps 'it' link to 'animal'. Multi-head attention runs several such mechanisms in parallel to capture different kinds of relationships.