Мишенька ресёрчит...
7 subscribers
14 photos
9 links
Этот канал предназначен в первую очередь для моих заметок в ML, книг, статей, лекций, полезных постов из ML каналов и так далее и тому подобное

Я не против, если вы подпишетесь, но его я веду в первую очередь чисто для себя и своей основной деятельности
Download Telegram
Forwarded from VF | Science
Ого, нормальный опенсурс добрался до домена музыки! Авторегрессионка генерирует вокал и аккомпанемент. Ждите обзор, это весьма значимое событие!

https://huggingface.co/m-a-p/YuE-s1-7B-anneal-zh-cot
Такс, я решил заняться хоть чем-то полезным и относительно новым, сейчас медленно читаю книгу "Машинное обучение. Паттерны проектирования". Там каждый раздел – отдельный паттерн. Не буду прям жёстко расписывать, буду делать небольшие выжимки, которые просто описывают, что это такое идейно. Буду помечать такие посты как #паттерныML

Паттерн 1. Hashed feature
Есть следующие проблемы с категориальными фичами:
1) Тренировочный набор неполный (какие-то категории не представлены в train set)
2) разреженность в случае большого числа категорий
3) cold start (новые категории могут появиться в будущем)
Решение:
Берём хэш от категориальной фичи, пишем в отдельный столбец, делаем несколько таким столбцов, которые работают как hash корзины такие.
Эмпирическое правило: делать столько хэш-корзин, чтобы помещалось примерно по 5 примеров туда. (Например id аэропорта, мы фактически группируем какие-то рандомнык аэропорты, теряем немного информации и какое-то количество точности, но решаем проблемы выше, модель уже будет условно знать, что это примерно за группа с аэропортами такая)
Есть разные модификации этого паттерна, но это не так интересно уже
👍1
Пост для комментов к верхнему посту по запросу человечка
Паттерн 2. Vector embedding

Ну здесь всё понятно, это способ оперирования разными объектами в каком-то пространстве, где условно можно посчитать длину, схожесть и т.д.

Используется просто везде, не вижу смысла расписывать.

Эмпирическое правило по подбору оптимального размера эмбеддинга:
1) Корень четвёртой степени из суммарного числа уникальных категориальных элементов
2) Размерность должна быть в 1.6 раза больше квадратного корня из числа уникальных элементов в категории и не менее 600.

Например: категория с 625 уникальными значениями, по первому правилу размерность должна быть 5, а по второму 40. Искать оптимальное где-то в этом диапазоне. Так что это можно применить и к словарю текстовых токенов

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

#паттерныML
Сегодня сразу два паттерна, так как я решил, что просто третий слишком малоинформативный и очевидный

Паттерн 3. Синтетический признак (Feature Cross)

Проблема, которую решаем:

Данные относительно малоинформативны, модель даёт менее точные результаты просто из-за недостаточной информативности.

Решение:
Можно нагенерить признаков из уже существующих, чтобы, например, относительно простой модели было легче обучаться.

+ можно закодировать нелинейность в данных, в случае, если мы используем линейные модели.
Мне это, кстати, казалось уже максимально бесполезным занятием, до того момента, пока я не услышал на первичном рассмотрении ВКР у одного чувака autoML сервис, результатом работы которого было огромное количество ridge-регрессий (счёт шёл на миллионы) для предсказания спроса на продукты. И на каждый продукт была своя модель. И это работает. Конечно можно было бы бустингов накидать, но ведь требуется тогда и значительно большие ресурсы брать на развёртывание миллионов более тяжёлых (хотя всё равно относительно лёгких) моделей.

Или другой пример: классический датасет с предсказанием стоимости такси в Нью-Йорке. Есть временные метки, то есть когда началась поездка, а когда закончилась. Сами по себе как бы информации не несут эти признаки. Однако можно, например, одно вычесть из другого, и получить, сколько длилась поездка.
Или другой вариант — мы прекрасно знаем, что цены в Яндекс Go, куда меня недавно хантили, очень высокие вечером в пятницу, вечером в субботу и т.д. И это необязательно фактор высокого спроса в тот день, они уже просто по приколу в эти дни заранее крутят цены. Мы можем сделать также, дать модели one-hot вектор, который бы обозначал пары признаков — время дня и день недели (условно вечер пятницы, или утро вторника).

