AI.Insaf
1.03K subscribers
58 photos
1 file
21 links
Личный канал Инсафа Ашрапова
Исполнительный директор по исследованию данных в банке (aka Lead DS) — @insafq
Здесь про AI, менеджмент, личные истории и многое другое
Download Telegram
Удалось побывать DS-ментором на одном из хакатонов в конце прошлого года, где моя команда заняла 3-е место 🎉 . Исходный проект был посвящён кластеризации событий брокера сообщений/логов.

Коллективным разумом были предложены следующие идеи ниже. Ожидаемо хотелось применить трансформеры, но из-за объёма данных и доступных ресурсов был выбран другой подход. Как вы думаете, какой?

1. Baseline: scaNN + любимый эмбеддер
• ScaNN — супербыстрый на CPU алгоритм поиска ближайших соседей (быстрее Faiss)
Benchmarks алгоритмов кластеризаций

2. Готовый алгоритм ранжирования текстов: Rank-BM25 — улучшенный tf-idf, который может плохо выделять если признаков мало, и очень быстро растет размер словаря при увеличении кол-во n-gramm

3. Алгоритм с кастомным эмбеддингом

• Используем токенизатор (например, BPE). Обучаем его на логах
• Переводим логи в последовательность токенов
• Генерируем tf-idf для 1-, 2-, 3-грамм (размер словаря ~10⁶)
• Создаём эмбеддинги для токенов (например, с помощью предобученной модели)
• Кластеризуем эмбеддинги (например, на 100-800 кластеров)
• Для нового текста создаём вектор, учитывающий частоту кластеров
• Результат — компактные векторы, подходящие для кластеризации и обнаружения аномалий

4. Быстрая работа со строками + dbstream clustering
RapidFuzz — библиотека с быстрыми реализациями функций string similarity.
• Jaro-Winkler Distance — быстрее Левенштейна на коротких строках.

5. Итеративное выделение кластеров с помощью LLM
• Генерируем ключевые слова и типы ошибок по существующим кластерам
• Покрываем базу кейвордами (~50%)
• Обрабатываем оставшиеся данные, выделяя новые кластеры
• Повторяем процесс, пока покрытие не станет полным
• Удобно выделяем ключевые виды ошибок (например, SQLException, JavaException, Timeout и т.д.)

6. Имплентация от Jetbrains (📕Статья: Aggregation of Stack Trace Similarities for Crash Report Deduplication, ⭐️ код на GitHub)
Внутри решение k-NN с хитрой агрегацией stack trace логов ошибок с временными метками
📣 Хорошая обзорная статья про то, что нового появилось в OCR (подготовка документов для LLM) в 2024 в контексте GenAI от Игоря Галицкого – OCR Development as Part of GenAI for Documents: 2024 Year-End Summary (linkedin)

Выделяется три подхода к решению задач OCR:
Pipeline-Based Approach - использование множества специализированных моделей, а также компактных VLM, для каждой подзадачи OCR (распознавание текста, таблиц, формул)
Expert OCR VLMs – применение специализированных OCR VLM моделей, например, GOT-OCR2.0 (580M) для конвертации img-> md
General VLMs, крупные универсальные VLM модели, например, GPT-4o или Qwen2-VL.

🤔 Почему это важно?
Большинство кейсов в Enterprise сейчас представляют поиск информации по коллекциям документов (RAG), где качество распознавания сильно влияет на финальный результат.

📌 Узкоспециализированные модели OCR пока продолжают показывать лучшие результаты. По деталям – лучше ознакомиться с исходной статьей.
Chatgpt внезапно почти справился но потерял суть, правильная расшифровка.
Автор статьи: «Александр Радищев», покорнейше просит Комитет о возвращении ему сей статьи, не допущенной к помещению в журнале. 5 сентября 1836
аналитика hh
Прошлую субботу в офисе VK прошла Дата-Ёлка 🎄🎅, запись тут. В 2019 году там выступал Спайдермен 🕷, сейчас не так весело. Лично я не дошёл ногами, но посмотрел доклады онлайн, а коллега сходил вживую. В начале мероприятия было мало людей, большинство начало приходить ближе к афтепати 🍷, про еду не забыли)

интересные треки

