Новинки искусственного интеллекта и нейронных сетей. Разборы статей. Ну а вообще, посчу, что захочу :) Сотрудничество/предложения: @atmyre Поддержать: https://t.me/dl_stories/521
Как вы, наверное, знаете, тг-каналы теперь могут постить сториз. Но для этого нужно, чтобы подписчики дали тг-каналу свои голоса. Я пару дней думала, нужны ли мне сториз, и придумала вот что: буду в них постить новости/статьи/приколы, которые не вошли в посты.
Так вот, если не жаль, подарить каналу голоса можно тут: /channel/dl_stories?boost
Буду благодарна 🌝
UPD: первая есть, спасибо! =)
NaViT: как адаптировать example packing для Vision Transformer, чтобы научиться обрабатывать картинки произвольных размеров.
Обычно что CNN, что ViT обучают на картинках одного размера. Для этого все картинки в датасете приводят к одному размеру либо с помощью resize, либо с помощью добавления padding к картинкам маленького размера. Первый вариант ухудшает общее качество работы сети, а второй очень неэффективный.
Конечно, люди уже давно думали над тем, как бы эффективно научить модельки работать с картинками разных размеров. Из идей — FlexiViT и Pix2Struct. А недавно ребята из DeepMind придумали новую идею: они адаптировали example packing из LLM для Vision Transformer, что позволило ViT обрабатывать картинки разных размеров, и при увеличить эффективность обучения (т.е. подход требует меньше итераций обучения для получения того же качества, что оригинальный ViT)
Идея, собственно, как и у example packing в LLM: фиксируем длину инпута (кол-во патчей) и максимальное кол-во картинок max_seq_per_pack, которое можем соединить в одну последовательность. При обучении сэмплируем картинки разного размера, делим их на патчи (при этом каждую картинку можно делить на разное кол-во патчей), запаковываем патчи картинок в последовательности, дополняем при необходимости замаскированным токенами а-ля <PAD>, подаем в модель. Точно так же, как в LLM, заставляем self-attention для каждого патча смотреть только на патчи из той же картинки. И NaViT для классификации картинок выдает max_seq_per_pack CLS эмбеддингов — по одному на каждую потенциальную картинку в input.
И еще несколько замечаний к NaViT:
- При обучении и инференсе NaViT можно подавать модели на вход одну и ту же картинку, приведенную к разным размерам (256x256, 1024x300, etc). Семплирование размернов картинок при обучении повышает качество модели.
- Чтобы NaViT мог работать с картинками разных размеров (включая такие размеры, которые не были в тренировосных данных), нужно чуть поменять создание positinal embeddings для патчей картинок. Авторы предлагают факторизованные positinal embeddings, отдельно по высоте и ширине картинки. Подробнее об этом в разделе 2.1 статьи.
- В NaViT авторы использовали такой трюк как variable token dropping, который тоже повышает эффективность обучения. Подробнее про подход можно прочитать в статье про Flip
Вот так. При обучении NaViT достигает качества ванильного ViT в 4 раза быстрее. Это, по сути, тот же эффект, что дает example packing в LLM. Также NaViT показывает эффективность в сеттинге, где ViT сначала предобучают на low-res картинках, а потом дообучают на high-res. Тут NaViT требует меньшее количество примеров для дообучения для достижения того же качества, что и ViT.
📃Статья
Больше года назад написала вот этот пост про Kaedim — стартап, который предлагал "AI-тулзу" для генерации 3D-моделей по рисунку пользователя за считанные минуты. Писала, что есть основательные подозрения, что внутри тулзы — совсем не AI, а тупо реальные люди сидят рендерят 3D-модели.
И вот прямо на днях вышло расследование от 404 Media про этот Kaedim. Tl;Dr такой: есть все основания полагать, что там реальные люди рисуют модельки, а AI там нет (ну или прям почти нет). Поинты такие:
- Источники, близкие к разработкам компании, говорят, что AI там очень плох. Условно вместо 3D-дерева получается непонятное облако;
- Kaedim нанимает 3D-художников по всему миру. Среди условий — умение в течение 15 минут сгенерировать приемлемую 3D-модель объекта по скетчу. В компании ответили на это так: видите ли, эти люди — quality control engineers, которые "докручивают то, что выдала AI-модель, до идеального состояния перед выдачей пользователю" и "дают фидбек о AI-инженерам для развития AI-модели". Тут надо посмотреть в пункт 1: говорят, модель там вообще не способна выдать что-то, что достаточно "докрутить" и о чем можно дать фидбек;
- Модельку свою Kaedim не показывает совсем. Не показывают даже примеры ее сырых генераций, объясняя тем, что "they showcase sensitive IP information about our ML approach" (не совсем даже понимаю, что это значит);
- После появления всех этих слухов и вопросов компания немного изменила текст лендинга своей тулзы. Сначала там было AI-generated, и труд людей не упоминался совсем. Сейчас там написано, что группа художников улучшает итоговый результат модели перед выдачей.
Вот так. Стоит пользование Kaedim, к слову, $150 за 10 моделей. А судя по найденным описаниями вакансий, художникам платили $1-4 за каждую работу ಠ_ಠ
Если честно, когда я увидела эту статью, меня больше всего удивило то, что Kaedim вообще до сих пор существует. Неужели они надеются допилить свою AI-модельку до нормального состояния, а потом показать, что типа "ну вот так оно и работало"?
P.S. За время существования Kaedim один из его основателей успел побывать в списке Forbes 30 Under 30. Тут невольно вспоминаются слова, что попадание в этот список хорошо коррелирует с наличием уголовного дела 🌝
В Яндекс Лицее открыт набор на годовые программы обучения.
#промо
Яндекс Лицей — это годовые курсы по программированию для школьников 8‒11-х классов и студентов ссузов 1-2-х курсов. Среди направлений обучения — программы по Python, Go, разработке игр, Machine Learning, Django, анализу данных и Big Data. Можно выбрать офлайн- или онлайн-форму обучения.
На курсах — интенсивное погружение в IT, работа над групповыми проектами и много общения с единомышленниками. Очень много практики. Преподаватели — опытные профи, которые работают с ИИ, обучают голосовых помощников, пишут код и руководят командами разработчиков. Курсы заложат твердый фундамент для будущей учебы в ВУЗе или работы в IT-компании.
Обучение бесплатное. Нужно только успешно пройти вступительные испытания.
Более подробная информация о Лицее и поступлении — по ссылке. Ждем вас!
У DeepMind две новости:
1. В Vertex AI’s Model Garden (гугловая клауд-платформа для работы с модельками через API) добавили три новые модели: PaLM 2, Codey и Imagen. Мне тут интересен Imagen, т.к. это когда-то была SOTA text-to-image моделькой, доступ к которой Гугл не выдавал никому, даже рисерчерам (я проверяла). А теперь вот, наконец, можно будет играться с Imagen по API хотя бы. Правда, пока это будет доступно только ограниченному кругу людей.
2. Вместе с Imagen Гугл выкатывает тулзу SynthID для добавления скрытых watermark'ов на сгенерированные картинки. SynthID состоит из двух моделей — одна для добавления watermark на картинку, вторая для ее детекции на входной картинке.
Заявляется, что:
- watermark не виден вооруженным глазом и не влияет на качество изображения. Т.е. watermark — это небольшое контролируемое изменение некоторых пикселей изображения. Такое, что вторая нейросеть-детектор может по входящей картинке распознать, что она была изменена именно этим способом;
- watermark устойчив к несильным изменениям картинки (добавление шума/сжатие, т.е. все то, что происходит с картинками в интернете);
- нейросеть-детектор способна распознать watermark, даже если только часть картинки была сгенерирована Imagen;
- watermark можно будет добавлять к свом картинкам по желанию.
Статьи по SynthID не выкатили. Интересно, выкатят ли вообще. Но мне было бы очень интересно почитать, как именно устроена тулза. Правда, если выкатят статью, появятся тулзы, как эту штуку обойти ¯\_(ツ)_/¯
Ну и напомню по теме: добавление скрытых watermarks на сгенерированные картинки и обучение сетей для их детекции — это ответвление задачи fake images detection. Сама по себе задача детекции сгенеренных картинок (без всяких вотермарков) довольно сложна. Если интересно, вот тут я писала обзор подходов к ее решению.
Подборка рассылок по AI
Подумала тут, что иногда мои посты получаются из статей, которые я получаю на почту из рассылок. Вчерашний пост вот был по статье из MIT Technology Review. Собрала в этом посте рассылки журналов, на которые подписана сама. Вдруг кому-то тоже будет полезно)
1️⃣ MIT Technology Review. Это журнал о технологиях в разных сферах: AI, бизнесе, climate change и пары других (все топики тут). Их рассылки — The Download и Weekend Reads. Там обычно собраны самые яркие статьи за последние дни/неделю. Часто попадаются интересные с рассуждениями вокруг технологий и AI и интервью с известными учеными (как, например, статья из поста выше).
У MIT Tech Review есть еще подкаст по AI "In Machines We Trust". Там — разговоры с разными людьми на разные темы AI. Темы выпусков правда довольно интересные.
2️⃣ Wired. Это журнал со статьями на разные темы, от культуры до технологий. Раздел чисто с AI — Artificial Intelligence Database. У журнала есть несколько рассылок на разные темы, полный перечень тут. Я подписана на Wired Weekly и Wired Fast Forward. Последняя — специализированная про AI. Там тоже попадаются интересные статьи с рассуждениями вокруг технологий и AI.
Ремарка: MIT Tech Review и Wired хорошо дополняют друг друга, статьи там в основном на совсем разные темы. Поэтому имеет смысл читать оба журнала.
3️⃣ Synced. Мой фаворит) Это журнал с обзорами AI Technology & Industry. У них даже есть отдельные разделы со статьями на темы Computer Vision & Graphics, Natural Language Tech, а статьи более приближены к научному миру и обозревают не какой-то феномен в AI, а отдельные новые статьи на узкие темы. Например, вот статья с обзором LLama-2.
Их рассылка — Synced AI Weekly, и она также более "научная", чем рассылки из пунктов выше. В ней обычно присылают ссылки и превью на 5-6 недавних интересных научных (ну или хотя бы околонаучных) статей, а также дайджест AI-мероприятий в мире. А еще дайджест открытых вакансий в AI-институтах и компаниях). Вот из этой рассылки у меня получалось прямо много постов в канале. Я просто просматриваю превью статьи в рассылке, и если меня заинтересовало, открываю саму ту статью.
4️⃣ The Batch от DeepLearning.AI. Этот журнал мне кадется более "обзорным": в нем в статьях часто приводится дайджест событий AI-мира. Но вот в разделе "Machine Learning Research" они выпускают статьи-обзоры на научные работы, почти как у меня в канале. Есть статьи и на другие темы — AI & Society, Culture и т.п. (а еще отдельные статьи по теме AI Careers). Подписаться на их рассылку можно тут.
Вроде бы все. Если вы знаете еще хоршие журналы/рассылки по AI, буду благодарна, если поделитесь в комментариях)
⬆️ Это одна из главных причин, по которой летом (и особенно в последнюю неделю) было не очень много постов на канале.
Мы прям серьезно взялись за структуризацию школы и улучшение организации, которая явно хромала. Этим летом, можно сказать, попробовала себя в роли менеджера. Ощущения смешанные. Иногда хотелось послать все к черту и пойти дальше спокойно читать статьи и писать рисерчерский говнокод ставить эксперименты. Но пересиливало то, что DLS я очень люблю и чувствую за него ответственность. Хотелось попробовать сделать школу еще лучше и приятнее для студентов. Наладить процессы так, чтобы они не были сильно завязаны на конкретных людей и не буксовали.
А еще иногда становилось почти страшно от ответственности за принимаемые решения и изменения. Да и прям сейчас страшно: запустили набор и смотрим, как все то, что сделали, будет работать. По ощущениям, мы таки справились (хоть и не без косяков и задержек), и сейчас должно быть явно намного лучше. Но посмотрим на практике)
При этом все эти процессы еще даалекоо не закончены, еще остается сделать уйму вещей. А казалось бы, просто онлайн-школа с лекциями там, семинарами и дзшками... Как же я ошибалась насчет многих вещей о сроках и пайплайне их реализации =/
Так что вот. Буду рада, если поделитесь анонсом набора с теми, кому учиться в DLS может быть интересно)
Сегодня была на первом дне воркшопа DANGER в London Institute of Mathematical Sciences (LIMS). Это такой институт, который собирает ученых-теоретиков в области математики, физики и AI, где они занимаются наукой и публикуют исследования. Находится институт в здании на Mayfair, где когда-то жил Фаррадей!
Так вот, про воркшоп. Он посвящен исследованиям на стыке AI и математики. Идет два дня, сегодня и завтра, каждый день по 4 доклада. Все доклады записываются, записи двух из них уже можно посмотреть на YouTube (вот на этой странице описания тем со ссылками на видео. Остальные тоже обещали добавить). А еще там же можно найти описания и ссылки на Zoom для завтрашних докладов: на них можно прийти и даже спросить вопросы у выступающих.
Пара впечатлений от сегодняшних докладов:
Первые три из четырех докладов были вида "вот есть проблема из теоретической математики, вот так она формулируется, и вот так мы пытаемся ее решить с помощью нейросетей". Во всех них описанию математической проблемы занимало 90% времени, описание нейросетевого подхода — 10%. Потому что все подходы были вида "ну вот простая MLP/convolution, мы ее применили, и вот, работает". Причем в той работе, где применили convolution, не очень даже понятно, почему она вообще хорошо там работает ¯\_(ツ)_/¯
Из этого всего и из моего прошлого опыта взаимодействия с людьми, которые нейронки пытаются применить к задачам физики, складывается ощущение, что пока что взаимодействие миров "классических" наук типа физики/математики и AI не очень велико. Хочется больше исследовать природу математических и физических задач и подбирать такие ML/DL-алгоритмы, которые могли бы помочь там наилучшим образом. Кажется, для этого как раз нужны подобные институты и воркшопы, где собираются люди с разным бэкграундом, а также новые междисциплинарные курсы в ВУЗах.
Четвертый доклад сегодня (от Kathlén Kohn) был про теоретические свойства сверточных нейросетей без функций активации с точки зрения алгебраических многообразий. Доклад основан на этой статье, там исследуется некоторая зависимость геометрии многообразий, которые выражают такие нейросети, от архитектуры сети.
Так вот. Логичный вопрос к этому докладу, который задали многие: а что дальше? Реальные нейросети, которые мы обучаем на реальные задачи, очень далеки от чисто сверточных сетей без функций активации. Можем ли мы что-то подобное умное сказать о "реальных" сетях?
Ответ тут такой, что сделать это очень сложно. И пока что все попытки сделать это были ооочень робкими. Там еле ReLU добавлять пробуют и смотрят, что будет. В принципе, логично, т.к. семейство многообразий сразу становится абсолютно другим, и его сложнее исследовать.
Отсюда мысль такая (высказанная самой Kathlén Kohn, когда я ее про это все спросила): мы оочень мало знаем о том, как и почему работают нейросети. Прямо очень мало. Теоретических основ почти нет. И там еще столько работы, ммм. Короче, еще одна причина развивать сотрудничество между областями.
P.S. у LIMS есть программа fellowship для молодых исследователей-теоретиков из России, Украины и Беларуси. Подробнее тут
В продолжение к посту выше: эта история мне напомнила еще один недавний случай, где метрика сыграла большую роль. Не так давно в Твиттере/Реддите стали появляться сообщения, что ChatGPT что-то "сильно отупела". Конкретно, в задачах, где нужно генерировать код, стала выдавать невалидный код. Который тупо не запускается. Потом еще ребята из Стенфорда выпустили статью, где основательно сравнили перформанс ChatGPT и GPT-4 в марте и июне 2023 года. Эти сравнения были очень выразительными: в марте где-то 50% кода, выданного ChatGPT, было корректным, а в июне этот показатель стал 10%. Вот твит с парой таких картинок.
Это навело какую-то шумиху, я даже в нескольких чатах видела обсуждение (ну и правда, было интересно, что такое случилось). Ну а что же там произошло на самом деле: оказывается, снова дело было в метрике. В том, как авторы статьи измеряли "корректность" кода, выданного ChatGPT. Измерялась она, похоже, так: берем код, который выдает модель, запускаем. Запустилось — хорошо, не запустилось — плохо. И с мартовской версией ChatGPT большинство кода работало, с июньской версией перестало. В чем же дело?
А дело в том, что OpenAI поменяла вид, в котором ChatGPT выдает код. Теперь весь код в выводе обрамляется кавычками, и рядом еще ставится приписка, какой язык программирования используется. И именно это нововведение сломало прямой запуск кода в выводе ChatGPT. Т.е. модель продолжила выдавать правильный код, но запуск этого кода стал ломаться из-за добавленных кавычек.
Вот такая история. Подробнее про нее и другие аспекты этой статьи можно почитать в Сиолошной. Это еще один повод, чтобы чуть исследовать удивительные открытия, перед тем как писать "this is huge" (сори, у меня немного аллергия на посты, которые начинаются с таких фраз)
Отзыв на книгу "Machine Learning System Design"
#learning
Не так давно Валерий Бабушкин и Арсений Кравченко написали свою книгу о дизайне ML систем. Она выпускается частями, сейчас вышло около половины. Мне досталась копия книги бесплатно взамен на отзыв (чему я очень была рада, хе-хе). Книгу я, наконец, прочитала (ту ее часть, что уже вышла), и в этом посте пишу свой отзыв.
Для начала пару слов, что такое ML system design:
Простыми словами, ML system design — это искусство построения системы с ML-компонентами. Например, пусть вы — онлайн-магазин, и хотите внедрить в свой магазин умный поиск по товарам на основе ML-модели. Чтобы это сделать, вам нужно разработать эффективный дизайн системы поиска, отвечающий вашим требованиям, реализовать эту систему и научиться ее эффективно поддерживать в условиях постоянно меняющегося мира. Вот это все входит в ML system design.
Еще важно сказать, что дизайн нужен не только большим и высоконагруженным системам. Даже небольшие пайплайны с небольшим потоком данных нуждаются в качественном проектировании.
Теперь, почему мне хотелось прочитать эту книгу:
В апреле 2022 года я собеседовалась в DeepMind на позицию ML Engineer. Прошла все этапы до последнего интервью, которое как раз было на ML System Design. Я его завалила (и по своим ощущениям, и по фидбеку). Но сама не могла понять, что в моем мыслительном процессе было не так. Отчасти из-за этого опыта мне и было интересно прочитать эту книгу. Начав читать, я через страниц 15 поняла, что я делала не так. Я задавала не те вопросы. Я вообще их мало задавала, хотя в дизайне ML систем вопросы — это чуть ли не самое главное.
Итак, перейдем к книге. О чем книга и для кого она:
"Machine Learning System Design" — это отличная вводная книга в мир построения ML-систем. Другими словами, если вы интересуетесь ML System Design или строите свою первую систему и думаете, с чего начать, то эта книга — ровно то, что вам нужно. В ней очень хорошо разобраны базовые вопросы ML дизайна:
- Что вообще такое этот ваш ML System Design;
- На что обязательно нужно обратить внимание при планировании и построении системы;
- Какие вопросы задавать и какие стратегии использовать, чтобы наилучшим образом задизайнить систему;
- Важные моменты в каждом из шагов построения и поддержки системы, от первого черновика дизайна до внедрения и поддержки.
То есть, книга высокоуровневая. Она научит вас правильно мыслить, задавать правильные вопросы. А за конкретными инструментами дальше пойдете в другие места.
Написано все понятным и приятным языком. Читать не скучно и не сложно. Практически к каждой ключевой мысли есть пример из опыта работы авторов: они отлично иллюстрируют важность той или иной компоненты дизайна системы.
Короче, книга хороша, рекомендую.
(тут, на всякий случай, небольшой дисклеймер: чтобы начать изучать ML System Design, нужно хорошо понимать основы ML и принципы работы ML-пайплайнов. Сначала — основы, потом – дизайн систем)
📘Купить книжку туть (разумеется, по мере выхода глав вы будете получать к ним доступ)
Выпуск подкаста “S02E02: Векторные базы данных и стартап" доступен на всех платформах!
#podcast
Гость эпизода — Андрей Васнецов, основатель & CTO Qdrant — стартапа, который разрабатывает векторную базу данных.
С Андреем поговорили о том, что вообще такое — векторная база данных, как она работает, в чем сложность ее реализации и где ее можно применять. Еще узнали, как векторные базы данных можно использовать в ChatGPT. Ну и обсудили стартап: сложно ли было его создать и как идут дела.
Слушать:
Yandex Music
Apple Music
Google Music
Spotify
YouTube
Материалы и таймкоды к выпуску
Поддержать подкаст:
- рубли
- любая другая валюта
Помните, был пост про эффект гроккинга (Grokking)? Напомню: это эффект, когда модель в начале обучения начинает переобучаться (train лосс становится мал, test loss остается высоким), а через некоторое время внезапно генерализуется (test loss резко падает). Иллюстрация этого эффекта — на картинке.
Grokking был замечен не так давно, лишь в 2021, и только на маленьких, "игрушечных" датасетах. Первой статьей, исследовавшей этот эффект как раз на игрушечных задачах, можно назвать эту. В ней приводятся некоторые соображения насчет того, откуда этот эффект возникает. В частности, замечено, что weight decay играет большую роль и может способствовать появлению этого эффекта.
Однако досконально выяснить, при каких обстоятельствах возникает Grokking, и какие нюансы архитектуры/метода обучения на это влияют, еще не получилось. В 2022 году вышла статья от MIT, где авторы попытались связать Grokking с устройством поверхности лосс-функции и нормой параметров сети. Для меня эта теория выглядит неплохо (+ она согласуется с тем, что weigth decay помогает: тут тоже дело в норме параметров), но доказать, что Grokking целиком и полностью обусловлен этим эффектом, нельзя.
Так вот, к чему я это. Пару дней назад Google выкатил лонгрид, посвященный Grokking. В нем авторы описали, в чем состоит феномен, и сделали очень понятные визуализации этого эффекта на примере двух игрушечных задач. На них видно, какие свойства есть у весов сети до и после того, как начинается Grokking, а также становится понятно, как именно weight decay вызывает этот самый Grokking.
Короче, отличный лонгрид-ликбез по этой теме.
Из интересного: в ходе экспериментов авторы делают вывод, что weight decay не является ни необходимым, ни достаточным условием для возникновения Grokking. Нужно больше исследований, чтобы понять, откуда берется Grokking. Эти исследования должны начинаться с игрушечных задач, чтобы можно было исследовать влияние каждой мелкой детали на Grokking изолированно. И только потом можно переходить к исследованиям больших моделей.
📄Лонгрид
Как устроены трансформеры для задач CV на примере ViT
#промо
Это — один из примеров статьи в канале DeepSchool!
В нем 15 практикующих инженеров пишут посты на темы ML/DL:
- разбирают статьи
- дают советы по обучению нейросетей
- напоминают теорию ML/DL
- и пишут туториалы к сервисам и фреймворкам
Ребята ревьюят посты друг друга, чтобы добавить разные точки зрения, а редактор упрощает текст и убирает лишнее, чтобы вам было легче читать.
Еще примеры постов:
❶ Подкаст «Почему растет популярность 3D CV»
❷ Разбор решений Kaggle соревнования по детекции столкновений футболистов
❸ Обзор ключевых идей MobileNet — почему она столь эффективна
❹ Что такое kafka доступным языком и с примером для датасаенс
❺ Вопрос на подумать: как защититься от ленивых разметчиков на краудсорсинг-платформах
➡️ Подписывайтесь, чтобы не пропустить полезный совет и развиваться в Deep Learning!
Помните, писала пост про предложение нового вида теста Тьюринга? Tl;dr там такой: давайте сравнивать поведение машины с поведением разных животных. Если машина неотличима по поведению от кошки, она прошла тест Тьюринга уровня "кошка". Ну и так для разных животных от червяка до человека.
А вот тут Мустафа Сулейман (co-founder and CEO of Inflection AI, в прошлом co-founder of DeepMind) предлагает еще один вариант. Он говорит вот что: давайте смотреть не на то, насколько модель "умна в целом", а на то, "что осмысленного модель может сделать".
Например, давайте попросим модель "заработать миллион долларов на онлайн-платформе для ритейла с начальной инвестицией в 100k долларов". Чтобы решить такую задачу, модели нужно не только расписать план действий (как может сделать GPT-4), а сделать кучу связанных действий: придумать продукты для продажи, общаться с производителями и поставщиками, вести переговоры о контрактах и продумывать маркетинг.
Сулейман называет AI, который мог бы решать подобные задачи, “Artificial Capable Intelligence” (AСI). По его мнению, ACI — это промежуточная версия между слабым AI и AGI. А еще Сулейман верит, что ACI может быть достигнут уже через пару-тройку лет, и вот тогда это окажет огромное влияние на экономику. Мы перейдем от фазы "AI полезен в решении каких-то задач" в фазу "AI — центральная составляющая мировой экономики".
Мои мысли по этому поводу:
- Это немного похоже на предложение нового теста Тьюринга из поста выше. Похоже тем, что и тут, и там от модели начиает требоваться не только возможность общаться, но и возможность взаимодействовать с миром. Кажется, это требование — логичный шаг в эволюции наших ожиданий от AI;
- Не совсем понятно, как в таком сеттинге сравнивать между собой модели для разных задач. Возможно, это и не предусматривается, но тогда это похоже на обычный бенчмарк в RL-сеттинге, а не на тест Тьюринга. Просто задача чуть посложнее, чем классификация картинок ImageNet или игры Atari;
- Не очень понятно, как тестировать такие модели, если их тест предуматривает реальное взаимодействие с миром с живыми людьми. В примере выше модели нужно заработать миллион долларов, распоряжаясь реальными деньгами, создавая и продавая реальные товары реальным людям, в процессе коммуницируя с кучей людей. Кажется, тестирование модели будут тратить довольно много человеческого времени и денег.
Возможно, ответы на эти вопросы есть в книге Мустафы Сулеймана "The Coming Wave: Technology, Power and the Twenty-First Century's Greatest Dilemma". Интересно будет почитать (она выходит 5 сентября)
А пока подробнее почитать об идее нового теста Тьюринга можно в статье MIT Tech Review
В комментариях тут пришел запрос написать пост о моем PhD. О том, как поступать, как учиться, какие PhD бывают и все такое.
Если честно, я не считаю себя экспертом по миру PhD, поэтому если и напишу пост, то чисто о своем опыте. Еще есть мысль собрать несколько человек с опытом PhD в разных странах и сделать набор постов/статью/подкаст. Но это не прямо в ближайшем будущем. И пока ничего этого нет, у меня для вас есть вот какая штука:
В феврале этого года я проводила открытую лекцию для онлайн-магистратуры ВШЭ на тему отличий ML/AI research в индустрии и академии. В этой теме, разумеется, я себя тоже экспертом не считаю, поэтому при подготовке лекции консультировалась у своего научника, у Александра Петюшко, а также спрашивала вопросы на ШАДовской встрече с Максимом Пановым.
Для лекции я делала презентацию, и планировала потом на ее основе написать статью на Хабр. Вообще я все еще планирую, но реализация подобных хотелок часто идет медленно. Поэтому пока я этого не сделала, держите слайды: они тоже довольно понятны сами по себе. К тому же, вдруг у вас найдутся комментарии/критика к слайдам, которые я потом смогу учесть при написании статьи)
Какие темы там затронуты:
- Отличия ML Engineer / ML Scientist / ML Researcher;
- Чем ML/DL research в индустрии отличается от академии;
- Как устроен карьерный путь в академии (UK/USA);
- На что обращать внимание при выборе дальнейшего пути;
- Пара слов о том, как искать PhD, если вы выбрали этот путь.
Также на слайде номер 40 есть несколько полезных ссылок по теме PhD в ML/AI.
📄Презентация
Иллюстрация к NaViT. Тут очень хорошо понято, как это все работает
Читать полностью…Example Packing в LLM
Для ускорения обучения transformer-based LLM часто используется такой трюк как example packing. В этом посте кратко расскажу, что это за трюк и в чем его польза.
Пусть мы учим LLM на задачу классификации предложений. Любой элемент данных (т.е. предложение), которое LLM принимает на вход, должно быть одной и той же длины. Поэтому обычно выбирается некоторая максимальная длина предложения max_len, и предложения из датасета длиннее max_len обрезаются до max_len, а предложения меньшей длины дополняются в конце специальным токеном <PAD> до max_len. И каждый батч при обучении LLM имеет размер (batch_size, max_len).
Очень часто, однако, в текстовых датасетах встречается довольно мало длинных предложений и очень много коротких. И при формировании батча большинство предложений имеют много токенов <PAD> в правой части. Кажется, что это — довольно неэффективное расходование вычислительных ресурсов, и можно было бы поступить как-то умнее.
Как-то умнее — это, как раз, example packing. Идея тут такая: давайте при формировании батчей будем соединять несколько коротких предложений в одно длинное. Например, если max_len=30, то возьмем три предложения длины 10, 5 и 13, соединим в одно длины 28, и в конце дополним двумя токенами <PAD>. И формируем батч из таких "запакованых" предложений.
Чтобы это работало, нужны еще два небольших изменения в input и output модели. Если мы решаем задачу классификации, мы хотим, чтобы LLM выдавала отдельный ответ на каждый элемент в "запакованной" последовательности. Обычно у нас на выходе LLM один выделенный CLS токен (обычно это первый или последний токен текста), и на основе эмбеддинга CLS токена LLM выдает распределение вероятностей на классы. Теперь давайте сделаем вот что: во-первых, выберем значение max_seq_per_pack, т.е. максимальное количество предложений, которые мы можем "запаковать" в одну последовательность. И теперь у нас будет не один, а max_seq_per_pack CLS токенов. Например, пусть это будут последние max_seq_per_pack токенов. И на основе их эмбеддингов на последнем слое LLM мы и будем считать max_seq_per_pack распределений вероятности на классы, один на каждое из возможных предложений внутри элемента батча.
А еще надо дать LLM возможность понять, где внутри одного запакованного элемента находятся токены первого предложения, где — второго, где — третьего и т.п. Дать ей это понять нужно затем, чтобы self-attention для токена одного предложения не мог "смотреть" на токены из других предложений. Для этого вместе с входной последовательностью в LLM подается маска внимания (attention mask). Выглядеть она может примерно так:
packed_sequence: Мама мыла раму Я люблю дождь <PAD> <PAD>
attention_mask: 1 1 1 2 2 2 0 0
Т.е. в маске внимания указано, какой токен принадлежит какому предложению. Это используется внутри self-attention, чтобы корректно считать матрицы внимания.
Ну и, надо сказать, чем хорош этот трюк с example packing. Вспомним, что в Transformer-based LLM обрабатывают все элементы поданной на вход последовательности параллельно. Используя example packing, мы добиваемся, что несколько элементов данных теперь могут быть обработаны параллельно. Так можно получить хороший буст по времени обучения и инференса модели: аж в 6-9 раз. Такой сильный прирост обусловлен тем, что в текстовых датасетах чаще всего большинство предложений — короткие, и их "запаковывание" очень сильно уменьшает время, за которое можно сделать одну эпоху обучения.
И пара последних замечаний:
- Существуют разные алгоритмы того, как выбирать элементы датасета для запаковывания в одну последовательность. Это прям целая наука;
- Example Packing можно использовать далеко не только для задачи классификации текстов, но и для многих других. Просто формат получения ответа из LLM нужно будет поменять чуть по-другому.
Подробнее почитать про example packing можно вот в этой статье. Статья очень хорошая: тема разобрана тщательно, понятным языком, с картинками, видео и кодом.
Небольшая задачка по предобработке признаков в ML.
Раньше я иногда вела семинары по feature engineering в классическом ML, и для них моим любимым датасетом были данные вот с этого соревнования (реальное соревнование, проводилось много лет назад). Тут по информации о клиенте банка нужно было предсказать, возьмет ли клиент потребительский кредит у нашего банка, или выберет другой. Информация о клиенте включала стандартные поля вида "пол", "возраст", "уровень дохода" и т.п. Разумеется, в доступе на boosters.pro был только train set, но я просто делила его на train-test для занятия и соревы на каггле для учеников.
Нравился мне этот датасет тем, что в нем признаки очень разного рода, и на них можно было показать много разных вариантов предобработки и нюансов. При этом в целом признаков не очень много, что позволяет легко на данные смотреть и с быстро с ними работать, не перегружая мозг (не то что стандартный датасет house prices, от которого у новичков немного ужас).
Так вот. Есть в этом датасете признак "living_region". В этом признаке словами был написан регион РФ, в котором живет клиент. Например,
"Башкортостан респ."
"Чувашия"
"Москва гор."
Мало того, что признак был грязный — один и тот же регион мог быть записан по-разному ("Москва" или "Москва гор."), так в нем было еще и очень много значений (80+, как регионов РФ). Вставал вопрос, как этот признак предобработать. Одна из простых идей — скриптом привести все имена регионов в один формат и бахнуть бинаризацию категориального признака. В этом случае из-за того, что некоторые регионы встречались в выборке нечасто, возникало два рода ситуаций:
- какой-то бинарный признак (т.е. какой-то регион) встречался в тренировочной части выборки, и не встречался в тестовой части;
- какой-то бинарный признак (т.е. какой-то регион) встречался в тестовой части выборки, и не встречался в тренировочной части;
Понятно, что в обоих случаях модель из sklearn, обученная на train части, не сможет сделать предсказание на тестовой части (тупо кол-во столбцов в данных разное). Вопрос: что в таком случае правильно делать?
Т.е. вопрос в следующем: что правильно делать, если:
- в тестовой части данных оказался признак, которого нет в тренировочной?
- в тестовой части данных не оказалось признака, который есть в тренировочной?
P.S. Связанный интересный вопрос — как вообще лучше предобрабатывать признак "регион" в данных =)
Ну и раз уж мы заговорили о теме детекции сгенерированного контента, то с текстами дела обстоят так же плохо. Детектить их супер сложно. Сейчас не существует подхода, который бы давал приемлемое качество детекции.
Я текстами не занимаюсь, но ими занимается Юра, автор канала New Yorko Times. У него было несколько постов по этой теме:
- Доклад автора на DataFest-2023 про детекцию сгенерированного научного контента;
- Даже OpenAI не может сделать нормальный детектор;
- Важность задачи детекции фейкового научного контента. Индустрия paper mills. Можно почитать хотя бы ради того, чтобы ужаснуться, как в "научной среде" торгуют авторством статей;
- Факап на соревновании по детекции сгенерированного контента;
- Обратная задача: генерация фейковых текстов, которые для детекторов выглядят настоящими;
- Обзор детекторов фейкового текста.
(Юра, завел бы ты хэштег для fake_text_detection, ато постов накопилось)
А еще Лаида занимается текстами. И у нее есть научные статьи по детекции сгенерированного текста на основе исследования матриц внимания BERT-подобных моделей. Полгодика назад она писала об одной такой статье пост у себя на канале.
Если я что-то пропустила, может быть, авторы этих каналов придут в комментарии и что-то добавят. А в целом, я бы советовала прочитать эти посты хотя бы затем, чтобы ясно понять, насколько эта задача сложна. И в следующий раз, когда появится супер-стартап, заявляющий, что "мы детектируем фейковые тексты с точностью 99%", вы такому стартапу деньги не давали)
FILIP: CLIP, у которого близость можно измерять между эмбеддингами отдельных патчей картинки и токенов текста.
(статья еще с 2021, но я реально об этой идее узнала вот прям недавно)
Как работает обычный CLIP:
У обычного CLIP text и image encoder — это трансформеры. Image Encoder — это ViT, который разбивает картинку на 16х16 патчей, и на последнем слое выдает эмбеддинги каждого патча + эмббединг специального CLS токена. Text encoder — трансформер, который выдает эмбеддинги токенов текста. Текст при этом обрамляется токенами <BOS> и <EOS>.
Эмбеддинги CLS токена картинки и <EOS> токена текста считаются эмбеддингами картинки и текста соответственно. И CLIP учится делать так, чтобы эмбеддинги CLS токена картинки и <EOS> токена текста были близки для пар (картинка, описание этой картинки), и далеки для пар (картинка, текст), где текст не является описанием картинки.
Что предлагают в FILIP:
Предлагают чуть изменить лосс-функцию CLIP так, чтобы можно было измерять близость между эмбеддингами всех патчей картинки и всех токенов текста. Т.е. чтобы можно было понять, какая часть картинки соответствует какому куску текста.
Для этого предлагают на каждой итерации обучения делать вот что. Пусть нам пришла пара (картинка, текст). Прогоняем их через image и text encoder и делаем следующее:
- для каждого эмбеддинга патча картинки I_i ищем самый близкий эмбеддинг токена текста T_imax;
- считаем общую близость картинки к тексту L_IT как среднее произведений I_i • T_imax для каждого патча картинки;
- то же самое делаем в обратном направлении: т.е. для каждого эмбеддинга токена текста ищем самый близкий эмбеддинг патча картинки и считаем общую близость текста к картинке L_TI;
- итоговая близость картинки и текста L = L_IT + L_TI
- делаем итерацию обучения сети с помощью L и contrastive loss. Т.е. если пара (картинка, текст) соответствуют друг другу, мы максимизируем L, если не соответствует — минимизируем.
Кажется, что такое обучение заставляет FILIP выучивать больше деталей об изображениях. Это подтверждается экспериментами по zero-shot text-to-image и image-to-text retrieval: на 2021 год FILIP брал SOTA. По сравнению с CLIP прирост был очень существенный.
Ну и еще такой вид обучения позволяет с небольшими дополнениями построить prompt-based сегментацию на основе FILIP. Но об этом в следующий раз =)
Напоследок надо сказать, что такой вид обучения занимает гораздо больше времени и памяти. Авторы статьи решают это тем, что уменьшают размер эмбеддингов до 256 и точность значений эмбеддингов с fp32 до fp16.
📄Статья
И снова пост в продолжение истории про роль метрики оценивания качества моделей ИИ, и LLM в частности. Мне тут в рассылке MIT Tech Review попалась статья под названием "Large language models aren’t people. Let’s stop testing them as if they were". В ней — рассуждения разных ученых о том, почему, по их мнению, некорректно оценивать языковые модели теми же методами, как и человеческий интеллект.
В последнее время мы слышали много историй о том, какой высокий у GPT-4 IQ, как LLM лучше справляются с разного рода тестами и экзаменами и т.п. И это все вносит достаточный вклад в то, что люди начинают сильнее бояться развития LLM и последствий этого. И в статье MIT Tech Review приводят пару аргументов, почему мы не очень правильно воспринимаем результаты этих оцениваний.
Первая мысль такая: все эти тесты были разработаны для тестирования именно человеческого интеллекта. И они используют некоторые предположения о человеческом интеллекте, которые могут быть (и кажется, так и есть) не верны для LLM. Например, у LLM нет чувства здравого смысла относительно физики реального мира: если спросить LLM самый простой вопрос вида "как переложить конфеты из одной миски в другую", она не справится. Т.е. LLM не понимают базовых принципов взаимодействия с миром, хотя у людей это то, что базово умеет каждый маленький ребенок. И сравнивать баллы за тест по биологии/математике LLM и человека поэтому не очень честно.
Мои мысли на этот счет такие: это неудивительно. LLM просто неоткуда получить понимание физических процессов. Мне кажется, что чтобы такой здравый смысл относительно физики появился, нужно научить LLM с миром взаимодействовать. Т.е. следующий шаг в эволюции ИИ — это робототехника и ИИ для них. Вообще об этом уже задумываются: вот тут я писала о статье в Nature, где авторы как раз подчеркивают проблему неумения ИИ взаимодействовать с реальным миром, и даже предлагают новый тест Тьюринга, который бы оценивал у моделей в том числе подобные умения.
Вторая мысль в статье касается обучающих/тестовых выборок. OpenAI в своих технических репортах заявляют, что тестовые данные для GPT-4 не пересекаются с тренировочными, и что они это проверяли. Но если говорить о стандартных тестах по математике/биологии со стандартными формулировками вопросов, то в тренировочной выборке могли попадаться очень сильно похожие. А в этом случае то, что GPT-4 так хорошо справляется с такими тестами, уже не кажется удивительным: модель могла просто запомнить (memorize) вид ответа.
Одно из свидетельств, что такое может быть — твит Horace He, который протестировал GPT-4 на задачах с Codeforces. И на задачах, опубликованных до 2021 года, модель показала отличный результат — 10/10 задач. На задачах, опубликованных после 2021 года результат был 0/10. Статья также утверждает, что это не единственное подобное свидетельство. Это может означать, что GPT-4 таки запоминает некоторые виды промптом, а не "интеллектуально их решает".
Мне кажется, что это делает тестирование LLM очень сложным. Как тогда вообще понять, почему модель хорошо повела себя на какой-то из задач: действительно ли она их решает, или просто запоминает? Если бы я была LLM-рисерчером, я бы, наверное, заинтересовалась этим вопросом и попыталась придумать техники, как это понимать) Или, может быть, такие уже есть, но я о них просто не знаю?
📄 Статья
Мы открываем набор на осенний семестр школы глубокого обучения Deep Learning School!
DLschool — это школа при ФПМИ МФТИ, где мы учим нейронным сетям с самых азов до продвинутого уровня. Полный курс состоит из двух частей, каждая из которых длится полгода.
- Первая часть посвящена введению в нейросети и компьютерному зрению. Начинаем с основ машинного обучения и нейросетей, переходим к CNN для обработки картинок, заканчиваем переносом стиля изображений и ГАНами.
- Вторая часть полностью посвящена обработке естественного языка (NLP) и обработке звука.
Сейчас идет набор на первую часть. О новостях второй части курса напишем отдельно (скоро).
Особенность нашей школы в том, что мы даем много практики (теория при этом тоже есть, разумеется, и немало). Вам предстоит много практических домашних заданий и самостоятельный итоговый проект в конце семестра. По окончании обучения вы точно получите нужные практические навыки работы с нейросетями. Больше информации об организации курса и подробную программу первой части можно найти тут.
Преподаватели школы — ведущие специалисты российских и зарубежных IT-компаний и научные сотрудники исследовательских лабораторий. Среди них — я (Таня), буду вести у вас несколько лекций про CV, сегментацию и архитектуры сетей =)
Школа бесплатная. Полностью онлайн: учиться можно из любой точки мира, где есть интернет. Занятия проходят раз в неделю — лекция, семинар и домашнее задание. Обучение проходит на платформе Stepik. Берем всех, отбора нет.
❗️Начиная с этого года также есть возможность приобрести дополнительный пакет, в который входит индивидуальная поддержка от менторов и преподавателей в прохождении курса, а также дополнительные вебинары. Подробнее о нем читайте на нашем сайте.
Занятия начинаются 16 сентября. Регистрация продлится до 23 сентября. Чтобы зарегистрироваться на курс, оставьте заявку на нашем сайте. После этого вам на почту придет письмо со ссылками на курс на Степике, на канал и чат в Телеграме (письмо может идти 15-20 минут).
Ссылки:
Наш сайт
Подробная программа и оргинформация первой части курса
Ответы на часто задаваемые вопросы (F.A.Q)
Наш YouTube (тут видео всех лекций и семинаров школы, а также открытые лекции и интервью)
Наша группа VK
Поддержать нашу школу на Boosty
❗️В этом году в организации школы произошли некоторые изменения по сравнению с предыдущими потоками. Подробнее о них читайте тут. Также хочется сказать, что мы за лето хорошо поработали над организацией, и теперь не будет задержек в выкладке материалов, проверке дз и решении других вопросов =)
Если остались вопросы, пишите нам на почту (dlphystech@gmail.com), в сообщения в группе VK или в комментарии под этим постом.
И ждем вас в чатике курса в новом семестре! =)
Присоединяйтесь к TechTrain 2023 Autumn — онлайн-фестивалю, посвященному машинному обучению и искусственному интеллекту.
#промо
На TechTrain будут обсуждать:
– LLMs: ускорение интерфейса и деплой;
– Обучение искусственного интеллекта психотерапии;
– Программирование игр с ChatGPT (экспресс-хакатон);
– Оптимизацию рекомендательных систем: метрики, архитектуру и практические советы;
– Эволюцию и будущее NLP;
– Автоматизацию разметки данных с помощью ML-моделей;
– Разбор успешного кейса: от Jupyter к MLOps;
– Conjoint-анализ: зачем нужен, как устроен, как использовать.
После каждого доклада участники смогут пообщаться со спикером в дискуссионной комнате и задать волнующие вопросы.
Дата проведения: 30 августа. Фестиваль бесплатный, нужно только зарегистрироваться.
Увидела в одном из чатов обсуждение AGI (да, опять) и того, погубит ли оно в конце концов человечество. Одна из причин страха такого развития событий — наблюдения, что большие модели типа GPT-4 часто начинают "внезапно" демонстрировать способности, которых у моделей поменьше, кажется, нет и в помине. Ну, например, если обучить языковую модель с количеством параметров 10B, то она, внезапно, начинает уметь в zero-shot question answering или отгадывание загадок. А у моделей с меньшим количеством параметров, сколько их ни обучай, таких способностей не возникает.
(на всякий случай: количество 10B и примеры задач взяты тут с потолка. Надеюсь, общая идея понятна)
Этот эффект называется "emerging abilities of Large Language Models". Из-за него кажется, что большое количество параметров каким-то магическим образом позволяет модели развить умение решать сложные задачи, развить абстрактные высокоуровневые способности типа reasoning, abstract thinking, понимание связей, юмора и т.п. И если эту мысль экстраполировать, то появляется идея, что при еще большем увеличении количества параметров модели у нее также внезапно может появиться и условное "сознание". На этом и основываются многие страхи AGI-апокалипсиса.
Так вот. Это все напомнило мне одну статью, про которую я уже давно хотела написать в канал, но как-то руки не доходили. Называется она "Are Emergent Abilities of Large Language Models a Mirage?". В ней авторы говорят, что эффект emerging abilities — это мираж. И на самом деле его нет (или почти нет). А способности к reasoning, abstract thinking и т.п. у модели появляются не внезапно, а очень даже предсказуемо. Вся проблема в том, что мы неправильно считаем метрики.
Давайте пример. Возьмем задачу "отгадай загадку". Модели подается на вход загадка на естественном языке. В ответ модели нужно выдать ответ тоже на естественнос языке.
В качестве метрики качества ответов LLM на такой задаче обычно берется exact string match. Т.е. metric=1, если модель ввыдала текст, полностью совпадающий с правильным ответом, и metric=0 в любом остальном случае. И вот если смотреть на то, как меняется эта метрика для моделей с разным количеством обучаемых параметров, тут как раз и наблюдается тот самый внезапный эффект. Маленькие модели получают acc = eps, а модели тяжелее условных 10B параметров внезапно показывают acc>0.5.
В чем тут проблема? А в том, что метрика супердискретна. Она не учитывает то, как при увеличении параметров модели меняется распределение вероятностей модели на ответы. И на самом деле дела обстоят так: при увеличении размера модели она научается давать все больше вероятности адекватным вариантам ответа на загадку, и все меньше — бредовым. Короче, на самом деле учится все лучше и лучше решать задачу. И при каком-то значении размера модели она становится способна давать настолько много вероятности правильным ответам, что нашу дискретную метрику exact string match "прорывает" от почти 0 сразу до большого значения.
Короче, мысль такова: на самом деле способности по большинству задач растут вполне предсказуемо с ростом размера моделей. Заменив дискретные метрики на более непрерывные, авторы этой статьи показали, что по крайне мере на 92% задач из Big Bench никакого "внезапного" прорыва у больших моделей не происходит. Качество на них растет плавно и предсказуемо при увеличении размера моделей.
А еще авторы показали, что такой же эффект "emerging ability" можно смоделировать и на обычных автоэнкодерах на датасете CIFAR100. Нужно только поменять метрику качества на чуть более дискретную, чем обычно используется (об этом в разделе 5 статьи)
Вот так. Конечно, этот результат не означает, что у моделей точно никаких "emerging abilities" быть не может, и сознание она никак не получит. Нет. Но это, как минимум, повод задумываться над всеми "странными" результатами, которые получают исследователи, и лучше их изучать. А не просто экстраполировать и сразу делать страшные выводы.
📄Статья
В конце июня в Ванкувере была конференция CVPR (на которую у меня был билет, но я не поехала, потому что Канада не выдала визу в срок😒)
CVPR — самая масштабная конференция по computer vision, на которой много воркшопов и туториалов.
Воркшоп — это раздел конференции, где собраны доклады вокруг конкретной темы. Например, event-based vision или Vision-Centric Autonomous Driving. Это часто либо более обзорные доклады, чем те, что на основной конференции, либо вообще work in progress — доклады об исследованиях, которые еще не закончены, и в которых еще не получены явные результаты. Туториал — это также раздел с докладами на определенную тему, но они более вводные и более глубокие, дающие представление о конкретном разделе исследования. То есть, такой мини-курс. Часто еще на туториалах бывает интерактив (практика).
И вот вам списки туториалов и воркшопов с CVPR-2023:
- Воркшопы;
- Туториалы.
Видео многих из них к этому моменту уже выложены в открытый доступ, а некоторые будут выложены в ближайшее время.
Конкретно я буду смотреть туториал Recent Advances in Vision Foundation Models
#learning
Еще небольшой комментарий: у меня в универе на reading club мы как-то разбирали эту первую статью про Grokking. И у профессора-британца возник вопрос: а почему вообще этот эффект назвали Grokking?
Покопавшись в статьях на эту тему, обнаружили, что одни из основных авторов, пишущих статьи по этой теме — физики. В частности, вот есть Eric Michaud, PhD на физическом факультете MIT. Тема его диссертации — improving our scientific/theoretical understanding of deep learning, и исследование Grokking — одна из центральных тем. Он соавтор той статьи про объяснение гроккинга через устройством поверхности лосс-функции и нормы параметров сети. И кто-то из коллег предположил, что термин Grokking был заимствован из физики (астрономии, в частности). Хотя, сказать по правде, я сейчас гуглила, и особо упоминания этого термина не нашла.
Но нашла другое — подкаст-интервью с Eric Michaud, где он рассказывает о своей научной работе. Две большие темы — квантизация моделей и как раз Grokking. Есть видео, аудио и текстовые версии интервью
🎧Слушать тут
P.S. В комментариях подсказали, откуда на самом деле взяли термин Grokking
Всем привет! В последнее время я была очень занята, но обычные посты в канале возобновятся совсем скоро. А пока вот вам пара образовательных апдейтов:
#learning
1️⃣ Лаида (наша верховная Техножрица) завершила цикл постов на тему "как вкатиться в ML с нуля за ноль рублей". В ее презентациях — пошаговый план изучения области со ссылками на курсы/книги. Всего три части:
- Часть 1: предварительные знания;
- Часть 2: ML/DL (что такое и как/где учить);
- Часть 3: вспомогательные инструменты и поиск работы;
Если у вас есть знакомые, кто хочет перейти в ML, будет хорошей идеей отправить им эти презентации. Возможно, кого-то спасет от покупки дорогих курсов, обещающих "дойти до middle ML engineer и зп в 200k за 3 месяца"
2️⃣ Мои друзья из Mathshub запускают бесплатный интенсив по развитию soft skills для IT специалистов. Интенсив ориентирован на тех, кто стал или собирается стать руководителем в команде (даже если только в будущем). Старт 8 августа, длительность три недели. Больше информации об интенсиве тут.
А если вдруг я пропустила что-то классное в образовательной сфере за последние недели, делитесь в комментариях =)
Как-то я писала пост о foundation models in computer vision. В частности, писала, что один из кандидатов в foundation model in CV — это генеративные модели а-ля Stable Diffusion. Мысль была такая: чтобы научиться хорошо генерировать картинки, нужно действительно много понимать о сути и взаимодействии объектов на изображении. Т.е. хорошая генеративная модель много "знает" о данных и строит полезные внутренние представления объектов.
А раз так, то эти ее знания и внутренние представления можно пытаться из модели извлекать и применять для решения других задач. Так и сделали авторы статьи "Unleashing Text-to-Image Diffusion Models for Visual Perception": они применили предобученный U-Net из Stable Diffusion для решения задач семантической сегментации, referring segmentation и depth estimation.
Общая идея такая:
Берем картинку и текст к ней.
- Для семантической сегментации текст — фразы вида "a photo of a X", где X — один из классов сегментации;
- Для referring segmentation текст — это, собственно, описание объекта, который мы хотим на картинке найти;
- Для depth estimation текст — фразы вида "a photo of a X", где X — общий класс картинок, например "a photo of a street" для датасета фото улиц.
Текст прогоняем через текстовый энкодер из Stable Diffusion. Затем его вместе с сжатой картинкой подаем на вход U-Net из Stable Diffusion. Вытаскиваем из декодера U-Net feature maps и cross-attention maps. Их конкатенируем и подаем на вход обучаемому декодеру, который решает нужную задачу — semantic/referring сегментацию или depth estimation. Для тех задач декодеры разные.
Вот так на основе информации из предобученной диффузии простенький декодер учится решать сложные задачи. Эксперименты показывают, что метод работает, показывая на всех задачах лучший результат, чем многие supervised и self-supervised методы.
📄 Статья
#paper
UPD: выдали запись лекции (большое спасибо!), обновила пост выше
Читать полностью…Если уж и проходить курс по промпт-инженирингу ChatGPT, то только такой:
Курс ChatGPT Prompt Engineering for Developers от DeepLearning.Ai в коллаборации с OpenAI. Преподаватели — сам Эндрю Ын и Isa Fulford (Member of Technical Staff, OpenAI).
#learning
Это небольшой (9 занятий) курс о том, как эффективно общаться с ChatGPT так, чтобы получить максимально точный, полный и удобный (в нужном формате) ответ на ваш запрос. Курс практический: каждое занятие —скринкаст jupyter notebook с кодом составления промпта, запроса к API и получения результата. Рядом со скринкастом открывается интерактивный jupyter, где вы сами можете запускать код занатия и изменять его.
Пока что курс бесплатный. Пишут, что станет платным, когда обучающая платформа DeepLearning.AI выйдет из beta. Когда это произойдет, я не знаю.
Я курс еще не проходила, но Юра Кашницкий (автор New Yorko Times) уже прошел и поделился тем, что в курсе хорошо, а чего не хватило.
Но даже если в курсе чего-то не хватает, у курса есть community, где с другими участниками можно обсуждать темы промпт-инжениринга. Ссылка на комьюнити появится в списке уроков после записи на курс. Имхо если комьюнити будет живое, то это будет просто кладезь постоянно обновляющейся инфы про работу с ChatGPT.
Ссылка на курс