Меры предосторожности при предварительном обучении DALL·E 2

An aerial view of a crowd of people facing away, wearing hats and bearing flags

DALL·E

Чтобы поделиться магией DALL·E 2 с широкой аудиторией, нам потребовалось снизить риски, связанные с мощными моделями генерации изображений. С этой целью мы внедрили различные средства защиты, чтобы предотвратить создание сгенерированными изображениями нарушений нашей политики в отношении контента.

Эта статья посвящена митигации на этапе предварительного обучения (pre-training mitigations) — подмножеству этих средств защиты, которые напрямую изменяют данные, на которых обучается DALL·E 2. В частности, DALL·E 2 обучается на сотнях миллионов снабженных подписями изображений из интернета, и мы удаляем или перераспределяем веса некоторых из этих изображений, чтобы изменить то, чему учится модель.

Эта статья состоит из трех разделов, каждый из которых описывает отдельный метод митигации на этапе предварительного обучения:

  • В первом разделе мы описываем, как мы отфильтровали изображения насилия и откровенного содержания из тренировочного набора данных DALL·E 2. Без этого средства защиты модель научилась бы создавать графические или откровенные изображения по соответствующим запросам и могла бы даже непреднамеренно возвращать такие изображения в ответ на кажущиеся безобидными запросы.
  • Во втором разделе мы обнаруживаем, что фильтрация обучающих данных может усиливать предвзятость, и описываем нашу технику смягчения этого эффекта. Например, без этой меры мы заметили, что модели, обученные на отфильтрованных данных, иногда генерируют больше изображений с мужчинами и меньше изображений с женщинами по сравнению с моделями, обученными на исходном наборе данных.
  • В финальном разделе мы обращаемся к проблеме запоминания (memorization), обнаруживая, что такие модели, как DALL·E 2, иногда могут воспроизводить изображения, на которых они обучались, вместо создания новых. На практике мы выяснили, что это «отрыгивание» изображений (image regurgitation) вызвано изображениями, которые многократно повторяются в наборе данных, и решаем эту проблему путем удаления изображений, визуально похожих на другие изображения из набора данных.

Сокращение количества графических и откровенных обучающих данных

Поскольку обучающие данные формируют возможности любой обученной модели, фильтрация данных является мощным инструментом для ограничения нежелательных возможностей модели. Мы применили этот подход к двум категориям — изображениям с элементами жестокого насилия и сексуального характера — с помощью классификаторов для фильтрации изображений этих категорий из набора данных перед обучением DALL·E 2. Мы обучили эти классификаторы изображений собственными силами и продолжаем изучать влияние фильтрации наборов данных на нашу обученную модель.

Для обучения наших классификаторов изображений мы повторно использовали подход, который ранее применяли для фильтрации обучающих данных для GLIDE. Основные шаги этого подхода заключаются в следующем: во-первых, мы создаем спецификацию для категорий изображений, которые мы хотим промаркировать; во-вторых, мы собираем по несколько сотен положительных и отрицательных примеров для каждой категории; в-третьих, мы используем процедуру активного обучения для сбора дополнительных данных и улучшения баланса точности и полноты (precision/recall); и, наконец, мы запускаем полученный классификатор на всем наборе данных с консервативным порогом классификации, чтобы отдать приоритет полноте над точностью. Устанавливая эти пороги, мы ставили на первое место отфильтровывание всех плохих данных, а не сохранение всех хороших данных. Это объясняется тем, что мы всегда можем дообучить нашу модель на большем количестве данных позже, чтобы научить ее чему-то новому, но гораздо сложнее заставить модель забыть то, что она уже усвоила.

На этапе активного обучения мы итеративно улучшали наши классификаторы, собирая разметку от людей для потенциально сложных или неверно классифицированных изображений. В частности, мы использовали две техники активного обучения для выбора изображений из нашего набора данных (который содержит сотни миллионов неразмеченных изображений) с целью представления их людям для разметки. Во-первых, чтобы снизить уровень ложноположительных срабатываний нашего классификатора (то есть частоту, с которой он ошибочно классифицирует безвредное изображение как насильственное или сексуальное), мы назначали человеческие метки изображениям, которые текущая модель классифицировала как положительные. Чтобы этот шаг работал эффективно, мы настроили наш порог классификации почти на 100% полноту при высокой частоте ложноположительных срабатываний; таким образом, наши разметчики в основном размечали действительно негативные случаи. Хотя эта техника помогает сократить количество ложных срабатываний и уменьшает необходимость для разметчиков просматривать потенциально вредный контент, она не помогает находить больше положительных случаев, которые модель в настоящее время пропускает.

