-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Boosted generative models #2
Comments
Take 2.
Условия: есть генератор, натренированный по классической схеме, плохо
воспроизводит хвосты.
Предположение: генератор достаточно мощный, чтобы хорошо воспроизводить все
распределение, в т.ч. хвосты, при этом тренировочный примеров достаточно,
чтобы он не переобучился.
Причина проблемы: хвосты имеют малый вклад в лосс, если тренировка
происходит мини-батчами шум оптимизатора становится значительно выше вклада
хвостов. Эффект нужно возвести в квадрат, так как тоже самое происходит с
дискриминатором - пока дискриминатор не зафитирован на хвостах, тренировка
генератора на них затруднительна.
Предлагаемое решение - снижения шума градиентов на хвостах:
- меньший learning rate;
- больший batch size;
- importance sampling.
1. Importance sampling for discriminator. Просто сэмплировать хвосты
намного чаще, например, формировать батч как 50/50 (хвост/не хвост), при
этом компенсируя повышенную частоту сэмплирования весами так, чтобы мат.
ожидание лосса оставалось тем же. Такая процедура называет перевешивание.
2. Importance sampling for generator. Это немного сложнее в реализации.
Теоретически, можно перевзвесить латентные переменные генератора, но для
этого нужно знать какие из них переходят в хвосты, что сложно, но возможно
на практике. Например, с помощью ALI можно сделать что-то подобное.
Самое простое решение - ввести новый генератор g1(z), как добавку к первому
g(z), чтобы сформировать смесь pG(x) + (1 - p) G1(x), где G, G1 -
распределения соотвествующие g и g1. Легче всего натренировать первый
генератор, заморозить его и добавить второй. В этом случае, importance
sampling происходит по компоненте смеси, т.е. из какого генератора приходит
пример - добавочный генератор сэмплируется очень часто, но с малым весом.
Чтобы бедный g1 не застрял в локальном минимуме, скорее всего, его стоит
претренировать на хвосты, например, через VAE или грубый moment matching.
Альтернативно, на ум приходит инициализация g1, так, чтобы он был равен g,
однако, не понятно, стоит ли это того.
Приятный бесплатный бонус - importance sampling позволяет легко
оптимизировать p.
- Sincerely, Maxim.
…On Thu, 31 Oct 2019, 02:26 Nikita Kazeev, ***@***.***> wrote:
Нулевой вариант: бустинг смеси сеток
Due @maxim-borisyak <https://github.com/maxim-borisyak>
Пусть есть текущая модель и сеть, которую мы к ней хотим добавить. Будем
учить новую сетку по алгоритму GAN'а следующим образом: на каждой итерации
сэмплируем половину из текущей модели, поливину из новой. Перевзвеиваем,
чтобы эффективная вероятность новых примеров была малой. Учим дискриминатор
по смеси.
- importance sampling на реальных (хвот, не хвост).
Интуиция
Примеров мало, они редко появляются в батче и имеют малый вклад в лосс.
SGD и друзья фактически выдают распределение, "ширина" которого зависит от
размера батча и learning rate. importance sampling уменьшает шум градиентов
в хвостах.
Статьи
https://www.padl.ws/papers/Paper%2031.pdf
https://arxiv.org/abs/1905.04534
https://pdfs.semanticscholar.org/3e72/22e433089e899eae608f183c1b920eeba44d.pdf
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2?email_source=notifications&email_token=AANTI7D5BV64O4HVLFZBMLTQRIJZFA5CNFSM4JHBRPHKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HVS33DQ>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AANTI7AYSRB2TH7CL263Y4TQRIJZFANCNFSM4JHBRPHA>
.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Нулевой вариант: бустинг смеси сеток
Due @maxim-borisyak
Пусть есть текущая модель и сеть, которую мы к ней хотим добавить. Будем учить новую сетку по алгоритму GAN'а следующим образом: на каждой итерации сэмплируем половину из текущей модели, поливину из новой. Перевзвеиваем, чтобы эффективная вероятность новых примеров была малой. Учим дискриминатор по смеси.
Интуиция
Примеров мало, они редко появляются в батче и имеют малый вклад в лосс. SGD и друзья фактически выдают распределение, "ширина" которого зависит от размера батча и learning rate. importance sampling уменьшает шум градиентов в хвостах.
Статьи
https://www.padl.ws/papers/Paper%2031.pdf
https://arxiv.org/abs/1905.04534
https://pdfs.semanticscholar.org/3e72/22e433089e899eae608f183c1b920eeba44d.pdf
The text was updated successfully, but these errors were encountered: