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

Интуиция за глубоким обучением

Глубокое обучение, как известно, вдохновлено биологией, и многие из основных концепций глубокого обучения интуитивно понятны и основаны на реальности. Фундаментальная истина глубокого обучения заключается в том, что оно иерархично - слои в сети и изучаемые ими представления опираются друг на друга. То же самое и в действительности: электроны, протоны, нейтроны - ›атомы -› молекулы - ›… Логично предположить, что лучший способ моделирования иерархического мира - иерархический, и именно поэтому глубокое обучение оказалось столь успешным в обеспечении простых , элегантные и общие решения очень сложных проблем.

Мотивация к обучению без учителя

«Соревновательная подготовка - самая крутая вещь после нарезанного хлеба», - Ян Лекун, директор по исследованиям искусственного интеллекта в Facebook и профессор Нью-Йоркского университета.

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

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

Обучение без учителя - конкретный пример

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



Messenger
Бета: чат-бот для мгновенной диагностики рака кожи m.me/wayaai



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

GAN - одна из самых многообещающих областей исследования неконтролируемого обучения, и мы увидим, что они представляют собой простой общий подход к изучению мощных представлений на основе данных.

Понимание GAN

Давайте разберем GAN на основные компоненты:

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

Генератор: принимает некоторый код (то есть случайный шум) в качестве входных данных и преобразует его, выводя образец данных. Цель генератора - в конечном итоге вывести различные выборки данных из истинного распределения данных.

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

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

Понимание процедуры обучения GAN

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

while equilibrium_not_reached:
    
    # train the discriminator to classify a batch of images from our
    # dataset as real and a batch of images generated by our current
    # generator as fake
 
    1.)
    discriminator.train_on_batch(image_batch=real_image_batch,
                                 labels=real)
    2.)
    discriminator.train_on_batch(image_batch=generated_image_batch,
                                 labels=fake)
    # train the generator to trick the discriminator into
    # classifying a batch of generated images as real. The key here
    # is that the discriminator is frozen (not trainable) in this
    # step, but it's loss functions gradients are back-propagated
    # through the combined network to the generator
    # the generator updates its weights in the most ideal way
    # possible based on these gradients
    
    3.)
    combined.train_on_batch(input=batch_of_noise, labels=real)
    # where combined is a model that consists of the generator and
    # discriminator joined together such that: input => generator =>
    # generator_output => discriminator => classification

Все мы хорошо знакомы с общей концепцией GAN и состязательного обучения, осознаем мы это или нет. Например, рассмотрите возможность обучения игре на гитаре:

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

Мы повторяем некоторые вариации этой процедуры, где шаги 2 и 3 в значительной степени объединены вместе, а шаг 1 частично запоминается и пересматривается время от времени, когда память нуждается в уточнении, до тех пор, пока то, что мы играем, не будет звучать достаточно близко к актуальная песня и мы счастливы.

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

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

Теперь, когда мы немного поняли, что такое GAN, давайте посмотрим, как они в настоящее время реализованы в программном обеспечении. Попутно вам следует подумать о сходствах и различиях между GAN и программным обеспечением. Подчеркивая одно различие, состязательная процедура обучения, которая происходит в действительности, кажется совместной между генератором и дискриминатором, в то время как программная реализация GAN кажется состязательной (… боксерский матч).

Обучение GAN - бокс между генератором и дискриминатором

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

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

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

Теперь шаг 3, спарринг! Генератор - лоскутный боксер из Филадельфии, который расслаблен и сосредоточен во время спарринга, изучает каждое движение и ошибку, которую делает дискриминатор, и извлекает уроки из него, адаптируясь после каждого раунда. Дискриминатор ненавидит спарринг, он так напуган и нервничает каждый раз, что ничего не узнает от него. Дискриминатор может быть более одаренным и талантливым в спорте, чем генератор (легче классифицировать данные как настоящие / поддельные, чем на самом деле генерировать реалистичные данные), но образ мышления генератора помогает уравнять правила игры. Несмотря на то, что у генератора нет тренера (нет доступа к реальному набору данных), он так много узнает от дискриминатора во время спарринга, что улавливает фундаментальные вещи, которым дискриминатор преподавал его тренер.

Этот процесс продолжается раундами и раундами, пока в конечном итоге дискриминатор и генератор не станут всесторонне развитыми боксерами, готовыми к соревнованиям. Тренер обучил дискриминатора каждой важной детали игры, которую он знает, а генератор и дискриминатор многому научились друг у друга в своих спарринг-войнах. В идеале они оба должны быть настолько одинаковы в конце тренировки, что у матча между ними будет 50/50 шансов.

Трудности

По мере того, как вы углубитесь в GAN, вы увидите, что одна из основных трудностей, с которыми мы в настоящее время сталкиваемся, - это обучение этих сетей правильной конвергенции - мы хотим, чтобы генератор и дискриминатор достигли некоторого желаемого равновесия, но в большинстве случаев этого не происходит. Существует много информации и исследований о том, что может пойти не так: https://www.quora.com/Do-generative-adversarial-networks-always-converge и все больше и больше информации о том, как противодействовать эти проблемы: https://github.com/soumith/ganhacks.

Просто чтобы выделить несколько наиболее распространенных случаев сбоя GAN:

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

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

Заключение

Теперь, когда у нас есть фундаментальное понимание GAN, давайте вернемся к их цели: изучить мощные представления из немаркированных данных (т. Е. Взять наши данные из их исходного измерения и научиться представлять их наиболее важные функции в гораздо меньшем измерении = ›требуется меньше помеченных данных. для достижения желаемой производительности). После обучения GAN в большинстве современных методов используется дискриминатор в качестве базовой модели для передачи обучения и точной настройки производственной модели или генератор в качестве источника данных, который используется для обучения производственной модели. В нашей аналогии с боксом это означает, что дискриминатор получает лицензию на бокс и соревнуется, а генератор - нет. Это прискорбно, потому что генератор кажется, что у него есть потенциал стать лучшим боксером, и он либо полностью отброшен, либо используется только как спарринг-партнер / тренер для производственной модели.

То, что не могу создать, не понимаю.

Хорошо обученный генератор настолько хорошо усвоил истинное распределение данных, что может генерировать принадлежащие ему выборки из гораздо меньшего размера входных данных. Это говорит о том, что он разработал чрезвычайно мощные представления данных. Было бы идеально использовать полученные знания генератора непосредственно в производственных моделях, но я не знаю каких-либо методов для этого. Если да, то прокомментируйте.

Для чистой и простой реализации стандартного GAN (а также других типов GAN, таких как InfoGAN и ACGAN) см .:



Существуют типы сетей GAN, которые создают чрезвычайно ценный генератор, даже если это всего лишь «спарринг-партнер / тренер»:



О Waya.ai

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