Чтобы снизить частоту ложноотрицательных результатов нашего классификатора, мы применили вторую технику активного обучения: поиск ближайших соседей (nearest neighbor search). В частности, мы провели многократную перекрестную проверку (cross-validation), чтобы найти положительные образцы в нашем текущем размеченном наборе данных, которые модель склонна ошибочно классифицировать как отрицательные (для этого мы буквально обучили сотни версий классификатора с различными разбиениями на обучающую и валидационную выборки). Затем мы просканировали нашу большую коллекцию неразмеченных изображений на предмет ближайших соседей этих образцов в перцептивном пространстве признаков и присвоили человеческие метки обнаруженным изображениям. Благодаря нашей вычислительной инфраструктуре масштабирование как обучения классификатора, так и поиска ближайших соседей на множество графических процессоров (GPU) оказалось тривиальной задачей, что позволило выполнить этап активного обучения за считанные минуты, а не часы или дни.

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

Устранение предвзятости, вносимой фильтрами данных

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

В качестве конкретного примера усиления предвзятости из-за фильтрации рассмотрим запрос «генеральный директор» (a ceo). Когда наша неотфильтрованная модель генерировала изображения по этому запросу, она имела тенденцию выдавать больше изображений мужчин, чем женщин, и мы ожидаем, что большая часть этой предвзятости является отражением наших текущих обучающих данных. Однако, когда мы пропустили тот же запрос через нашу отфильтрованную модель, предвзятость казалась усиленной; результаты генерации почти исключительно состояли из изображений мужчин.

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

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

Чтобы воплотить это на практике, мы использовали Apache Spark для вычисления частот горстки ключевых слов (например, «родитель», «женщина», «ребенок») во всех подписях как в наших отфильтрованных, так и в неотфильтрованных наборах данных. Несмотря на то, что наш набор данных содержит сотни миллионов пар текст-изображение, вычисление частот этих ключевых слов заняло всего несколько минут с использованием нашего вычислительного кластера.

Вычислив частоты ключевых слов, мы смогли подтвердить, что фильтры нашего набора данных действительно исказили частоту определенных ключевых слов сильнее, чем других. Например, фильтры снизили частоту слова «женщина» на 14%, в то время как частота слова «мужчина» снизилась всего на 6%. Это подтвердило в больших масштабах то, что мы уже наблюдали на практике (анекдотически) при выборке из моделей GLIDE, обученных на обоих наборах данных.

Теперь, когда у нас был прокси-показатель для измерения вызванной фильтром предвзятости, нам нужен был способ смягчить ее. Для решения этой проблемы мы стремились пересчитать веса отфильтрованного набора данных так, чтобы его распределение лучше соответствовало распределению неотфильтрованных изображений. В качестве игрушечного примера для иллюстрации этой идеи предположим, что наш набор данных состоит из 50% фотографий кошек и 50% фотографий собак, но наши фильтры данных удаляют 75% собак, но только 50% кошек. Итоговый набор данных будет состоять на ⅔ из кошек и на ⅓ из собак, и основанная на правдоподобии генеративная модель, обученная на этом наборе данных, вероятно, будет генерировать больше изображений кошек, чем собак. Мы можем исправить этот дисбаланс, умножив обучающие потери для каждого изображения собаки на 2, эмулируя эффект повторения каждого изображения собаки дважды. Оказывается, мы можем масштабировать этот подход к нашим реальным наборам данных и моделям в значительной степени автоматически — то есть нам не нужно вручную выбирать признаки, веса которых мы хотим пересчитать.

Мы вычисляем веса для изображений в отфильтрованном наборе данных, используя вероятности из специального классификатора, аналогично подходу, использованному Чоем с соавторами (2019). Чтобы обучить этот классификатор, мы равномерно выбираем изображения из обоих наборов данных и прогнозируем, из какого набора данных получено изображение. В частности, эта модель прогнозирует P (unfiltered|image), учитывая априорную вероятность P (unfiltered) = 0.5. На практике мы не хотим, чтобы эта модель была слишком мощной, иначе она может выучить точную функцию, реализованную нашими фильтрами. Вместо этого мы хотим, чтобы модель была более плавной, чем наши исходные фильтры данных, захватывая широкие категории, на которые влияют фильтры, и оставаясь при этом не уверенной в том, будет ли конкретное изображение отфильтровано или нет. С этой целью мы обучили линейный зонд поверх небольшой CLIP-модели.

