seeallochnaya | Неотсортированное

Telegram-канал seeallochnaya - Сиолошная

56987

Канал SeeAll'а с новостями (и мыслями о них) из мира NLP, VR и космоса. Более подробно смотри в первом сообщении в канале (оно запинено). А еще у нас есть чат! Заходи: https://t.me/+i_XzLucdtRJlYWUy

Подписаться на канал

Сиолошная

И последнее — исследователи проверяют свои наблюдения на (а) схожей синтетической задаче, добавив 4й атрибут (цвет фона, белый или чёрный; там всё работает ровно также) б) на датасете CelebA с фотографиями звёзд.

У них они выделяют три признака: гендер, цвет волос, улыбка/обычное лицо.


Тренируют чуть меньше, получают результаты чуть хуже (самый «далёкий» класс не успевает выйти на 100%), но это результат неоконченности эксперимента. Если продолжить обучение, то уверен, что добьётся почти идеального качества (генерации невиданных комбинаций атрибутов по запросу).

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

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

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

Читать полностью…

Сиолошная

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

Все три стадии вы можете видеть на картинке:
1️⃣(синие линии на графике слева) При этом сначала модель будет учиться хорошо рисовать только те примеры, что представлены в тренировочной выборке, а качество рисования других будет очень низким

2️⃣ (светло-розовые линии) Затем, когда качество на трейне будет около 100%, начнут потихоньку получаться фигуры, concept distance до которых равен единице. То есть они отличаются от того, что видит модель, на какой-то один атрибут

3️⃣(ярко-розовая линия) Маленький синий треугольник, 111, начнет получаться в последнюю очередь, чуть позже, чем предыдущий пункт. «Представить» его с точки зрения модели сложнее всего: уж слишком всё, на чем она тренируется, отличается. Но в какой-то момент все три типа атрибутов станут понятны, и диффузионная нейронка сможет их совместить, по итогу достигая качества в 100%

* качество определяется автоматически с помощью тренируемых линейных классификаторов, которые тренируются на всех тренировочных данных. Всего их 3 штуки, для цвета, формы и размера. Авторы их тренируют по 50 эпох (очень много), и качество на трейне у них 100%, ну, так как задача очень простая

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

Читать полностью…

Сиолошная

Compositional Abilities Emerge Multiplicatively: Exploring Diffusion Models on a Synthetic Task

Статья пытается ответить на извечную критику нейросетей, мол, они не могут производить ничего нового, работают только в рамках распределений данных, на которых их учили. Ситуация рассматривается с точки зрения композиции объектов/концептов. «Композиция — неотъемлемое свойство реального мира, в котором некоторые примитивы, такие как цвет, могут быть скомпонованы с другими примитивами, такими как форма, для создания или рассуждения о совершенно новых концепциях, которые ранее не встречались»

Вы наверняка видели черную, белую, оранжевую, синюю рыбу, но не видели фиолетовую (фуксию) — их почти не бывает. Но вы можете её себе представить, потому что знаете, как выглядит рыба и как выглядит фиолетовый. Вот это и есть композиция. Предыдущие исследования показывают, что современные диффузионные модели для генерации изображений демонстрируют возможности композиционного обобщения (помню, OpenAI делали упор ещё в DallE-1 на стул в форме авокадо как пример смешивания концептов), но ... при этом где-то, где не ждёшь, терпят неудачу в генерации композиции. И не ясно, почему у одной и той же модели что-то работает, а что-то нет. Какие концепты модель учится композировать? Что отличает эти концепты от тех, которые модель не может совместить? 🤷‍♂️

Для изучения проблемы авторы предлагают подход с обучением на синтетических данных, где для каждой картинки известны все её атрибуты. Картинки маленькие, на них по центру изображена фигура, которая характеризуется (1) размером (2) цветом (3) формой. Каждый атрибут может иметь ровно 2 значения: большой и маленький, синий и красный, круг и треугольник. Получается всего 8 комбинаций, которые можно закодировать бинарно: 000, 001, 010, ... , 110, 111. Обратите внимание, что два кода, отличающихся на одну цифру, отличаются ровно одним концептом. 000 и 001 могут отличаться, например, формой, 110 и 111 — тоже формой (последняя цифра), а вот 100 и 110 отличаются цветом.

Авторы вводят понятие «concept distance», расстояние между концептами. Это по сути то, сколько шагов изменения 0 на 1 или 1 на 0 нужно сделать, чтобы получить новый класс. Самые дальние друг от друга 000 и 111, они отличаются всем: размером, цветом, формой (расстояние 3). То же верно для 010 и 101.

Для каждой тройки цифр генерируется по 625 картинок 28x28 пикселей, где цвет и размер чуть-чуть меняются: на какой-то картинке красный представлен как ярко-красный, на какой-то блеклый серо-буро-малиновый. Размер «большой» может быть как просто больше среднего, так и немного вылазящий за границы картинки.

Внимание, вопрос:
Если натренировать модель только на картинках, относящихся к классам 000, 001, 010, 100, то сможет ли она генерировать классы 011, 110, 101? И что самое страшное класс 111 (самый «далёкий» с точки зрения расстояния между концептами — нужно сделать как минимум 2 изменения относительно исходных изображений в тренировочной выборке)

Читать полностью…

Сиолошная

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

Теперь нужно связать все сегменты в иерархический граф, напомню, этаж->комната->объект (зачем? см. предыдущий обзор). Начинаем с простого: этажи. Поскольку для каждого снимка есть трёхмерная позиция, то всё просто — по высоте легко отфильтровать, что относится к первому этажу, а что ко второму итд — там прям невооруженным глазом видна последовательность (но можно разделить и автоматически). Это показано на левой части картинки.

Дальше нужно как-то выделить комнаты. Так как по множеству фотографий с картами глубины можно создать почти полную 3D модель (через проекцию точек в пространстве камеры), то можно сделать и вид сверху на эту модель. Дальше поверх карты со стенами применяется парочка не-ИИшных алгоритмов (Euclidean distance field + Watershed algorithm), которые позволяют выделить крупные соседствующие сегменты, «заливающие» пустое пространство в комнатах (поэтому алгоритм и называется WATERshed, кек 🌊).

Ну а дальше всё просто, те объекты что попадают в область комнаты — считаются принадлежащими ей. Получается иерархия: этажи -> комнаты -> объекты.

При этом:
— этажи легко пронумеровать (первый, второй, третий — по высоте)
— комнаты называют через... классификацию CLIP'ом. Берут заранее штук 20 названий (оффис, переговорка, кухня, спальня ...), подставляют в промпт «эта комната — ...», и сравнивают с каждой фоткой. Таким образом без дообучения делается классификация с присваиванием метки
— объекты никак не обозначаются, и остаются лежать в виде неупорядоченного набора «сегмент -> усреднённые CLIP-вектора»

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

Читать полностью…

Сиолошная

Hierarchical Open-Vocabulary 3D Scene Graphs for Language-Grounded Robot Navigation (сайт проекта)

В недавнем разборе я упоминал способы создания иерархического графа отношений, описывающих некоторую локацию для дальнейшего использования роботом на основе LLM. Там использовался метод Hydra, но я немного поискал и нашёл более свежий и продвинутый подход — про него сегодня и поговорим. Предполагается, что вы читали пост про CLIP, и в дальнейшем будет подразумеваться, что для любой картинки или текста можно сделать вектор, такой, что чем более пара векторов похожа, тем больше шанс, что они описывают одно и то же.

На вход в алгоритм поступает множество изображений (или видео) формата RGB-D, для каждого из которых известна локация и угол съемки. D означает depth, глубина, что позволяет определить относительное расположение объектов (какие дальше, какие ближе). На самом деле это требование не жёсткое, так как а) существуют нейронки для предсказания глубины изображения по фото б) есть алгоритмы определения относительного положения разных снимков относительно друг друга. Так что при желании можно это всё восстановить просто из набора фоток, хоть и получится чуть шумнее. Но если что — последние iPhone умеют записывать карты глубины, на то им столько камер и датчиков.

Сначала создаётся словарь сегментов. Для этого к каждой фотографии применяется модель от META, Segment Anything (SAM). Она предсказывает маски (границы) для всех объектов на фото, при этом не предсказывает для них классы — работает с чем угодно. Одна маска = один сегмент. Но один и тот же объект может засветиться на нескольких фотках, поэтому их нужно сопоставить. Так как для каждого кадра известна позиция, из которого его сделали, то можно определить, что вот этот сегмент (маска), скажем, стул на одной фотке — это вот этот сегмент на другой фотке. Это пригодится чуть позже.

Читать полностью…

Сиолошная

ChatGPT стал доступен на Windows для всех (качать тут), но это не единственная новость.

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

Правда, фича не будет полезна тем, кто уже пользуется копайлотами или Cursor (а такие вообще остались, кто и использует ChatGPT, и программирует без копайлота/Cursor? акак?)

Читать полностью…

Сиолошная

Слева представлена визуализация процесса обучения, описанная в прошлом посте.

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

Каждую из меток вы подставляете в строчку «a photo of a {object}» (она может быть другой) и пропускаете через текстовую половинку. Для N строчек вы получаете N векторов.

Затем берёте изображение, применяете к нему картиночную половинку нейросети. Получаете один вектор. Дальше считаете схожесть между ним и всеми N векторами текстов. Текст, который соответствует самому похожему вектору, наилучшим образом описывает картинку — и так вы можете «предсказать», что на ней нарисовано.

Читать полностью…

Сиолошная

Две цитаты Noam Brown, исследователя из команды, сделавшей o1 (до этого он работал над лучшими покерными ботами, которые обыграли профессионалов):

> Мы существуем в мире, где количество мощностей, потребляемых большими языковыми моделями во время этапа предтренировки, очень, очень большое. Однако затраты на применение моделей очень низкие. И у многих людей возникли обоснованные опасения, что мы начнем наблюдать снижение отдачи от прогресса в ИИ, поскольку затраты и объем данных, необходимых для предтренировки, станут астрономическими. И я думаю, что действительно важный вывод из o1 заключается в том, что стена [преграда на пути масштабирования] на самом деле не существует, что мы на самом деле можем продвинуть технологию намного дальше. Потому что теперь мы можем масштабировать вычисления во время работы модели в режиме предсказания.

> Я хочу подчеркнуть здесь, я думаю, что результаты тестирования очень впечатляют, но более важная вещь — это траектория. Здесь видно, что мы получаем огромные приросты от увеличения мощностей на предсказания, и мы можем продолжать масштабировать вычисления во время работы модели в режиме предсказания. Эти цифры качества — я могу это почти гарантировать — вырастут в следующие 1-2 года.

(обе — из вот этой лекции)

===

Два ответа, которые мне понравились из комментариев к прошлому посту: 1, 2

Читать полностью…

Сиолошная

Прошла всего неделя, а журналист Эрик Бергер, который ранее точно описывал события внутри NASA, уже оценивает шансы отмены всей программы национальной ракеты SLS, как 50/50. Не просто отмену будущих запланированных апгрейдов, а всей ракеты целиком.

SLS сейчас является основной системой по доставке астронавтов к орбите Луны на корабле Orion. При этом программа справедливо критикуется за раздутый бюджет и отставание по срокам.

На сегодняшний день:
- Общие расходы на ракету SLS и корабль Orion оцениваются в $50 миллиардов.
- Каждый запуск SLS в оптимистичном сценарии оценивается в $2.5 миллиарда, и до $4.8 миллиардов при консервативной оценке.
- Суммарный бюджет на лунную программу Artemis может приблизится к $100 миллиардам в ближайшие годы, если не будет изменений. И даже это не гарантирует высадку астронавтов до китайском миссии.
- Стоимость каждого изделия двигателя RS-25, которые ранее летали на Шаттлах, сейчас находятся на отметке в $100 миллионов за штуку. Вместо плана оптимизации стоимости, велика вероятность, что цена новых изделий возрастёт до $120 миллионов. При наличии 4 двигателей на SLS, почти $0.5 миллиарда будет уходить только на эту часть в рамках каждого пуска.
- Разработка новой второй ступени EUS для SLS 1B отстаёт на 7 лет и выросла в 3 раза по бюджету — сейчас оценивается в $2.8 миллиарда.

С учётом этих вводных и желании новой администрации срезать лишние расходы, остаётся не так много опций:
1. Заморозить разработку SLS на текущем блоке, отменить будущие апргрейды, использовать оставшиеся изделия в нескольких миссиях Artemis.
2. Полностью отказаться от SLS, и запускать корабль Orion отдельно от разгонного блока на существующих решениях. Далее стыковать обе части на орбите и разгонять к Луне.
3. Заменить SLS другой сверхтяжёлой ракетой и запускать за один раз вместе с разгонным блоком.
4. Полностью отказаться от SLS, Orion и будущей станции Lunar Gateway, и пересобрать программу на более современной архитектуре.

Поскольку ранее Эрик Бергер неоднократно рассказывал о событиях внутри NASA до официальных анонсов (он ссылается на свои внутренние источники), то его оценка имеет достаточно высокий вес, чтобы обратить на неё внимание.

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

Ну а про альтернативные опции поговорим подробнее в следующем посте.

Читать полностью…

Сиолошная

Состояние дел в AI:

неделю назад приготовил презентацию на 8 слайдов, на сегодня уже два неактуальны. Ну ладно, один с натяжкой, скорее дискуссионный, но всё равно

😣

Читать полностью…

Сиолошная

https://fixupx.com/tsarnick/status/1856065476759302167

Как видите, Dario очень точен в предсказаниях 🤣 😀

Читать полностью…

Сиолошная

И пара примеров работы (самое интересное — на первом видео, там всё по шагам)

Читать полностью…

Сиолошная

На картинке — пример графа, обозначающего помещение. Красная точка, самая верхняя часть — этаж, зелёные точки это комнаты, а в них уже разложены разные вещи. Все точки имеют человекочитаемое и понятное название («комната_ника», «холодильник», «первый_этаж»).

Авторы подмечают, что могут начаться проблемы, когда граф большой (много комнат, релевантных запросу, потому их нельзя «свернуть», и в каждой много объектов), и количество токенов в промпте превышает лимит LLM. В их экспериментах использовалась оригинальная GPT-4 👴, на дворе-то была середина 2023-го. Там всего 8192 токена, что смешно по текущим меркам, когда почти все модели поддерживают 100'000+. Но при этом исследователи попробовали посоздавать несколько сотен фейковых комнат, и пока релевантная часть графа влазила в контекст — у LLM не было проблем (работало даже с 200 разными комнатами!). То есть «шум» с ненужными частями графа не сильно влияет на качество.

А поскольку строится иерархия объектов, то можно покрывать огромные пространства (ибо LLM за раз будет видеть малую часть). Интересно, появилась ли за прошедший год статья, в которой замахиваются на целый район с несколькими зданиями? Дайте знать, если видели.

