TheFounder

TheFounder

Здесь будет интересно всем, кто увлекается нейросетями, хочет стать разработчиком, создать свой IT-стартап... Ну, или просто любит и хочет изучать код :)
На Пикабу
146 рейтинг 6 подписчиков 0 подписок 104 поста 0 в горячем
2

С какими библиотеками и фреймворками надо уметь работать ML-инженеру, чтобы получить оффер?

С какими библиотеками и фреймворками надо уметь работать ML-инженеру, чтобы получить оффер? Программирование, IT, Машинное обучение, Нейронные сети

О каких только фреймворках мы не рассказывали в этой рубрике, но сегодня поговорим о самых-самых. Будете знать, как с ними работать, и оффер вам гарантирован.

С чего начать?

  • Scikit-learn — это база. В ней собраны алгоритмы для классификации, регрессии, кластеризации и других задач, с которыми вы должны научиться справляться в первую очередь. С этой библиотекой можно быстро построить модель и проверить её на данных. Идеально для начала и для быстрого прототипирования.

  • Pandas – незаменимая вещь для работы с данными. Фильтровать, сортировать, анализировать данные — с этой библиотекой можно делать все операции и не ломать себе ни мозг, ни психику.

  • Matplotlib — библиотека для визуализации данных ваших моделек. Если хотите на собеседовании показать это техлиду, то matplotlib поможет вам создать красивые графики и диаграммы, по которым всё будет понятно.

  • Seaborn  — более мощная версия Matplotlib. Она упрощает создание сложных статистических графиков: тепловые карты, диаграммы распределения, матрицы корреляции и многое другое.

  • Plotly — библиотека для тех, кто хочет, графики были не просто статичными, а интерактивными. Она идеальна для веб-приложений, где пользователи могут взаимодействовать с графиками.

Как только освоитесь в работе с этими инструментами, переходите на следующий уровень:

➡️TensorFlow, в которой можно строить и тренировать CNN, RNN, а ещё визуализировать графы моделей, отслеживать метрики обучения и анализировать производительность моделей.

➡️PyTorch, который поддерживает визуализацию через TensorBoard и другие инструменты, и предлагает динамическую вычислительную граф для исследований и быстрого прототипирования.

Ну вот и все, дерзайте :)

Показать полностью 1
2

Как нейросети создают музыку с помощью двухэтапной архитектуры?

Представим, что в будущем вы будете работать в кинокомпании и создавать саундтреки к фильмам с помощью нейронок.

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

Как это сделать?

С EMO-Disentanger — системой, которая генерирует музыку так, как будто это делает настоящий музыкант, играя на эмоциях.

Весь процесс происходит в два этапа. Сначала система создаёт основу — мелодию и аккорды, что-то вроде музыкального скелета. Потом на втором этапе этот скелет обрастает «мясом» — добавляются детали, которые делают музыку живой и эмоциональной: темп, артикуляция, динамика.

Почему два этапа?

Дело в том, что раньше пытались моделировать эмоции в музыке сразу, «от начала до конца», но часто выходило что-то не то — либо слишком простое, либо недостаточно выразительное.

Поэтому и решили разделить процесс на две части.

Сначала модель создаёт то, что в музыке отвечает за общее настроение — так называемую валентность. Это когда мелодия и аккорды передают основное эмоциональное состояние. А потом уже на втором этапе добавляются «изюминки», которые делают исполнение более живым и динамичным, чтобы вызвать нужный отклик у слушателя.

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

И что с того?

Это даёт более точное моделирование эмоций в музыке. Музыкант, он же разработчик, может легко управлять уровнем эмоционального напряжения в композиции  — сделать её более спокойной или, наоборот, более энергичной, не меняя основную мелодию.

Вот такая она — умная система, которая понимает музыку не хуже человека.

Показать полностью
1

Никакой магии, просто OpenCV

Столько всего говорили о CV и ни разу не сказали про OpenСV — old-school в AI и ML.

Библиотека была разработана в 2000 году группой энтузиастов из Intel. С тех пор она претерпела массу изменений, и теперь это не просто библиотека, а целая экосистема. И за этими двумя буквами — CV (computer vision) — стоят годы работы инженеров и огромного комьюнити, которое до сих пор её поддерживает.

OpenCV — это про кроссплатформенность. Не нужно выбирать между Windows, macOS или Linux. Хочешь — пиши на Python, хочешь — на C++, а можешь и на Java, если это твоя тема.

Ещё у неё есть поддержка для мобильных платформ:

  • Android

  • iOS

В общем, универсальная вещь, как швейцарский нож для ML-разработчика.

А под капотом что?

OpenCV написана на C++, а это значит, что она работает быстро.

Допустим, занимаешься ты каким-то реальным проектом, скажем, анализом видеопотока с камеры. Здесь важно, чтобы всё работало в реальном времени. OpenCV справляется с этим на ура, благодаря своим оптимизациям и низкоуровневому коду.

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

Ещё один важный момент — OpenCV легко интегрируется с другими популярными библиотеками.

Мы пишем на Python и используем NumPy — и OpenCV легко перекидывает данные между собой и NumPy, потому что оба используют одну и ту же структуру данных — массивы. Это значит, что можно сначала обработать изображение в OpenCV, а потом провести какие-то сложные математические операции в NumPy.

Чтобы добить тему, давай представим реальный кейс.

Скажем, ты решил сделать что-то эпичное, типа приложения, которое будет отслеживать лица в реальном времени и накладывать на них забавные фильтры.

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

⤴️Весь этот процесс — это вполне реальная задача для джуна. При этом ты погружаешься в мир CV, узнаешь про обработку изображений, и в конце концов можешь с гордостью показать свой pet-проект.

Показать полностью
0

Может ли архитектура трансформера работать без энкодера?

В оригинальной версии, когда ребята из Google придумали эту архитектуру, трансформер имел и энкодер, и декодер.

Энкодер — это то, что обрабатывает входные данные, чтобы извлечь из них смысл. Декодер нужен, чтобы на основе этого смысла выдать что-то годное на выходе.

Но вы знали, что декодер можно использовать и без энкодера. И да, это работает😐

VideoPoet — модель, разработанная Dan Kondratyuk и его коллегами. Она генерит крутые видео со звуком только с помощью декодера.

Как это работает?

Мультимодальные данные: текст, картинки, видео, аудио. VideoPoet берет всё это и превращает в токены. То есть текст и картинки становятся такими последовательностями кода, которые модель понимает.

Вместо того чтобы сначала обрабатывать входные данные с помощью энкодера, VideoPoet сразу использует декодер. Он учится предсказывать, что будет дальше, исходя из того, что уже есть. Например, если модель видит часть видео, она пытается угадать, что будет в следующем кадре или какой звук должен появиться.

Чтобы модель научилась делать разные вещи, её тренируют на разных задачах. Это может быть генерация видео по тексту, дорисовка недостающих частей видео, создание аудио по видео и так далее.

Что нужно, чтобы создать свою модель, как VideoPoet?

Данные всех видов — видео, аудио, текст и картинки. Чем больше, тем лучше.

Мощное железо. Учить такую модель — задача не из лёгких. Нужен ПК с хорошим GPU или облачные ресурсы.

Токенизаторы. Для VideoPoet использовались токенизаторы MAGVIT V2 и SoundStream. Если ты сам создаешь модель, то либо возьми готовые, либо разработай свои.

1️Ещё нужно адаптировать декодер для работы с мультимодальными токенами. Это может быть, например, модифицированная версия GPT, которая будет работать не только с текстом, но и с видео и аудио.

Показать полностью
0

Как взломать нейросети?

Как взломать нейросети? IT, Программирование, Нейронные сети, Машинное обучение

Adversarial Attacks — это тип атак, направленных на нейронки, при которых злоумышленники вводят специально созданные искажения в данные с целью сбить модель с толку.

Обычно подмена происходит точечно, филигранно, чтобы потянуть время.

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

Такой тип атаки может изменить предсказание модели. Вот и всё.

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

Представьте, что модель обучена распознавать дорожные знаки.

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

ML-специалисты боятся адверсариальных атак. Неверные диагнозы, слом системы мониторинга и детекции, неправильные торги на биржевом рынке.

Подставная компания, взломав систему принятия решений о покупке акций, может искусственно поднять спрос и заработать на подъеме цены «пустышки», предварительно купив активы на «низах».

В случаях с кредитным скорингом, злоумышленники могут точечно подменить данные о переводах или кредитной истории, чтобы система дала высокий балл «дропу».

Часто прогеры из даркнета просто требуют выкуп.

Обычно защищаются от таких атак DropOut’ом или Label Smoothing, чтобы убрать целочисленные метки.

Или специально встраивают отравленные данные в датасет – так компании защищаются превентивно.

Еще помогает ансамблирование нейронок. Если атакуют одну – другие задавят своими результатами при подсчете оптиума значений.

