Один из главных моментов, когда я по-настоящему понял, как работают трансформеры:
«Перестаньте думать о трансформере как о конвейере, где каждый слой преобразует выход предыдущего».
«Начните думать о нём как об остаточном потоке».
У каждого блока трансформера есть остаточная связь, которая прибавляет вход блока к его выходу:
x′ = f(x) + x
Из-за этого сложения блок внимания или MLP внутри слоя — функция f в формуле выше — на самом деле НЕ преобразует вход. Вместо этого он вычисляет информацию, которую нужно ДОБАВИТЬ ко входу, прежде чем передать его следующему блоку!
Представьте основную часть трансформера как общую доску. Каждый блок читает с неё то, что ему нужно, и дописывает свои заметки. Все изменения — это добавления.
Более того, слои могут обмениваться информацией на расстоянии. Блок в первом слое может записать информацию, а блок в пятом — прочитать её, хотя прямого соединения между ними нет.
За эти идеи спасибо старой статье Anthropic об устройстве трансформеров: transformer-circuits.pub/2021/framework
👉 @PythonPortal
Post #6185
1.76K

- 👍 9
- ❤ 1