Хроники ботки
607 subscribers
37 photos
1 video
4 files
49 links
Пишу интересные вещи, с которыми сталкиваюсь по работе над диссером (обобщение keypoints detection с помощью дифференциальной геометрии) и работой над работой (ML и матстат в основном)
Вопросы и т.п. писать в чат или @shpacman
Download Telegram
Базированная модель, часть 1
или почему RWKV/Mamba/RetNet не работали, но заработают.

Есть такая группа в Стэнфорде, HazyResearch. Это они сделали первые SSM (state space models) моделии их современные версии (H3, Hyena). Ну и всякие мелочи вроде FlashAttention.

На этот раз ребята начали с того, что обучили трансформеры / H3 / Hyena / RWKV не очень больших одинаковых размеров на 10B токенах из The Pile. Трансформеры выиграли! 🤔

Возникает два вопроса: "кто виноват?" и "что делать?". На первый вопрос отвечает Zoology, на второй вопрос отвечает Based.

Кто виноват?
Zoology: Measuring and Improving Recall in Efficient Language Models, статья, пост 1, пост 2.

А виноваты оказались... повторяющиеся N-граммы 🤨
То есть словосочетания, которые уже встречались в контексте. Ну, не все, только достаточно редкие, потому что частотные N-граммы любая модель хорошо запоминает. Пример такого редкого словосочетания: фамилия и имя какого-то человека, которые несколько раз встречаются в одном документе, и никогда больше не встречаются в обучающем корпусе.

Предсказание последнего токена такой повторяющейся N-граммы и вызывает трудности у моделей без внимания. В статье такие токены называют associatve recall hits, AR hits, и по ним отдельно считают перплексию. Для Гиены и RWKV разница перплексии на этих токенах полностью покрывает разницу в общей перплексии.

Самое забавное, что мы уже такое видели несколькими постами ранее, тут. Хронологически "Repeat After Me" вышла двумя месяцами позже, но эту статью они явно не читали, иначе бы их статья скорее всего не вышла бы 😂

Теперь можно сформулировать, какая задача мешает не-трансформерам захватить мир. Задача называется multi-query associative recall (MQAR), и заключается она в поиске нескольких "иголок". Упрощенно она выглядит так:

Вход:
A 4 B 3 C 6 F 1 E 2

Запрос:
A ? C ? F ? E ? B ?

Ожидаемый выход:
4 6 1 2 3


В предыдущих работах показывали, что "одноиголочная" версия задачи вполне решается всеми моделями, но вот случае языкового моделирования этого недостаточно. В реальных текстах повторяющиеся N-граммы встречаются часто, и обычно больше одной за раз: вот например только что "повторяющиеся N-граммы" повторились. И ещё раз 🤣

В задаче нет ничего сложного, просто модели нужно вычислять, куда возвращаться-то, а для этого всё нужно "запомнить". И у внимания с этим проблем нет, оно это делает за квадратичное время и за независящую от длины входа внутреннюю размерность модели. А вот перечисленным выше не-трансформерам нужно растить внутреннюю размерность линейно от длины входа, но зато время лучше квадратичного.

Есть и намёки, как это исправить! Нужно всего лишь добавить капельку внимания, то есть делать гибриды 😂
Однако ж нам не нужна полная маска внимания, и мы можем либо точечно влиять на AR hits ("programmatic selection" метод в статье), либо на основе входов предсказывать, для каких k токенов нужно включить внимание. Втыкают 3 слоя внимания на 6% параметров, и этого достаточно, чтобы добить бОльшую часть перплексии.

И наконец, 30 страниц доказательств! 😱
Что вообще доказывают:
- Обзывают все используемые в статье не-трансформерные модели вентильными свёртками (gated convolutions).
- Вводят архитектурный блок BaseConv: y = linear(x) ⊙ conv(h, x), где x - вход, y - выход, ⊙ - покомпонентное произведение, h - обучаемый фильтр.
- Доказывают эквивалентность между Гиеной и BaseConv в смысле симуляции за константное количество слоёв.
- Доказывают, что BaseConv может симулировать арифметические схемы, то есть вычислять многочлены.
- Доказывают эквивалентность между RetNet и BaseConv, в которой BaseConv нужно в log(d) раз больше слоёв.
- Выводят теоретическую оценку сложности для BaseConv на нашей задаче, MQAR, через построение алгоритма с параллельным бинпоиском и оценку его сложности.

