PyMagic
6.09K subscribers
232 photos
4 videos
10 files
251 links
Data Science / ML / Deep Learning
VK group https://vk.com/club211095898
Download Telegram
Визуализация. Что еще помимо matplotlib и seaborn?

Библиотеки Matplotlib и Seaborn являются популярными инструментами для визуализации, но есть ряд других интересных библиотек, которые также могут быть полезны в работе для Data Scientist.

1️⃣ Plotly - это популярная библиотека для создания интерактивных визуализаций. Она предлагает широкий спектр типов графиков, включая диаграммы рассеяния, линейные графики, тепловые карты и др., позволяет добавлять интерактивность к визуализациям, такие как прокрутка, масштабирование и выбор данных.

2️⃣ Bokeh - это еще одна библиотека для создания интерактивных визуализаций, которая предоставляет широкий спектр различных типов визуализаций. Bokeh позволяет создавать сложные графики, включая статические и интерактивные, графики в режиме реального времени, может работать с большими объемами данных.

3️⃣ Holoviews - это библиотека для создания интерактивных графиков и диаграмм в Python. Позволяет создавать высококачественные графики, используя минимум кода, кстати, об этой библиотеке писали ранее здесь

4️⃣ Plotnine - это библиотека, которая является Python-реализацией грамматики графики ggplot2 (язык R). Основная идея Plotnine заключается в использованием грамматики графиков, которая определяет основные компоненты графика (например, оси координат, метки, легенду) и способы их настройки. Это позволяет пользователям создавать сложные и красивые визуализации, например, таблицу Менделеева, с минимумом кода.

5️⃣ Datashader - предназначена для обработки больших объемов данных. Основной принцип работы Datashader заключается в агрегации данных в небольшие бины и их последующей визуализации.
👍24
🔡 Аугментация текстовых данных

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

Бывает, что, решая конкретную ML-задачу, вы понимаете, что данных для обучения качественной модели не хватает. Безусловно, можно попытаться вручную разметить еще какое-то количество объектов, но что, если для начала попробовать создать новые объекты из уже имеющихся? 🤔

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

1️⃣ Для начала поговорим об char-level аугментации. Рассматривая каждый текст как последовательность символов, мы могли бы преобразовывать входные данные в тексты с имитацией случайных опечаток в отдельных буквах.

2️⃣ При использовании word-level трансформаций можно делать замену слов на синонимы или антонимы, перестанавливать слова в предложениях или вовсе убирать их случайным образом.

3️⃣ Говоря об аугментации текстов, нельзя не вспомнить об обратном переводе - методе, в котором сначала текст переводится на целевой язык, а затем снова на исходный. При этом меняются отдельные слова или даже фразы, но смысл остается неизменным.

4️⃣ Переходя на sentence-level - уровень целых предложений, можно использовать абстрактивную суммаризацию - подход, при котором предобученная нейросетевая модель получает исходный текст, и выдает его переписанное содержание.

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

❗️Впрочем, перед тем как использовать аугментацию, стоит помнить несколько вещей:
⁃ Аугментация не является серебряной пулей для всех задач. Вполне возможно, на ваших данных она не приведет в итоге к значительному увеличению метрик
⁃ Не существует универсального метода аугментации, под каждую задачу его нужно подбирать, но ничто не мешает использовать сразу несколько
⁃ Не стоит тестировать качество на аугментированных данных - они используются только на этапе обучения модели
⁃ При этом, если вы используете k-fold валидацию, стоит следить за тем, чтобы исходный и аугментированный тексты оказывались в одном фолде, во избежание утечки данных
👍253
Пишем градиентный бустинг с нуля на Python 🐍

Вы уже не раз просили меня написать реализацию алгоритма бустинга 💻

В новом видео разобрала классическую реализацию, плюс попробовала еще добавить регуляризатор для снижения переобучения алгоритма)

А вообще, разобрав алгоритм по косточкам, вам будет намного проще понимать, какие гиперпараметры и как необходимо подбирать) Мы кстати на основном курсе по DS уже как 2 года разбираем все алгоритмы ML с нуля, я считаю, это достаточно крутым упражнением.

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

https://youtu.be/-cp0aVkoI5U
🔥39👍8❤‍🔥3🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
ВВЕДЕНИЕ В СОВРЕМЕННОЕ КОМПЬЮТЕРНОЕ ЗРЕНИЕ 👓

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

🧐 Но есть задачи, где данные представлены в более сложном виде. Вы тоже про них не раз слышали. Поговорим про задачи компьютерного зрения, где информация представлена в виде картинок. Самая первая задача, с которой часто начинают новички, - определить кто изображен на фотографии: кошка или собака.

👁️‍🗨️ Первые подходы к решению подобных задач были достаточно трудоемкими и делились на несколько этапов. Первым этапом разработчики придумывали, как посчитать признаки. Смотрели на формы хвостов, носов, мордочки и так далее… Это была огромная и долгая работа. Далее получали признаковое описание для каждой фотографии животного и использовали тот же самый градиентный бустинг.

⚠️ Такие подходы работали не лучшим образом. Более того, сбор признаков – отдельная объемная задача, на которую тратилось большое количество времени…

❗️Далее был предложен подход, который принимал на вход картинку животного, передавал ее в качестве входного параметра в некоторую функцию. Затем внутри функции происходила некоторая обработка изображения, и возвращался ответ в виде числа: пусть 1 – если животное на картинке было кошкой, 0 – если собакой.

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

Такой подход не делился на этапы как предыдущий. И давал более точные результаты в задачах компьютерного зрения!
👍31
🔤 Токенизация текстов - как и зачем?

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

Какая токенизация бывает?

Можно выделить следующие уровни абстракции текста и, соответственно, токенизации:
⁃ Символы - отдельные знаки
⁃ Символьные N-граммы - комбинации из двух, трех или более символов, идущих подряд.
⁃ Подслова - одним из популярных способов разделения текстов на подслова является BPE (Byte Pair Encoding). В данном методе производится итеративный подсчет частоты токенов, начиная с отдельных символов, самых частотные из которых объединяются в подслова. Подобный способ токенизации сегодня можно встретить в таких моделях как BERT, GPT-2 и многие другие.
⁃ Слова - простой и понятный метод разделения текстов по пробелу.
⁃ Словосочетания - как и в случае символов и символьных N-грамм, аналогичным образом можно токенизировать тексты, используя комбинации нескольких слов, идущих подряд.
⁃ Предложения - завершая иерархию абстракций, можно упомянуть сегментацию предложений. Решая подобную задачу мы разбиваем исходные данные на отдельные предложения.

Как выбрать уровень токенизации?
Для выбора подходящего способа токенизации стоит отталкиваться от формулировки задачи, богатства морфологии языка, на котором написаны тексты, и их особенностей, например, таких, как наличие большого количества опечаток.

Какими инструментами можно провести токенизацию?
Простейшие методы, например, такие как разбиение по пробелу, можно реализовать самостоятельно, пользуясь встроенными методами языка Python или регулярными выражениями.
Однако на сегодняшний день существует огромное количество библиотек для токенизации:
⁃ NLTK
⁃ Spacy
⁃ Stanza
⁃ SentencePiece
⁃ YouTokenToMe (очень эффективная реализация BPE).
Отдельно можно выделить Razdel - библиотека из проекта Natasha, предназначенная для токенизации текстов на русском языке.
👍234🔥3
🧠 Сверточные нейросети. Фильтр

💭 Друзья, приходилось ли вам когда-нибудь повышать резкость на своих фотокарточках? Думаю, лет 5 назад эта тема была особенно актуальна, так как у большинства смартфонов камеры были не столь чувствительны как сейчас.

🧐 Сталкиваясь с такой проблемой, мы обращаемся за помощью к встроенным функциям или программам, которые прорисовывают детали на наших картинках более четко. Чаще всего «под капотом» у таких программ находится архитектура свёрточных нейросетей.

👍 Сверточные нейросети состоят из нескольких слоев взаимосвязанных нейронов. Первый слой обычно применяет серию «фильтров» для извлечения важных функций из входного изображения. Именно с помощью применения фильтров входные изображения могут меняться в зависимости от вашего желания.

📌 Мы можем представить себе изображение, состоящее из отдельных пикселей, как функцию, где каждый пиксель имеет свое значение. Для изображения в градациях серого каждый пиксель будет иметь интенсивность от 0 до 255.  Если изображение цветное (RGB), то цвета создаются из комбинации красного, зеленого и синего. Получается каждый пиксель изображения имеет три канала и представляется в виде вектора 1x3.Таким образом, изображение может быть представлено в виде матрицы значений пикселей.

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

Фильтр повышения резкости можно разделить на два этапа: он берет сглаженное изображение, вычитает его из исходного изображения, чтобы получить «детали» изображения, и добавляет «детали» к исходному изображению.
12👍6🔥1
🎨 Как работают text2image модели?

Уже довольно долгое время вовсю гремят модели, генерирующие картинки по текстовому описанию. Этих потрясающих результатов они достигли благодаря такому методу как диффуззия.

🔢 Глобально обучение диффузионных моделей состоит из двух шагов:
⁃ Forward diffusion process: постепенно добавляем случайный шум в изображение до тех пор, пока от картинки не останется ничего, кроме зашумленных пикселей.
⁃ Reverse diffusion process: на этом шаге зашумленное изображение нужно "расшумить" - вернуть к своему начальному состоянию.

❗️В качестве базовой архитектуры для реализации этих шагов обычно используют U-Net и ее модификации. При этом сам процесс генерации можно эффективно реализовывать не для оригинальной размерности картинки, а для ее скрытого сжатого представления.
После обучения такая модель сможет генерировать новые изображения из случайного шума.

🔤 В text2image моделях для генерации изображений по тексту нам нужно подать на вход модели информацию из промпта (исходного текста). И здесь первым делом необходимо превратить слова на входе в их векторные представления, которые используются для генерации "направленного" шума - основы будущего изображения. Для гибкой обработки информации из промпта используется механизм внимания - Attention.

🖼 На сегодняшний день существует достаточно большое количество text2image моделей, в числе которых можно выделить Midjourney, недавно обновленную до пятой версии, а также модель Kandinsky 2.1, позволяющую генерировать картинки по русскоязычным текстам.
👍87👏5
🍅 Как стать сеньором помидором с нуля в DS?

Вопрос оч хороший, но в нем кроется очень много подвохов.

Неокрепшие умы студентов, которые ищут курс «как с нуля стать востребованным специалистом с 50-ю годами опыта», довольно сильно подвержены маркетинговым уловкам. Впоследствии это может сильно отразиться на мотивации, а также ударить по кошельку.

💭 Давайте представим, что есть обучающая программа «Как стать гендиректором» в ВУЗе/на курсах и где то там еще. Вас научили определенным инструментам, дали знания, эксперты поделились опытом. Гарантирует ли вам это работу гендиректором? Конечно, нет!

Senior/Lead и так далее - это не только про хардовую часть. Важную роль также играют soft-skills. В IT очень легко опереться на hard-скиллы, потому что есть понимание того, как их измерить. Все логично и понятно: знания ML, умение писать оптимальный код и так далее.

📌 Но за что ценятся специалисты от Senior и выше? За их реальный опыт (позитивный и обязательно негативный), за их набитые шишки, за то, что они могут взять на себя ответственность, за опыт, который они наработали в другой команде и знают, как с нуля построить подобный процесс. Причем они не только знают как, но еще и могут. Такой опыт получают на реальной работе.