Как только у нас появляется классификатор, который прогнозирует вероятность того, что изображение принадлежит к неотфильтрованному набору данных, нам все еще нужно преобразовать этот прогноз в вес для изображения. Например, предположим, что P (unfiltered|image) = 0.8. Это означает, что вероятность обнаружить этот образец в неотфильтрованных данных в 4 раза выше, чем в отфильтрованных, и вес, равный 4, должен исправить дисбаланс. В более общем смысле мы можем использовать вес P (unfiltered|image)/P (filtered|image).A

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

Для большинства проверенных нами ключевых слов схема пересчета весов уменьшила изменение частоты, вызванное фильтрацией. Для наших предыдущих примеров «мужчина» и «женщина» относительное снижение частоты составило 1% и –1% вместо прежних значений в 14% и 6% соответственно. Хотя эта метрика является лишь прокси для фактической предвзятости фильтрации, обнадеживает то, что наша схема взвешивания на основе изображений действительно настолько существенно улучшает текстовую метрику.

Мы продолжаем исследовать оставшиеся предвзятости в DALL·E 2, отчасти посредством более масштабных оценок поведения модели и изучения того, как фильтрация повлияла на предвзятость и развитие возможностей.

Предотвращение «отрыгивания» изображений

Мы заметили, что наши внутренние предшественники DALL·E 2 иногда дословно воспроизводили изображения для обучения. Такое поведение было нежелательным, поскольку мы хотим, чтобы DALL·E 2 по умолчанию создавал оригинальные, уникальные изображения, а не просто «сшивал» куски существующих изображений. Кроме того, дословное воспроизведение обучающих изображений может поднять юридические вопросы, связанные с нарушением авторских прав, правом собственности и конфиденциальностью (если фотографии людей присутствовали в обучающих данных).

Чтобы лучше понять проблему воспроизведения изображений, мы собрали набор данных с запросами, которые часто приводили к дублированию изображений. Для этого мы использовали обученную модель для выборки изображений по 50 000 запросам из нашего набора данных для обучения и отсортировали выборки по перцептивному сходству с соответствующим обучающим изображением. Наконец, мы вручную проверили лучшие совпадения, обнаружив лишь несколько сотен истинных дублирующихся пар из 50 тыс. общих запросов. Несмотря на то, что уровень воспроизведения казался менее 1%, мы сочли необходимым снизить этот показатель до 0 по причинам, указанным выше.

Когда мы изучили наш набор данных воспроизведенных изображений, мы заметили две закономерности. Во-первых, почти все изображения представляли собой простую векторную графику, которую, вероятно, было легко запомнить из-за низкого информационного наполнения. Во-вторых, и что более важно, у всех изображений было множество почти полных дубликатов в обучающем наборе данных. Например, могла существовать векторная графика, похожая на часы, показывающие 1 час, но затем мы обнаружили бы образец для обучения, содержащий те же часы, показывающие 2 часа, затем 3 часа и т. д. Поняв это, мы использовали распределенный поиск ближайших соседей, чтобы убедиться, что действительно все воспроизведенные изображения имели перцептивно похожие дубликаты в наборе данных. Другиеработы наблюдали аналогичное явление в больших языковых моделях, обнаружив, что дублирование данных тесно связано с запоминанием.

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

Однако для этого потребовалось бы проверять каждое изображение на предмет того, является ли оно дубликатом каждого другого изображения в наборе данных. Поскольку весь наш набор данных содержит сотни миллионов изображений, нам пришлось бы наивным образом проверять сотни квадриллионов пар изображений, чтобы найти все дубликаты. Хотя технически это достижимо, особенно на большом вычислительном кластере, мы нашли гораздо более эффективную альтернативу, которая работает почти так же хорошо за малую долю затрат. Рассмотрим, что происходит, если мы выполняем кластеризацию нашего набора данных перед проведением дедупликации. Поскольку близлежащие образцы часто попадают в один и тот же кластер, большинство пар дубликатов не пересекают границы решений кластеров. Затем мы могли бы дедуплицировать образцы внутри каждого кластера, не проверяя на дубликаты за пределами кластера, упуская при этом лишь малую часть всех пар дубликатов. Это намного быстрее наивного подхода, поскольку нам больше не нужно проверять каждую отдельную пару изображений.C