К сожалению, я не слишком хорош в математике, чтобы всё это нормально осознать.

Вывод
RWKV не работает, совсем без внимания никак, гибриды победят, синтетические бенчмарки рулят.

Второй пост будет, и будет про непосредственно Based.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сопроводительные материалы к посту ниже.

Картинка 1: финальные результаты: проклятые трансформеры опять победили по качеству, но проиграли по скорости

Картинка 2: размер памяти на точность вспоминания (картинка с нормальными осями есть в самой статье)

Картинка 3: иллюстрация про совмещение нескольких типов слоёв

Картинка 4: скорость наше всё
Базированная модель, часть 2

Первая часть: ссылка. В ней мы определили основную проблему не-трансформерных моделей: запоминание повторяющихся N-грамм. Остался второй вопрос...

Что делать?
Simple linear attention language models balance the recall-throughput tradeoff, статья, пост 1, пост 2, твиттер, репо.

В этой статье авторы представляют новую архитектуру под названием Based, которая (как обычно) должна заменить трансформеры.

Для начала, напомню: основная цель большинства не-трансформеров сделать быстрее при том же качестве. В этой и прошлой статье у трансформеров лучше перплексия. Единственное место, где это не так — первый пост про Based. Кажется, они замерили там некорректные числа, но к выпуску основной статьи исправились 💀
Ещё раз: за исключением первого старого поста со старыми числами, здесь нигде не заявляется превосходство по перплексии над трансформерами. Зато заявляется превосходство по пропускной способности и скорости генерации, даже против FlashAttention-2 😳

У Based есть 3 типа слоёв, смешивающих эмеддинги токенов:
- BaseConv из предыдущего поста
- Линейное внимание
- Полное внимание на маленьком скользящем окне
В одном слое только один конкретный смеситель, например в первом слое линейное внимание, во втором скользящее окно, в третьем BaseConv, и так далее.
Кроме смесителей по токенам есть и стандартные MLP для смешивания каналов, одинаковые для каждого типа слоёв.

Что за линейное внимание? Сама концепция не нова: убираем софтмакс и получаем рекуррентную форму. Софтмакс убираем через аппроксимацию exp(qk) через ряд Тейлора до второго порядка малости: 1 + qk + (qk)^2 / 2. Подробнее об этом написано в другой статье, но тут всё равно показывают, что другие варианты аппроксимаций хуже.

Псевдокод вычисления:
qk0 = [1]

# Считаем слагаемые от q
q_first = [q1, ..., qd] # q
q_second = [q1 * q1, ..., q1 * qd, ..., qd * q1, ... qd * qd] # qq^T
q_new = cat(qk0, q_first, q_second / sqrt(2))

# Считаем слагаемые от k
k_first = [k1, ..., kd] # k
k_second = [k1 * k1, ..., k1 * kd, ..., kd * k1, ... kd * kd] # kk^T
k_new = cat(qk0, k_first, k_second / sqrt(2))

# Разложение экспоненты до второго порядка малости: 1 + qk + (qk)^2 / 2
y = (q_new * k_new).sum()
Мотивация добавления чего-либо к BaseConv всё та же: улучшить вспоминание информации, добавив входозависимые смесители. При этом, в отличие от трансформеров, у которых KV-кэш растёт линейно от длины последовательности, мы можем варьировать объём доступной нам памяти через размер скрытого состояния в линейном внимании. И таким образом можем разменивать точность вспоминания на скорость.

В статье есть фундаментальная теорема: решение MQAR (а значит и языкового моделирования на реальных текстах) требует размер скрытого состояния, линейный от длины последовательности. Для внимания таким скрытым состоянием является KV-кэш, который имеет размер O(Nd). Для Based это KV-состояние для числителя и K-сотояние для знаменателя в симуляции софтмакса, с общей размерностью O(d^3), но в статье эту размерность несколько уменьшают проекциями. Это всё означает, что чем длиннее последовательность мы хотим корректно обрабатывать, тем жирнее нам нужно делать размерность модели 😭

Для того, чтобы конкурировать с эффективными реализациями внимания, ребята написали кастомные ядра, которые стараются выполнять операции в SRAM, быстрой памяти GPU, по аналогии с FlashAttention. Получилось и правда быстро 😘