Но возможно ли создать образовательную программу, которая бы всему этому учила? Может быть, когда-то это станет реальностью, но в этом нет смысла. Зачем мне учить кого-то на реальных данных, нанимать команду, под это пилить инфраструктуру, если я эти же проекты могу делать на аутсорс для других? Сама компания уже может на этом зарабатывать. И в итоге мы приходим к тому, с чего начинали, а именно - получение реального опыта в реальных компаниях. Палка о двух концах.

Очень хочется получить какую-то готовую инструкцию, которая приведет к успеху. Харды - это уже 50-70% успеха. Дело остается за малым - за софтами.

По опыту работают всеми избитые уже навыки (берем среднее по больнице):
⁃ Коммуникабельность
⁃ Умение брать на себя ответственность
⁃ Настойчивость
⁃ Здоровый оптимизм
⁃ Эмпатия
⁃ Терпеливость

👉 Харды вам нужны обязательно. Развивайте также софты и будет вам счастье. О втором подвохе, который характерен для DS, расскажу в следующих постах.
❤‍🔥29🔥3👍2
👮🏻НАКРУТКА ОПЫТА В DS ⛔️

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

🧐 Стоит ли накручивать опыт начинающим специалистам, которые только прошли обучение на DS, с целью попасть на собесы?

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

И ДОПОЛНИТЕЛЬНО, разобрали все возможные ошибки при поиске работы. Иногда кажется, что вот вас умного и хорошего не берут на собесы, а пет-проект то крутой, питончик знаете на ура, что не так? Что происходит?

Думаю, что вы сможете много подчерпнуть для себя из этого видео, поработать над ошибками и наконец попасть в компанию своей мечты на достойную позицию и ЗП!) Надеюсь, что этот ролик в чем-то станет настольной книгой при поиске работы начинающим специалистам 🫶

https://youtu.be/fA7FHj7wbss
👍25🔥52😁1
📝 ВАЖНАЯ ЗАМЕТКА НАЧИНАЮЩИМ СПЕЦИАЛИСТАМ

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

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

Что нужно сделать:
- Изучить репозиторий, где находится модель. Просмотреть несколько файлов с кодом, конфигурационных файлов…
- Отметить для себя общий стиль написания кода в этом репозитории. Какие структуры данных используются, как обращаются с библиотеками, в какой последовательности запускаются методы и так далее.
- Возможно даже найти части кода, которые помогут вам решить поставленную задачу.
- И еще! Часто одна команда работает над различными задачами, поэтому репозиториев может быть больше, чем один. Попросите к ним доступы, просмотрите как пишется код там.

Вообще читать чужой код очень полезный навык. Много нового можно для себя подчерпнуть. Не пугайтесь, что сначала будет трудно. Здесь важна практика.

📌 P.S. А еще можно зайти в закрытые мерж реквесты и почитать замечания к коду, которые получали другие разработчики, и не повторять их ошибок)
👍273😁1
📈 Эволюция GPT моделей от GPT-1 до ChatGPT

24 апреля Сбер объявил о выходе модели GigaChat - русской версии ChatGPT, способной генерировать тексты, картинки и решать разнообразные задачи.
На фоне подобных новостей кажется, что внезапно произошел скачок, приблизивший нас к появлению сильного искусственного интеллекта, однако развитие больших языковых моделей (Large Language Models) происходило более поступательно. Давайте кратко пробежимся по основным вехам эволюции таких моделей.

Для начала стоит сказать, что все языковые модели глобально решают одну задачу - предсказание следующего слова. Сама аббревиатура GPT расшифровывается как Generative Pretrained Transformer - генеративный предобученный трансформер. GPT-1 - первая из этой серии, появилась в 2018-ом году и представляла собой двенадцатислойную модель со 117 миллионами обучаемых параметров. Такое огромное, по меркам того времени, количество параметров позволило модели добиться SOTA-качества в 9 из 12 задач при тестировании по сравнению с моделями, специально натренированными на соответствующие задачи.