🧠 1. Reliable ML. Первая часть: обсуждали старые материалы и дали ссылку на классную книгу 📖 по интерпретации моделей. Основной фокус — важность оценки uncertainties моделей. Например, как оценивать не только вероятность события, но и доверительный интервал 📊. Вот полезная библиотека для этого: https://github.com/scikit-learn-contrib/MAPIE.
Вторая часть: обсудили бизнес-аспекты Reliable ML и вспомнили про system design (ссылка на гитхаб). Не хватило конкретных разборов бизнес-кейсов 🤔

🤖 2. Что нового в NLP? LLM стали лучше. Занавес

🔍 3. Итоги PyData. Было много интересных проектов, многие используют LLM. Запомнились:
- Briefer: новый Jupyter Notebook с интерактивными визуализациями.
- Quak: профайлер данных.

📈 4. Карьерный трек в IT Основан на аналитике с hhru (ссылка тут)
- Динамика роста вакансий превышает динамику роста резюме (вторая производная). В абсолютных значениях: 7+ активных резюме на вакансию. И тут конечно вопрос к аналитикам из hh, вывод на 1й картинке ошибочный
- Сильный дисбаланс у джунов: 10x резюме на вакансию, тогда как у сеньорных позиций — 1x.
- Почему не стоит становиться тимлидом: статья (больше ответственности, сложнее рост, прирост 💵 меньше чем от перехода от джуна к мидлу.

⭐️ 5. Отдельно рекомендовали почитать про аномалии временных рядах Dive into Time-Series Anomaly Detection: A Decade Review Как раз есть задача по временным рядам, правда не дошли руки почитать еще статью. Обзорные статья классная тема, чтобы изучить и резюмировать что придумали за последнее время, все работу по агрегации материалов там уже делают за тебя.

+обзоры решений в рекомендациях
Зарегистрировался на сайте про AI-агентов, и на почту пришло супер персонализированное письмо (это вам не имя подставить под готовый шаблон). Явно спарсили мой гитхаб и linkedIn 🕵️‍♂️.

Ждем больше персонализированной рекламы, а не только на основе соцдема (пол, возраст и тд)
Dive into Time-Series Anomaly Detection: A Decade Review (link)

📌 Обзорная статья, которая собрала ключевые наработки в области поиска аномалий за последние 10 лет. Так как по работе пришлось плотнее заняться временными рядами, думаю написать несколько постов по этой теме.

📈 Что такое временные ряды и аномалии?
- Временные ряды 𝑋(𝑡) это данные, в которых значения зависят от времени. Пример – курс валют
- Поиск аномалий – это обнаружение отклонений, при которых временной ряд ведёт себя существенно иначе, чем ожидается. Это полезно для:
• Мониторинга и прогнозирования технического обслуживания оборудования.
• Выявления мошенничества (fraud detection).
• Обнаружения DDoS-атак через анализ сетевого трафика

🏷 Виды аномалий
- Точечные выбросы (point anomalies) – одиночные аномальные значения
- Контекстные аномалии (contextual anomalies) – выбросы, которые кажутся аномальными только в определённом окне (например, аномально высокая температура зимой)
- Sequence-based аномалии – аномальные последовательности данных

📊 Типы и особенности временных рядов
- Univariate vs Multivariate – одиночный или множественные временные ряды
- Тренды и сезонность
- Циклические флуктуации (Cyclical fluctuations)
- Шумы (Irregular variations)

🔬 Виды детекции аномалий
- Supervised – обучающая выборка содержит стандартные и аномальные кейсы
- Unsupervised – обучение без разметки
- Semi-supervised – известны только стандартные временные ряды, без аномалий
- Self-supervised – используются дополнительные сигналы для обучения без явной разметки

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

📌 Подходы к детекции аномалий
Классические методы
Используются прогнозирующие модели для дальнейшего сравнения план/факт:
- Деревья решений и бустинг (например, LightGBM, XGBoost)
- Рекуррентные сети (RNN) с LSTM и трансформерами
- Методы SVM (вспомнили даже его 🫡)
- Скользящее среднее 😐

Нестандартные методы
🔹 Reconstruction-based методы. Используют автоэнкодеры, где временной ряд:
1. Сжимается в латентное пространство энкодером
2. Восстанавливается декодером
3. Если получившиеся временной ряд сильно отличается от ожидаемого => аномалия

Популярные методы:
- Autoencoder-based (Buzz, EncDec-AD и т. д.).
- GANs и диффузионные сети (в статье почему-то забыты, хотя, например, в статье Time Series Anomaly Detection using Diffusion-based Models утверждают, что они SOTA - верим?)

🔹 Clustering-based методы. Как можно догадаться аномалии ищутся с помощью кластеризации:
- Distance-based (по расстоянию).
- Density-based (по плотности).
В статье упоминается 10+ примеров, но суть одна:
1. Временной ряд разбивается скользящим окном.
2. Каждый кусок сравнивается с остальными.
3. Используется кластеризация (например, DAG, деревья).

Популярные методы:
- Discord Detection using Matrix Profile (DAD).
- Adjacent Mean Difference (AMD).
- KNN – за счёт малого количества гиперпараметров оказался одним из лучших. Проверил на игрушечных кейсах (см. пример ниже)

📏 Метрики
Часто используются адаптированные метрики классификации:
- ROC AUC и его вариации, есть свои адаптации под каждый тип аномалий
- Precision и Recall
- True Positive Rate (TPR) и другие

📊 Бенчмарки. Популярные датасеты:
- NAB, KDD21, TODS, TimeEval и другие.
Однако в статье не приводится, какие методы лучшие

🎯 Рекомендация. Лучше строить бейзлайны на скользящих средних и бустингах и только потом пробовать deep learning
Please open Telegram to view this post
VIEW IN TELEGRAM
# knn для поиска аномалий
window_size = 5
X = np.array([time_series[i:i+window_size] for i in range(len(time_series) - window_size)])

knn = NearestNeighbors(n_neighbors=5)
knn.fit(X)
distances, _ = knn.kneighbors(X)
anomaly_scores = distances[:, -1] # расстояние до самого дальнего из 5 ближайших соседей

# Нормализация оценок (выбросы и есть аномалии)
anomaly_scores = (anomaly_scores - anomaly_scores.min()) / (anomaly_scores.max() - anomaly_scores.min())
Забавная дискуссия: 🎥 vk между Сергеем Марковым (руководитель исследований в проекте GigaChat, Сбер) и Иваном Тюкиным (Центр ИИ Сколтеха) — обсуждают, был ли DeepSeek прогревом. Можно не смотреть самое интересное тут:

GigaChat vs. DeepSeek
💡 Сергей ожидаемо позитивно оценивает GigaChat. Про DeepSeek, хоть и выложил все веса в open-source, в части доработки multi-token prediction (что позволяет опубликовал только половину весов. Это означает, что если повторить модель у себя, скорость инференса (работы модели) будет в 2 раза ниже

Цены на API
💰 DeepSeek на старте оказался очень дешевым — от 0.14$ до 2$ за 1M токенов, тогда как ChatGPT стоит 10–20$, а GigaChat — 10$. Но эта цена, скорее всего, субсидирована и действует только в периоды низкого спроса. Сейчас, например, API отключены

PS: Забавно, но GigaChat доступен в open-source, но многие архитектурные решения основаны на DeepSeek. Структура модели здесь (см. скрин выше)
Курс про ai агентов на Hugging Face 🤗

• AI агенты — это способ добавить дополнительную функциональность или навыки чатботу. Все с использованием их либы smolagents. Очень понравилось, что не нужно прописывать логику, когда и как вызывать функции — чат-бот сам это понимает, боль что метод все равно нужно закодить, и если нет готового API, то например парсить сайты/данные сложно. Сейчас вышла только первая часть из шести, но она короткая — всего час, но можно успеть создать первого агента.

• Забавно видеть как оно рассуждает (см. картинку).

• Учебные проекты слушателей курса - мем, например, запрос погоды, но зачем - если проще узнать напрямую. Хотя это закрывает 50% полезного функционала алисы
Как ChatGPT влияют на нашу креативность?

Журнал Science (!) тоже задается этим вопросом. В статье Generative AI enhances individual creativity but reduces the collective diversity исследовали, как меняются истории, написанные людьми, если AI подбрасывает им идеи (0, 1 или 5 идей).

• Ожидаемо чем больше ai идей были доступны тем лучше получался текст. Это валидировали человеком. Особенно если навыки у человека были слабее изначально.
• Но! Чем активнее люди использовали подсказки AI, тем более похожими становились их тексты. Понравилось что тут уже не люди проверяли, а через косинусное расстояние эмбеддингов текстов

Очевидное решение - всем нужно использовать разные сетки и чаты, и температуру поднять
Топ1 AI-конфу NeurIPS посетило намного меньше людей, чем концерт Taylor Swift (вот где true hype)
Прочитал книжку "Простые правила" (авторы Дональд Сулл, Кэтлин Эйзенхардт). Там про то, что сложным правилам непросто следовать, они могут быть ошибочными – как итог, простые оказываются продуктивнее и точнее. Постулируя это, идет большой разбор множества сфер, где это действительно так (от медицины: например, для борьбы с бессонницей — ложиться спать в одно и то же время, до программы развития стартапов в Чили, где действовало правило исключения — неделовые поездки по стране). Звучит, как будто гуманитарии открыли правило "не переобучись". А так, конечно, рекомендую книжку.
Таки прочитал лучшие решения с соревнований Kaggle за 2023 год (the Best Solution Write-up Authors 🏆), все еще актуально. За статьи в сумме раздали 100 тысяч долларов.

1. Три статьи от одного автора (Chris Deotte) посвящены задачам про временные ряды:

- В одной задаче нужно было предсказать количество микробизнесов на 100 человек в каждом штате на следующие месяцы. Как всегда, важна хорошая валидация: GroupKFold по регионам + cross time series validation для увеличения объема данных и получения более робастных метрик. Так как метрика SMAPE, то и loss обычный MSE, и нужно предсказывать не саму плотность, а только прирост. Таким образом, все данные по штатам становятся ближе друг к другу. Необычно, что лучшая модель получилась с сеткой с GRU слоями. Автор признает, что такой же результат получился бы при использовании магического коэффициента 1.0045 в качестве поправочного коэффициента для соотношения в динамике прошлых месяцев. И, конечно же, LB public probing (для тех, кто знает; кто не знает – ни в коем случае не использовать).

- В следующем соревновании требовалось прогнозировать прогрессирование болезни Паркинсона. Мало кейсов (248 пациентов), много лишних и шумных показателей (1000 показателей). 99% успеха – признак, как часто человек приходит в больницу. Наверное, не для этого запускали соревнование. И понятно, что тут зашли наиболее простые модели, у автора – SVR (Support Vector Regression).

- В 3м соревновании автор перестарался с подходом из пункта а и улетел с 1-го места в предварительном этапе на 967-е. Во всем виноват как раз LB public probing (буквально переобучился). А надо было всего лишь прочитать книжку "Простые правила" из прошлого поста.

2. Распознавание предложений языков жестов: решение через адаптированный Squeezeformer, который изначально был для распознавания речи. С помощью MediaPipe ключевые точки (landmarks) трансформируются в аналогичный входной спектр. Забавно, что dropout здесь называется FingerDropout, то есть буквально зануляются пальцы. А вот в задаче распознавания букв языков жестов – обычный 1D CNN эффективнее трансформеров (by Hoyeol Sohn).

3. Задача - предсказание успеваемости студентов по информации, как студент проходит развивающие игры. Слышал, что в какой-то компании так определяют производительность сотрудников по 5-минутной игре в начале рабочего дня (aka фильм "Особое мнение", только про корпоративную эффективность). Решение – объединение бустингов, лики и использование открытого API игры, чтобы сгенерировать больше данных, погружение в данные, чтобы создать осмысленные признаки. Интересно, что под задачу удалось адаптировать подход, вдохновленный WaveNet, с использованием embedding слоев и объединив с TimeEmbedding + avg_pooling, создать решение с сетками (причем там двухшаговое обучение с претрейном для backbona), и, как они говорят, итерационное обучение ускорил pipeline обучения.

4. Две статьи про физические задачи: детекция гравитационных волн (топ-решение G2Net) и нейтрино (лучшее решение gnn, т.е. графовые сетки).

5. Задача Маммографии: YOLOX для правильного кропа изображения + EfficientNet и ConvNeXt для классификации. Примечательно, что использование label smoothing работало все-таки лучше, чем soft positive label trick (always been).

+там еще про Image Matching Challenge и распознавание пении птиц по пению
Проспонсировал AI-гонку, купив годовую подписку Perplexity. 300 запросов в день - удобно, может быть и o4-mini завезут 🍷
Please open Telegram to view this post
VIEW IN TELEGRAM