В итоге имеем модель, которая по качеству на уровне трансформеров, но работает в 25 раз быстрее.

Что мне кажется сомнительным во всей этой истории:
- А что произошло с перплексией в первом посте? Что авторы изначально сделали не так?
- Нафига было разрабатывать BaseConv, чтобы потом вернуться к линейному вниманию? Зачем нам теперь вообще BaseConv нужен? Нет, в статье конечно есть секция C, в которой добавление BaseConv обосновывается выигрышем в перплексии, но это ничего не объясняет.
- Почему только 1b параметров? Спонсоров вроде много, люди богатые.

P.S. Немного покринжевал со слова "смеситель" в этом контексте, но решил оставить. Тоже смешивает же.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Такие себе мысли
В продолжение ранее написанного. Вот хорошая, годная статья про трансформеры https://arxiv.org/abs/2312.10794 На вопросы, скорее, не отвечает, но зато там по человечески определен self-attention - как дин.система на пространстве вероятностных мер на сфере, являющаяся далеким обобщением модели Курамото. Да и много с чем еще хорошим связанная. Читаешь, и душа радуется, рекомендую.

Спасибо Герману за наводку.
Хроники ботки
В продолжение ранее написанного. Вот хорошая, годная статья про трансформеры https://arxiv.org/abs/2312.10794 На вопросы, скорее, не отвечает, но зато там по человечески определен self-attention - как дин.система на пространстве вероятностных мер на сфере…
Здесь beta = 1/(температура в attention), t - "непрерывный аналог" номера слоя. В статье действие attention слоев приближают непрерывный уравнением и смотрят динамику.

На левой картинке - вероятность, что точки (эмбединги токенов) сольются в один кластер в зависимости от beta и t для размерности 2.

На правой - пример динамики на плоскости
Вероятности, что точки сольются в один кластер, для других beta, t и d
Forwarded from Борис опять
Есть такие крутые ребята: DeepSchool. Это команда практикующих ML инженеров, которая делает хорошие курсы по современному компьютерному зрению и не только.

Они выкладывают очень качественные материалы по современному CV. Например, мой близкий друг Антон написал для их канала серию постов про историю архитектур YOLO: YOLOv1, YOLOv2, YOLOv3, YOLOv4 и YOLOv5.

Другие крутые статьи:
- Diffusion Models — как устроены диффузионные модели
- ClearML Data Management — инструмент для версионирования данных
- 3D Gaussian Splatting — новый метод рендеринга
- DETR — как решать задачу детекции напрямую
- Negative learning — метод улучшения качества на шумных данных

В общем, советую их телеграм канал, подписывайтесь 🙂
когда вы впервые задумались о том,

1. что существует всего лишь 2 (два!) распространенных способа универсально задать закон распределения случайной величины?
"универсально" — то есть, не опираясь на существование моментов и не опираясь на конечность случайной величины?
Эти способы — это функция распределения (CDF) и характеристическая функция (CF)

2. а о том, что CF обычно опирается на скалярное произведение евклидвого пространства, а скалярное произведение евклидового пространства — это просто частный случай скалярного произведения в гильбертовых пространствах?

Другими словами, вы можете ввести туеву хучу разных собственных скалярных произведений и "вырастить" на них свои необычные характеристические функции?

Например, вы можете положить вейвлеты в основу ваших CF.

3. что работа с CDF не требует гильбертовости, и даже не требует линейности от вашего топологического векторного пространства, т.е CDF работает в любых векторных пространствах, где есть отношение порядка для каждой координаты.

И все это за довольно символическую плату в одномерном случае: эффективная работа с CDF потребует сортировку, т.е. вычислительная сложность будет O(n*log(n)), где n — это число наблюдений. В то время как для CF вычислительная сложность будет O(n), но от вас потребуют полноценную гильбертовость!
список судьбоносных работ по нейронкам от Ильи Суцкевера
@boringnickname2 скинул отличную ссылку на 12 проблем в теорвере, которыми никто не хочет заниматься.

а вот как на русском их сформулировала GPT4o:
——————
Вот список из 12 задач в теории вероятностей, которые редко обсуждаются, как их представил Джан-Карло Рота:

Проблема невозможных событий: Как трактовать события, вероятность которых равна нулю? Это приводит к проблемам с определением таких понятий, как "почти всюду" и "почти наверняка"​ (MathOverflow)​.