Следующим скачком стал выход в 2019-ом году модели GPT-2. Для ее обучения был собран набор данных объемом 40 гигабайт, тогда как GPT-1 училась на гораздо более скромном датасете из книг. Кроме того, по сравнению с первой моделью, исследователи увеличили число параметров в 10 раз - до 1.5 миллиардов. Безусловно, такие изменения не могли не отразиться на качестве модели: она снова достигла SOTA-качества во множестве задач на различных языках, научилась писать длинные эссе, переводить тексты и решать простые задачки.

В 2020-ом году пришло время GPT-3. Для ее обучения набор данных увеличили до 420 гигабайт, в которые вошли статьи из Википедии, несколько книжных корпусов, а также тексты из интернета. При этом количество параметров модели и вовсе увеличилось до 175 миллиардов. GPT-3 снова показала SOTA-качество в различных NLP задачах, таких как Question Answering, машинный перевод, языковое моделирование, продемонстрировала понимание арифметики, способность решать логические задачи, программировать и многое другое.

Обычно, когда мы имеем дело с языковыми моделями, обученными на огромных датасетах, неизбежно приходится сталкиваться с токсичными сгенерированными ответами или просто ложными фактами. Однако в 2022-ом году компания OpenAI заявила, что ей удалось сделать модель на на базе GPT-3, ответы которой более корректны и правдоподобны. Для этого поверх обученной GPT-3 применялось обучение с подкреплением на основе отзывов людей (RLHF), чтобы дать модели понять, какой ответ для человека является более предпочтительным. Эту обновленную модель назвали InstructGPT.

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

Также стоит остановиться на уже упомянутом GigaChat - эта модель, в отличие от ChatGPT представляет собой целый ансамбль нейросетевых моделей, объединенных в одном интерфейсе. В качестве базовой языковой модели была взята ruGPT-3, которую дообучали, в том числе на данных в инструктивной форме. Вполне возможно, что для русскоязычных данных эта модель будет показывать качество сопоставимое с ChatGPT.
🔥15👍6👌2
🍅 Как стать сеньором помидором с нуля / продолжение

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

В прошлом посте мы поговорили о курсах, которые помогут вам стать суперменом/гендиректором/senior, об этом также вскользь упомянула в видео, ведь не все читают мои посты в телеграмм, а надо бы))

Есть еще одна важная деталь. В Data Science есть несколько областей NLP, CV, RecSys, кто-то больше начинает специализироваться на A/B тестировании, RL, а есть еще и MLOps и так далее. И в каждой из этих областей бездна и голубой океан, многие направления еще предстоит открыть.

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

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

Сложно представить DS, который специализируется на A/B тестировании, как он успешно проходит собес в команду, где занимаются Self-driving car, а команде нужен человек именно с опытом например в распознании объектов, обработке инфо с датчиков и все что связано с CV, но не с A/B тестированием.

Специалист то может он и неплохой, но не во всем и везде, и это нормально.

https://youtu.be/QmqgPAP0Osw
👍426🤩1
Еще больше ИТ контента и на любой вкус и цвет 👌

У нас есть прекрасное сообщество ityoutubers, где вы можете найти подходящий контент для себя почти по любому языку программирования, направлению ИТ, или можете просто посмотреть интервью с известными ребятами из айтишки https://t.iss.one/addlist/3C6r62d43SZmYWJi

Есть агрегатор ежедневных ИТ-новостей из разных телеграмм каналов https://t.iss.one/ityoutubers_com
👍10🤯4
ЗАЧЕМ В НЕЙРОННЫХ СЕТЯХ НУЖНЫ НЕЛИНЕЙНОСТИ?

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

👁️‍🗨️ Перейдем сразу к рассуждению. Нелинейность достигается за счет использования функций активации в нейронах сети. Функция активации — это нелинейная функция, которая применяется к выходу каждого нейрона, что позволяет сети фиксировать нелинейные отношения между входами и выходами. Обратите внимание на иллюстрацию.

✏️ Примером функции активации может быть сигмоидальная функция (или сигмоида), которая принимает входное значение и сжимает его в диапазоне от 0 до 1. Но чаще всего применяется ReLU (Rectified Linear Unit) или Leaky ReLU, где если входное значение больше 0, выходное значение будет таким же, как и входное значение. Однако, если входное значение меньше или равно 0, выходное значение будет равно 0.

👌 Нелинейность позволяет нейросети моделировать сложные отношения между входными и выходными данными. Другими словами, позволяет моделировать паттерны, которые нельзя выразить в виде простой линейной функции.

 Таким образом, даже если мы накручиваем в модели несколько линейных слоев, то на выходе мы получим комбинацию линейных признаков. Соответственно, набор линейных слоев ничем не лучше одного линейного слоя. С добавлением слоев мы будем получать линейную модель над линейными моделями. А наша задача - не ограничивать модель линейными взаимосвязями.
👍27😍2
📝 Суммаризация текста: основные подходы

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

Глобально все модели для суммаризации делятся на два класса: экстрактивные и абстрактивные.

1️⃣ В процессе экстрактивной суммаризации аннотация составляется из отдельных частей исходного текста, например, целых предложений или абзацев. В качестве конкретных методов можно выделить семейство алгоритмов на графах, таких как TextRank и LexRank - в этих моделях строится граф, в котором вершинами являются сегменты текста, а ребрами - связи между ними. Затем для каждой вершины рассчитывается ее вес для создания итоговой аннотации.
В целом экстрактивные модели, как правило, проще - их гораздо легче реализовать, однако качество работы оставляет желать лучшего: полученные тексты будут лишены гибкости, связности и согласованности между собой.

2️⃣ В случае абстрактивной суммаризации модель генерирует новый текст, содержащий основную информацию из исходного. Фактически, модель для абстрактивной суммаризации обычно является нейросетевой моделью с архитектурой Encoder-Decoder. Эта архитектура предполагает, что нейросеть состоит из двух частей, первая - энкодер, создает скрытое представление текста на входе и передает его второй части - декодеру, который и генерирует аннотацию.
Разумеется, подобные модели сложнее в реализации, но и качество полученных результатов намного превосходит экстрактивные методы. На практике, сегодня пальму первенства в этой задаче, как и во многих других, держат трансформеры, при этом многие модели выложены в open-source, а, значит, доступны и для ваших проектов.
👍211
🥋 ChatGPT vs Программисты: кто победит в битве за будущее?

🤖 В новом ролике мы поговорили с экспертом из области NLP Айдаром Валеевым (Digital Habits, ex EORA) как работает ChatGPT. Обсудили сможет ли такая модель заменить программистов в ближайшей перспективе, причем ответ дали, исходя из того, как устроен алгоритм, это дает больше понимания на что он способен.

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

🚀 Кроме того, мы рады сообщить, что мы запускаем курс по Natural Language Processing для начинающих, где Айдар является автором и лектором. Курс подойдет всем, кто хочет работать в области обработки естественного языка и стать специалистом по NLP.

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

Самые внимательные зрители получат промокод на скидку в 10% при оплате курса, всего доступно только 30 штук.

https://youtu.be/N9LaI01atZU
👍105❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
💭 НЕЙРОСЕТЬ ГЕНЕРИРУЕТ ВИДЕО 

NVIDIA показала новую нейросеть VideoLDM, генерирующую короткие видеоролики по текстовому описанию. Компания разработала ее совместно со специалистами из Корнельского университета.

💬 На вход нейросеть получает текстовое описание, а на выходе создается видеоролик - множество разнообразных, согласованных по времени изображений с неплохим качеством. При этом максимальное разрешение генерируемого нейросетью видео составляет 2048 x 1280 пикселей, частотой 24 кадра в секунду. 

 Video LDM генерирует ролики покадрово, используя при этом Stable Diffusion (нейросеть, которая позволяет генерировать изображения на основе текстового запроса)

👁️ Сейчас VideoLDM тестируют внутри NVIDIA. В компании отмечают, что добились заметных успехов по качеству видео относительно текстового запроса всего за месяц.  
Когда именно нейросетью смогут воспользоваться все желающие, неизвестно.

P.S. Друзья, на наших глазах современные технологии создают «новое искусство». Интересно, скоро ли мы увидим боевик, созданный нейросетью по сценарию известного режиссера? 🧐
👍13🔥73
💻Распознавание именованных сущностей

Задача классификации целых текстов кажется довольно привычной, но несколько обособленно от нее стоит задача классификации токенов, в которой каждому токену присваивается некоторая метка. К таким задачам можно отнести распознавание именованных сущностей (Named Entity Recognition).

🤔 Распознавание именованных сущностей нацелено на поиск и классификацию последовательностей токенов, представляющих собой имена собственные, адреса, наименования компаний и тп. Сложность представляет то, что в определенных контекстах одно и то же слово может как быть именованной сущностью, так и не быть ей. Например, есть разница между словом "мегафон" - устройством звукоусиления, и наименованием компании "Мегафон". Также очень часто сущности представляют собой связные последовательности из нескольких токенов, поэтому модель должна уметь находить их начало и конец.

📝 Для корректного поиска последовательностей во время разметки, как правило, используют нотацию BIO. Метка B (beginning) обозначает начало именованной сущности, метка I (inside) - внутренний токен, а O (outside) - любое слово, не относящееся к целевой последовательности.

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

⌛️ В прошлом NER-задачу решали с помощью rule-based методов - систем, построенных на правилах, например, таких как регулярные выражения. На смену им пришли нейросетевые архитектуры в структуре которых были biLSTM слои - двунаправленные рекуррентные слои, умеющие читать тексты в двух направлениях, слева направо и обратно. Сегодня же SOTA-качество традиционно демонстрируют трансформерные архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍7
🤖Сверточные нейросети для текстовых данных

🧠 Как правило, если мы слышим термины "сверточная нейронная сеть" или "сверточные слои", в сознании моментально появляются ассоциации с обработкой изображений. Действительно, именно благодаря сверткам в прошлом произошел прорыв в области компьютерного зрения, и на этом фоне удивительно допускать мысль об использовании подобных моделей в задачах NLP. Тем не менее это возможно.

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

📌 Казалось бы, после такого преобразования можно смело применять операцию свертки, однако есть нюанс: теперь входные данные имеют два измерения: высота – размерность вектора эмбеддинга, и ширина, равная количеству токенов в тексте. При этом незачем двигать фильтр свертки по вертикали, захватывая отдельные куски эмбеддингов токенов, – для нас они имеют смысл только при рассмотрении векторов полностью. Значит, наш фильтр будет двигаться только в одном измерении, по ширине входной матрицы, и мы получаем так называемую одномерную свертку (1D convolution).

📌 Как правило, после применения сверточного слоя к данным традиционно проводят пулинг – уплотнение карты признаков в виде усреднения или взятия максимального элемента, но в случае текстовых данных используется особый Max Over Time Pooling – взятие максимального элемента по всей ширине полученной матрицы.
Разумеется, в описанной архитектуре можно использовать несколько фильтров свертки разного размера, а также стекать сверточные слои, усложняя конструкцию модели и достигая более хорошей обобщающей способности.

📈 В целом сверточные сети проигрывают рекуррентным сетям в отношении обработки текстовых данных, однако демонстрируют неплохую эффективность в задачах классификации текстов и последовательностей токенов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141