Немного про тестирование: было две сцены, одноэтажный офис с 37 комнатами и 150 объектами, и трёхэтажный дом, 28 комнат/112 объектов. Для них придумали 90 задач, от простых «найди мне что-нибудь невегатерианское» до «давай сделаем пранк над Нико» (тут ожидается, что по объектам в помещении LLM сама придумает, как реализовать пранк, что откуда взять итд). GPT-3.5 вообще не вывозила (0% решено), часто зацикливалась на одних и тех же комнатах, а вот GPT-4 справлялась хорошо.

Проверка была в 2 стадии:
— как хорошо модель оперирует графом, то есть как часто находит нужные объекты. Можно было найти больше, главное не пропустить ключевые. Получилось 86.7% и 73.3% для простых и сложных запросов
— как хорошо модель по готовым под-графам планирует. Напомню, тут всего 2 действия: пойти куда-то и сделать что-то (но у последнего есть несколько подвидов, «взять», «открыть», итд). Тут тоже всё здорово, 93.3% для простых и 73.3% для сложных запросов. Основные проблемы, выявленные во время анализа, это галлюцинации с выдумыванием вершин графа и проблемы со счётом (в запросах по типу «сколько комнат») и расстояниями («ближйшая ...»). Наверное, o1 тут по 97% выдала бы 🚽

Читать полностью…

Сиолошная

Начинаем рабочую неделю с часовой лекции Sasha Rush (Associate Professor @ Cornell University, Researcher @ HuggingFace 🤗) под названием «Speculations on Test-Time Scaling» (спекуляции по поводу того, как работает модель OpenAI o1). Презентация техническая, содержит большое количество ссылок на разные работы для самостоятельного изучения.