Когда мы эмпирически протестировали этот подход на небольшом подмножестве наших данных, он обнаружил 85% всех пар дубликатов при использовании кластеров K=1024. Чтобы повысить успешность вышеуказанного алгоритма, мы использовали одно ключевое наблюдение: когда вы кластеризуете разные случайные подмножества набора данных, получающиеся границы решений кластеров часто сильно различаются. Следовательно, если пара дубликатов пересекает границу кластера для одной кластеризации данных, та же пара может попасть внутрь одного кластера при другой кластеризации. Чем больше вариантов кластеризации вы пробуете, тем выше вероятность обнаружить данную пару дубликатов. На практике мы остановились на использовании пяти кластеризаций, что означает поиск дубликатов каждого изображения в объединении пяти разных кластеров. На практике это позволило обнаружить 97% всех пар дубликатов на подмножестве наших данных.

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

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

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

Следующие шаги

Хотя все рассмотренные выше меры представляют собой значительный прогресс на пути к нашей цели — снижению рисков, связанных с DALL·E 2, каждая из них все еще имеет потенциал для улучшения:

  • Улучшенные фильтры предварительного обучения могли бы позволить нам обучать DALL·E 2 на больших объемах данных и потенциально еще больше снизить предвзятость модели. Наши текущие фильтры настроены на низкий коэффициент пропусков за счет большого количества ложноположительных срабатываний. В результате мы отсеяли примерно 5% всего нашего набора данных, хотя большинство этих отфильтрованных изображений вообще не нарушают нашу политику в отношении контента. Улучшение фильтров может позволить нам вернуть часть этих обучающих данных.
  • Предвзятость закладывается и потенциально усиливается на многих этапах разработки и развертывания системы. Оценка и смягчение предвзятости в таких системах, как DALL·E 2, а также вреда, вызываемого этой предвзятостью, являются важной междисциплинарной задачей, которую мы продолжаем изучать в OpenAI в рамках нашей более широкой миссии. Наша работа в этом направлении включает создание систем оценки для лучшего понимания проблемы, курирование новых наборов данных и применение таких методов, как обратная связь от человека и точная настройка (fine-tuning), для создания более надежных и репрезентативных технологий.
  • Также крайне важно продолжать изучение процессов запоминания и генерализации в системах глубокого обучения. Хотя дедупликация является хорошим первым шагом на пути к предотвращению запоминания, она не дает полного ответа на вопрос о том, почему и как такие модели, как DALL·E 2, запоминают обучающие данные.

Сноски

  1. Когда мы параметризуем P (unfiltered|image) как sigmoid (f (x)), вес принимает вид exp (f (x)). Это можно вывести, используя определение сигмоиды:

1/(1+e−f (x))/(1−1/(1+e−f (x))) 1/(1+e^−f (x))/(1−1/(1+e^−f (x))) =1/(1+e−f (x))/((1+e−f (x)−1)/(1+e−f (x))) = 1/(1+e^{-f (x)}) / ((1+e^{-f (x)} — 1)/(1+e^{-f (x)})) =1/(1+e−f (x))/((e−f (x))/(1+e−f (x))) = 1/(1+e^{-f (x)}) / ((e^{-f (x)})/(1+e^{-f (x)})) =(1+e−f (x))/(1+e−f (x))/(e−f (x)) = (1+e^-f (x))/(1+e^-f (x)) / (e^-f (x)) =1/(e−f (x))=ef (x) = 1 / (e^{-f (x)}) = e^{f (x)}

  1. B

    Для достижения этой цели мы можем вычислить вектор признаков viv_i для каждого обучающего изображения ii и затем удалить все изображения jj такие, что существует i, при котором ∣∣vi−vj∣∣||v_i — v_j|| <threshold. Для наивного решения этой проблемы нам потребовалось бы вычислить каждое попарное расстояние ∣∣vi−vj∣∣||v_i — v_j|| — задачу, сложность которой растет квадратично с увеличением размера нашего набора данных.

  2. C

    Обозначая K K как количество кластеров, а N N  — как размер набора данных, этот подход требует всего O (K∗(N/K)2)=O (N2/K) O (K*(N/K)^2) = O (N^2/K) вычислений попарных расстояний вместо полных O (N2) O (N^2) . В то же время нам по-прежнему гарантируется, что ни у одного изображения в худшем случае не будет более K K почти дубликатов.

Авторы

Alex Nichol

Участники

Alex Nichol, Aditya Ramesh, Pamela Mishkin, Prafulla Dariwal, Joanne Jang, Mark Chen

Текстовый вклад внесли

Greg Brockman, Aditya Ramesh, Pamela Mishkin, Mark Chen, Pranav Shyam, Casey Chu, Che Chang, Miles Brundage

Полный текст статьи читайте на OpenAI