Неизмеримые множества: Существование множеств, для которых нельзя определить вероятность, создает проблемы в стандартной теории меры и вероятностей​ (MathOverflow)​.

Точки и событийность: Могут ли быть вероятностные пространства, не основанные на точках? Это связано с понятием "бесконечноструктурных" теорий вероятностей​ (MathOverflow)​.

Сложные функции плотности: Аргументы, зависящие от точного значения функции плотности вероятности в одной точке, могут быть ошибочными, так как функция, совпадающая почти всюду, должна считаться эквивалентной​ (MathOverflow)​.

Кумулянты: Определение фундаментальных неравенств, которым подчиняются кумулянты случайных величин, остается открытой проблемой в теории вероятностей​ (MathOverflow)​.

Парадоксальные результаты в статистике: Наличие статистических парадоксов, таких как парадокс Монти Холла, вызывает вопросы о корректности интуитивных интерпретаций вероятностей.

Проблема выборки и апостериорных вероятностей: Как правильно учитывать априорные вероятности и выборку в статистическом выводе?

Эргодические теоремы и случайные процессы: Применение эргодических теорем к случайным процессам требует тщательного анализа, особенно в контексте долгосрочных средних значений.

Меры риска и надежности: Определение и применение различных мер риска в вероятностном анализе, особенно в финансовых моделях и страховании.

Когерентность вероятностных распределений: Условие когерентности (согласованности) распределений вероятностей для сложных систем и сетей событий.

Двойственность в вероятностях: Изучение двойственных пространств и их применение в теории вероятностей, что связано с понятием локалов и топологических пространств.

Фундаментальные парадоксы в вероятности: Решение таких парадоксов, как парадокс Берксона или парадокс трех узников, которые показывают противоречивость интуитивных подходов к вероятности.

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

Минимальное требование -  Вы знакомы с Питоном,   и у Вас есть несколько часов свободного времени в неделю.  (Альтернативно - можно не знать Питон, но хорошо знать теорию групп.) Цель  проекта - применить машинное обучение к теории групп. Результат проекта  -  написание статьи в хорошем журнале. Другим бонусом будет являться - работа под руководством опытных специалистов в области машинного обучения и приобретение навыков  по современным методам нейронных сетей, Reinforcement Learning и т.д.

Примерный список направлений
1) Задача поиска короткого пути на графах Кэли (сборка кубика - аналог Каггл Санта23 - но для произвольных групп)
2) Оценки диаметра ("числа бога") для графов (то есть расстояние между самыми дальними точками на графах)
3) Бенчмарк эмбедингов графов на основе математических результатов о графах
4) Многое другое, что тесно связано - случайные блуждания, гипотеза Ловаса о обязательном существовании гамильтонова пути на любом графе Кэли,

Если Вам интересно участие - напишите @alexander_v_c (Александр Червов), чат для обсуждений тут .

Проект осуществляется при участии опытных специалистов (и многие ведут телеграм каналы):
Александр Червов (к.ф.-м.н. 25 лет math&DS )
Кирилл Хоружий (ex-Физтех, Max Planck Institute of Quantum Optics )
Андрей Лукьяненко (Kaggle Grandmaster, 11 лет в IT &DS )
Александр Абрамов (Kaggle Master, SberDevices, 10 лет в DS )
Павел Снопов (ИППИ РАН )
Владимир Шитов (Helmholtz Munich )
Сергей Нечаев (д.ф.-м.н., directeur de recherche au CNRS-Universite Paris-Saclay )
Fourier Features Let Networks Learn
High Frequency Functions in Low Dimensional Domains

https://arxiv.org/abs/2006.10739

Статья 2020 года с нипса, которая объясняет, почему же позиционные эмбединги трансформеров хорошо работают именно в таком странном виде эмбедингов из синусов и косинусов (но не только).

Основная мысль: если подавать время, позиции, координаты - т.е. числа или вектора низкой размерности - как есть, то сетка даже на обучающей выборке не может выучить высокочастотные компоненты целевой функции. А если преобразовать их в вектора высокой размерности, лежащие на гиперсфере, частным случаем чего являются позиционные эмбединги, то подобной проблемы не возникает. Такое преобразование авторы и называют fourier features. Пишут, что идея статьи пришла при работе над NERF'ом.