Разбирать я её не буду, так как тем, кому интересно разобраться в деталях и предпосылках o1, лучше смотреть саму лекцию. А тем, кому не интересно — им и не интересно 🧠 Лишь отмечу, что Sasha рассматривает несколько направлений исследований касательно цепочек рассуждений, и для каждой указывает, почему и чем это отличается от o1 — и по итогу ни одна идея полноценно под всё не подходит(

Смотреть на YouTube
PDF со слайдами
Репозиторий со ссылками на все упомянутые статьи

Это мы смотрим 🍿

Читать полностью…

Сиолошная

Do As I Can, Not As I Say: Grounding Language in Robotic Affordances (сайт проекта с демками)

Немного старая статья (2022-й год!); в ней в одной из первых предложили скрестить LLM и роботов с целью улучшения планирования решений сложных задач. Тогда VLM ещё не было (LLM, которые умеют понимать картинки), поэтому будет несколько странных шагов.

Итак, LLM обладают огромными знаниями о мире, примерно представляют, как взаимодействуют объекты; и вот всё это как-то хочется утилизировать в роботе, чтобы не программировать каждый запрос и краевой случай вручную — пусть эту функцию на себя берёт модель. Есть две проблемы с использованием LLM из коробки для составления плана решения задачи:
1. LLM не знает, какие вообще действия возможны
2. она не знает, какие действия уместны (что находится вокруг робота, и в каком состоянии он находится)

Авторы предлагают собрать набор навыков (скиллов), каждый из которых характеризуется коротким текстовым описанием («взять банку колы», «подъехать к урне») и выученным поведением. Всего в него включен 551 навык, включая 7 разных возможных типов действий и 17 объектов («взять банку колы» и «взять губку» — разные навыки, так как требуют разной моторики).

Далее берётся LLM (в случаев исследователей из Google это старушка PaLM на 540B параметров), в неё подаётся промпт с более чем десятком примеров «пользовательский запрос -> упорядоченная декомпозиция запроса по навыкам». В конец промпта приписывается новый запрос, затем пишется 1. , и к этому приклеиваются все 551 описаний действий по одиночке (то есть это 551 разный запрос к LLM). Языковые модели хороши тем, что они определяют вероятности отдельных слов, а перемножая эти вероятности можно получить вероятность всего предложения, описывающего навык. Например, вероятность того, что к запросу «принеси с кухни банку колы» первое действие будет «встать около мусорки» очень маленькая, а вот «пойти на кухню» — большая.

Теперь мы получили 551 вероятность, характеризующие разные действия. Но они никак не обособлены на реальность, на состояние мира вокруг робота. Если я прошу принести яблоко, то первое действие очень отличается в зависимости от того, есть или нет яблоко на картинке, которая видна роботу. Поэтому авторы вводят вторую вероятность — affordance, прямого перевода нет, но я бы сказал, что это смесь «возможность», «разумность» и «вероятность успеха». Оно рассчитывается для каждого навыка по-своему: для каких-то натренирована отдельная модель, принимающая на вход картинку, для других это запрограммированная функция (например, нормализованная дистанция до точки — чем дальше, тем меньше affordance).

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

Читать полностью…

Сиолошная

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

При этом без всех трёх концептов модель не может генерировать объект класса 111, потому он получается в последнюю очередь, и точность его генерации (= как часто классификаторы говорят, что картинка совпадает с ожиданием «маленький синий треугольник») долгое время находится около нуля... пока неожиданно не взлетает вверх. Если смотреть только на эту часть, то может показаться, что навык эмерджентный, появился изниоткуда — как это происходит у LLM. Пока несколько концептов не встанут на свои места — какую-то задачу решать не получается. А потом хоп — и всё.

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

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

Читать полностью…

Сиолошная

Вот эти 4 типа используем в тренировке:
— большой красный круг (000)
— большой синий круг (001)
— маленький красный круг (010)
— большой красный треугольник (100)

Модель тренируется с нуля, никаких других картинок не видит.

Читать полностью…

Сиолошная

А применение графа немного отличается от того, что было в прошлой статье. Там все объекты имели названия и были подписаны, здесь же мы этого не далаем. В основном потому, что хочется работать с любыми произвольными названиями, не ограничиваясь заранее заданным списком объектов. Условно «банка колы», «кола», «баночка кока-колы» итд — это всё один объект (сегмент), но, как говорили древние, «определить — значит ограничить».

Предположим, в робота, в которого загружена иерархия дома и комнат, поступает запрос: «найди унитаз в туалете на втором этаже». Запромптченная (с примерами) LLM выделяет из него 3 подзапроса: какой этаж, какая комната, какой объект. И выдаёт:
— 2й этаж (это мы знаем как найти)
— туалет (это у нас уже есть)
— унитаз (этого нет)

Из графа загружаются все объекты, входящие в комнату «туалет». Для каждого объекта, напомню, есть вектор, который характеризует его содержимое. А дальше снова применяем CLIP: делаем вектор из фразы «это фото унитаза» и сравниваем его с векторами каждого объекта в комнате. Тот, который похож больше всего, и есть искомый. Voila, теперь робот в точности знает, где что к чему идти (координаты ведь тоже известны для каждого сегмента), и может отправляться в путь (action graph на картинке выше).

Хоть построение графа и ориентирование по нему и автоматизированы, думаю, что под капотом там много констант (когда объединять сегменты, на сколько отличается высота этажей, итд), что из коробки не будет работать прям везде. Но большая часть всё равно делается скриптами. Особенно мне понравился трюк с классификацией объектом пост-фактум, когда мы не определяем их заранее. Это позволяет сохранять гибкость в идентификации практически чего угодно. И в то же время замена всех моделей в пайплайне на более современные (лучше SAM, лучше CLIP, лучше LLM) будет давать приросты.

Читать полностью…

Сиолошная

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

Где-то в серединке процесса разные сегменты с разных фотографий склеиваются друг с другом на основе доли пересечения точек, спроецированных в 3D пространство на основе данных камеры, как в примере с сегментом-стулом выше. Если доля пересечения высокая — предлагается считать два сегмента за один. Таким образом после объединений может появиться мешанина разных векторов, описывающих один и тот же предмет.

Чтобы этот разрешить, применяется алгоритм кластеризации DBSCAN поверх всех векторов, попавших в представление одного объединённого сегмента. Выбирается самый большой кластер (то есть в котором больше всего точек с CLIP-векторами), а затем берётся вектор, который ближе всего к его центру — и говорится, что мол вот это и есть вектор-описание сегмента.

То есть:
получить вектора отдельных точек на каждой фотке -> сопоставить разные фотки и объекты на них -> соединить разные сегменты, представляющие один и тот же объект -> найти самый репрезентативный вектор среди принадлежащих сегменту
(это всё изображено на правой части картинки)

Читать полностью…

Сиолошная

Уже пару раз писал про METR (Model Evaluation and Threat Research), одну из компаний, которая специализируется на разработке сложных бенчмарков для оценки моделей будущего, и про их определение ARA, «автономная адаптация и репликация» (в контексте AI-агентов). Вчера они выпустили новый блог с описанием их видения «модели угрозы мошеннической репликации».

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

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

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

Особенно интересен второй пункт — как зарабатывать деньги, чтобы оплачивать GPU и электричество? Один из способов — киберпреступления, в частности BEC-скамы. Это когда разным компаниям отправляются ненастоящие счета на оплату. Звучит глупо, а недавно был случай, когда задержали человека, который несколько лет посылал счета Google и Facebook, а те оплачивали их — суммарно на 121 миллион долларов 😀 А вся индустрия на момент 2022-го оценивалась в 2.7 миллиарда долларов. Даже если AI-агенты смогут развернуться на 5% от этого — наберутся сотни миллионов долларов. А уж писать письма и находить информацию в интернете LLM-ки умеют и сегодня.

По итогу, METR выписали для себя 11 задач по трём вышеуказанным направлениям, каждая из которых занимает от 3 часов до 2 недель. Там есть и программирование с дообучением моделей, и написание писем с целью обмана и получения средств, и... недельная игра с попыткой «скрываться» на серверах от реальных высокооплачиваемых экспертов по кибербезопасности.

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

🍿 будем следить за прогрессом по этим бенчмаркам

Читать полностью…

Сиолошная

По итогу модель можно адаптировать без обучения к практически любому набору меток — и не нужно собирать данные. OpenAI показали, что их модели имеют сопоставимое (или даже лучшее) качество на широком наборе датасетов, актуальных в 2021-м году. При этом на наборах данных, которые отличаются от привычных, модель более стабильна, и её качество так сильно не просаживается (картинка 1)

На остальных картинках показаны примеры работы в нестандартных задачах для классификации разных типов объектов (обратите внимание, что отвечает не всегда правильно). И всё это без дотренировки, из коробки

Основная ценность:
— метки классов не предопределены, и можно задавать любой текст с любым описанием; это называется «open vocabulary» (открытый словарь?), когда модель не обучена на конкретно один зафиксированный набор текстовых меток.
— можно сравнивать произвольные тексты и картинки, выявляя наиболее схожие пары

CLIP'ы и их наследники открыли дорогу к множеству новых задач, для которых просто не было больших размеченных наборов. Теперь люди собирали по 10-100 примеров за 1 вечер, проверяли качество, немного играли с текстовыми промтами (какой запрос рабоатет лучше, кроме «a photo of») — и всё. Или учили логистические регрессии поверх, если хотели. И даже для дальнейшего дообучения CLIP'ы подходили лучше за счёт большей «насмотренности».

😪 а сейчас можно заменить на VLM и сё (будет чуть дороже, хотя Gemini Flash вообще копеечная)

Читать полностью…

Сиолошная

[CLIP] Learning Transferable Visual Models From Natural Language Supervision

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

Давным давно модели для работы с изображениями тренировали с помощью «больших» (около миллиона! это был сарказм) размеченных наборов данных, где для каждой картинки была проставлена метка класса. Вот на этой картинке собачка, тут кошка, здесь грузовик. Такой способ тренировки упирался в возможность разметить все картинки, а ведь чем больше классов (текстовых описаний), тем сложнее это делать. Подумайте сами, вот вам нужно для картинки выбрать один из тысячи классов — это ж сколько нужно держать в голове, чтобы ничего не упустить.

При этом получалось, что: а) с новыми классами модели работали или средне, или плохо б) для новых классов нужно было собирать данные и размечать их в) модели были сильно ограничены в наборе концептов, так как по сути выучивали всего ~1000 объектов.

