Собес в Газпроме
Недавно проходил собес в Газпроме, и у меня спрашивали довольно таки интересные, а порой сложные вещи на интервью 🫣
1⃣ Что такое макро/микро метрики?
Это вещь используется при много классовой классификации, определëнным усреднением метрик
2⃣ Отличие word2vec и glow?
Это штука из слов создаëт осмысленные вектора. Их отличие в том, что glow в отличие от word2vec учитывает совместную встречаемость слов
3⃣ Как устроен трансформер?
Один из самых сложных вопросов. Трансформер выполняет seq2seq задачу, один из подвидов этой задачи - это перевод предложений из русского на английский к примеру
4⃣ Затем вопросы технического плана, от которых я выпал
- виды тестирования: unit-тесты, модульные тесты и не только
- многопоточность: multiprocessing, multithreading
- GIL
Итог: учите и познавайте всë, но не забывайте концентрироваться на одном
Погружение в NLPСобрал для вас серию статьей про NLP 😱
1️⃣ Эмбеддинги стоит прочитать статью и пост выше. Эмбеддинги - представление слов в вектор, то есть в цифру. Основа всех основ в NLP. да и не только в NLP
2️⃣ RNN и LSTM - статья. Рекуррентные нейронные сети - их архитектуру желательно знать для более глубокого понимания других архитектур нейронных сетей
3️⃣ Механизм внимания в seq2seq задачах - статья. Убийственная вещь, которая используется в такой мощной штуке, как трансформер
4️⃣ Трансформер - статья. Чаще всего именно эта архитектура используется для решения задач seq2seq, а такие языковые модели как BERT, GPT сделаны на основе архитектуры энкодера в трансформере
#DataScience
Библиотека программиста
Обзор четырёх популярных NLP-моделей 🙊 💬
RNNLM, Word2vec, GloVe и fastText. История создания, варианты использования, преимущества и недостатки четырёх моделей обработки естественного языка.
2023 ГОД
🥳Этот год был тяжёлый....И я хочу с вами поделиться победами и открытиями🫡
1️⃣ Жизненные ценности - Самое главное за этот год 👨👨👦👦
Я понял, насколько важны друзья и родственники на моём пути. Друг или брат поможет, не предаст, всегда поддержит, чтобы не произошло ,он тебя не бросит. На данный момент первая ценность моей жизни - это человеческие отношения: родители, друзья, родственники. Спасибо сложностям и людям на моём пути, которые помогли мне это осознать.
2️⃣ Осознание своего пути🤔
Общаясь с друзьями и товарищами, я понимаю насколько сложно найти свою место в этой жизни: куда двигаться, к чему идти, как расти ?
В данном году Я свой вектор развития - и эта одно из главных достижений в моей жизни
3️⃣ Победа в хакатонах💪
Много поражений у меня было за спиной, но благодаря им я выиграл последующие соревнования. Если вы только начали свою Data Science деятельность, то бегом на kaggle и на хакатоны, только практика и опыт лучших поможет вам прокачаться
4️⃣ EngiishZone🗣
В этом году я пошёл на курсы по-английскому в Ezone (English Zone). Это то место, где я учу английский, а самое главное общаюсь с офигенными и разнообразными людьми. Это место помогает мне восстановить энергию для работы и последующий достижений. Благодаря данной школе я спокойно читаю статьи на английском и свободно говорю на нём
5️⃣ Знакомства🫂
Новые люди, которые перевернули моё отношение ко многим вещам: kaggle-мастер в 17 лет - легко, миллионер в 18 - изи, именно эти люди показали, что всё возможно. и предела нет.
Спасибо Вам, что читаете меня. Хочу Вам сказать одно - ЕБАШЬТЕ ,и всё у вас получиться, проверено на себе.
С Новой Годой !🥳
Как уничтожать собеседования ?В последний месяц я находился на собесы ,и хочу сказать вам. на что стоит обращать внимание. В каждой компании есть дефолтный стек тем, по которым вас будут пытать:
1️⃣ Python и Алгоритмы 🐍
Первое, что вам нужно сделать - это зайти на ютуб и написать "ТОП 10 ВОПРОС ПО ПИТОНЧИКУ НА СОБЕСЕДОВАНИИ ДЛЯ РАБОТЫ У ДЯДИ", вот неплохой сайт с основными вопросами.
Потом наступают алгосы, тут есть определённый список тем, которые нужно заботать: односвязные линейные списки, деревья, метод двух индексов, сортировки и многое другое, сайт с основными задачами, ну и base - это LeetCode, сайт где собраны задачи на алгосы. Старайтесь решать по 2-3 задачи в день ,и будет вам успех 🙌
Ещё вам нужно уметь вычислять сложность алгоритма. Сайт для этого
2️⃣ SQL 🗂
Опять же спрашиваем у гугла "ТОП 10 ВОПРОСОВ....", обычно спрашивают чуть теории по sql, а потом пытают по практике. Чтобы заботать практику вам сюда и сюда, а здесь вопросы
3️⃣ Статистика, A/B тесты 📈
Гугл -> "ТОП..."
Здесь спрашивают основы - ЦПТ, p-value, доверительный интервал... Вопросы и вопросы
По A/B тестам у вас могут спросить, как бы проверяли качество двух моделей с помощью A/B тестирования или просто провести A/B тест на теоретическом примере
4️⃣ Метрики в ML 📊
Google -> "...."
Метрики классификации: ROC-AUC, Precision, Recall, Accuracy, PR-AUC
Метрики для задачи регрессии: MSE, MAE, RMSE, RMSLE
5️⃣ Модели в ML 🤖
ГУГЛ.
Могут спросить про любую модельку, но здесь зачастую затрагивают градиентный бустинг или деревья, а чаще всего их вместе. Также стоит наизусть выучить тему bias variance trade-off
А эту вещь необходимо выучить для прохождения собесов
6️⃣ AI 🧮
Тут зависит от сферы куда вы идёте, тут всё индивидуально. Если я подаюсь на nlp вакансию, то и будут спрашивать nlp. Лично я углубляюсь в NLP и вот вам материал: эмбеддинги и модели
7️⃣ Собственные проекты 📝
Вы должны иметь свои проекты, принимать участие в хакатонах и в kaggle-соревнованиях, чтобы компания понимала, что на деле вы Лев Толстой, а не #%$ простой ☝️
Обычно их спрашивают в начале собеса, старайтесь максимально красиво их описать - это всегда будет бонусом.
Итог:
Ботайте все эти темы, делайте пет-проекты, и чем больше вы будете собеседоваться, тем больше шанс, что вам дадут долгожданный оффер 🧾
Python 3 | Data Science | Нейронные сети | AI - Искусственный Интеллект
51 Python Interview вопрос/ответ на собеседовании для Data Scientist - Python 3 | Data Science | Нейронные сети | AI - Искусственный…
51 Python Interview вопрос/ответ на собеседовании для Data Scientist. Вопросы по Python для исследователей данных и разработчиков программного обеспечения
Оффер в крупный синий холдинг в РФ и Head of Data Science в 19 лет
Мне предложили позицию Junior Data Scientist в крупном синем холдинге в РФ. Я там буду заниматься созданием рекомендательной системы для сотрудников всего холдинга, поэтому скоро будут ссылочки на ресурсы по рекомендалкам... 🤗Какой Head of Data Scientist, ты еб@#%*ый !?
Я был один Дата Саентист старой в компании, поэтому задача упала на одного меня, грубя говоря, я был Head of Data Science в 19 лет 🤡🤡🤡
Что нужно сделать ?
Передо мной стояла задача многоклассовой классификации. У нас есть бабушки, которые работают в аптеках, и они отсылают мега кривые записи об препаратах ,и мне нужно понять эту запись и выдать её эталон, который есть в справочнике 🤓
Как я сделал ?
1️⃣ Предобработал данные и построил TF-IDF эмбеддинги, Пробовал обучить FastText, но скор в конце был меньше, дообучить BERT было проблемно, так как мне дали комп с встроенным графическим процессором...
2️⃣ С помощью косинусного расстояния нашёл наиболее похожие записи и взял от них 100 первых записей. Почему именно 100 - эмпирическим путём я понял, что скор на данном количестве самый большой
3️⃣ Взял фичи с этих похожих записей и обучил CatBoost
4️⃣ Выкатил в прод, отсылая в БД предсказанный эталон
Идеи улучшения
1️⃣ Можно сначала кривые бабушкины записи обучить на эталоннах с помощью трансформера - seq2seq задача, а после этого можно выделять наиболее информативные фичи, что будет очень полезно для модели
2️⃣ Перебрать модели - я пробовал использовать только CatBoost, но я бы попробовал использовать случайный лес и построить нейронку
3️⃣ Попробовать обучить BERT-модель, так как там много данных ~25млн, бертовая модель смогла бы построить информативные эмбеддинги
Итог
От меня требовали, чтобы с вероятностью 97% моя штука предсказывала 25% данных. Пришло 100 штук, предсказал 25 штук, и я могу ошибиться только в 3%. Но я не смог достичь 25%, я сделал только 15%, то ли из-за моей тупости, то ли из-за мощностей. Скорее всего первое... 💩
NLP Kaggle соревнование🌚
Суть задачи:
Ребятки пишут в твиттер *совершенно справедливо заблокированная социальная сеть на территории РФ* посты, и порой они могут писать о пожарах, и задача заключается в том, чтобы определить действительно ли человек пишет о ЧП или нет 🚒🧑🚒
Сложность задачи:
"О Боже! Смотрите закат, словно огонь в небе" и "Напротив моего дома какой-то огонь". А вот теперь заставьте машину думать, где красивое небо, а где пожар 🔥
Решение:
- Текстовые данные были очень dirty, поэтому их необходимо вычистить до блеска 🧹
- Всякие мета-фичи по типу: стиль текста, sentiment score. Потому что текст официальный текст про пожар немного отличается по стилю и по уровню "агрессии" от публицистических твитов 🤬
- Длина предложения, количество хештегов, собачек, ссылок, наличие локации и keyword в описании твита 🐶
- Лемматизация текста и создание RoBERTa эмбеддингов 🎲
- Запихал в нейронку и обучил на 20 эпохах 🤖
Заключение:
В соревновании использовали F1-score. У меня он вышел 0.798, занял 402/800 место 🏆
GitHub, Kaggle Competition
GitHub
kaggle_comp_nlp_disaster_tree/README.md at main · ditengm/kaggle_comp_nlp_disaster_tree
The solve of kaggle competition of binary classification - ditengm/kaggle_comp_nlp_disaster_tree
Материалы по рекомендательным системамКраткое введение:
Есть два основных метода в RecSys:
коллаборативная фильтрация и модель, основанная на контенте✌️
Контентная рекомендация:
Вы рекомендуете фильм, новость, видео на основе данных пользователя: географическое положение, пол, количество вкидов снюса в день и тд. 🤢
Коллаборативная фильтрация:
Есть user-based подход: найти пользователей, чьи интересы максимально похожи на основе потребленных ими продуктов и выставленных оценок. Допустим Никита и Алёша очень любят гачимучи, моргенштерна и резиновый дилдо. И известно, что Дима тоже любит гачимучи и моргенштерна, и почему не порекомендовать ему резиновый предмет ? 🥵
А также есть Item-based. Данный метод рассматривает задачу с противоположной стороны: найти похожие объекты и посмотреть, как их оценивали до этого.
Ещё в этом подразделении есть матричная факторизация. Мы восстанавливаем оценки предметов тех людей, которые не оценили продукт. Тем самым мы можем принять решение о рекомендации 🤖
📚 Материалы по RecSyS 📚
Взял с поста у какого-то парня в LinkedIn эти ссылки, здесь полный список для изучения рекомендательных систем
1. Why do we need Domain Heuristics for RecSys?
2. Graph Algorithms better than Neural Networks / Matrix Factorization for RecSys?
3. Why do we need Session-based Recommender Systems?
4. How may look like the architecture of Recommender System in Production?
5. Why do we need Offline and Online Recommender System evaluation?
6. Why do we need two-stage Recommender System?
7. Do you know how to handle new user/products in Recommendation Systems?
8. Best Online Courses for RecSys?
Youtube:
1. Воронцов, ШАД
2. MTS BigData
3. Полезный плейлист по работе с текстом и RecSys
4. выступления из ODS по RecSys
5. MTS - Your first recsys
6. Большой плейлист по RecSys
Как посмотреть на текст в виде графика?
Есть датасет статей и их топиков: статьи про природу, статьи про политику, статьи про гачимучи....Так как статьи имеют большое количество предложений, я использовал SBERT модели. (Они нужны для создания эмбеддингов предложения). Сравниваем SBERTы с FastText и Glove.
1️⃣ Взяв, все статьи и превратив их в эмбеддинги с помощью моделей.
2️⃣ Я сжал их с помощью UMAP до векторного двумерного пространства, чтобы изобразить на графике.
3️⃣ Матерясь и крехтя, я нарисовал получившиеся графики, где разные цвета - топики статей.
Первые две картинки - это распределение SBERTовых моделей, последние - это Glove, FastText
Вывод
SBERT-модели лучше различают топики, что говорит об более-менее адекватной разметки и хорошей аппроксимации текста. А вот остальные модели не очень справляются со своими задачами, на графиках всё в кучу
Если у вас есть мощности, то используйте SBERT-модели, если вы на калькуляторе, то купите комп и используйте предобученный Word2Vec, Glove, FastText 🤡
Предобработка данных - г#&%о!Сегодня поговорим об языковых моделях, их токенизации и том нужно ли для них предобработывать текстовые данные или нет ? 🥸
Модели 🤖
В word2vec, glove используется токенизация по словам, то есть каждому слову даётся айдишник ,и на инференсе выдаются эмбеддинги слов.
В FastText используются n-grams, слово делится на кусочки, и на инференсе эмбеддинги кусочков агрегируются в один эмбеддинг.
В BERT моделях используются BPE - это алгоритм сжатия данных, который заменяет наиболее часто встречающиеся пары байтов на новый байт, который не встречается в последовательности - очень круто сжимает данные.
Например: крышесноснящий при токенизации превратиться в примерно что-то такое: крыш###, ###снос###, ###ящий
Предобработка данных в языковых моделях 🧮
Под предобработкой я подразумеваю следующие операции над текстом: стемминг, лемматизация, удаление стоп слов, очистка от пунктуации.
В word2vec, glove, FastText - предобработка очень важна, так как их токенизация и архитектура не может запомнить зависимость прошедшего времени в слове от какой-нибудь другой сущности в тексте, а в BERT моделях лучше не предобработывать данные, так как их токенизация и механизм внимания позволяет запомнить связи между грамматикой. Но стоит отметить, что любой мусорный (без информации) текст всё таки стоит удалить.
Например 🙌
Я брал текста из статей, которые разделены на темы: спорт, война, инициация, Путин...
На первой картинке с обработкой, на второй - без. Модель: miniLM (Это SBERTовая модель). Каждый цвет - это топик статьи.
Как видно из распределений на первой картинке (с обработкой) - всё в кучу по сравнению со второй (без обработки). Это означает, что эмбеддинги статей получились лучше для текста без предобработки, так как распределения стали лучше различимы, они не смешиваются в кашу, как на первой картинке. Стоить заметить, что мы сделали такой вывод, только исходя из разметки статей.
Десять Сталинских ударов NVIDIA по соревнованию по RecSys 🪖
Booking.com, сервис который занимается туризмом, помогая пользователям в планировании путешествий, решил устроить соревнование по RecSys.Данные 🗂
Если кратко, то когда, где и какой пользователь путешествовал
Модель 🤖
Страшная нейросеть (1 картинка), которая состоит из трёх нейронок. На вход нейронкам фичи, а на выходе вероятности, что город будет последним в путешествии.
На вершине каждой находится Matrix Factorization Layer - обычное умножение матриц, а именно умножение матрицы эмбеддингов пользователей, на каждый эмбеддинг сессии, а на выходе получившийся эмбеддинг проходит через softmax.
r = softmax(s * I). s – эмбеддинг сессии, I – эмбеддинг пользователей. Каждое s пробегается по все множеству I.
1️⃣ Первая модель - Обычные FC слои
Фичи входят перемножаются через FC слои, по итогу получается эмбеддинг, который умножается с фичами, а именно эмбеддингами последних пяти городов
2️⃣ Вторая модель - GRU
Эмбеддинги последних пяти городов проходят через GRU, они же конкатятся с фичами и проходят FC слои, затем используется MultiStage Session-based Matrix Factorization head, которая состоит из двух стадий:
a) На первой стадии используется softmax head для того, чтобы выбрать топ 50 городов для следующей стадии
б) На второй стадии конкатим выходы с FC и с первой стадии и перемножаем с эмбеддингами прошлых городов
3️⃣ Третья модель - XLNet
За основу взята модель XLNet, которая обучалась на предсказании пропущенного слова на основе соседних слов, которых мы знаем. Также и здесь, мы знаем соседние города и предсказываем город между ними.
На вход XLNet`у эмбеддинг, который получился из конкатенированных данных пропущенных через FC, на выходе также эмбеддинг, который идёт в Matrix Factorization Head с эмбеддингом последнего города.
Именно так NVIDIA нанесла 13 сталинских ударов по booking.com и вынесла трон, заняв первое место 🦾
Десять Сталинских ударов NVIDIA по соревнованию по RecSys
🪖HuggingChat - конкурент ChatGPT с открытым исходным кодом
🤗HuggingFace выпустила свой аналог ChatGPT, в основе которого лежит модель 30B параметров, когда в ChatGPT 170B.
(HuggingChat имеет под собой oasst-sft-6-llama-30b)
Интерфейс похож на ChatGPT, но на деле может порой выдавать странные вещи особенно на русском языке, но на английском более менее адекватно 🔥
HuggingChat, Модель