Обновить

Комментарии 2

Здравствуйте, или у меня глючит Хабр, или у вас нет формулы вектора в начале абзаца о Positional Encoding. И у вас нет пояснения что позиционный вектор должен совпадать по размеру с длиной эмбеддинга и как он вообще позволяет модели получить информацию о позиции токена. Мне вот сложно было это понять. И главное - никакой информации про подготовку заявленного в заголовке датасета.

Про формулу: да, хабр глючит. В редакторе я формулу вижу, в опубликованном тексте нет :(

Синтетический датасет есть. Он на лету генерируется. class SampleSet задает процедуру перечисления, в конечном итоге вызывается функция make_sample

По размеру они должны совпадать просто потому, что они к векторному представлению плюсуются поточечно. Ну и по самой идее трансформера: сразу после преобразования токенов через ембеды получается последовательность векторов заданной размерности. Слоев много, размерность при трансформации не меняется

Про то, как позиционный эмбед позволяет модели учитывать позицию

Это не строгая идея. Модель генерит query вектор на основе вектора в текущей ячейке линейным преобразованием, потом то, что сгенерированно, домножается линейно на ключ

По формулам в идеальном чистом виде, если бы были только эмбеды

exp (pos cdot M^L cdot sqrt(-1)) разворачивается в вектор
(cos(pos cdot M), sin(pos
cdot M), cos(pos cdot M^2), sin(pos cdot M^2), ... )


exp((pos + k) cdot M^L) = exp(pos cdot M^l) cdot exp(k cdot M^l)

умножение при разворачивании в вектора поточечное

Во всех формулах L это номер компоненты в векторе. Одной комплексной ячейке соответствует две компоненты в векторе из действительных чисел

Модель в текущей ячейке в данных видит exp(pos cdot M^l). Если в нейронке в линейном слое записаны веса exp(k cdot M^l), то при механизме внимания прилетит value из нужной ячейки. В весах и векторах записаны синусы и косинусы. В экспоненциальной форме видно, что они друг из друга выражаются линейно

В реальности естественно все сложнее. Вектора общие на все: и на позицию, и на смысл. В реальности таких конкретных запросов не будет. Но после подмешивания позиционных эмбедов такие запросы точно переходят в разрад доступных. Плюс сами веса учатся. Модель может позиционные эмбединги использовать, а может и не использовать. В реальности будет какая-то смесь

ps: спасибо за коментарий. Рад, что статья кого-то заинтересовала. Но дорабатывать не буду. Она все-таки довольно старая.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации