RecSys относительно редкий экземпляр в ML задачах. Информацию о реально работающих системах в продакшне приходится собирать по крупицам. Но есть добрые люди, которые делают обзор того, что есть. Со ссылками на оригинальные работы естественно.
https://aman.ai/recsys/papers/
https://aman.ai/recsys/papers/
aman.ai
Aman's AI Journal • Recommendation Systems • Research Papers
Aman's AI Journal | Course notes and learning material for Artificial Intelligence and Deep Learning Stanford classes.
А у нас тут новый плейлист по ML от MIT с названием “Введение в DL”. Всего то 63 видео. https://youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI
🔥3
Исследование stackoverflow по AI/ML.
Что интересного:
- Профессиональные разработчики это неоднородная группа за счёт большого спектра технологий и областей применения.
- AI/ML активно применяется практически во всех сферах разработки от дизайна и системного администрирования до научных исследований.
- Восприятие AI технологий исключительно положительное.
- Начинающие разработчики больше доверяют точности моделей чем профессионалы (оно и понятно).
Что интересного:
- Профессиональные разработчики это неоднородная группа за счёт большого спектра технологий и областей применения.
- AI/ML активно применяется практически во всех сферах разработки от дизайна и системного администрирования до научных исследований.
- Восприятие AI технологий исключительно положительное.
- Начинающие разработчики больше доверяют точности моделей чем профессионалы (оно и понятно).
stackoverflow.blog
Developer sentiment around AI/ML (2023) - Stack Overflow
👍2
Если вы начинаете интересоваться такой сферой как Quant, стоит обратить внимание на блог-пост с обзором фундаментальных научных статей из этой области
Вышел State of AI Report 2023. На удивление там не только про LLM и Nvidia. Хотя секция research представлена в основном результатами из прикладных направлений. Есть несколько интересных моментов. Например, падение трафика на stackoverflow после релиза copilot и ChatGPT. Ещё авторы отмечают, что все авторы работы Attention is all you need покинули Google и работают в собственных стартапах. В общем, без претензий на объективность, но интересно.
https://docs.google.com/presentation/d/156WpBF_rGvf4Ecg19oM1fyR51g4FAmHV3Zs0WLukrLQ/edit?usp=sharing
https://www.stateof.ai/
https://docs.google.com/presentation/d/156WpBF_rGvf4Ecg19oM1fyR51g4FAmHV3Zs0WLukrLQ/edit?usp=sharing
https://www.stateof.ai/
Google Docs
State of AI Report 2023 - ONLINE
State of AI Report October 12, 2023 Nathan Benaich Air Street Capital #stateofai stateof.ai
Супер инженерный доклад от Netflix про то как они строят распределённую MLOps систему для обучения рекомендательных моделей. То что FSx, S3, tf.data это уже не новость. А вот использование Ray в этом процессе это новинка. В докладе много инженерных деталей, и, в принципе, весь процесс обработки и подачи данных сверху виден.
https://www.anyscale.com/blog/heterogeneous-training-cluster-with-ray-at-netflix
https://www.anyscale.com/blog/heterogeneous-training-cluster-with-ray-at-netflix
Anyscale
Heterogeneous Training Cluster with Ray at Netflix | Anyscale
In this blog post, we explore Lingyi Liu & Pablo Delgado's insightful talk on "Heterogeneous Training Cluster with Ray at Netflix" Read the recap and watch the full session.
Хорошая обзорная работа по функциям активации (декабрь 2022). Есть почти все, не нужно бегать по разным частям интернета если вдруг забыли как, например, выглядит первая производная gelu. Всё с тестами, как положено
https://arxiv.org/abs/2209.02681
https://arxiv.org/abs/2209.02681
🔥3
А у нас тут на русском языке есть доклады по машинному обучению прямо на границе текущего развития науки. Названия к видео говорящие, ориентироваться просто. Могу со своей стороны выделить несколько выступлений со школы 2023 года:
Доклад про комбинацию ML и физических методов с примерами из реальных земных задач. Хороший обзорный рассказ и для общего развития полезно.
Если вы хотите знать почему в adam или adagrad так как есть, откуда это всё эти оптимизации взялись, можно ли сделать лучше, и как теоретически связан batch size и learning rate то вам сюда обязательно. Размяться перед просмотром лекции можно на этом.
Доклад про теорию диффузионных моделей. Смотрится относительно легко. Если вы думали что теория вероятности в ML вам не нужна, то самое время убедится в обратном.
Длина видео по 1,5 часа, однако, есть чем занять себя на скучных праздниках!
Доклад про комбинацию ML и физических методов с примерами из реальных земных задач. Хороший обзорный рассказ и для общего развития полезно.
Если вы хотите знать почему в adam или adagrad так как есть, откуда это всё эти оптимизации взялись, можно ли сделать лучше, и как теоретически связан batch size и learning rate то вам сюда обязательно. Размяться перед просмотром лекции можно на этом.
Доклад про теорию диффузионных моделей. Смотрится относительно легко. Если вы думали что теория вероятности в ML вам не нужна, то самое время убедится в обратном.
Длина видео по 1,5 часа, однако, есть чем занять себя на скучных праздниках!
❤5👍3🔥2👏1
В RL есть устоявшаяся терминология подходов к моделям. Если хотите быстро разобраться что к чему, то эта серия видео будет кстати. Несмотря на то что последние лекции несколько укорочены, общее представление можно получить достаточно быстро. И отдельно можно посмотреть примерно то же самое, но со спецификой offline RL.
👍4
Если вам наскучили трудовые будни, посмотрите новое ML инженерное видео от Андрея Картпаты. С этим материалом вы:
-разберётесь, наконец, вспомните особенности UTF-8
- напишите прямую реализацию токенайзера
- посмотрите открытые библиотеки токенизации
- поймете магические регулярки для препроцессинга текста в GPT-2-4
- осознаете важность токенизации (!)
- увидите как можно заставить ChatGPT выдавать неправильно на граничных случаях токенизации.
Внимание! В процессе просмотра возникает непреодолимое желание открыть консоль и поэксперементировать. Поэтому не обращайте внимание на то что видео всего 2,5 часа, скорее всего, это отнимет у вас гораздо больше времени.
-
- напишите прямую реализацию токенайзера
- посмотрите открытые библиотеки токенизации
- поймете магические регулярки для препроцессинга текста в GPT-2-4
- осознаете важность токенизации (!)
- увидите как можно заставить ChatGPT выдавать неправильно на граничных случаях токенизации.
Внимание! В процессе просмотра возникает непреодолимое желание открыть консоль и поэксперементировать. Поэтому не обращайте внимание на то что видео всего 2,5 часа, скорее всего, это отнимет у вас гораздо больше времени.
YouTube
Let's build the GPT Tokenizer
The Tokenizer is a necessary and pervasive component of Large Language Models (LLMs), where it translates between strings and tokens (text chunks). Tokenizers are a completely separate stage of the LLM pipeline: they have their own training sets, training…
👍2
А вот и первая лекция: https://youtu.be/qPJ5Dz3bKTQ
YouTube
Лекция: линейная регрессия
Разбираемся с теоретическими основами одномерной и многомерной линейной регрессии.
Лабораторная работа: https://www.youtube.com/watch?v=txDLkiesqpY
Содержание:
00:00 теоретический контекст
09:40 одномерный случай
43:32 многомерный вариант
59:03 распределение…
Лабораторная работа: https://www.youtube.com/watch?v=txDLkiesqpY
Содержание:
00:00 теоретический контекст
09:40 одномерный случай
43:32 многомерный вариант
59:03 распределение…
👍10👎1
Harald Steck, математик из Netflix, опубликовал работу с говорящим названием Is Cosine-Similarity of Embeddings Really About Similarity?
Автор задаётся вопросом почему косинус расстояние работает хуже в некоторых практических сценариях чем скалярное произведение для ненормированных векторов? Для ответа на этот вопрос в работе представлена линейная декомпозиция на синтетических данных, аналогично факторизации матриц в задачах рекомендаций. В выводах отмечено, что косинус расстояние сильно зависит от регуляризации. Сделано предположение, что векторное представление (эмбеддинги) для моделей глубокого обучения подвержены аналогичным проблемам.
Harald Steck известен своей работой по линейному моделированию автокодировщика в задаче рекомендаций. Эта модель сделала своего рода революцию и открыло целое направление исследований и практических внедрений. Полный список работ Гарольда можно посмотреть здесь.
Автор задаётся вопросом почему косинус расстояние работает хуже в некоторых практических сценариях чем скалярное произведение для ненормированных векторов? Для ответа на этот вопрос в работе представлена линейная декомпозиция на синтетических данных, аналогично факторизации матриц в задачах рекомендаций. В выводах отмечено, что косинус расстояние сильно зависит от регуляризации. Сделано предположение, что векторное представление (эмбеддинги) для моделей глубокого обучения подвержены аналогичным проблемам.
Harald Steck известен своей работой по линейному моделированию автокодировщика в задаче рекомендаций. Эта модель сделала своего рода революцию и открыло целое направление исследований и практических внедрений. Полный список работ Гарольда можно посмотреть здесь.
👍3❤2🔥1
Набросал шаблон для тех, кто пишет на Python и любит Vim + Docker.
Это удобная заготовка, которая позволяет:
- Разворачивать Python-проекты в Docker
- Писать код прямо в контейнере через настроенный Vim
- Работать в воспроизводимой среде (Poetry + Compose)
- При желании запускать Jupyter (если ты в DS/ML)
Если вы хотели чтобы dev-среда совпадала с runtime и при этом оставаться в Vim то загляните. Там автодополнения, LSP, Git, Markdown, всё как надо.
🔗 https://github.com/jamm1985/vim-python-docker-template
Это удобная заготовка, которая позволяет:
- Разворачивать Python-проекты в Docker
- Писать код прямо в контейнере через настроенный Vim
- Работать в воспроизводимой среде (Poetry + Compose)
- При желании запускать Jupyter (если ты в DS/ML)
Если вы хотели чтобы dev-среда совпадала с runtime и при этом оставаться в Vim то загляните. Там автодополнения, LSP, Git, Markdown, всё как надо.
🔗 https://github.com/jamm1985/vim-python-docker-template
GitHub
GitHub - jamm1985/vim-python-docker-template: A flexible, Docker-based template for Python projects with a modern Vim IDE setup.…
A flexible, Docker-based template for Python projects with a modern Vim IDE setup. Ideal for DS/ML, noscripting, and reproducible dev environments. - jamm1985/vim-python-docker-template
🔥6
Готовимся к собесу, шпаргалка по деревьям
Общее понимание градиентного бустинга
Изначальный алгоритм Фридмана (Friedman, 2001) задаёт базовый принцип.
Идея: мы берём функцию потерь (loss), которую нужно минимизировать ансамблем слабых моделей (обычно деревья решений).
Начинаем с базовой константы (например, среднее значение таргета).
На каждом шаге строим новое дерево по текущим градиентам функции потерь (первая производная по предсказанию).
Значения в листьях подбираются так, чтобы минимизировать loss в этой области (иногда используют и вторую производную для точности).
Каждое дерево добавляется в модель с коэффициентом обучения (learning rate), чтобы не переобучиться.
Фридман показал, что этот подход работает и для регрессии (MSE), и для классификации (логлосс/NLL).
Chen & Guestrin, 2016 — это про XGBoost.
В XGBoost формализовали общее выражение для прироста качества (gain) узла с учётом первых и вторых производных.
Значение листа считается по формуле:
где
Прирост качества (gain) при разбиении узла:
где
Prokhorenkova et al., 2018 — про CatBoost.
Там основное — как бороться с переобучением и эффективно работать с категориальными признаками.
Категориальные фичи: кодирование делается через "средние по таргету", но с порядковым шифтом (ordered target encoding). То есть значение для объекта считается только по предыдущим объектам в случайной перестановке. Это сильно уменьшает target leakage.
Симметричные деревья: все разбиения на одном уровне одинаковые (level-wise). Это ускоряет инференс (можно SIMD/CPU оптимизации).
Очень много готовых функций потерь (MSE, логлосс, ранжирование, custom).
Для ранжирования — используют попарные лоссы (например, YetiRank, Pairwise). Данные группируются по запросам, и дерево строится так, чтобы правильно упорядочивать документы внутри группы.
Вопросы на собесе
1. Можно ли параллелить инференс?
Да. Каждое дерево считается независимо, потом результаты суммируются. Сумма — операция коммутативная, значит, можно распараллелить по деревьям.
2. Можно ли исключить дерево из ансамбля?
Формально да — это просто сумма функций. Но в отличие от бэггинга, деревья в бустинге строятся последовательно: каждое корректирует ошибки предыдущих. Если убрать дерево, качество почти всегда ухудшится.
3. В чём отличие от бэггинга/Random Forest?
В бустинге деревья строятся последовательно и учитывают ошибки прошлых шагов.
В RF деревья строятся независимо, а результат усредняется.
RF больше про снижение дисперсии, boosting — про уменьшение смещения.
4. Почему используют вторые производные (Hessian)?
Потому что это даёт более точную аппроксимацию loss при подборе весов листьев (аналог Ньютона вместо градиентного спуска).
Общее понимание градиентного бустинга
Изначальный алгоритм Фридмана (Friedman, 2001) задаёт базовый принцип.
Идея: мы берём функцию потерь (loss), которую нужно минимизировать ансамблем слабых моделей (обычно деревья решений).
Начинаем с базовой константы (например, среднее значение таргета).
На каждом шаге строим новое дерево по текущим градиентам функции потерь (первая производная по предсказанию).
Значения в листьях подбираются так, чтобы минимизировать loss в этой области (иногда используют и вторую производную для точности).
Каждое дерево добавляется в модель с коэффициентом обучения (learning rate), чтобы не переобучиться.
Фридман показал, что этот подход работает и для регрессии (MSE), и для классификации (логлосс/NLL).
Chen & Guestrin, 2016 — это про XGBoost.
В XGBoost формализовали общее выражение для прироста качества (gain) узла с учётом первых и вторых производных.
Значение листа считается по формуле:
w_j = - (sum(g_i)) / (sum(h_i) + lambda)
где
g_i — первый градиент,h_i — второй градиент (Гессиан),lambda — коэффициент регуляризации.Прирост качества (gain) при разбиении узла:
gain = 0.5 * ( ( (sum(g_left))^2 / (sum(h_left) + lambda) )
+ ( (sum(g_right))^2 / (sum(h_right) + lambda) )
- ( (sum(g_total))^2 / (sum(h_total) + lambda) ) ) - gamma
где
g_left, h_left — суммы градиентов и Гессианов для левого узла,g_right, h_right — суммы для правого узла,g_total, h_total — суммы для всего узла до разбиения,gamma — минимальный прирост, чтобы оставить разбиение (если меньше, то узел схлопывается, читай прунинг).Prokhorenkova et al., 2018 — про CatBoost.
Там основное — как бороться с переобучением и эффективно работать с категориальными признаками.
Категориальные фичи: кодирование делается через "средние по таргету", но с порядковым шифтом (ordered target encoding). То есть значение для объекта считается только по предыдущим объектам в случайной перестановке. Это сильно уменьшает target leakage.
Симметричные деревья: все разбиения на одном уровне одинаковые (level-wise). Это ускоряет инференс (можно SIMD/CPU оптимизации).
Очень много готовых функций потерь (MSE, логлосс, ранжирование, custom).
Для ранжирования — используют попарные лоссы (например, YetiRank, Pairwise). Данные группируются по запросам, и дерево строится так, чтобы правильно упорядочивать документы внутри группы.
Вопросы на собесе
1. Можно ли параллелить инференс?
Да. Каждое дерево считается независимо, потом результаты суммируются. Сумма — операция коммутативная, значит, можно распараллелить по деревьям.
2. Можно ли исключить дерево из ансамбля?
Формально да — это просто сумма функций. Но в отличие от бэггинга, деревья в бустинге строятся последовательно: каждое корректирует ошибки предыдущих. Если убрать дерево, качество почти всегда ухудшится.
3. В чём отличие от бэггинга/Random Forest?
В бустинге деревья строятся последовательно и учитывают ошибки прошлых шагов.
В RF деревья строятся независимо, а результат усредняется.
RF больше про снижение дисперсии, boosting — про уменьшение смещения.
4. Почему используют вторые производные (Hessian)?
Потому что это даёт более точную аппроксимацию loss при подборе весов листьев (аналог Ньютона вместо градиентного спуска).
❤9👍2
Готовимся к собесу: вопрос про баланс смещения и дисперсии
В классической терминологии bias–variance tradeoff — это интуитивный способ понять обобщающую способность (generalization) через разложение ошибок модели:
- Смещение (bias) — систематическая ошибка модели, часто ассоциируется с недостаточным обучением (underfitting).
- Дисперсия (variance) — ошибка, связанная с чувствительностью модели к данным; обычно её связывают с переобучением (overfitting).
-
В классической литературе часто приводят оценку обобщающей способности через математическое ожидание для среднеквадратичной ошибки:
Это выражение уходит корнями в классическую статистику и MSE-разложение. Например, в такой интерпретации линейная регрессия будет иметь высокий bias и низкую variance, а бустинг — наоборот.
Однако в современной ML-перспективе такой подход к оценке обобщающей способности используется всё реже. Явление двойного спуска (double descent) напрямую противоречит классическим выводам: с ростом сложности модели «дисперсия» не обязательно ухудшает обобщающую способность, а может снова её улучшать.
Сейчас в вопросе generalization опираются на более современные методологии:
* Оценка обобщающей способности: методы train–test gap, uniform convergence bounds, PAC-Bayes, stability, compression.
* Оценка неопределённостей (вот здесь с картинками):
- алеаторическая (aleatoric) — связана с данными,
- эпистемическая (epistemic) — связана с моделью.
* Калибровка моделей на онлайн-данных (например, модель рекомендаций).
Почему теория сместилась? Потому что для сложных нелинейных моделей невозможно адекватно описать обобщение только через «разложение ошибок по MSE», как это делалось в 80-х. Нужно получать количественные оценки generalization и uncertainty — инструменты, которые реально позволяют улучшать модели.
Таким образом, bias–variance tradeoff — это лишь частный случай общей картины:
- Bias (классика) — систематическая эпистемическая ошибка (wrong inductive bias), которую можно уменьшить улучшением модели.
- Variance (классика) — вариации ошибки эпистемической природы, также контролируемые моделью.
- σ² (классика) — алеаторическая ошибка, лежащая вне контроля модели.
В классической терминологии bias–variance tradeoff — это интуитивный способ понять обобщающую способность (generalization) через разложение ошибок модели:
- Смещение (bias) — систематическая ошибка модели, часто ассоциируется с недостаточным обучением (underfitting).
- Дисперсия (variance) — ошибка, связанная с чувствительностью модели к данным; обычно её связывают с переобучением (overfitting).
-
Sigma - алеаторическая ошибка (шум в данных).В классической литературе часто приводят оценку обобщающей способности через математическое ожидание для среднеквадратичной ошибки:
E[(f_hat(x) - y)^2] = Bias(f_hat(x))**2 + Var(f_hat(x)) + sigma**2
Это выражение уходит корнями в классическую статистику и MSE-разложение. Например, в такой интерпретации линейная регрессия будет иметь высокий bias и низкую variance, а бустинг — наоборот.
Однако в современной ML-перспективе такой подход к оценке обобщающей способности используется всё реже. Явление двойного спуска (double descent) напрямую противоречит классическим выводам: с ростом сложности модели «дисперсия» не обязательно ухудшает обобщающую способность, а может снова её улучшать.
Сейчас в вопросе generalization опираются на более современные методологии:
* Оценка обобщающей способности: методы train–test gap, uniform convergence bounds, PAC-Bayes, stability, compression.
* Оценка неопределённостей (вот здесь с картинками):
- алеаторическая (aleatoric) — связана с данными,
- эпистемическая (epistemic) — связана с моделью.
* Калибровка моделей на онлайн-данных (например, модель рекомендаций).
Почему теория сместилась? Потому что для сложных нелинейных моделей невозможно адекватно описать обобщение только через «разложение ошибок по MSE», как это делалось в 80-х. Нужно получать количественные оценки generalization и uncertainty — инструменты, которые реально позволяют улучшать модели.
Таким образом, bias–variance tradeoff — это лишь частный случай общей картины:
- Bias (классика) — систематическая эпистемическая ошибка (wrong inductive bias), которую можно уменьшить улучшением модели.
- Variance (классика) — вариации ошибки эпистемической природы, также контролируемые моделью.
- σ² (классика) — алеаторическая ошибка, лежащая вне контроля модели.
🔥2
Что такое свёртка в Graph Convolutional Networks?
Разберём на примере рекомендаций.
В рекомендациях мы оперируем явным откликом (лайк на item, покупка и т. д.) и неявным откликом (клик, просмотр видео). Если пользователь взаимодействовал с item, то в графе появляется ребро. Рёбра могут быть разных типов — в зависимости от действия. В итоге из данных формируется двудольный граф user–item.
Нейросетям на вход нужны матрицы, поэтому граф преобразуют в матрицу смежности (adjacency matrix). Кроме того, сами пользователи и items представлены эмбеддингами, которые, как правило, обучаются. В совокупности матрица смежности и эмбеддинги составляют вход для GNN.
Что есть convolution в слоях GNN?
Первый вопрос, который возникает при виде Graph Convolutional Networks (GCN) или их упрощённых вариантов вроде LightGCN: что именно здесь называется свёрткой?
Во-первых, матрица смежности
где
Далее, операция свёртки на слое
где
В упрощённых моделях, например LightGCN, матрицы весов
Почему это «свёртка»?
Популярные картинки в интернете часто проводят аналогию с классическими свёртками в CV, но она довольно условная.
Здесь «ядро свёртки» — это сама нормированная матрица смежности
На первом слое она отражает прямые взаимодействия из данных (user <-> item).
На втором слое это уже
На слое
Важно: сама матрица смежности
Таким образом, эмбеддинги на слое
Разберём на примере рекомендаций.
В рекомендациях мы оперируем явным откликом (лайк на item, покупка и т. д.) и неявным откликом (клик, просмотр видео). Если пользователь взаимодействовал с item, то в графе появляется ребро. Рёбра могут быть разных типов — в зависимости от действия. В итоге из данных формируется двудольный граф user–item.
Нейросетям на вход нужны матрицы, поэтому граф преобразуют в матрицу смежности (adjacency matrix). Кроме того, сами пользователи и items представлены эмбеддингами, которые, как правило, обучаются. В совокупности матрица смежности и эмбеддинги составляют вход для GNN.
Что есть convolution в слоях GNN?
Первый вопрос, который возникает при виде Graph Convolutional Networks (GCN) или их упрощённых вариантов вроде LightGCN: что именно здесь называется свёрткой?
Во-первых, матрица смежности
A (симметричная в случае неориентированного графа) нормируется:A′ = D^(−1/2) (A+I) D^(−1/2)
где
D — диагональная матрица степеней вершин (node degree matrix). Такая нормализация нужна для уменьшения смещения при агрегации соседей, I единичная матрица для замкнутого цикла.Далее, операция свёртки на слое
L в общем виде выглядит так:H^(L+1) = σ(A′ H^(L) W^(L))
где
σ — функция активации,H^(L) — матрица эмбеддингов на текущем слое,W^(L) — обучаемая матрица весов слоя.В упрощённых моделях, например LightGCN, матрицы весов
W^(L) могут отсутствовать, то есть остаётся только агрегация через A′.Почему это «свёртка»?
Популярные картинки в интернете часто проводят аналогию с классическими свёртками в CV, но она довольно условная.
Здесь «ядро свёртки» — это сама нормированная матрица смежности
A′.На первом слое она отражает прямые взаимодействия из данных (user <-> item).
На втором слое это уже
(A′)^2 - то есть учёт путей длины два (user → item → user и наоборот).На слое
L это (A′)^L, что соответствует взаимодействиям на расстоянии L шагов в графе.Важно: сама матрица смежности
A′не меняется в процессе, но при возведении в степень она отражает более «дальние» связи.Таким образом, эмбеддинги на слое
L агрегируют информацию от соседей через A′ и (опционально) линейно преобразуются весами W^(L).👍2
Что такое внимание в Graph Attention (GAT)?
В сверточных графовых сетях (GCN) мы используем матрицу смежности пользовательских взаимодействий (с добавленным самосоединением) и нормируем её на диагональную матрицу степеней вершин. С каждым новым слоем GCN мы получаем ненулевые веса для соседей соседей. Однако фактически мы используем фиксированную (необучаемую) матрицу смежности, и на каждом новом слое эмбеддинги пользователей или айтемов просто переусредняются через очередную степень этой матрицы.
Подход Graph Attention Network (GAT) призван сделать веса, с которыми переусредняются эмбеддинги, обучаемыми. Обобщённо метод записывается так:
где
Здесь видна аналогия с GCN: каждый слой имеет обучаемые веса
Однако
Для этого используется исходная матрица смежности (без самосоединений): там, где
На каждом новом слое матрица внимания имеет тот же шейп, что и на первом, однако благодаря передаче эмбеддингов
Этот подход может быть обобщён на несколько матриц внимания - по аналогии с multi-head attention. Подробнее можно ознакомиться в оригинальной работе: Velicković et al., 2018.
В сверточных графовых сетях (GCN) мы используем матрицу смежности пользовательских взаимодействий (с добавленным самосоединением) и нормируем её на диагональную матрицу степеней вершин. С каждым новым слоем GCN мы получаем ненулевые веса для соседей соседей. Однако фактически мы используем фиксированную (необучаемую) матрицу смежности, и на каждом новом слое эмбеддинги пользователей или айтемов просто переусредняются через очередную степень этой матрицы.
Подход Graph Attention Network (GAT) призван сделать веса, с которыми переусредняются эмбеддинги, обучаемыми. Обобщённо метод записывается так:
H_{l+1} = σ(A'_l H_l W_l)где
l — номер слоя GAT,σ — функция активации,A'_l — обучаемая матрица внимания для слоя,W_l — обучаемая матрица весов слоя,H_l — выход предыдущего слоя.Здесь видна аналогия с GCN: каждый слой имеет обучаемые веса
W_l и принимает на вход представления H_l. На первом слое H_0 - это исходные признаки, например, векторы пользователей или айтемов.Однако
A'_l имеет иное методологическое значение - это обучаемая матрица внимания. Но как она инициализируется?Для этого используется исходная матрица смежности (без самосоединений): там, где
A_{i,j} = 1, то есть существует ребро (взаимодействие), создаётся элемент в матрице внимания. Таким образом, матрица смежности служит маской для построения матрицы обучаемых весов внимания.На каждом новом слое матрица внимания имеет тот же шейп, что и на первом, однако благодаря передаче эмбеддингов
H_l, уже содержащих информацию о внимании предыдущих слоёв, сеть постепенно выучивает всё более сложные поведенческие шаблоны.Этот подход может быть обобщён на несколько матриц внимания - по аналогии с multi-head attention. Подробнее можно ознакомиться в оригинальной работе: Velicković et al., 2018.
🔥2❤1