- PVSM.RU - https://www.pvsm.ru -
Привет! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество [1]!
Представлены обзоры 11 статей по Computer Vision, Natural Language Processing, Reinforcement learning и другим темам.
Статьи на сегодня:
Авторы статьи: Jeffrey O Zhang, Alexander Sax, Amir Zamir, Leonidas Guibas, Jitendra Malik (University of California, Stanford University, 2019)
Оригинал статьи [21] :: GitHub project [22]
Автор обзора: Андрей Лукьяненко (в слэке artgor)
Авторы задумались о том, как бы улучшить использование pretrained нейронок так, чтобы уменьшить оверфиттинг (бывает, если данных мало), уменьшить забывание, улучшить качество. И придумали. A давайте брать pretrained сетку, не трогать её саму по себе, но добавлять ещё одну такую же сетку и файнтюнить её, и объединять их. Улучшение качества продемонстрировали на текстах, картинках, RL и других штуках. Казалось бы, это просто увеличение количества параметров, но по факту получается интереснее.
Суть, ещё раз в том, что:
Один из плюсов: мы свободны менять размер и архитектуру второй сетки. Поэтому если у нас мало данных и "простой" таргет, то можем делать маленькую сетку. Если данных много или таргет "сложный", можно делать более тяжелую сетку. Поскольку основная сетка не меняется, можно сказать, что вторая учит residuals от первой. Получается такой мини boosting.
Лосс-функция следующая: L(x,y) = || D(alpha B(x) + (1 — alpha) S(x)) — y||. Как уже говорилось, самый простой способ объединения — взвешенный блендинг. Стоит отметить, что при alpha=1 у нас получается просто feature extraction, при aplha=W0 — просто fine-tuning. А если менять aplha в процессе тренировки, а потом делаем равным 0, то получается что-то похожее на stage-wise тренировку в RL. Ещё вариант — hyperbolical decay. В таком случае мы типа взвешиваем приор и учим нашу оценку. Таким образом получается максимизация постериорной оценки.
Ну а дальше можно упороться вдохновиться и сделать шаг дальше:
Благодаря тому, что мы фиксируем веса после тренировке на каждой задаче, модель не забывает это.
Дальше они сравнивают side-tuning с разными подходами на разных датасетах. Для начала берут Taskonomy и iCIFAR (делят CIFAR на 10 групп по 10 классов и учат по очереди на группах). Sidetune (A) — объединение двух сеток не весами, а адаптером — multilayer perceptron. В итоге side-tuning уступает только Progressive NN.
Дальше они доказывают, что подход работает и для других доменов:
Результаты экспериментов:
Авторы статьи: Gwenaelle Cunha Sergio, Minho Lee (Kyungpook National University, South Korea, 2020)
Оригинал статьи [23] :: GitHub project [24]
Автор обзора: Андрей Лукьяненко (в слэке artgor)
Авторы задумались о том, что в реальности в текстах нередко слова пропущены или написаны с опечатками, что создаёт проблемы на стадии создания эмбеддингов, — хорошо бы что-то делать с этим.
Придумали: а давайте возьмём input, на него наложим embedding слой, а затем трансформер, потом запихнем в denoising transformers, чтобы на выходе получить более качественное представление входных данных. В результате multilayer perceptron может реконструировать эмбеддинги пропущенных слов и создавать более абстрактные и полезные эмбеддинги, а трансформеры улучшают эти эмбеддинги.
Идею проверяли на the Chatbot Natural Language Understanding Evaluation Corpus и Kaggle's Twitter Sentiment Corpus. Подход показал улучшение F1 и генерализации на твитах и в задаче Speech2Text улучшение предсказания сентиментов и интентов.
В итоге предлагается 2 новых идеи:
Предложенная архитектура выглядит вот так:
Начало архитектуры как в BERT — токенизация, эмбеддинги и прочее. Файн-тюнинг делается на "incomplete text classification corpus". Denoising transformer — это stacks of multilayer perceptron друг на друге и bidirectional transformers. На входе — эмбеддинги неполных предложений, на выходе — эмбеддинги полных предложений. (о самом датасете будет сказано ниже). Эмбеддинги получены с помощью обычного берта. Размерность (N, 768, 128) — размер батча, эмбеддинг токена и максимальный размер последовательности.
Stacks of multilayer perceptron:
Лосс для сравнения реконструированного эмбеддинга и оригинального полного эмбеддинга — MSE.
Когда эмбеддинги готовы (видимо после тренировки), они передаются в bidirectional transformers и это будет новый input. Дальше делается fine-tuning на incomplete text classification corpus.
Как уже говорилось раньше, использовалось 2 датасета.
Twitter Sentiment Classification
Взяли датасет с каггла (1.6 млн твитов). Из него взяли 200 примеров твитов (поровну позитивных и негативных) с пропущенными словами или опечатками. Вначале отдали в Amazon Turk, чтобы люди написали правильные твиты. Выглядит это как-то так:
И файн-тюнили на этих 200 примерах. Валидировались на 50 примерах, которые были без исправлений.
Intent Classification from Text with STT Error
В данном случае был датасет с корректными предложениями, и нужно было сгенерить предложения с ошибками. Они просто прогнали текст через Text-to-Speech и обратно через Speech-to-Text — вот и получились ошибки. В датасете 2 интента и он тоже маленький (файн-тюнили вообще на 100 примерах)
Они пробовали разные готовые решения для TTS, STT. Вот примеры:
Эксперименты:
Все модели тренировали по 3 раза для классификации интента: на полных данных и на "ухудшенных" данных после gtts-witai и macsay-witai. Для обоих задач получили улучшенное качество.
Авторы статьи: Wenguan Wang, Xiankai Lu, Jianbing Shen, David Crandall, Ling Shao (UAE, USA, 2020)
Оригинал статьи [25] :: GitHub project [26]
Автор обзора: Андрей Лукьяненко (в слэке artgor)
Авторы предлагают использовать attentive graph neural network (AGNN) для задачи zero-shot video object segmentation (ZVOS). Фреймы используются как ноды, а связи между парами фреймов — ребра, которые описываются дифференцируемым attention. Подход работает не только для ZVOS, но и для image object co-segmentation (IOCS).
Основные заявленные преимущества AGNN:
Архитектура такая:
Каждое видео — граф. Ноды — фреймы; все ноды связаны друг с другом (interconnected и есть self-connections для каждой ноды). Суть идеи в использовании стандартных способов GNN для обучения — message propagation внутри графа. А на выходе получаем бинарные сегментационные маски для видео.
Важные моменты модели:
Эксперименты:
Ablation study:
Авторы статьи: Jesse Sun, Fatemeh Darbeha, Mark Zaidi, Bo Wang (Toronto and Waterloo, Canada, 2020)
Оригинал статьи [27] :: GitHub project [28]
Автор обзора: Андрей Лукьяненко (в слэке artgor)
TL;DR: UNet + дополнительный поток данных + dense + dual attention decoder = SOTA + interpretability
Главная идея: разнообразные CNN хорошо работают для сегментации, в том числе медицинских картинок. Но у них не хватает робастности и интерпретируемости. Одна из причин этого — CNN обычно учат текстуру картинок, а не форму объектов. Стандартные подходы к интерптерации — gradient-based saliency методы. Но обычно это требует дополнительные вычисления и не всегда достаточно хорошо интерпретируется.
В предлагаемой архитектуре берется UNet и добавляется второй поток данных, в который подаётся информация о форме объектов. Ещё они используют dual-attention decoder, и именно он даёт интерпретируемость без дополнительных вычислений после инференса. Результат: SAUNet — SOTA на SUN09 и AC17.
SAUNet
Как уже говорилось, в модели 2 потока данных.
Texture stream
Это UNet, но вместо энкодера используются dense блоки похожие на Tiramisu. И декодер — dual attention decoder block.
Gated shape stream
Вдохновились архитектурой Gated-SCNN.Как видно в верхней части архитектуры, данные из unet на каждом шаге downsample идут в верхний стрим. Объединие информации из стримов делается с помощью gated convolutional layer: alpha_L = sigma(C_1x1(S_L||C_1x1(T_t))), где S — feature map из shape stream, T — feature map из texture stream, C1x1 — 1х1 convolution.
Они конкатенируются по каналам, на них накладывается ещё один convolution и активация сигмоидой. Можно ещё увидеть residual blocks — это 2 нормализированных 3x3 convolution со skip-connection. А затем мы ещё раз берем S и поэлементно умножаем на alpha. И пропускаем через ещё один residual block.
К выходу из steam shape добавляется deeply supervision и можно посчитать Ledge. Это binary cross entropy loss между оригинальными и предсказанными границами картинки. Благодаря этому модель учится предсказывать форму объектов: "The output of the gated shape stream is the predicted shapefeature maps of the classes of interest concatenated channel-wise with the Canny edges from the original image. Theoutput is then concatenated with the texture stream featuremaps before the last normalized 3x3 convolution layer ofthe texture stream."
Dual Attention Decoder Block.
Берем стандартный подход (2 нормализированных 3x3 convolution на сконкатенированных feature maps) и добавляем две новые вещи: Spatial attention path и Channel-wise attention
Spatial attention path
Это используется для интерпретируемости. По факту это два convolution 1x1 (после первого получается C/2 каналов, после второго получается один канал), затем накладываем sigmoid. И наконец стакаем С раз (как каналы, чтобы потом можно было делать поэлементное умножение).
Channel-wise attention path
Для улучшения качества. Это SE модуль.
Dual-Task Loss function
Это взвешенный лосс: L_total = lambda1 L_CE + lambda2 L_Dice + lambda3 * L_Edge
Они просто использовали значение 1 для каждой lambda.
Эксперименты
По обоим экспериментам результаты данного подхода лучше. Даже сделали Ablation study и показали, что shape stream реально приносит пользу. Пишут, что это реально полезно плюс работает быстрее, чем saliency maps.
Авторы статьи: Lingzhi Li, Jianmin Bao, Hao Yang, Dong Chen, Fang Wen (Peking University, Microsoft Research, 2019)
Оригинал статьи [29] :: Non official GitHub project [30]
Автор обзора: Алекс Широн (в слэке shiron8bit)
Еще одна попытка сделать person agnostic gan-архитектуру для face swap, не требующую для двух новых персон обучения новой модели, а осуществляющую обучение на некотором большом наборе лиц в разных визуальных условиях без аннотирования этих условий. На самом деле, это развитие идей из статьи этих же авторов [31], в которой объединяются эмбеддинг переносимого лица и эмбеддинг визуальных условий/атрибутов лица-реципиента и по которым генератор создает новое изображение, только в этот раз с многоуровневым unet-style энкодером атрибутов, adain-style блоком для объединения эмбеддингов разной природы и постпроцессингом в виде сетки, улучшающей изображения в сложных условиях, когда лица частично чем-то закрыты.
Первая (и основная) часть, осуществляющая непосредственно перенос лица X_s в визуальные условия лица X_t, представлена на рисунке выше (a) и состоит из многоуровнего энкодера атрибутов и генератора AADGenerator, в котором в AADResBlck блоках происходит объединение информации от эмбеддинга атрибутов конкретного уровня и эмбеддинга переносимой персоны z_id (у авторов это эмбеддинг от предобученной ArcFace-сетки), при этом перед подачей на вход нового AADResBlck блока текущая feature map апсэмплится с использованием билинейной интерполяции. На первый блок в качестве основного входа поступает feature map, получаемая из вектора z_id апсэмплингом с использованием transposed 2d convolution.
Каждый AADResBlck, как видно из рисунка (b), представляет из себя Residual block, в котором помимо relu и сверток присутствует несколько (2 или 3 в зависимости от того, совпадает ли число входных/выходных каналов) AAD-слоев.
При этом AAD-слой, вдохновленный AdaIN/SPADE-слоями (в соответствии с современными веяниями: статья1 [32], статья2 [33]), берет на себя основную функцию объединения информации от эмбеддинга персоны и эмбеддинга атрибутов на текущем уровне и делает следующее:
Использование многоуровнего энкодера вместе с маской позволяет нам при генерации на каждом уровне определять, какая инфа в каком регионе важнее — от эмбеддинга переносимой персоны или от эмбеддинга атрибутов на заданном уровне: так, эмбеддинг персоны сильно влияет на все изображение на низких разрешениях (4x4, 8x8), на средних уровнях (16x16, 32x32) маска концентрирует влияние переносимой персоны только на отдельные регионы (контуры глаз, рта, лица), на высоких разрешениях основной вклад вносят эмбеддинги визуальных атрибутов.
Ablation study показывает, что использование маски позволяет получать куда более хорошие результаты, чем при простом суммировании/конкатенации A_k и I_k. Также показано, что уменьшение числа слоев энкодера атрибутов ведет к ухудшению результатов (по умолчанию используют 8 для картинок 256x256).
При обучении помимо стандартного для ганов adversarial loss используются 3 дополнительных лосса: L_id контролирует качественный перенос персоны (в данной работе используют косинусное расстояние между исходным эмбеддингом и эмбеддингом снегерированного изображения, а раньше использовали L2 между эмбеддингами, хотя в контексте обычно нормированных в Arcface эмбеддингов это не принципиально), L_rec — обычная попиксельная L2-ошибка восстановления изображения (которая учитывается только в случаях, когда в качестве X_s и X_t подается одна и та же картинка, при этом раньше авторы для случая с разными изображениями оставляли вес 0.1), L_att — лосс для контроля качества сохранения визуальных атрибутов при генерации нового изображения Y_s,t.
Предложенная архитектура AEI-Net дает неплохие результаты, однако у нее могут возникать проблемы в случае, если на X_t лицо будет частично чем-то закрыто. Ранее некоторые работы использовали сегментационные сетки, позволяющие выделить только незакрытые части лица, а закрытые части предлагалось брать из оригинального изображения. Авторы же для решения этой проблемы предлагают еще одну Unet-архитектуру Hear-Net, в которой на вход подается сгенерированное изображение Y_s,t, а также разность между оригинальным изображением X_t и сгенерированным Y_t,t (когда перенесли на X_t лицо из самого X_t). Основная идея такова: если подавать на оба входа AEI-Net одно и то же изображение, она будет размывать и искажать участки, где лицо чем-то перекрыто, поэтому разность может дать нам неплохую подсказку, какие области у сгенерированного лица нуждаются в улучшении.
Обучение осуществляется в semi-supervised режиме, в котором нет ground truth, но есть два лосса, контролирующих одновременно похожесть на результат первой сетки Y_s,t и на оригинал X_t (L_chg и L_rec соответственно). Поскольку зачастую в датасетах лиц не так уж и много примеров с чем-то закрытыми лицами, авторы предложили использовать синтетические данные, получаемые наложением объектов из EgoHands, GTEA Hand2K, ShapeNet на лица исходного датасета (объединение CelebaHQ, FFHQ и VGGFace).
Авторы статьи: Daniel Adiwardana, Minh-Thang Luong, David R. So, Jamie Hall, Noah Fiedel, Romal Thoppilan, Zi Yang, Apoorv Kulshreshtha, Gaurav Nemade, Yifeng Lu, Quoc V. Le (Google Brain, 2020)
Оригинал статьи [34] :: Blog [35]
Автор обзора: Артем Родичев (в слэке fuckai)
TL;DR
Команда из Google Brain получила SOTA генеративную чатбот модель под названием Meena. Тренировали огромный Evolved Transformer в 2.6B параметров на корпусе в 340GB диалогов на поде из 2048 TPU v3 в течении 30 дней. Модель разносит все сравнимые общедоступные чатбот системы по человеческим и автоматическим метрикам. Приведены примеры диалогов, судя по ним AGI близко.
Суть
Модель представляет из себя seq2seq архитектуру, где энкодер — 1 блок Evolved Transformer’a, дэкодер — 13 таких блоков. Наглядно на первой картинке к посту. В качестве обджектива — минимизация perplexity(далее ppl). Сравнились с ванильным трансформером, у него качество по ppl получилось немного хуже, 10.2 vs 10.7 ppl.
Токенизация стандартная — BPE, но с размером словаря сделали интересное — взяли только 8K byte-pairs. Основная причина, что модель огромная и с таким размером словаря она вмещается в память их TPU на 16GB. В качестве контекста в энкодер подают до 7 диалоговых сообщений, размер энкодера и дэкодера ограничили в 128 токенов.
Трейнсет намайнили из “public domain social media”. Конкретных источников не приводят, скорее всего реддит+твиттер+что-то еще. Пофильтровали корпус удаляя урлы, меншены, слишком короткие/длинные ответы, а также оскорбительные и токсичные сообщения. В итоге получилось 360GB диалогов или 876M пар (контекст, респонс).
Учили модель в течении 30 дней на TPU поде состоящем из 2048 TPU v3. За все время обучения сделали 164 эпохи по корпусу, таким образом их модель просмотрела 10 триллионов токенов. Это гугл детка.
Для генерации ответов применили несколько трюков.
Результаты
Для оценки качества ввели человеческую метрику SSA — Sensibleness and Specificity Average. Асессоров просили оценивать каждый ответ чатбота на заданный контекст по двум бинарным метрикам. Sensibleness — насколько ответ имеет смысл для данного контекста. Если ответ нерелевантный, нелогичный, противоречивый, фактологически некорректный — то он получает 0, иначе 1. Specificity — насколько ответ специфичный и распространенный. SSA = (Sensibleness + Specificity) / 2. Соответственно чем больше SSA для чатбота, тем релевантнее и интереснее он общается.
Для сравнения взяли:
Конечно Meena разнесла все остальные чатботы по Sensibleness, Specificity, и соответственно SSA. В статье в аппендиксе есть примеры диалогов с каждым из чатботов, как утверждается не черипикнутых, по ним и правда видно что Meena хороша.
Показали что есть корреляция между автоматической ppl и человеческой SSA, хотя долгое время считалось, что генеративные диалоговые модели сложно сравнивать друг с другом на автоматических метриках по причине их слабой корреляции с человеческими.
Авторы статьи: Christian Blex, Taha Yasseri (Oxford, London, UK, 2020)
Оригинал статьи [36]
Автор обзора: Семен Синченко (в слэке sem)
TL;DR
Авторы пишут о процессе фрагментации в социальных сетях. Любая социальная сеть, в которой есть малейший preferential attchment процесс, рано или поздно скатится к полной фрагментации. Авторы приводят доказательства этого для одной из моделей. Далее авторы ставят вопрос, могут ли администраторы сети избежать процесса фрагментации. И доказывают, что сохранение равномерного разнообразия и полного отсутствия сегментации не возможно.
Авторы опираются на довольно простую модель: мы начинаем с бесконечно большой сети, где у каждой вершины есть одна случайна связь. Все вершины двух разных цветов. На каждом шаге для каждой вершины выбирается новая связь с некоторым предпочтением (в реальности предпочтение обеспечивается как склонностями людей, так и рекомендательными системами) в пользу "своего" цвета. Чем больше разнообразие имеющихся связей, тем больше предпочтение. С некоторой вероятностью "забывается" одна из старых связей, причем вероятность забыть "долгоживущую" связь меньше. Авторы доказывают, что такая система в пределе приходит к полной сегментации, даже если учитывать слабые связи (aka друзья друзей). Дальше авторы предлагают механизм, имитирующий возможности администраторов сети влиять на цвет (типа мы можем показывать модифицированные рекомендации связей), после чего доказывают, что такой механизм в пределе не способен удержать разнообразие связей на уровне 0.5.
Плюсы:
Минусы:
Вспомнилась статья (не помню где) о том, что люди голосовавшие за Хиллари в США писали, что не понимают, кто голосует за Трампа, так как все, кого они знают тоже голосовали за Хиллари: кажется фрагментация это наша реальность. Не ясно, в чем опасность фрагментации, может в ограниченности информации? Или быстром достижении пределов роста? В целом постановка вопроса именно про возможности влиять на процесс фрагментации довольно любопытная и кажется, эта тема довольно актуальна.
Авторы статьи: Canwen Xu, Wangchunshu Zhou, Tao Ge, Furu Wei, Ming Zhou (Wuhan and Beihang Universities, Microsoft Research Asia, 2020)
Оригинал статьи [37] :: GitHub project [38]
Автор обзора: Александр Бельских (в слэке belskikh)
Авторы предложили новый метод Knowledge Distillation и дистильнули с ним BERT, получив x1.98 скорость при 98% перфоманса (что лучше большинства других подходов). Более того, подход является model-agnostic и не требует изобретения каких-то особых distillation лоссов, учится почти как обычная модель end-to-end. Подход вдохновлён парадоксом Тесея (Если все составные части исходного объекта были заменены, остаётся ли объект тем же объектом?) и назван Theseus Compression.
Суть его в том, что модель делится на участки по слоям, которым ставятся в соответствие более легкие аналоги, которые "присоединяются" к тем же входам-выходам. Всё это учится параллельно, а в конце модель замещается покусочно этими легкими аналогами, в итоге остаётся только легкая модель. Исходную модель называют predecessor, а модель-заместитель — successor (в противовес teacher-student)
В процессе обучения forward пасс идёт через каждую группу модулей с вероятностью p, что похоже на Дропаут и обозначется авторами как некоторая регуляризация. То есть, на каждом сабблоке происходит рандомное отключение либо predecessor, либо successor.
Веса заморожены для всех модулей, кроме модулей successor, но градиенты всё равно считаются с учётом predessor (т.к. вычисления через них тоже проходят). Обучение проходит с обычным task-specific лоссом, CE, BCE, whatever, что облегчает подбор гиперпараметров.
У вероятности замены блока представлено два режима — константный и линейно увеличивающийся. В любом случае после определенного количества эпох замещенная модель ещё некоторое время файнтюнится отдельно.
Результаты репортят как СОТА для knowledge distillation (ну а когда репортили другие). Подход теоретически подходит для любых моделей, в тч и для Резнетов и графовых. Авторы обещают в будущем поресерчить эту тему
Авторы статьи: Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton (Google Research, 2020)
Оригинал статьи [39] :: GitHub project [40]
Автор обзора: Александр Бельских (в слэке belskikh)
TL;DR
Новая СОТА в representation learning (и почти сота в semi-supervised и self-supervised) от Google Brain, которая своей простотой говорит нам, что representation learning ещё очень слабо изучен
Авторы (один из которых — Хинтон) предлагают простой фреймворк SimCLR (simple framework for contrastive learning of visual representation), благодаря которому смогли получить репрезентации, линейный классификатор поверх которых показал 76.5% топ-1 на имаджнете. Если его зафайнтюнить на 1% от всех лейблов имаджнета, то получится 85.8% топ-5 точность.
В работе показано, что:
Суть подхода:
Контрастив лосс применяется следующим образом. Из 2N получившихся изображениями на одну позитивную пару приходится 2(N-1) негативных. Лосс считается для всех позитивных пар по формуле ниже:
где sim — это cosine similarity между векторами, 1 — индикаторная функция, суть которой в том, чтоб не считать similarity между одним и тем же семплом( 1=1 if k!=i), t — температура. Эта функция уже известна и носит название NT-Xent (the normalized temperature-scaled cross entropy loss).
Учили на очень больших батчах, от 256 до 8192. Так как SGD на больших батчах может быть нестабилен, использовали оптимизатор LARS. Учили на Cloud TPU, используя от 32 до 128 ядер (в зависимости от размера батча). На 128 TPUv3 ядрах занимало 1.5 часа обучить ResNet-50 на батчсайзе 4096, 100 эпох.
Изучили очень много разных аугментаций, но обнаружили, что:
По архитектуре модели и projection head:
По лоссу:
На 12 датасетах (не Imagenet) линейный классификатор поверх выученных фичей показал сравнимые с supervised результаты. Зафайнтюненная селф-супервайзед модель показывает лучшие результаты, чем супервайзед бейзлайны на 10 датасетах из 12.
В заключении авторы делают вывод, что простота их подхода показывает избыточную сложность альтернативных методов, и что сила такого простого подхода говорит о том, что self-supervised обучение всё ещё остаётся сильно недоизученным
Авторы статьи: Gregory Kahn, Pieter Abbeel, Sergey Levine (Berkeley AI Research, USA, 2020)
Оригинал статьи [41] :: GitHub project [42] :: Video [43]
Автор обзора: Александр Бельских (в слэке belskikh)
Часто навигация мобильных роботов представляет собой геометрическую проблему, где строится геометрическая карта мира, по которой уже планируется действие. Такой подход фейлится, например, в траве — её вполне может проехать робот, но система навигации считает траву непреодолимым препятствием. Авторы предлагают систему, которую назвали BADGR—Berkeley Autonomous Driving Ground Robot.
Суть её в том, что на робота навешиваются сенсоры, которые позволяют определить столкновения, неровную дорогу, съезд в кювет и тп, т.е. нежелательное поведение. Затем робот отправляется в путешествие по некоторой реальной среде, собирая данные и размечая их последствии (негативные сэмплы — как раз нежелательное поведение). После разметки робот обучает CNN-LSTM модельку, которая из изображения с камеры сэмплит планируемые действия и их последствия, на основе чего и составляется план движения.
Робот использовался Cearpath Jackak, на котором стояли 6-DOF IMU sensors + GPS + wheel velocity sensors. Дополнительно поставили две камеры 170 deg FOV 640x480, лидар и компас. На роботе установлен NVIDIA jetson TX2 и 4G смартфон, который позволял вести видео стриминг и удалённое управление.
Робот насобирал 42 часа данных (34 в городе и 8 на бездорожье) в автономном режиме, но после чистки это составило всего 720 000 сэплов. Пока датка собиралась, робот периодески сваливался, его приходилось поднимать.
Моделька принимает на вход данные с сенсоров и последовательность предполагаемых действий, придиктит на каждое действие свой эвент (столкновение, кювет и тп).
На инференсе задача модели — следовать предлагаемому грубому GPS маршруту, максимизируя ревард (например, добраться до цели с минимумом неровностей). Подход показал себя лучше популярного SLAM-P отностиельно "ровности" маршрута (naive подход — это просто следовать по таргет GPS траектори). Модель неплохо обобщается на невидимые на трейне данные.
Авторы статьи: Bharadwaj Pudipeddi, Maral Mesmakhosroshahi, Jinwen Xi, Sujeeth Bharadwaj (Microsoft, 2020)
Оригинал статьи [44]
Автор обзора: Александр Бельских (в слэке belskikh)
TL;DR;
Новый способ от Microsoft обучать жирные сети за константную память при потерях по времени не больше 40% и окололинейном скалировании размера модели/батча.
В основе метода лежит новая схема параллелизма. Вместо того, чтоб держать на каждом устройстве копию модели и на каждом батче собирать статистики и обновлять веса по всем моделям, авторы предлагают держать в момент времени на каждом устройстве только копию одного слоя, который сейчас процессится. Вся же модель хранится на хосте с CPU и DRAM (оптимизация происходит на CPU)
Подход назвали L2L (layer to layer). Вариант для distributed вычислений назвали L2L-p. Взяв за идею эту архитектуру, и добавив несколько ещё решений для distributed параллельных вычислений, авторы смогли обучить BERT-Large с батчсайзом 32, использовав только 8GB на V100 (при обычном подходе влезает только батч=2)
Авторы в курсе про DeepSpeed от своих коллег и заявляют, что эти методы вполне себе объединяемы. Код писали на PyTorch, из-за его гибкости, т.к. надо было переписать forward и backward (обещают выложить на гитхаб в скором времени). За бейзлайн взяли BERT-Large из Huggingface.
Сравнение по времени шага обучения:
Из сравнения по памяти видно, что можно использовать гигантский BERT аж с 96 слоями, который вообще не влезет на V100 при стандартном подходе.
Метрики (F1 score) сопоставимы или выше (AG — accumulated gradient):
С ростом батча по скорости начинает выигрывать L2L:
Итого авторы показали, что их метод позволяет запускать BERT-Large на одной GPU c 35% уменьением по памяти при батч сайзе 32 (против батч сайза 2 у бейзлайна). Также показано, что L2L работает за константное время.
Подход позволяет масштабировать модели на практически любую глубину (лишь бы на DRAM хоста было место для хранения всей копии модели)И ещё один важный момент — каждый слой может быть структурно независим от другого, что позволяет динамические подходы к моделированию, такие как Neaural Architecture Search (NAS)
Автор: Вадим Петров
Источник [45]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/matematika/350235
Ссылки в тексте:
[1] сообщество: http://ods.ai/
[2] Side-Tuning: Network Adaptation via Additive Side Networks (University of California, Stanford University, 2019): #1-side-tuning-network-adaptation-via-additive-side-networks
[3] Stacked DeBERT: All Attention in Incomplete Data for Text Classification (Kyungpook National University, South Korea, 2020): #2-stacked-debert-all-attention-in-incomplete-data-for-text-classification
[4] Zero-Shot Video Object Segmentation via Attentive Graph Neural Networks (UAE, USA, 2020): #1-zero-shot-video-object-segmentation-via-attentive-graph-neural-networks
[5] SAUNet: Shape Attentive U-Net for Interpretable Medical Image Segmentation (Toronto and Waterloo, Canada, 2020): #4-saunet-shape-attentive-u-net-for-interpretable-medical-image-segmentation
[6] FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping (Peking University, Microsoft Research, 2019): #5-faceshifter-towards-high-fidelity-and-occlusion-aware-face-swapping
[7] Towards a Human-like Open-Domain Chatbot (Google Brain, 2020): #6-towards-a-human-like-open-domain-chatbot
[8] Positive Algorithmic Bias Cannot Stop Fragmentation in Homophilic Social Networks (Oxford, London, UK, 2020): #7-positive-algorithmic-bias-cannot-stop-fragmentation-in-homophilic-social-networks
[9] BERT-of-Theseus: Compressing BERT by Progressive Module Replacing (Wuhan and Beihang Universities, Microsoft Research Asia, 2020): #8-bert-of-theseus-compressing-bert-by-progressive-module-replacing
[10] A Simple Framework for Contrastive Learning of Visual Representations (Google Research, 2020): #9-a-simple-framework-for-contrastive-learning-of-visual-representations
[11] BADGR: An Autonomous Self-Supervised Learning-Based Navigation System (Berkeley AI Research, USA, 2020): #10-badgr-an-autonomous-self-supervised-learning-based-navigation-system
[12] Training Large Neural Networks with Constant Memory using a New Execution Algorithm (Microsoft, 2020): #11-training-large-neural-networks-with-constant-memory-using-a-new-execution-algorithm
[13] Октябрь — Декабрь 2019: https://habr.com/ru/company/ods/blog/485122/
[14] Июль — Сентябрь 2019: https://habr.com/ru/company/ods/blog/472672/
[15] Январь — Июнь 2019: https://habr.com/ru/company/ods/blog/471514/
[16] Февраль — Март 2018: https://habr.com/ru/company/ods/blog/352518/
[17] Декабрь 2017 — Январь 2018: https://habrahabr.ru/company/ods/blog/352508/
[18] Октябрь — Ноябрь 2017: https://habrahabr.ru/company/ods/blog/343822/
[19] Сентябрь 2017: https://habrahabr.ru/company/ods/blog/339094/
[20] Август 2017: https://habrahabr.ru/company/ods/blog/336624/
[21] Оригинал статьи: https://arxiv.org/abs/1912.13503
[22] GitHub project: https://github.com/jozhang97/side-tuning
[23] Оригинал статьи: https://arxiv.org/abs/2001.00137
[24] GitHub project: https://github.com/gcunhase/StackedDeBERT
[25] Оригинал статьи: https://arxiv.org/abs/2001.06807
[26] GitHub project: https://github.com/carrierlxk/AGNN
[27] Оригинал статьи: https://arxiv.org/abs/2001.07645
[28] GitHub project: https://github.com/sunjesse/shape-attentive-unet
[29] Оригинал статьи: https://arxiv.org/abs/1912.13457
[30] Non official GitHub project: https://github.com/taotaonice/FaceShifter
[31] статьи этих же авторов: https://opendatascience.slack.com/archives/C5VQ222UX/p1570004969026300
[32] статья1: https://arxiv.org/pdf/1910.13062v1.pdf
[33] статья2: https://arxiv.org/pdf/1912.10321v1.pdf
[34] Оригинал статьи: https://arxiv.org/abs/2001.09977
[35] Blog: https://ai.googleblog.com/2020/01/towards-conversational-agent-that-can.html
[36] Оригинал статьи: https://arxiv.org/abs/2001.02878v1
[37] Оригинал статьи: https://arxiv.org/abs/2002.02925
[38] GitHub project: https://github.com/JetRunner/BERT-of-Theseus
[39] Оригинал статьи: https://arxiv.org/abs/2002.05709
[40] GitHub project: https://github.com/google-research/simclr
[41] Оригинал статьи: https://arxiv.org/abs/2002.05700
[42] GitHub project: https://github.com/gkahn13/badgr
[43] Video: https://sites.google.com/view/badgr
[44] Оригинал статьи: https://arxiv.org/abs/2002.05645
[45] Источник: https://habr.com/ru/post/493016/?utm_source=habrahabr&utm_medium=rss&utm_campaign=493016
Нажмите здесь для печати.