Comments 16
Простое число
1001
1001 -- составное число: .
Если вы до сих пор считаете, что positional encoding в трансформерах — это знаменитые sin/cos из статьи 2017 года, то боюсь, что собеседование для вас закончится автоматическим реджектом.
Ну удачи им в поисках кандидатов, которые в совершенстве знают виды positional encoding в трансформерах, предметную область NLP с которой им придется работать и еще и хотят немного денег.
А если более развернутый и менее токсичный комментарий) то, как вы правильно упомянули, кодирование порядка слов в трансформере не самая важная его часть. В одном из проектов, мы делали трансформер для преобразования Set2Set, где позиционное кодирование не то, что не нужно а даже вредно. В результате модель прекрасно работает и с позиционным кодированием и без. Поэтому народ и не особо уделяет этому внимание.
Если на собеседовании задается вопрос про positional encoding это может означать 2 вещи:
Вы устраиваетесь на позицию PhD/Postdoc в лабораторию которая занимается AI и вам придется с этим работать (например, проводить эксперименты по новым типам трансформеров). Такие кандидаты стоят очень дорого.
Интервьювер не понимает что спрашивать надо, и спрашивает вопрос по тому, что выучил сам.
Ответ про sin/cos достаточен, потому-что показывает, что кандидат знает как с помощью простых периодических функций можно закодировать позицию. И это достаточно древняя идея, использовавшаяся и до трансформеров. Остальное, в работе ему скорее всего не понадобится, за исключением п.1
Ну и да) просить написать техническую статью по AI ChatGPT -- иронично
Ну камон) Если ты идешь NLP разрабом и идешь на техническую секцию, то пробегутся о всех частях трансформера, и конечно нужно знать о позиционных кодировании - это буквально проверка как устроен трансформер и куда/как в нем можно вставить знания о позиции
Если не везде, то в бигтехах точно спрашивают
Да почему минус)) я понимаю, что часто об это думать на практике не придется
Но так же помню, при генерации музыки у нас с относительные позициями, длина качественный сгенерированной композиции стала в разы бОльше, и поэтому это даже на практике может повлиять! 🫠
Минус не ставил, но в вашем примере есть проблема, так как в вашем случае следовало бы использовать цепочку SMM или mamba или linoss-im или хотя бы гибрид с трансформерами. Когда речь заходит про генерацию музыки. Это даст более качественный результат, чем трансформеры. В вашем случае позиционирование разделяет временные участки.
Да это верно, если делать input на непрервном представлении, например на спектограммах (в целом как и все делают)
Но мы решили делать через MIDI представления (событийное представления музыки) и такой несложный update прям сильно повлиял
Спасибо за замечание!
Музыкальные композиции, не важно в Midi или спектрограммах это периодические данные, не важно с затуханием или с динамическим периодом. Поэтому тут в любом случае лучше использовать LinOSS-IM (это SSM с осцилляцией, через замену в уравнении матрицы A на комплексную, для описания колебаний)
Статья про них: https://openreview.net/pdf?id=GRMfXcAAFhи
GitHub : https://github.com/tk-rusch/linoss/tree/main
По классу у них разделение:
S5 : Как пружина, которая быстро затухает.
LinOSS-IM : Как маятник, который колеблется, но со временем останавливается.
LinOSS-IMEX : Как маятник без трения — колебания продолжаются бесконечно.

Это конечно не панацея, но если нужно еще модуляция (механизм внимания), то выводил математически и дорабатывал ее. В комментариях выкладывал код. Оптимизацию пока не делал, но в целом это лучше, чем просто SSM/LinOSS-IM. Хотя в названии LinOSS-IM, но из нее была взято как раз комплексная составляющая для осцилляции. Так что для данных лучше использовать ее, для MIDI это точно.
Очень круто! В выходные за чаем засяду. Спасибо!
> ссылка битая https://openreview.net/pdf?id=GRMfXcAAFhи
"и" случайно попало в текст ссылки
https://openreview.net/pdf?id=GRMfXcAAFh
У IMEX конечно интересная особенность, но она и является проблемой. Во первых фильтр не обладает bibo устойчивостью, и кто знает, что там будет на больших последовательностях, без какой-нибудь fp64. Во вторых, из-за этого не работает теорема Винера-Леви (Wiener–Lévy theorem), а значит она вряд-ли будет обладать универсальной аппроксимацией.
насчет bibo, то чистая SSM да не обладает. LinOSS-IM обладает, так как там затухание. Но, когда я расширял модель SSM (вывел ее через туже кинематику), то BIBO-устойчивость была проблемой связанной с дискретностью, так как затухание не успевало за ускорением и происходил рост. Но это решается, если правильно учесть этот момент, сейчас подобных проблем нет.
Поэтому с теоремой Винера-Леви все нормально, если учесть этот момент. Но да, надо быть к нему готовым, если использовать в чистом виде SSM/LinOSS/Mamba. Я не помню, чтобы в них это учитывалось и могут быть такие последовательности, где из-за дискретности состояния затухание будет расходится с ускорением и тогда взрыв градиентов. Так что этот момент вполне решается, если его учесть.
Все таки универсальная аппроксимация зависит от наличия нелинейностей в IMEX. И это верно если архитектура линейная, но разные разновидности SSM могут быть как линейными, так и не линейными.
IMEX всегда будет иметь проблему, так как полюса на единичной окружности нарушают bibo стабильность, а это тянет за собой невозможность сходимости в l1 норме импульсный отклик, что нарушает выполнимость теоремы Винера-Леви. А так как может быть погрешность, то полюса могут улетать за единичную окружность наверх, и тогда увы, будет все плохо.
У LinOSS-IM частично это решено через комплексный оператор A с отрицательной вещественной частью, где A задается как diag(−softplus(Alog)+i⋅Aim) , где Re(A)<0.
Но конечно там надо следить за тем, чтобы из за дискретности другие параметры не привели к проблемам, вроде роста dt и других. Но если это грамотно учитывать, то все нормально. А так идеальных систем в нейронных сетях не бывает, особенно в динамических.
Я вот люблю спрашивать, а чё это именно трансформеры, чем они так особенны. Только потому, что крупные игроки выложили достаточно денег и хайпа вокруг них? Ну вот и все остальные подъедают объедки со стола. Хотя у них ой как много проблем.
Вот к примеру исследование показывающее что трансформеры low-pass фильтр реализуют, что их ограничивает.
Далее, само PE это костыль и плата за динамичность размера. Но и тут есть кое какие теоретические и практические моменты, которые должны были в статье быть изложены. Во первых, только тренируемые APE обладают универсальной аппроксимацией. У RPE с этим проблемы. Во вторых есть очень интересные результаты, которые показывают, что на практике без PE(NPE) трансформер может опережать с PE. А самое интересное, что там же и теоретически доказано, что он может моделировать к примеру APE, а значит он обладает универсальной аппроксимацией. Так что можно интервьюеров посылать на три буквы — NPE, и говорить что PE не нужны:)
`Где θ — это функция от номера позиции m , например: ` - а примера нет ...
Готовимся к собесу: positional encodings в 2025 году