Артем Бутомов про ИИ
53 subscribers
17 photos
6 links
Пишу про то, как работать с ИИ на практике:
— Механика и кейсы
— Новости и публикации
— Личные истории
Download Telegram
Привет! Если ты читаешь этот пост, то, скорее всего, ты новенький.

Здесь я рассказываю об учебе в двух магистратурах, раскрываю секреты "где и как" применять математику, а также рассуждаю на любые технические темы.

Подписывайся
3
Про симплексы и аффинные преобразования

Представьте себе кейс разработчика ИИ. Приходит хирург и говорит:
- Хочу, чтобы ИИ определял по снимку заболевание кожи: акне, герпес, экзему, лишай и т.д.

Разработчик всё понял и начал писать нейросеть по классификации кожных заболеваний. Программа ИИ смотрит на изображение и говорит:
- С вероятностью 70% это экзема, и с вероятностью 20% - лишай.

Как она это делает? Попробую объяснить простым языком и "причем тут математика".

От пикселей к сигналам

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

Так информация течёт по сети: первые слои распознают простые вещи вроде линий и пятен, средние - текстуры и формы, последние - сложные паттерны типа "красные чешуйки" или "водянистые пузырьки".

Загадочные цифры

В самом конце этого путешествия, на выходе последнего слоя, формируется набор чисел(вектор). Для каждого возможного диагноза своё число. Например: -1.2 для акне, 0.5 для герпеса, 2.8 для экземы, -0.8 для лишая.

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

Симплекс

Настоящие вероятности живут в специальном математическом пространстве - в симплексе. У него два железных правила:

1. Все числа должны быть неотрицательными (не бывает вероятности минус 20%)
2. Сумма всех вероятностей должна равняться единице, другими словами 100%.

Представьте симплекс как многогранник. Если у нас четыре заболевания, то это четырёхугольная пирамида в пространстве. Каждая вершина - "чистый" диагноз (100% экзема и 0% всего остального). Любая точка внутри - смесь вероятностей разных болезней. Вектор с -1.2 и 2.8 находится где-то за пределами этого правильного многогранника.

Аффинное преобразование

Чтобы попасть из хаоса цифр в симплекс, применяется аффинное преобразование. Cуть простая: это комбинация растяжения, поворота и сдвига пространства. В нашем случае это помогает "выжать" все числа так, чтобы они стали положительными и их сумма равнялась единице. Технически это делается через математические преобразования. Минус 1.2 превращается в 2%, 0.5 - в 10%, 2.8 - в 70%, минус 0.8 - в 18%.

Выводы

Вот сейчас точка попала в симплекс, а значит мы можем интерпретировать результаты с помощью вероятностей. Врач увидит на экране: экзема 70%, лишай 18%, герпес 10%, акне 2%. Скорее всего, это экзема, но стоит проверить на лишай.

Вот так математика превращает пиксели в понятный медицинский диагноз.
🔥122
Поучаствовал в интенсив-курсе Яндекса ШАД. За время учебы погрузился в архитектуру и оптимизацию больших языковых моделей, освоил практики обучения на gpu кластерах и методы ускорения инференса.

#шад #яндекс спасибо
🔥92
Принял участие в ML-соревновании по высокочастотному трейдингу. Задача предсказать движение ETH/USDC на данных order book с Binance.

Почему это сложная задача?

1) Данные нестационарны (то, что работало вчера, сегодня уже не работает)
2) Классы разбалансированы (рынок чаще стоит, чем двигается)
3) Паттерны живут короткое время (миллисекунды).

В результате занял 12 место из 52.

Практический смысл имеется у ТОП-14 решений. Решения остальных участников предсказывают хуже, чем случайное угадывание 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
Forwarded from Чат соревнования Overnight.fi
Мы публикуем финальные результаты лидерборда хакатона и готовы объявить тройку победителей! 🏆

🥇 Первое место — @Dura12
🥈 Второе место —
@Dazbog
🥉 Третье место —
@voskresenskiianton

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

А также с наступающим Новым годом!

Пусть 2026 принесёт вам вдохновение, здоровье и море интересных задач 🎄
🔥5
Почему всё становится нормальным?

Вся математика - про упрощение и приближение. Упрощаешь сложное в простое и получаешь возможность считать, оценивать и интерпретировать. Расскажу про один из классных инструментов такого упрощения в статистике - Центральную Предельную Теорему.

Представь себя на позиции финансового менеджера. Сможешь решить задачу?

Портфель 1 млн рублей, дневная волатильность 2%. Какой максимальный убыток с вероятностью 95%?


Если распределение нормальное, то ответ сходу: 1.65 * 2% * 1000000 руб = 33000 руб. Откуда 1.65? Это квантиль нормального распределения. Для него все давно посчитано и лежит в таблицах. А если распределение не нормальное? Тогда придётся считать комбинаторику с факториалами.

Здесь на помощь приходит ЦПТ. Она говорит: сумма многих независимых случайных величин распределена приближенно нормально. И неважно, как распределены сами слагаемые.