OpenAI предложили изменить подход — как было с GPT, хотелось обучать модели на огромных (почти) неразмеченных наборах данных, взятых из интернета. Для этого они собрали 400 миллионов пар (картинка; текст). Текст мог быть очень разнообразным, от простой подписи «кошка» до длинного предложения или двух (около 55 слов).

Далее обучали две модели, одна для текста, другая для картинок. Обе модели переводили входные данные в вектора (набор цифр) одного и того же размера. Тренировка была задумана так, чтобы если текст соответствовал картинке, то вектор (результат работы нейронки) картинки был бы очень близок к тексту. При этом никаких данных размечать не надо:
1) выбираете случайным образом N пар картинка-текст (порядка десятков тысяч)
2) делаете предположение, что самый релевантный текст для конкретной картинки в этой куче — это именно подпись к картинке, а не какой-то другой текст
3) считаете вектора для N картинок и текстов, а затем — меру схожести между векторами
4) обе модели (текстовую и картиночную) штрафуют за то, что схожесть между векторами картинки+текста из одной пары маленькая, а текста и всех других картинок (и также картинки и всех других текстов) — большая.

Давайте на пальцах, предположим N=2. Есть фотографии кошки и собаки , и такие же подписи: «кошка», «собака». Пропускаем их через модели, затем считаем 4 расстояния: от каждой из двух картинок к каждому из двух текстов. Получаем квадратик (матрицу) схожестей 2 на 2. В идеале результат должен выглядеть так:


X кошка собака
кошка 1 0
собака 0 1

(по одной оси картинки, по другой тексты, не важно где что)

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

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

Читать полностью…

Сиолошная

Я хотел сделать опрос, но понял, что не могу сформулировать множество опций. Поэтому сделаем в виде поста — а ваши варианты пишите в комментариях

Вопрос: в чём, по-вашему, основная ценность исследования OpenAI, которое вылилось в модель o1?

Может быть это показывает, что от LLM пока не нужно уходить? Или наоборот? Или приросты в бенчмарках на 10-60%? Или что-то кардинально иное?

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

А «голосовать» можно лайками (если согласны с какой-то из опций)

Читать полностью…

Сиолошная

Больше — завтра, и всем спокойной ночи

Читать полностью…

Сиолошная

Помните я писал про ARC Benchmark (первый и второй пост), который нацелен на проверку абстрактного/пространственного визуального мышления?

Закончился конкурс, проводимый авторами, с фондом в $125'000. Как только начали фигурировать деньги — так сразу пошёл прогресс: до этого лучший результат был примерно 20% решённых загадок (и не использовал LLM). Сейчас же первое место закончило с результатом 55.5%, и это при том, что из-за технических проблем они не смогли отправить решение с 58% правильных ответов.

