DS & ML
588 subscribers
1.17K photos
238 videos
240 files
1.41K links
Download Telegram
😭 Сделал диаграмму ConvNeXt с поправкой на How to train your ViT? и на EfficientNetV2
🚀🗄 FAST DATA LOADER IS ALL YOU NEED: Fast Forward Computer Vision

Тут студенты из MiT собрали быстрейший даталоадер!

Все что нужно, так это заменить
from torch.utils.data import DataLoader на from ffcv.loader import Loader, OrderOption, и далее по примеру из картинки поста.

Такой подход позволяет затренить родным PyTorch модель ResNet на ImageNet всего за 35 минуут (1$ на AWS)

📮 FFCV 💻 Git 📚 Docs
Forwarded from Big Data Science
💥5 YOUTUBE channels for a data engineer from popular DS bloggers
• Ken Jee
https://www.youtube.com/c/KenJee1/videos - 183 thousand subscribers and about 200 videos about Data Science, big data engineering, ML and sports analytics
• Karolina Sowinska https://www.youtube.com/c/KarolinaSowinska/videos 30+ thousand subscribers and almost 60 great videos about AirFlow, AI, ETL and the career of a data engineer;
• Shashank Mishra https://www.youtube.com/c/LearningBridge/video 40+ thousand subscribers and more than 150 videos about everyday life data engineers, DS course reviews, interview recommendations and personal experience of the author who worked at Amazon , McKinsey&Company, PayTm and other large corporations, as well as startups.
• Seattle Data Guy https://www.youtube.com/c/SeattleDataGuy/videos almost 20 thousand subscribers and more than 100 videos about the soft and hard skills of a data engineer, life hacks for solving daily tasks of collecting and aggregating data using Python and not only, SQL best practices, introduction to R and much more
• Andreas Kretz https://www.youtube.com/c/andreaskayy/videos about 27 thousand subscribers and more than 500 videos vanilla and proprietary Hadoop, Spark, Kafka, AWS services and other cloud platforms, ETL basics, installation details and practical use different Big Data technologies and features of the data engineer profession.
Forwarded from Технологии | Нейросети | Боты
This media is not supported in your browser
VIEW IN TELEGRAM
data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language.

Meta рассказали о своем новом подходе к машинному обучению без учителя, назыается data2vec. Если очень сильно упрощать, это единая нейронная сеть, которая обобщает выводы об устройстве изображений, текстов, звуков, в некотором приближении чего угодно. И умеет, как и человеческий мозг, “достраивать” недостающие элементы.
Data2vec призван использовать общие “подходы” и переносить навыки по дополнению картины мира между разными областями. Впечатляет что этот подход уже сейчас показал лучшие результаты в классических задачах машинного обучения, обогнав всех и в распознавании речи и в определении изображения на картинке.

blog: https://ai.facebook.com/blog/the-first-high-performance-self-supervised-algorithm-that-works-for-speech-vision-and-text
github: https://github.com/pytorch/fairseq/tree/main/examples/data2vec
Forwarded from эйай ньюз
Как много приложений и возможностей открыл StyleGAN. Хотя были ганы и до этого, но именно StyleGAN воистину универсальная и прорывная штука.

С декабря 2018 года, когда его впервые опубликовали на архиве, статья набрала 3.5к цитирований. Бесчисленное множество прилог было построено на StyleGAN 1 и 2 за три года. Вот только StyleGAN3 все ещё не так сильно пошел в массы. Люди боятся теории что ли?

Всё-таки NVIDIA – красавчики.
Forwarded from Neural Shit
This media is not supported in your browser
VIEW IN TELEGRAM
Вот это выглядит реально заебцово.

Помните, как GPT-3 натаскивали писать код по краткому описанию? Тут обратный процесс: генерируется документация к выделенному куску кода. Особенно актуально для таких человеков как я, которые не комментируют свой код или комментируют так, что один хрен ничего не понятно. Ну и легаси-говнокод разбирать проще будет (при условии, если эту штуку довести до идеала и максимально снизить количество ложных определений). Поддерживается JavaScript, TypeScript и Python.

Гитхаб проекта
Сайт проекта
Reward Augmented Maximum Likelihood for Neural Structured Prediction - статья 2016 года, дающая интересную связку RL и классического supervised learning в контексте генерации текстов.

Типичная постановка задачи seq2seq: обучить модель, которая бы по входному тексту x генерировала бы текст y (например, его перевод на другой язык). Обычно это модель условной вероятности: p(y|x).
Обычно при обучении таких моделей мы используем метод максимального правдоподобия (aka cross-entropy): для каждого x из обучающей выборки мы пытаемся максимизировать вероятность генерации соответствующего ему обучающего текста y – и, соответственно, минимизировать вероятность генерации любого другого текста. Математически это выражается как максимизация log p(y|x) на парах, взятых из обучающей выборки.

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

Обычно задача RL формулируется так: имея функцию награды R(x, y), измеряющую хорошесть текстов, нужно максимизировать E(R(x, y)) + b*H(p(y|x), то есть матожидание награды плюс энтропию условного распределения с каким-то небольшим коэффициентом b (параметром). Матожидание берётся по x из обучающей выборки, и по y, посэмпленным из p(y|x) (которая меняется в ходе обучения). Энтропия максимизируется, чтобы из модели можно было сэмплировать разнообразные тексты, иначе модель не сможет методом проб и ошибок обнаружить путь к хорошим текстам. Обычный RL решает это методом policy gradient: сэмплирует x из обучающей выборки, потом сэмплирует y из модели (т.е. из p(y|x)), потом делает градиентный шаг по вышеупомянутой функции потерь, причём E(R(x, y)) в градиентном шаге заменяется на log p(y|x) R(x,y), так как при дифференцировании логарифма там вылезает множитель p, который как раз и даёт градиент матожидания.

Авторы статьи предлагают вместо этого решать двойственную задачу: максимизировать просто log p(y|x) (как при обычном обучении с учителем), но при этом y сэмплировать из распределения Q(y|x), пропорционального exp(R(y,x)/b), то есть такого распределения, что чем лучше текст, тем выше его вероятность. Оказывается, эта задача математически эквивалентна поставленной выше задаче RL, но при этом оптимизируется она гораздо проще: во-первых, не надо сэмплировать ничего из модели во время обучения, во-вторых, убирается шаг с шумным градиентом log p(y|x) R(x,y). Один вопрос: а можно ли вообще научиться сэмплировать тексты из Q?

Ответ: нельзя. Но можно приблизить это методом importance sampling: генерировать тексты из какого-то простого распределения S, и каждому тексту придавать вес, равный Q(y|x)/S(y|x). Чтобы этот метод работал, нужно, чтобы в S хотя бы иногда попадались "хорошие тексты". Если у нас есть обучающая выборка, добиться этого несложно: мы можем брать обучающие примеры y (ожидается, что они – хорошие, иначе мы бы на них не обучались) и вносить в них некоторое количество простых случайных правок (замены, перестановки, удаления слов или букв). Вероятность этих правок и будет S. И порождать их гораздо быстрее, чем генерировать тексты нейросеткой.

Получается, вместо сложного и медленного RL можно применять старое доброе обучение с учителем, но не на исходной обучающей выборке, а на аугментированной, причём примерам из этой выборки надо придать веса, для каждого х пропорциональные exp(R(x,y)/b)/S(x,y). В пределе, при b->0, это означает, что для каждого х надо оставить только наилучший у, который удалось насэмплить.
Reinforcement Learning (обучение с подкреплением) - это один из способов машинного обучения, суть которого лежит в двух понятиях, а именно агент и окружение.
Смысл RL заключается в том, чтобы научить агента верно действовать в некоторой среде благодаря сигналам о том, насколько хорошо или плохо у него это получается.
Иными словами, агент воздействует на среду, а среда воздействует на агента.

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

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

Для работы с алгоритмом нейроэволюции, в Python есть популярная библиотека NEAT.
А для работы с Q-обучением, можно применить PyTorch.

Также, у нас на канале был ролик про создание простого перцептрона на Python.
И про использование библиотеки NEAT чтобы обучить игру играть в саму себя.
На этой неделе проходил зимнюю школу ALPS, очень понравилось, на следующий год рекомендую всем, кто изучает NLP всерьёз.
И на этой школе мне посоветовали статью A Distributional Approach to Controlled Text Generation, которая, как оказалось, подошла к задаче из моего предыдущего поста совершенно с другой стороны. Они назвали свой подход GDC (generation with distributional control).

Напомню, что типичный RL для генерации текстов предлагает выучивать такое распределение текстов p(y), которое максимизирует взвешенную сумму E R(y) + a*H(p): матожидание награды плюс бонус за разнообразность распределения. Метод RAML вместо этого предлагает минимизировать D(p, Q), где Q~exp(R(y)/b), где D() - это дивергенция Кульбака-Лейблера между двумя распределениями (и её минимизация эквивалентна просто минимизации кросс-энтропии между ними).

А в новой статье предлагают ещё одну постановку задачи: минимизировать D(p, A) при условии, что E R(y) = m. Здесь A - целевое распределение, на которое мы хотим сделать p максимально похожим, но так, чтобы среднее значение R было равно m. Заметим, что если в качестве целевого распределения использовать равномерное, то минимизация D(p, A) означает просто максимизацию`H(p), потому что у равномерного распределения энтропия самая большая. И ещё можно заменить, что для любого значения`a из RL-постановки можно подобрать такое значение m из новой постановки задачи, чтобы их оптимальные решения совпадали. Иными словами, максимизацию взвешенной суммы двух функций можно свести к максимизации одной функции при ограничении на другую, и наоборот.

Что всё это может означать на практике? Представим, что мы обучили крутую нейросетевую болталку A, которая порождает очень человекоподобные ответы, но в 10% разговоров хамит пользователям. А нам по продуктовым соображениям хочется иметь болталку p, которая вела бы себя максимально похоже на A, но хамила только в 1% случаев (потому что если вообще не хамить, будет скучно). Здесь функция`R` - это индикатор хамства, и его матожидание как раз означает долю хамства. Ну а в общем виде функция R и константа m (требуемое значение) могут быть векторами, т.е. мы будем предъявлять сразу несколько разных требований к болталке.

В статье используют теорему о том, что оптимальное распределение p(y) должно быть пропорционально P(y) = A(y) exp <λ, R(y)>: здесь λ - это неизвестный вектор slack variable, который можно подобрать градиентным спуском: сэмплируем выборку из A, перевзвешиваем пропорционально экспонентам, и подбираем λ так, чтобы средневзвешенное значение R(y) было поближе к m. После того, как мы подберём лямбду, то искомое распределение p нам будет известно с точностью до константы (потому что P - не нормализованное), но напрямую сэмплировать из него мы не сможем - и чтобы сделать это, нам придётся обучить нейросетку.

Но как обучить нейросетку воспроизводить нужное нам распределение, мы уже знаем: importance sampling. Берём любое распределение s, сэмплим из него выборку, перевзвешиваем примеры пропорционально P(x)/s(x), и учим нашу нейросетку предсказывать эти примеры с заданными весами. Собственно, в качестве s можно взять эту же нейросетку с весами, замороженными в начале эпохи, и тогда с каждой эпохой распределение s будет становиться всё более и более пропорциональным P – и должно скорее рано, чем поздно к нему сойтись.
Авторы применяют всю эту теорию к GPT-2, заставляя нейросеть генерировать тексты на определённые темы, с определённым сентиментом, или просто с конкретными словами. Все эти задачи приблизительно удаются и методу GDC, и другим бейзлайнам, использующим разного рода RL или подобные алгоритмы. Но GDC, за счёт максимальной близости к распределению A (исходной GPT-2 до оптимизации), генерирует наиболее разнообразные тексты, тогда как бейзлайны или слишком далеко отходят от ограничений, или дают вырожденые распределения с кривыми или однообразными текстами. Правда, доля текстов, в которых нужные слова/темы/классы таки действительно встречаются, у GDC вышла дальше всего от 100%: похоже, если ограничения очень трудновыполнимые, то подход заводится тяжело. Зато когда с помощью GDC модель обучали перебалансировать доли (типа генерировать 50% текстов про женщин или 40% текстов про искусство), это получалось довольно неплохо.

Получается, в этой статье решили проблему катастрофического забывания генеративных нейросетей при адаптации к новым (мягким) ограничениям. Причём решили принципиальным способом: сначала определили "на бумажке", каким должно быть новое распределение, а потом обучили модель воспроизводить именно его. Плюсы: получается стабильно и красиво. Минусы: кажется, это работает хорошо, только если исходная модель A уже и так удовлетворяет ограничения достаточно часто, чтобы параметры λ не уходили в бесконечность при попытке её перевзвесить. А если исходная модель справляется с ограничениями крайне редко, возможно, нам нужно больше изоленты.
Forwarded from Big Data Science
🏸Zingg + TigerGraph combo for deduplication and big data graph analytics
Graph databases with built-in relationship patterns are great for record disambiguation and entity resolution. For example, TigerGraph is a powerful graph analytics system. And if you supplement it with the open ML tool Zingg (https://github.com/zinggAI/zingg), you can find duplicate and ambiguous records even faster.
Imagine, the same person in different systems is written differently. Therefore, it is very difficult to analyze its user behavior, for example, to generate a personal marketing offer or inclusion in loyalty programs. Zingg have built-in locking mechanisms that only calculate pairwise similarity for selected records. This reduces computation time and helps scale to large datasets. You don't have to worry about manually linking/grouping records: the internal entity resolution framework takes care of that. So with Zingg and TigerGraph you can combine the best simple and scalable entity resolution and further graph analysis.
https://towardsdatascience.com/entity-resolution-with-tigergraph-add-zingg-to-the-mix-95009471ca02
Forwarded from TechSparks
Инженеры Meta рассказали в блоге компании о AI Research SuperCluster (RSC) — суперкомпьютере для обучения моделей в областях, связываемых с ИИ: работа с естественным языком, распознавание речи и компьютерное зрение.
Вычислительный кластер содержит 760 NVIDIA DGX A100 в качестве вычислительных узлов (6,080 GPU) — с сетевой инфраструктурой на основе NVIDIA Quantum 200 Gb/s InfiniBand. Емкость накопителя — 175 петабайт на Pure Storage FlashArray, кэш — 46 петабайт в Penguin Computing Altus systems. Утверждается, что когда кластер к середине года доведут до полной комплектации и мощности, он станет самым могучим в мире суперкомпьютером для задач в области ИИ.
И, конечно же, заявлено, что этот монстр — начало дороги к построению метавселенной, the next major computing platform — the metaverse, where AI-driven applications and products will play an important role.
https://ai.facebook.com/blog/ai-rsc
Forwarded from Denis Sexy IT 🤖
Посмотрел двухчасовое видео про проблемы NFT и криптовалют в целом — в видео нет русских субтитров, но я думаю кто-то переведет в какой-то момент, слишком хорошо получилось.

Вот очень краткое содержание:

— Крипто-проекты часто пытаются решить проблемы в областях в которых они или ничего не понимают, или в которых эта проблема уже решается обычными БД, то есть по сути крипто-стартап это что-то в стиле буханка-хлеба-троллейбус.jpg. В видео есть забавное мнение, что крипто-разработчики считают, что раз они разобрались в такой сложной теме, как блокчейн и проекты на нем, то все другие проблемы экономики или около того — легкая фигня, хотя это конечно же не так. Многие крипто-проекты, предлагают, если задуматься, откровенные антиутопии под всеми маркетинговыми словечками, это уж не говоря про то, сколько электричества потребляет крипта.

— Криптовалюты почти идентичны пузырю на рынке жилья 2008-го года (это который еще финансовый кризис в мире вызвал), в видео подробно описывается почему.

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

— Будучи пузырем (или многими пузырями), весь крипто-рынок постоянно требует подпитки новыми деньгами или новыми пользователями. И если крипта уже успела напугать много людей своими обвалами, то появился новый «бренд» или концепция, как NFT куда сразу полезло много обычных людей, корпораций, трейдеров, брокеров, капиталов и тп — последние то понимают, как на новеньких заработать, им выгодно продвигать тему с NFT (что они успешно и сделали).

— У крипто-чуваков есть стимул врать вам, чтобы раздувать (и, следовательно, продавать) крипту или NFT. Это может происходить произвольно и непроизвольно, но суть тут простая — большая часть стоимости крипты и NFT полностью воображаема и не имеет реальных денег или покупательной способности. Людям, вкладывающим в крипту значительные средства, нужно убедить вас купить ее, принеся реальные деньги, тогда они смогут продать свои токены новеньким. От меня по этому пункту: я, ради фана, участвовал во многих ICO в ~2015-2017 годах, еще тогда немного офигел как некоторые люди теряют связь с реальностью и становятся похожими на религиозную секту если у них лежит в каких-то токенах пару тысяч долларов, так, конечно, делать не стоит, критическое мышление наше все.

— Настоящий смысл криптовалют не в том, чтобы создать более равный рынок, где у маленького человека есть шанс — это лишь маркетинговая примочка. На самом деле люди надеются войти в рынок достаточно рано, чтобы стать тем самым большим богатым китом, который владеет рынком, у которого есть аудитория из «обычных маленьких людей фолловеров». По сути, это финансовая пирамида и сетевой маркетинг сразу.

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

— NFT и криптовалюты — это ответственность которую игнорируют. «Это не я совершил незаконный или неэтичный поступок! Просто так работает наша децентрализованная сеть, которая никому не принадлежит». Многие криптогруппы открыто выступают за схемы, которые обычно были бы незаконными, потому что блокчейн нельзя запретить или заблокировать — отсюда появляются пампы и дампы, перекупка своих собственных NFT (аля, купил свой же токен за 10k у себя, продал за 5k якобы со скидкой, 5k из неоткуда) и тп. Все это наказывается в мире ценных бумаг.

В видео много всего, если можете в английский с субтитрами, правда советую.

UPD. Текстовая версия похожего по духу поста который вышел сегодня
Forwarded from GitHub Community
​Tesseract.js – Библиотека для извлечения/распознавания текста на изображениях, поддерживает почти любой язык.

Используйте tesseract.js так, как вам нравится!
• Автономная версия
• Расширение Chrome #1
• Расширение Chrome #2
• Распознавание видео в режиме реального времени
• С Angular
• С React
• Typescript
• Electron

GitHub | #JavaScript #OCR
Forwarded from Технологии | Нейросети | Боты
This media is not supported in your browser
VIEW IN TELEGRAM
⚡SberSwap

Замена лица на фото и видео.
Выглядит интересно, колаб присутствует.

• Github
• Попробовать Colab
Forwarded from [PYTHON:TODAY]
🔥 Обработка естественного языка с TensorFlow

Научите компьютер разговаривать, используя
библиотеки глубокого обучения на языке Python

Автор: Ганегедара Т.
Год: 2020

#books #python #ml #русский
👨‍🎨 Что такое Image Inpainting и с чем его едят? Разбираем на примере RePaint, GLIDE, RuDOLPH.

Inpainting решает проблему удаления объекта или достраивания окружения изображения внутри произвольных масок по контексту.

Качество подходов зависит от кондишена масок, от скорости inpainting'а и от возможности использования текста в качестве дополнительного кондишена.

По скорости:
- Быстрые, e.g.: GAN'ы, работающие за один forward (условно оne stage)
▪️LaMa, Deep Fill v2

- Медленные, e.g.: Diffusion и DALL-E-like, работающие за 384-1280 forward'ов.
▪️RePaint, GLIDE, DALL-E

По использованию текста:
- Text Condition or Text guided,
e.g.: GLIDE
- Image Context Only: диффьюжн RePaint

По зоне image кондишена:
-
Condition Invariant Inpainting: кондишн берется из любой доступной точки вне маски. e.g.:
▪️ GLIDE: Classifier-Free Diffusion файнтюн под задачу Inpainting.
За минуту GLIDE делает один inpainting в разрешении 64х64, потом из коробки можно сделать диффьюз-апскейл в 256х256.
📇 GLIDE 🔮 GLIDE Colab

- Fixed Condition Inpainting: кондишн берется из фиксированных областей. В DALL-E-like поздние токены имеют кондишн в ранних, независимо от выбора кривой, заполняющая пространство, e.g.:
▪️ RuDOLPH: DALL-E, со способностями CLIP, решающий в zero-shot задачу Text Condition Image Inpainting. Из-за fixed condition природы, RuDOLPH лучше справляется с нижней частью изображения (пример).
За минуту GLIDE делает более 100 inpainting'ов в разрешении 128х128, потом из коробки можно диффьюз-декодить понравившиеся варианты в 256х256 и проапскейлить в 1024х1024.
📇 RuDOLPH 🔮 RuDOLPH Colab

Вывод:
- Если нужны быстрые подходы, которые не нужно настраивать текстом, то советую взять LaMa. Если же нужно качество, и готовы жертвовать временем, то ждите кода RePaint
- Если нужна текстовая настройка для Inpainting, например "олень в синей новогодней шапке", то советую обратить внимание на GLIDE Diffusion или на RuDOLPH в режиме DALL-E.

#разбираем_собираем #всохраненки