Если быстро не пресечь или не заметить атаку – вся ответственность, тяжко выдаваемая бизнесом, рушится…

Чем больше развиваются нейросети – тем больше компании нуждаются в эффективной защите бизнеса и корпоративных ИИ.

Показать полностью 1
1

Как догнать учителя за три шага?

Как догнать учителя за три шага? Программирование, IT, Машинное обучение, Нейронные сети

Совсем недавно Meta опубликовала большую статью, где они показали как ускорили диффузионку.

Диффузионные нейронные сети ускоряют за счет оптимизации этапов диффузии и денойзинга, использования более эффективных архитектур – U-Net

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

Но подобные механизмы компенсации дают совсем маленький ++ к эффективности ИИ.

Прародители Фейсбука собрали собственный алгоритм дистилляции из базовой text2image модели (Emu) на 2.7, которая тратит на адекватный результат 25 шагов, в Imagine Flash.

Подход объединяет три ключевых компонента: обратную дистилляцию, смещенную потерю реконструкции и коррекцию шума.

Работает, кстати, он очень просто:

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

  • Смещенная потеря реконструкции: ученик адаптирует передачу знаний от учителя на основе временного шага. Ученик выделяет глобальную структуру на ранней стадии и детализирует ее позже (так упрощается поиск закономерностей).

  • Коррекция шума: устраняет смещение на первом этапе для моделей прогнозирования шума, улучшая цвет и контрастность.

Эксперименты показали, что Imagine Flash сравняется с учителями всего за три шага, превосходя предыдущие технологии дистилляции, типичные для диффузионок ADD и LDMXL-Lightning.

Показать полностью 1
3

Как правильно оценивать модель?

Как правильно оценивать модель? Программирование, IT, Машинное обучение, Нейронные сети

Подобрали датасет, написали код, получили первые результаты работы нейронки после обучения.

Но модель нужно тестить со всех сторон.

Не получится продать ИИ заказчику или сдать своему руководителю без нормальной отчетности.

Всего есть 7 важных метрик, по которым модель оценивается.

  • Accuracy: Процент правильных предсказаний относительно общего числа предсказаний.

  • Полнота (Recall): Доля истинных положительных предсказаний относительно фактического числа положительных случаев.

  • Точность (Precision): Доля истинных положительных предсказаний среди всех положительных предсказаний.

  • F1-мера: Гармоническое среднее точности и полноты, полезное для неравномерно распределённых классов.

  • ROC-AUC: Площадь под кривой ROC; показывает, как модель различает положительные и отрицательные классы.

  • Mean Absolute Error (MAE) и Mean Squared Error (MSE) для регрессионных задач.

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

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

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

Но иногда всех вышеприведенных методов недостаточно.

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

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

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

Но главное – это не просто знать методы, а уметь анализировать.

Показать полностью 1
0

Самодистилляция без меток!

Самодистилляция без меток! Программирование, IT, Машинное обучение, Нейронные сети

Или DINO – архитектура для тех, кто не может аннотировать.

Метод самодистилляции – разновидность дистилляции знаний (knowledge distillation).

Но с тем важным отличием, что вместо передачи знаний от одной модели к другой (например, от большой "учительской" модели к более компактной "ученической"), модель обучает саму себя, используя свои же прогнозы.

Dino создает модели "учителя" и "ученика" – они обучаются одновременно.

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

Архитектура работает через data augmentation, создание нескольких вариаций картинкок на основе изменения контраста, яркости и так далее.

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

Так, кодеры получают инвариативную/гибкую модель.

Утилита также использует метод регрессии по кросс-энтропии (cross-entropy regression) – "ученическая" модель стремится минимизировать расхождение между своими прогнозами и прогнозами "учительской" модели.

Эффект достигается через применение мягкой классификации (soft classification), когда вместо того, чтобы обучаться на жестких метках классов, модель обучается на вероятностных распределениях, которые генерирует "учитель".

Другой важный аспект DINO — это использование проекционной головы (projection head), которая закидывает продукты работы в низкоразмерное пространство, своего рода буфер для сопоставления результатов и прерывания деградации модели.

DINO – своего рода прорыв в DL. Некоторые коммерческие проекты не позволяют из-за отсутствия специалистов, денег попросту составить адекватную разметку, которая иногда требует килотонны часов.

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

Спецы, которые работают с DINO нужны везде. 

Разобраться в DINO – кинуть себе +5 очков в резюме.

Показать полностью 1
Отличная работа, все прочитано!