Пусть вас не смущает «маленькая» цифра — задачи-примеры на картинках это одни из самых простых, но есть и куда более сложные. Средний человек, согласно замерам вот тут (1729 человек!), набирает примерно 60.2%, если давать две попытки отправить ответ (и 47.8, если одну). В соревновании такой же формат, можно предложить два решения.

Однако в соревновании жесткие ограничения по ресурсам, которые хоть и выглядят разумно (9 часов на 100 задач с 1 GPU 8 летней давности), но всё же не позволяют развернуться на полную.

Кроме этого, с начала ноября вышло две крутых статьи с описанием методов, как можно ещё улучшить качество. Их разборы наверное будут в канале, но тем, кому не терпится, вот:
— Combining Induction and Transduction for Abstract Reasoning (генерируют огромное количество синтетических задач, используя GPT-4, и тренируют маленькую модель, которая решает задачи через написание python-кода)
— The Surprising Effectiveness of Test-Time Training for Abstract Reasoning (вот это вообще очень крутая идея, перед применением модели для конкретной задачи генерируется несколько схожих, используя модель из статьи выше, и на них дообучается LLM; обучение своё для каждой отдельной задачи. Достигают 61.9%, что выше среднего человеческого результата)

Читать полностью…

Сиолошная

5-часовое интервью с бывшим VP Research OpenAI, а ныне CEO Anthropic Dario Amodei (на самом деле там есть и другие сотруднрики, например, часик с Chris Olah по механистической интерпретируемости).

https://www.youtube.com/watch?v=ugvHCXCOmm4

😭 а когда смотреть... 🫤

Читать полностью…

Сиолошная

Ещё из интересного: авторы смотрели, какая логика лежит за действиями LLM по исследованию графа здания, какие комнаты и почему она решает обойти.

Например, когда попросили «найти объект K31X», то модель, поскольку не знала что это такое (и я не знаю), начала разворачивать (и потом сворачивать) все комнаты по порядку, имитируя алгоритм поиска в ширину. А когда просили «найти J64M, который должен содержаться при температурах ниже нуля градусов» — модель сразу решала проверить часть графа, ответственную за морозилку в холодильнике на кухне — как и человек.

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

На картинках:
1. Примеры простых и сложных вопросов на поиск и планирование (последняя колонка).
2. Обзор всей системы, слева поиск релевантных частей графа, справа планирование на основе выявленных вершин графа.

Читать полностью…

Сиолошная

SayPlan: Grounding Large Language Models using 3D Scene Graphs for Scalable Robot Task Planning (сайт проекта с демками)

По названию и домену похоже на статью, разобранную вчера — SayCan, где LLM декомпозировала задачу на понятные роботу команды и составляла из них план. Но реализация планов многоэтажных и многокомнатных помещениях представляет собой серьезную проблему для робототехники. Цель этой работы —  решить проблему планирования задач с длинным горизонтом планирования в крупных помещениях. Это требует от робота как понимания абстрактных и неоднозначных инструкций (за это отвечает LLM, тут всё как в вышеупомянутой работе), так и понимания окружающей среды.

Авторы предлагают предварительно превратить описание помещения в граф, где каждая вершина — это отдельная сущность со своими атрибутами, а рёбра означают возможные связи между сущностями. Например, вершина «кофемашина» может быть связана с вершиной «кухня», и иметь атрибуты «можно включить; можно выключить; сейчас — выключено». Все объекты вкладываются в комнаты, в которых находятся, комнаты объединяются в этажи, этажи в здание. Итого 4 уровня — получается иерархия. Собирать такие графы для помещений можно вручную, можно (полу-)автоматически — авторы переиспользуют работу других исследователей: Hydra. Разбор этого или более продвинутого метода сделают когда-нибудь потом.

Так вот, у нас есть граф, который описывает все объекты и зависимости между ними. При подаче в LLM его схлопывают до самого высшего уровня — этажи, и подают в LLM (то есть всего 1-10 элементов) в виде JSON-словарика. То есть никаких описаний мелких объектов пока нет. LLM глядит на граф, читает задачу («принеси алкоголь с кухни») и может сделать одно из трёх действий:
1) выбрать какую-то вершину графа (на первом шаге это этаж, на втором — комнаты, итд) и углубиться в неё — то есть включить в промпт все зависимые объекты
2) схлопнуть вершину (сделать обратное: убрать всё лишнее)
3) закончить планирование

Трюка, которые стоит упомянуть, тоже три:
1) все предыдущие действия дописываются в промпт как «память», чтобы модель не шастала по одним и тем же комнатам по 10 раз
2) LLM пишет цепочки рассуждений перед выбором дейсвтия
3) в промпте есть несколько примеров, для каких запросов какие команды с каким графом выполнять, чтобы LLM лучше поняла задачу.

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

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

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

Читать полностью…

Сиолошная

В ходе тренировки LLM не дообучается (она просто генерирует планы), но обучается нейронка, которая оценивает affordance и учится выполнять навыки (какие сигналы нужно подать на моторы, чтобы выполнить действие) — и всё это происходит в симуляторе. Модель тут обучается через Reinforcement Learning, задерживаться на этом не будем. Если кому интересно прочитать про симулятор, использующий GAN (устаревшие аналоги Stable Diffusion, генерирующие картинки) — можно это сделать тут.