Общий вид изучаемых эмбедингов позиций, времени, 2d и 3d координат:
f_feat(p) =(a1*cos(2Pi*<w1, p>), a1*sin (2Pi*<w1, p>), ..., a_d *cos(2Pi*<wd, p>), a_d*sin(2Pi*<wd, p>)).
Что с ними делают:
1) пытаются теоретически объяснить, почему подобное преобразование работает лучше, чем подавать данные нейросетке в исходном виде.
2) пытаются определить качественное влияние параметров a_i, w_i на получающееся решение
3) проводят мотивирующие эксперименты

Теоретическое объяснение:
Через neural tangent kernel в несколько шагов:
1) Пусть k_ntk - это neural tangent kernel, соответствующей данной нейросети. Введем матрицу K, состояющую из значений этого ядра на обучающей выборке:
K_ij = k_ntk(xi, xj)

err_t - ошибка сетки на обучающей выборке с learning rate lr на шаге обучения t - может быть аппроксимирована с помощью выражения, использующего матрицу K:

|err_t| ~= e^(-lr *K*t) * y_t,

где y_t - вектор/матрица значений целевой функции на обучающей выборке
y_t: y_t[I] =y(x_i)

2) матрица K неотрицательно определена, поэтому можно использовать разложение K=QDQ^T, где Q ортонормированная матрица собственных векторов, а D - диагональная и D_ii>= 0:

Q^T*(err_t) ~=e^(-lr *D*t)Q^T
и
[Q^T*(err_t)]_i ~=e^(-lr *l_i*t)Q^T

3) Получается, что скорость сходимости ошибки на обучающей выборке зависит от спектра матрицы K. Если собственные значения сильно отличаются друг от друга, то разные компоненты ошибки будут сходиться с разной скоростью. А если матрица плохо обусловлена, т.е. есть собственные значения близкие к нулю, то соответствующие компоненты ошибки не сойдутся к нулю фактически никогда

4) Если же элементы обучающей выборки x_i расположены на гиперсфере, то (по другому результату)

k_ntk(x_i, x_j) =k_ntk'(<x_i, x_j>).

Для fourier features

norm(f_feat(x_i)) =const,
<f_feat(x_i), f_feat(x_j)>=h(x_i-x_j),

поэтому

k_ntk(f_feat(x_i), f_feat(x_j)) =k_ntk'(h(x_i-x_j)),

Т.е. neural tangent kernel зависит только от разности аргументов.

5) Из-за предыдущего равенства матрица K для выборки, преобразованной f_feat, будет матрицей стационарного ядра, и (видимо) подобная симметрия обеспечивает "хороший" спектр. В частности, K_ii =K_jj.

Пункты 3 и 5 дают нужные утверждения.

Также есть видео с красивой презентацией и наглядными визуализациями: https://youtu.be/nVA6K6Sn2S4?si=bhu-XmE-Ejk1Bhvz
и блогпост с неформальными поясениями https://bmild.github.io/fourfeat/
Разница между регрессией (в цвет пикселя) на координатах в исходном виде и преобразованных в fourier features. Как видно, в исходном виде нейросеть не может выучить высокие частоты целевой функции
а) Сравнение матрицы K для neural tangent kernel для 1d координат и их преобразования в fourier features. Видно что для исходных координат матрица K должна иметь много маленьких собственных значений, а для преобразованных на диагонали все хорошо

б) влияние параметров эмбедингов aj =(1/j)^p, wj=j на получающееся ядро одномерной свертки k_ntk'. Наглядно можно представить, что ответ нейросетки это взвешенное среднее с весами k_ntk'(x_i-x_j). Можно прикинуть, какие параметры приведут к недообучению, какие а переобучения, а какие самый раз.
Эксперимент, на котором проверяют скорость сходимости низких, средних и высоких частот модельной целевой функции в зависимости от параметров fourier features a_j=1/j^p, w_j =j при изменении параметра p. Параметр p фактически регулирует размерность эмбединга.
Видно, что в исходном виде выучиваются только очень низкие частоты. При низкой фактической размерности высокие частоты тоже плохо выучиваются, а чем выше p, тем более высоких частот, вплоть до переобучения.
This media is not supported in your browser
VIEW IN TELEGRAM
Как сходится регрессия без эмбедингов координат в фурье фичи и с фурье фичами