Почему так происходит? Когда складываешь много случайных величин, граничные кейсы гасят друг друга. Например, ты подбросил монету 100 раз. Вероятность получить 100 орлов мала. То же самое с нулем орлов. А вот получить около 50 орлов - шансы высоки. Результат концентрируется вокруг среднего с небольшими хвостами на концах. Это и есть форма нормального распределения.

Биномиальное
распределение - это сумма бернуллевских величин. Пуассоновское - можно представить как сумму. Доходность портфеля - это тоже сумма доходностей отдельных активов.

Каждая акция может иметь странное распределение с длинными хвостами и асимметрией. Но портфель из 50 акций уже почти нормальный.

Почему это удобно? Нормальное распределение хорошо изучено: квантили в таблицах, формулы для доверительных интервалов, готовые статистические тесты. ЦПТ позволяет использовать весь этот инструментарий для величин, которые изначально распределены как угодно. Главное условие - наличие суммы.
👍8
R2=0.95. Всё ли под контролем?

Представь, что тебе дали данные и попросили построить модель. Ты строишь регрессию, смотришь на R2 = 0.95 и думаешь, что всё готово. Но внутри этих данных могут жить два разных закона, а твоя модель их усредняет. И ты об этом не узнаешь.

Покажу как это происходит.

Берём данные о квартирах: 70 наблюдений, предиктор (площадь), отклик (цена). Внутри два типа по отделке: предчистовая и с ремонтом. Строю одну регрессию на всей выборке. R2 = 0.95. Вроде бы отлично.

Теперь строю отдельные модели для каждого типа и смотрю на коэффициенты. У предчистовых каждый квадратный метр прибавляет 234 000 к цене. У квартир с ремонтом тот же метр прибавляет 112 000. Разница больше чем в два раза.

Единая модель этого не увидела, потому что брала среднее между двумя разными мирами и выдавала одно число. Как проверить, что это не случайный разброс?

Для этого есть тест Чоу.


Идея простая. Есть ограниченная модель: одна регрессия на всех данных, коэффициент при площади одинаковый в обоих типах. Есть неограниченная: две отдельные регрессии, у каждой свой коэффициент. Этот коэффициент - наклон прямой, он показывает скорость роста цены с ростом площади. Тест смотрит, насколько хуже ограниченная модель объясняет данные. Если разница большая, значит гипотеза про одинаковый наклон ошибочная.

F-статистика: 14.32. Критическое значение при уровне значимости 5%: 3.14. P-value: 0.0000068. Нулевую гипотезу об одинаковых коэффициентах отвергаем.

Почему это важно не только технически? Если строишь одну модель там, где должно быть две, коэффициенты потеряют смысл. Они не описывают ни один из типов корректно. Принимать решения на основе таких коэффициентов опасно.

Высокий R2 даёт ощущение, что всё под контролем. А тест Чоу проверяет, не куплено ли это ощущение ценой потери смысла.
🔥4🙏1
Артём Бутомов
R2=0.95. Всё ли под контролем? Представь, что тебе дали данные и попросили построить модель. Ты строишь регрессию, смотришь на R2 = 0.95 и думаешь, что всё готово. Но внутри этих данных могут жить два разных закона, а твоя модель их усредняет. И ты об этом…
Что скрывается в остатках?

Если посмотреть ещё раз на правый график из прошлого поста на красную линию, то увидишь, как точки сначала выше неё, потом ниже, потом снова выше. Это не случайный разброс. Это прогиб, который прямая линия не может аппроксимировать. Отсюда и R2 = 0.40.

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

Добавляю квадратичный член: y = a + bx + cx2. R2 прыгает с 0.40 до 0.83. Модель стала лучше описывать данные. Если модель работает плохо - смотри на остатки. Если там есть структура, проблема не в данных, а в форме.

Зачем это нужно на практике? Модель предсказывает цену квартиры по её параметрам. Если реальная цена ниже прогноза, значит, квартира недооценена рынком/застройщиком. Так модель помогает найти самый выгодный вариант для покупки.
🔥5
Новостной ML-агент на n8n.

Вот-вот откроется велосезон, а у меня уже работает система, которая мониторит рынок за меня пока я занимаюсь другими делами. Архитектура универсальная, в принципе, можно запустить на любой нише, если у тебя свой бизнес.

Каждые 8 часов обрабатывает 350-500 статей из 20-30 источников, оценивает каждую по формуле и показывает мне топ-5 с кнопками опубликовать/пропустить.

hotScore = keyword_re х 0.35 + freshness х 0.30 + cross_bonus х 0.25 + history_bonus х 0.10

Дедупликация реализована через HDBSCAN и all-MiniLM-L6-v2. В отличие от k-means не нужно знать заранее сколько уникальных тем придёт.

После 30 лайков/скипов в Слэке обучается логистическая регрессия на эмбеддингах text-embedding-3-small. Прогнал на 100 примерах и получил AUC = 0.675, std = 0.123. Система уже начинает принимать решения за меня 😊

Получилось ~3к строк на Python и 1 json-воркфлоу на n8n. Всё это крутится 24х7 на домашнем сервере в Docker.

#n8n #python #ML #автоматизация #петпроект #embeddings
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2