Из минусов — у нас данные могут стать более разреженными.
Также минусом может стать высокая кардинальность данных, когда данные становятся слишком "уникальными" (условно, скрещивание двух категориальных признаков по 8 категорий даёт 64 уникальных значений для синтетического признака). То есть, если у нас есть только горстка примеров для обучения, то такое запоминание было бы просто переобучением из-за недостатка количества данных (например, в том же примере с 2 категориальными признаками по 8 примеров у нас будет всего 50 сэмплов, ну и как бы очевидно мы можем получить непредсказуемые результаты для тех уникальных пар признаков, которые не были представлены в обучающей выборке, как утрированный пример).
А ещё кстати не рекомендуется скрещивать признаки, которые и так сильно коррелируют. Мы тогда не получаем никакой новой информации.

#паттерныML
👍1
Паттерн 4. Мультимодальный вход

Проблема, которую решаем:
Данные могут быть разных модальностей лол. Например, пытаемся определить фродовый звонок. Нам одновременно надо по-хорошему иметь табличные данные (время, откуда звонят, куда звонят), так и транскрибацию диалога, а ещё лучше голосовую аудиозапись


Решение:

А давайте возьмём encoder, и преобразуем эти данные в вектор, который будет в последствии конкатенироваться с вектором табличных данных (да, я поэтому и пишу четвёртый паттерн подряд в следствие за третьим, вряд ли тут высокая новая смысловая нагрузка будет для здесь читающих). Если encoder-а для этой задачи нет, то можно обучить autoencoder, а из него уже взять encoder.

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

Всё остальное, что описывается в главе, фактически просто рассказывает о том, как взять вектор из текста/картинки. На всякий случай расскажу из своего опыта, что для взятия звука тоже часто используются свёртки из mel-спектрограммы, или rnn и attention, если мы хотим работать именно с чистой аудиоволной.

На этом заканчиваются паттерны по представлению данных, и далее идут паттерны для представления задач разными способами.

#паттерныML
👍1
А ещё, раз уж я сел расписывать тут, то поделюсь тем, что приятно удивился модели FishSpeech

Отличная открытая TTS модель, которая имеет даже русский язык (всего 20 часов в трейне, правда, но видимо этого хватило). Локально можно запустить даже на 4060, относительно слабой видеокарте. Есть песочница, где есть бесплатно 20 попыток генерации. И самое крутое — voice cloning в виде отдельных профилей. Люди загружают туда голос кого угодно, и это висит в свободном доступе. Фактически, там просто отдельный вектор, который бы отвечал за стиль голоса. Очень удобно, можно жанглировать этим вектором, и каждый раз получать новые и новые голоса. У них в песочнице, кстати, один из самых популярных голосов — голос Жириновского. Реально хорошо звучит.

А ещё дают гайд, как сразу webUI подрубить к этой теме.

Стартовый ноутбук
Карточка HF
Песочница
Тут Mistral наконец перестали перерабатывать пластиковые крышки для борьбы с экологическими проблема и выпустили вроде как open-source SOTA для кодинга. По сайзингам: 24 лярда параметров.

P.s.: надо тестить энивей, бенчам веры нету
Claude 4 представили
Save the world, my final message, goodbye
GPT-5 имеет интеллект PhD, говорили они
1
Forwarded from влад
https://github.com/RMalkiv/torch-audit/tree/main

Блин, у меня товарищ оформил лютый завоз — линтер для PyTorch:

Хочешь использовать слой с баесом, а потом использовать батчнорм? А зачем тебе тут баес, если ты его нормировкой убираешь.
Напутал девайсы, применил weight decay к эмбеддингам? Ну ты и косяпоша!
А вот юзал бы эту либу и все бы было хорошо.

Хз, я не видел нормальных линтеров для торча, которые решают насущные проблемы. Если он его доведет до того состояния, что будет работать фоном, как mypy, то цены не будет, пока примеры погонял и понравилось.

Поддержите работягу!
🔥1