Cегодня прочитал Transformer Circuits и это прямо хорошо
Основная идея - представить трансформер как последовательность матричных и тензорных произведений и использовать свойства тензорного произведения чтобы построить эквивалетную сеть, которую проще интерпретировать.
Теперь немного конкретнее про те вещи которые мне показались интересными.
Проще думать о том как работает трансформер, если смотреть на residual сеть как на основную. Остальные слои от неё отбранчовываются и добавляют/убирают информацию.
Attention heads — независимые друг от друга операторы (даже с учётом mixing matrix) которые переносят информацию из одних токенов в другие.
Дальше работают с упрощённым трансформером без LayerNorm и FFN.
Однослойный transformer можно (нестрого) интерпретировать как биграмную и скип-триграмную языковую модель. Что такое скип-триграммы? Например если у вас есть текст twitter.com/username/status, то [twitter, ..., /] может быть скиптриграммой в которой пропущено /username Авторы показали что в обученной модели такая скиптриграмма сильно повышает вероятность status.
Такой подход позволяет показать ограничения однослойной модели. Например так как триграмма [keep, ...., in] повышает вероятность mind а [keep, ..., at] вероятность bay, то модель также должна повышать верояности [keep, ..., at] -> mind и [keep, ..., in] -> bay. И несколько таких "багов" модели даже нашли.