Для старта процесса обучения авторы собрали более 68 тысяч демонстраций, записанных на 10 роботах в течение 11 месяцев. Именно на этих данных и обучалась описанная выше модель (не LLM). Кроме этого, из симулятора достали ещё 12 тысяч успешных демонстраций, и тоже подмешали в тренировочный набор.

Предложенный пайплайн обладает некоторыми приятными свойствами:
— из-за LLM даже без дополнительной тренировки всё работает на разных языках: авторы показывают успех с запросами на китайском, французском и испанском.
— если у вас уже есть выученный навык (контроль робота), то его очень легко добавить: 1) добавляете пару примеров планов задач в промпт 2) просто начинаете рассчитывать для него предсказания вероятности от LLM 3) придумываете эвристику для расчёта affordance. Например, авторы показывают добавление навыка «открыть ящик» (и его успешное внедрение в план) с эвристикой «affordance=1 всегда, когда робот в радиусе метра от ящика, и =0 в другом случае».
— для сложных многоуровневых задач можно использовать цепочки рассуждений, CoT, давая модели время порассуждать перед генерацией плана. Жаль, что исследователи не замерили приросты качества от этого(

Про оценку подхода говорить много не буду, так как сравнить её не с чем. Взяли 101 разную инструкцию, от простого «принеси банку колы» до сложного «I left out a coke, apple, and water, can you throw them away and then bring me a sponge to wipe the table?» (тут модели нужно следить за разными объектами и разобраться, к чему относится them). Оценивали долю успешных декомпозиций плана на навыки и исполнение отдельных навыков. План был правильным (= приводящим к успеху) в 84% случаев, выполнение — в 74%. Думаю, что первую цифру с современными моделями уровня GPT-4 легко можно было бы поднять до 95%+ — авторы смотрели на 16% ошибок и пытались понять, что пошло не так. В 2/3 случаев продолбалась LLM (выдала плохие вероятности действий), в 35% расчёт affordance.

И ещё очень понравилось, что написали авторы под конец:

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

На картинке:
визуализация процесса написания плана действий по ходу работы. Синие бары — вероятности действия от LLM, красные — от affordance, а зелёное — это произведение, по которому определяется действие к исполнению.

Читать полностью…

Сиолошная

The Information поделились новым куском информации про грядущую модель под кодовым названием Orion (aka GPT-5... или нет)

Тезисно:
1️⃣ В мае Sam Altman говорил сотрудникам компании, что следующая модель будет значимо лучше, чем GPT-4. На тот момент процесс предтренировки (самый ресурсоёмкий) был закончен на 20%, и Orion уже сравнялся по качеству с GPT-4 по «интеллекту» и навыкам, проверяемым разными бенчмарками. По более ранней информации The Information, Microsoft отдали свежий крупный кластер в распоряжение OpenAI в ~феврале, а тренировка началась попозже (и к маю достигла вот 20%)
2️⃣ По словам некоторых сотрудников OpenAI, использовавших или тестировавших Orion, хотя её производительность в конечном итоге превзошла оную предыдущих моделей, прирост качества оказался гораздо меньше по сравнению с переходом от GPT-3 к GPT-4 (что логично: в большинстве задач и бенчмарков просто невозможно так скакнуть; например, если раньше был скачок от 65% до 85% в какой-то задаче, то теперь же не до 105% прыгать).
3️⃣ Другой сотрудник сказал, что Orion лучше справляется с языковыми задачами, но может не превзойти предыдущие модели в, например, программировании (что для меня звучит странно, я бы ожидал ровно обратного). Моё примечание: может быть так, что журналисты что-то не так поняли, и, скажем, в OpenAI сравнивали обкатанную заточенную GPT-4o и голый Orion без существенного дообучения на выполнение запросов. А может и нет 🤷‍♂️
4️⃣ OpenAI ещё предстоит завершить длительный процесс тестирования безопасности Orion перед публичным запуском.
5️⃣ 🚨Компания планирует выпустить Orion в начале следующего года🚨; однако название модели может отклониться от традиционного нейминга «GPT» для флагманских моделей (R.I.P. GPT-5)
6️⃣ Частью проблемы дальнейшего масштабирования является наличие высококачественных данных. Уже сейчас Orion активно тренируют на синтетических данных, то есть таких текстах, которые сгенерированы другими моделями (o1 или gpt-4o). Для этого создана отдельная команда под руководством Nick Ryder (VP of Research, 5.5 лет в компании), одной из дополнительных целей которой является определение того, насколько долго можно будет следовать законам масштабирования

Ранее TheVerge писали, что Gemini 2.0, планируемая к запуску в декабре, не показывала ожидаемых приростов метрик во внутренних замерах. В этой новости The Information не говорилось про «ниже ожиданий» касательно Orion, но настроение немного схожее.

Ожидаем 🥊крепкую битву тяжеловесов🥊 к середине первого квартала 2025-го

Читать полностью…
Подписаться на канал