Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Эти пет проекты должен сделать каждый ML специалист
Устроиться можно и без проектов, но если у вас их нет, то мл кейсы будут решаться неуверенно и на финалах будете выглядеть слабее других. Никто не ждет гениального проекта с инфраструктурой— реализовать какие-то бейзлайны и понимать специфику задач уже достаточно для стажера и джуна. А если хотите обогатить свое портфолио совсем мощными пет проектами, то советую наш курс МЛ хард.
1. Кредитный скоринг
Стоит ли давать кредит— довольно популярная задача и отличный выбор для новчиков, чтобы самостоятельно проделать все этапы. Сначала берем любой датасет на kaggle по запросу Credit Scoring. Проводим EDA, генерируем гипотезы, фичи, готовим данные для модели и делаем бейзлайн: логистическая регрессия. Затем уже можно попробовать случайный лес, градиентный бустинг, KNN или еще что по вкусу— сравниваем метрики. И на последок не забываем проанализировать результаты и культурно презентовать. Можно провести АВ тест на смой первой модели.
Все варианты решения и реализации можно найти в интернетах: GitHub, Хабр. Очень полезным будет посмотреть всякие выступления на конференциях по этой теме для вдохновения, да и это очень поможет на мл кейсах.
2. Наивный Байесовский классификатор (НБК)
Для конкретики будем классифицировать письма на спам. Опять же обработаем данные: удаляем числа, знаки препинания, стоп-слова, стемминги, лемматизацию.
Объединяем все методы предварительной обработки и создаём словарь слов и счётчик каждого слова в наборе данных для обучения:
1. Вычисляем вероятность для каждого слова в тексте и отфильтровываем слова со значением вероятности меньше порогового. Такие слова будут нерелевантными.
2. Для каждого слова в словаре создаём вероятность, что это слово окажется в спаме. Определяем условную вероятность для использования её в НБК.
3. Вычисляем прогнозируемый результат с помощью условных вероятностей.
НБК реализовать не сложно. Куда интересней погрузиться во всю теорию, которая за этим стоит, в вероятностные модели. К тому же, кейс фильтрации спама и подобного часто встречается на собесах.
3. MLOps
Можно наладить какой-то минимальный прод для проектов: например телеграм бот или FastAPI. Можно еще автоматизировать пайплайн с помощь AirFlow и попробовать запустить инфраструктуру не только локально, но и облаке. Конечно нужно будет поизучать Docker, Cuber, Hadoop, Spark, HDFS, Kafka. Но на самом деле ничего трудного— после нашего курса дата инженер будете делать такие вещи по щелчку пальцев.
4. Ранжирование и матчинг
Для начала лучше пробежаться глазами по статье и посмотреть, что пишут в интернетах. Можно выделить три подхода к задаче: поточечный, попарный, списочный. Советую начать с первого как самого простого. Для конкретики будем предсказать оценку релевантности для запросов тестового датасета. Здесь можно кстати поучиться парсить web-страниц и собирать сырые данные, размечать их с помощью какого-нибудь Яндекс-Толока. Делаем регрессию, а затем Random Forest Regressor, XGBoost, lightGBM, CatBoost.
Совсем продвинутые могут попробовать языковые модели в духе FastText, Word2Vec, DSSM и более сложные: BERT, можно даже попробовать архитектуру трансформеров.
5. Рекомендашки
Очень популярный кейс на собесах. Для начала лучше пробежаться глазами по этому разделу и посмотреть, что пишут в интернетах. Затем начинаем реализовывать самое простое как бейзлайн, например, content-based рекомендации, KNN. Дальше можно попробовать факторизации матрицы рейтингов по svd разложению или по более эффективной als архитектуре и функции ошибок bpr. Затем можно попробовать W2V подход, чтобы использовать последовательность взаимодействий пользователя для построения рекомендации следующего предмета.
Для знатоков DL можно попробовать DSSM, SasRec/Bert4Rec, MultVAE, Merlin или графовые нейронки: GCN-подобные архитектуры.
Также стоит попробовать обучение с подкреплением: многоруких бандитов.
Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
@postypashki_old
Устроиться можно и без проектов, но если у вас их нет, то мл кейсы будут решаться неуверенно и на финалах будете выглядеть слабее других. Никто не ждет гениального проекта с инфраструктурой— реализовать какие-то бейзлайны и понимать специфику задач уже достаточно для стажера и джуна. А если хотите обогатить свое портфолио совсем мощными пет проектами, то советую наш курс МЛ хард.
1. Кредитный скоринг
Стоит ли давать кредит— довольно популярная задача и отличный выбор для новчиков, чтобы самостоятельно проделать все этапы. Сначала берем любой датасет на kaggle по запросу Credit Scoring. Проводим EDA, генерируем гипотезы, фичи, готовим данные для модели и делаем бейзлайн: логистическая регрессия. Затем уже можно попробовать случайный лес, градиентный бустинг, KNN или еще что по вкусу— сравниваем метрики. И на последок не забываем проанализировать результаты и культурно презентовать. Можно провести АВ тест на смой первой модели.
Все варианты решения и реализации можно найти в интернетах: GitHub, Хабр. Очень полезным будет посмотреть всякие выступления на конференциях по этой теме для вдохновения, да и это очень поможет на мл кейсах.
2. Наивный Байесовский классификатор (НБК)
Для конкретики будем классифицировать письма на спам. Опять же обработаем данные: удаляем числа, знаки препинания, стоп-слова, стемминги, лемматизацию.
Объединяем все методы предварительной обработки и создаём словарь слов и счётчик каждого слова в наборе данных для обучения:
1. Вычисляем вероятность для каждого слова в тексте и отфильтровываем слова со значением вероятности меньше порогового. Такие слова будут нерелевантными.
2. Для каждого слова в словаре создаём вероятность, что это слово окажется в спаме. Определяем условную вероятность для использования её в НБК.
3. Вычисляем прогнозируемый результат с помощью условных вероятностей.
НБК реализовать не сложно. Куда интересней погрузиться во всю теорию, которая за этим стоит, в вероятностные модели. К тому же, кейс фильтрации спама и подобного часто встречается на собесах.
3. MLOps
Можно наладить какой-то минимальный прод для проектов: например телеграм бот или FastAPI. Можно еще автоматизировать пайплайн с помощь AirFlow и попробовать запустить инфраструктуру не только локально, но и облаке. Конечно нужно будет поизучать Docker, Cuber, Hadoop, Spark, HDFS, Kafka. Но на самом деле ничего трудного— после нашего курса дата инженер будете делать такие вещи по щелчку пальцев.
4. Ранжирование и матчинг
Для начала лучше пробежаться глазами по статье и посмотреть, что пишут в интернетах. Можно выделить три подхода к задаче: поточечный, попарный, списочный. Советую начать с первого как самого простого. Для конкретики будем предсказать оценку релевантности для запросов тестового датасета. Здесь можно кстати поучиться парсить web-страниц и собирать сырые данные, размечать их с помощью какого-нибудь Яндекс-Толока. Делаем регрессию, а затем Random Forest Regressor, XGBoost, lightGBM, CatBoost.
Совсем продвинутые могут попробовать языковые модели в духе FastText, Word2Vec, DSSM и более сложные: BERT, можно даже попробовать архитектуру трансформеров.
5. Рекомендашки
Очень популярный кейс на собесах. Для начала лучше пробежаться глазами по этому разделу и посмотреть, что пишут в интернетах. Затем начинаем реализовывать самое простое как бейзлайн, например, content-based рекомендации, KNN. Дальше можно попробовать факторизации матрицы рейтингов по svd разложению или по более эффективной als архитектуре и функции ошибок bpr. Затем можно попробовать W2V подход, чтобы использовать последовательность взаимодействий пользователя для построения рекомендации следующего предмета.
Для знатоков DL можно попробовать DSSM, SasRec/Bert4Rec, MultVAE, Merlin или графовые нейронки: GCN-подобные архитектуры.
Также стоит попробовать обучение с подкреплением: многоруких бандитов.
Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
@postypashki_old
Forwarded from Pattern Guru. Шаблоны проектирования. Архитектура ПО
🔥 6 архитектурных паттернов: на заметку разработчику
☑️ Layered
☑️ Microservices
☑️ Event-Driven
☑️ Client-Server
☑️ Plugin-based
☑️ Hexagonal
👉 Источник
☑️ Layered
☑️ Microservices
☑️ Event-Driven
☑️ Client-Server
☑️ Plugin-based
☑️ Hexagonal
👉 Источник
Forwarded from Sinекура
Вчера читал лекции про SVM да RVM, и вот видео уже выложено, да и все материалы на странице курса доступны как обычно.
Что мне всегда нравилось в околоматематических науках, в том числе и в машинном обучении, — это то, что как бы быстро ни двигался прогресс, всё равно основные идеи сохраняются, не устаревают и время от времени возникают в самых разных местах.
В этих лекциях вот рассказывал про SVM и kernel trick. Казалось бы, кому в эпоху нейросетей захочется самому придумывать ядра для нелинейной классификации и применять kernel trick — сеть же сама выучит нужное нелинейное преобразование. И действительно, может выучить, и базовые SVM сейчас редко встретишь в живой природе — но трюк отнюдь не умер! Это математическая идея, и она вовсе не об SVM, а о том, что скалярные произведения в пространствах признаков высокой размерности φ(x) эквивалентны нелинейным функциям от исходных векторов малой размерности x.
Так что когда в трансформерах понадобилось решать проблему квадратичной сложности, одним из подходов стал как раз kernel trick, только наоборот: если перейти от softmax(q⋅k)⋅v в пространство признаков, где softmax будет линейным, φ(q)⋅φ(k) (приближённо, разумеется), то можно будет переставить скобочки и матрицу квадратичной от длины входа сложности не считать. Эта идея называется сейчас linear attention, и я об этом недавно подробно писал в посте про линейное внимание и Mamba.
Это хороший пример к извечной морали любого образовательного процесса: изучать надо не рецепты, не конкретные модели и решения, а идеи, которые лежат в их основе. Модели устареют, рецепты заменятся на другие, — а идеи вечны.
https://www.youtube.com/watch?v=tHjg8mH0VSM
Что мне всегда нравилось в околоматематических науках, в том числе и в машинном обучении, — это то, что как бы быстро ни двигался прогресс, всё равно основные идеи сохраняются, не устаревают и время от времени возникают в самых разных местах.
В этих лекциях вот рассказывал про SVM и kernel trick. Казалось бы, кому в эпоху нейросетей захочется самому придумывать ядра для нелинейной классификации и применять kernel trick — сеть же сама выучит нужное нелинейное преобразование. И действительно, может выучить, и базовые SVM сейчас редко встретишь в живой природе — но трюк отнюдь не умер! Это математическая идея, и она вовсе не об SVM, а о том, что скалярные произведения в пространствах признаков высокой размерности φ(x) эквивалентны нелинейным функциям от исходных векторов малой размерности x.
Так что когда в трансформерах понадобилось решать проблему квадратичной сложности, одним из подходов стал как раз kernel trick, только наоборот: если перейти от softmax(q⋅k)⋅v в пространство признаков, где softmax будет линейным, φ(q)⋅φ(k) (приближённо, разумеется), то можно будет переставить скобочки и матрицу квадратичной от длины входа сложности не считать. Эта идея называется сейчас linear attention, и я об этом недавно подробно писал в посте про линейное внимание и Mamba.
Это хороший пример к извечной морали любого образовательного процесса: изучать надо не рецепты, не конкретные модели и решения, а идеи, которые лежат в их основе. Модели устареют, рецепты заменятся на другие, — а идеи вечны.
https://www.youtube.com/watch?v=tHjg8mH0VSM
YouTube
СПбГУ -- 2025.02.18 -- SVM, kernel trick, ядерные методы, метод релевантных векторов
Это лекция из курса "Графические вероятностные модели", который читается на Факультете математики и компьютерных наук СПбГУ вместе с двумя другими частями курса машинного обучения -- "Основами байесовского вывода" и "Глубоким обучением". Все материалы этой…
Forwarded from эйай ньюз
Ultra-Scale Playbook - книга по распределённой тренировке от Huggingface
Хороший общий обзор того, как эффективно использовать сотни GPU для обучения самых мощных AI моделей. Она предлагает пошаговый процесс выбора и настройки конфигурации обучения и их оптимизации. Проходятся по всем основным видам параллелизм, их сильным и слабым сторонам и как сделать их быстрыми и эффективными по памяти.
Книга не просто теоретизирует, она основана на более 4000 реальных экспериментов, использующие вплоть до 512 GPU (кому-то это может показаться не много, но это уже приличный скейл). Результаты поданы в виде куче графиков и интерактивных визуализаций.
Всего 100 страниц, рекомендую почитать. К тому же они сделали cheatsheet, чтобы проще было запомнить содержание книги.
https://huggingface.co/spaces/nanotron/ultrascale-playbook
@ai_newz
Хороший общий обзор того, как эффективно использовать сотни GPU для обучения самых мощных AI моделей. Она предлагает пошаговый процесс выбора и настройки конфигурации обучения и их оптимизации. Проходятся по всем основным видам параллелизм, их сильным и слабым сторонам и как сделать их быстрыми и эффективными по памяти.
Книга не просто теоретизирует, она основана на более 4000 реальных экспериментов, использующие вплоть до 512 GPU (кому-то это может показаться не много, но это уже приличный скейл). Результаты поданы в виде куче графиков и интерактивных визуализаций.
Всего 100 страниц, рекомендую почитать. К тому же они сделали cheatsheet, чтобы проще было запомнить содержание книги.
https://huggingface.co/spaces/nanotron/ultrascale-playbook
@ai_newz
Forwarded from ML for Value / Ваня Максимов
50 оттенков рекомендаций
Недавно появился прикольный список из 50 способов сформулировать задачу рекомендаций товаров. Да-да, их так много 😅
И часто выбрать правильную формулировку, прочитать несколько статей по ней экономят уйму времени
Из прикольных формулировок задачи порекомедновать что-то я бы выделил:
- Multi-iterest recommendations. Очень hot topic 🔥 почти для всех крупных компаний. Тренд на экосистемы приводит к тому, что пользователь внутри одного приложения должен решать сотни разных задач (и иметь сотни интересов). Поэтому важно уметь рекомендовать что-то полезное в каждом из них. Для примера, на маркетплейсе рекомендовать и любимую зубную пасту, и корм для собак, и футболки с аниме в одной ленте
- Location-based recommendations. Мой фаворит со времен Delivery Club, где локация пользователя (и время доставки из ресторана в эту локацию) была чуть ли не главной фичей. Подружить физический мир (локация с дорогой недвижкой, запутанный маршрут курьера, пробки, домашняя и офисная локации пользователя, ...) задача очень интересная!
- Trigger-Induced Recommendation. Делаем рекомендацию в ответ на текущее ключевое действие пользователя. Тоже классная история, когда юзер может явно указать свой текущий интерес: смотрел в тиктоке мемасы, и вдруг хоп - увидел образовательное видео и дальше хочешь образовательный контент. Очень сильно верю в эту историю
Добавил бы к этому списку 51-ую формулировку)
- Slate recommendations. Вспомните Netflix: у него есть очень много горизонтальных "подборок" по тематикам, внутри каждой подборки - персонально отранжированные товары. По сути, они решают мега-крутую задачу: (1) в каком порядке показать подборки + (2) в каком порядке показать фильмы внутри каждой подборки. Помимо того, что в идеале задача комбинаторная, так тут еще нужно помнить, что фильм может быть сразу в нескольких подборках + сами подборки можно авто-генерировать 🤯
В общем, о дивный мир рекомендаций:)
Недавно появился прикольный список из 50 способов сформулировать задачу рекомендаций товаров. Да-да, их так много 😅
И часто выбрать правильную формулировку, прочитать несколько статей по ней экономят уйму времени
Из прикольных формулировок задачи порекомедновать что-то я бы выделил:
- Multi-iterest recommendations. Очень hot topic 🔥 почти для всех крупных компаний. Тренд на экосистемы приводит к тому, что пользователь внутри одного приложения должен решать сотни разных задач (и иметь сотни интересов). Поэтому важно уметь рекомендовать что-то полезное в каждом из них. Для примера, на маркетплейсе рекомендовать и любимую зубную пасту, и корм для собак, и футболки с аниме в одной ленте
- Location-based recommendations. Мой фаворит со времен Delivery Club, где локация пользователя (и время доставки из ресторана в эту локацию) была чуть ли не главной фичей. Подружить физический мир (локация с дорогой недвижкой, запутанный маршрут курьера, пробки, домашняя и офисная локации пользователя, ...) задача очень интересная!
- Trigger-Induced Recommendation. Делаем рекомендацию в ответ на текущее ключевое действие пользователя. Тоже классная история, когда юзер может явно указать свой текущий интерес: смотрел в тиктоке мемасы, и вдруг хоп - увидел образовательное видео и дальше хочешь образовательный контент. Очень сильно верю в эту историю
Добавил бы к этому списку 51-ую формулировку)
- Slate recommendations. Вспомните Netflix: у него есть очень много горизонтальных "подборок" по тематикам, внутри каждой подборки - персонально отранжированные товары. По сути, они решают мега-крутую задачу: (1) в каком порядке показать подборки + (2) в каком порядке показать фильмы внутри каждой подборки. Помимо того, что в идеале задача комбинаторная, так тут еще нужно помнить, что фильм может быть сразу в нескольких подборках + сами подборки можно авто-генерировать 🤯
В общем, о дивный мир рекомендаций:)
GitHub
GitHub - Darel13712/ultimate-recsys-list: Ultimate list of various problem formulations and subtasks in recommender systems
Ultimate list of various problem formulations and subtasks in recommender systems - Darel13712/ultimate-recsys-list
Forwarded from ML for Value / Ваня Максимов
Дыры в данных и в прогнозах
Часто встречаются в прогнозе спроса, но и в других временных рядах тоже!
Один подписчик спрашивал, почему на Каггле в прогнозе разреженного спроса (в какие-то дни нет продаж - этого дня вообще нет в статистике) все считают лаги просто через lag(7), без заполнения пропусков 0?
Иногда это фактически получается лаг не в 7 дней, а 10 или 20
Ошибка классическая, ситуация страшная)) Простой способ заполнить нулями и потом делать lag работает, но и правда растит обьем датасета сильно
Так как быстро заполнить дыры в спросе и сварить датасет?
1. Уровень агрегации побольше
Обычно ~20% ненулевых продаж по магазин-товар-день. ИМХО, на этом уровне агрегации явно не стоит строить прогноз. Можно прогнозировать на уровне, например, товар + город / гео-зона. А потом по историческим долям восстанавливать спрос по магазинам:
- Лучше учатся зависимости спроса от сезонности, скидок и тд
- Итоговая точность часто по магазин-товар-день даже выше 🎯
В каких-то проектах можно агрегировать продажи не по дню, а по неделе. Например, я так делал для оптимизации промо-скидок (скидки длительностью 1-2 недели)
2. Заполнять пропуски 0 !
Да, станет больше данных, но уже не х5 раз, а сильно меньше, тк уровень агрегации выше. В моих кейсах это обычно х1.5-х2
3. Считать только важные лаги за 1 groupby
Обычно это lag(1), ..., lag(7), lag(14), lag(21), lag(28). Не читайте кагл-ноктбуки с генерацией всех фичей таким способом на 1_000+ строк кода 📈
4. Pivot_table + бесплатные фичи
Делаем pivot_table:
по строкам магазин (или город) + товар + дата,
по столбцам - разные лаги.
Дальше считаем агрегацию лагов простой операцией над нужными столбцами, а не еще сотней groupby:
- Среднее за последнюю неделю = mean(lag(1), ...., lag(7))
- Среднее запоследние 4 "понедельника" = mean(lag(7), lag(14), lag(21), lag(28))
В итоге, фичи считаются раз в 5-10 раз быстрее (и правильнее), чем в каггл-ноутбуке. В одной компании я так стал собирать датасет в 21 раз быстрее
P.S. Можно еще с pandas на polars переехать - еще сильнее ускориться 🚀
#timeseries@ml4value
Часто встречаются в прогнозе спроса, но и в других временных рядах тоже!
Один подписчик спрашивал, почему на Каггле в прогнозе разреженного спроса (в какие-то дни нет продаж - этого дня вообще нет в статистике) все считают лаги просто через lag(7), без заполнения пропусков 0?
Иногда это фактически получается лаг не в 7 дней, а 10 или 20
Ошибка классическая, ситуация страшная)) Простой способ заполнить нулями и потом делать lag работает, но и правда растит обьем датасета сильно
Так как быстро заполнить дыры в спросе и сварить датасет?
1. Уровень агрегации побольше
Обычно ~20% ненулевых продаж по магазин-товар-день. ИМХО, на этом уровне агрегации явно не стоит строить прогноз. Можно прогнозировать на уровне, например, товар + город / гео-зона. А потом по историческим долям восстанавливать спрос по магазинам:
- Лучше учатся зависимости спроса от сезонности, скидок и тд
- Итоговая точность часто по магазин-товар-день даже выше 🎯
В каких-то проектах можно агрегировать продажи не по дню, а по неделе. Например, я так делал для оптимизации промо-скидок (скидки длительностью 1-2 недели)
2. Заполнять пропуски 0 !
Да, станет больше данных, но уже не х5 раз, а сильно меньше, тк уровень агрегации выше. В моих кейсах это обычно х1.5-х2
3. Считать только важные лаги за 1 groupby
Обычно это lag(1), ..., lag(7), lag(14), lag(21), lag(28). Не читайте кагл-ноктбуки с генерацией всех фичей таким способом на 1_000+ строк кода 📈
4. Pivot_table + бесплатные фичи
Делаем pivot_table:
по строкам магазин (или город) + товар + дата,
по столбцам - разные лаги.
Дальше считаем агрегацию лагов простой операцией над нужными столбцами, а не еще сотней groupby:
- Среднее за последнюю неделю = mean(lag(1), ...., lag(7))
- Среднее запоследние 4 "понедельника" = mean(lag(7), lag(14), lag(21), lag(28))
В итоге, фичи считаются раз в 5-10 раз быстрее (и правильнее), чем в каггл-ноутбуке. В одной компании я так стал собирать датасет в 21 раз быстрее
P.S. Можно еще с pandas на polars переехать - еще сильнее ускориться 🚀
#timeseries@ml4value
Forwarded from Get Rejected
Кстати хотел всем порекомендовать курс по дегустации вина на ресурсе Coursera:
Wine Tasting: Sensory Techniques for Wine Analysis
Я уже его прошел достаточно давно в 2020 году и благодаря ему я начал получать офферы.
Перед началом курса нужно хорошо подготовиться и закупить необходимые материалы для урока.
Курс достаточно хороший. Добрый дядька на фоне злаковых полей рассказывает как вкушать сыр с вином.
Как чувствовать аромат, как различать вино и так далее.
Wine Tasting: Sensory Techniques for Wine Analysis
Я уже его прошел достаточно давно в 2020 году и благодаря ему я начал получать офферы.
Перед началом курса нужно хорошо подготовиться и закупить необходимые материалы для урока.
Курс достаточно хороший. Добрый дядька на фоне злаковых полей рассказывает как вкушать сыр с вином.
Как чувствовать аромат, как различать вино и так далее.
Coursera
Wine Tasting: Sensory Techniques for Wine Analysis
Offered by University of California, Davis. With its ... Enroll for free.
Forwarded from Дневник Стьюдента
Отобрал 4 конференции, на которых аналитики делятся опытом решения боевых задая.
Чтобы вам не копаться в архивах youtube, собрал все выступления в отдельные плейлисты.
- Avito analytics meetup
Авито выпустили уже 13 эпизодов, в каждом из которых по 3 выступления на полчаса с секцией вопросов.
- Матемаркетинг
Наверное самая популярная оффлайн конференция по аналитике на русскоязычном пространстве.
- Kolesa conf data
Казахская IT-компания, которая устраивает IT-конференции с 2018 года.
- Product analytics, код желтый
Выступления аналитиков Т-банка и приглашенных гостей
Приятного просмотра!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ebout Data Science | Дима Савелко
Уничтожение Self-AttentionSelf-Attention или механизм внимания - это такой механизм, который используется сейчас во всех современный LLMках. До него многие задачи решались с помощью рекуррентных нейросетей (RNN), но они обладали некоторыми недостатками:
- сложность в учёте длинных последовательностей
- проблема взрыва/затухание градиентов
- нельзя параллелить вычисления
- сложная в интерпретации
Как итог гугл выкладывает статью Attention Is All You Need. В ней гугл показывает концепцию, которая может решить данные недостатки
Как устроен Self-Attention
На вход подаётся векторные представления слов (зелёные матрицы с 1 картинки). Каждая "строка" в этой матрице - это векторное представление слова. Входящие матрица умножаются на матрицы весов Key, Query, Values. После умножение уже получается матрицы Query, Key, Values (розовая, оранжевая и голубая матрица справа на первой картинке).
Умножается матрица Query на транспонированную матрицу Key (Q*K.T). Мы получаем промежуточную матрицу, отражающую значимость токенов друг для друга.
Для нормировки матрицы Q*K.T, матрица делится на корень из значения размерности векторов модели (например, на sqrt(512) для модели с размерностью 512). Нам нужно делить, так как при умножении Q на K.T у нас увеличивается дисперсия на sqrt(размерность).
Потом применяется функция softmax для, чтобы нормализовать значения и получить attention-матрицу. На картинке 3 предложение "Life is short eat desert first", допусти каждое слово - это токен. Проделав шаги 1 - 4 у нас получится примерно такая attention-матрица, как на картинке 3, где каждый с каждым токеном имеет свою оценку "внимания" между собой. Если скор большой, то эти токены как-то связаны между собой, возможно они вместе образуют какую-то общую информацию.
Зависит от задачи (например обучение генеративной модели), но на attention-матрицу может наложиться маска, например как на картинке 4
attention-матрица умножается на матрицу Values по итогу получается матрица, которая идёт в последующие слои.
Почему выбор сделан на self-attention или его преимущества, которые вас обязательно спросят на собесе
Это была краткая сводка материала, чтобы понять концепцию Self-Attention и рассказать на собесе. Если вы хотите больше узнать более подробно про Self-Attention, то прошу к прочтению
- Всем смотреть базу от Котенкова, здесь мы с ручкой и листком переписываем архитектуру, чтобы в полной мере понимать, как она работает
- Трансформеры в картинках - эту статью прочитать в качестве закрепления материала от Котенкова
- Transformers Explained Visually (Part 3): Multi-head Attention, deep dive
- Attention Networks: A simple way to understand Self-Attention
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM