Разбираюсь с трансформерами, возникло несколько вопросов по их работе и по мотивам positional encoding. Как кодируется положение слова относительно начала текста и зачем это делается, я вроде бы понимаю. Почему суммируется позициональный вектор и вектор эмбеддинга, я тоже вроде как понимаю.
Вопросы:
1) размерность позициональных векторов пропорциональна максимальной длине контекста, а размерность эмбеддингов пропорциональна размеру словаря. Как происходит подгонка размерностей, чтобы позиции и эмбеддинги имело смысл суммировать, а не конкатенировать? Другими словами, для больших контекстов и маленького словаря позициональные вектора будут куда длиннее эмбеддингов. Что делать, растягивать эмбеддинги? Паддить? Почему?
У позиционных эмбеддингов шейп ( максимальная длина контекста, 512), у эмбеддингов токенов (размер словаря, 512). После лукапа по матричкам эмбеддингов получаются шейпы (длина последовательности, 512) и все прекрасно складывается