A convolution slides a filter across space and doesn't care where a pattern sits. Text and time series have a similar-looking problem — but sliding a filter across a sentence doesn't fix it, because for language the thing that matters most is often the order itself.
"X then Y" and "Y then X" are different sequences — in language, "dog bites man" and "man bites dog" are not the same story. But a common way to turn a sequence into a fixed-size vector is to just add up its tokens. Addition doesn't care about order: and land on the exact same point. Once that sum is computed, the order is simply gone — there is no way to recover it from the vector alone.
Feed that pooled vector into a plain dense layer with weights and a sigmoid, trained to output for "X then Y" and for "Y then X":
- — the network's predicted output.
- — the sigmoid function, squashing the result into a value between and .
- — the two learned weights of the dense layer.
- — the two components of the pooled vector.
- — the fixed-size vector produced by summing (pooling) the sequence's tokens together.
- Pooling erases the order
Since is identical for both sequences, is identical for both — for every choice of .
- No amount of training can fix it
No amount of training can make this network output two different things for two inputs it has already made indistinguishable.
Drag the point anywhere in this plane. The loss never depends on and separately — only on their sum. Every point along the diagonal where sits in the exact same flat valley, all at the same loss. There's no direction to search in that helps, because the representation this network is working from threw away the one thing that would have let it succeed.
- Pick a weight — w1 = 2, w2 = -2
The pooled input is for both sequences, so the logit is either way, giving for both.
- Compute the loss
- For "X then Y" (target ) it's
- For "Y then X" (target ) it's
- Average
— exactly the loss of a coin flip, because that's genuinely the best this architecture can do.
Drag the point until the loss reaches its best possible value, 0.693 — the loss of a network that can only guess.
This isn't a training problem — more epochs, a better optimizer, or more data won't fix it. It's an architecture problem: any network that collapses a sequence into an order-blind summary before it ever sees a weight has already thrown away the information the task needed. What sequence models actually need is a way to process tokens one at a time, in order, while remembering what came before — which is exactly what the next chapter builds.