Você está na página 1de 4

Projeto final

IA006 - Tópicos em Sistemas Inteligentes II - Aprendizado de Máquina Campinas, 01 de julho de 2019

Gerando dígitos escritos a mão com redes generativas adversariais


Ali Salim Faraj, Leonardo Rodrigues Da Costa
Departamento de Engenharia de Computação e Automação Industrial (DCA)
Faculdade de Engenharia Elétrica e de Computação (FEEC)
Universidade Estadual de Campinas (Unicamp)
CEP 13083-852 – Campinas, SP, Brasil
l146895@dac.unicamp.com , a145135@g.unicamp.br

Abstract – Generative Adversarial Networks (GANs) are being widely used in machine learning for the creation
of new images based on a given dataset. GANs have two main components: a discriminator (D), a binary classifier
that learns to recognize and differentiate the data set images from "fakes"; and a generator (G) that learns to create,
from random noise, images that pass the D’s criteria. This project aims to compare the original GAN implementation
and a recent implementation, called Relativistic GAN. The networks were trained using the MNIST handwritten
digits database and used to successfully create new images.
Keywords – Keras; Python; Generative Adversarial Networks; Relativistic GAN; MNIST

1. Introdução D. Então a cada iteração D fica melhor em distin-


guir uma obra verdadeira de uma falsa, e G aprende
O termo rede generativa adversarial ou, no inglês, a fazer falsificações melhores a partir dos julgamen-
Generative Adversarial Network (GAN) se refere a tos de D.
classe de algoritmos de geração derivadas da pro-
posta inicial de Goodfellow [1]. Com GANs, pode- 1.1. Ciclo de treinamento
mos gerar novos elementos que reproduzem as cara-
terísticas daqueles pertencentes a um dado dataset. Um ciclo completo do GAN é separado em duas eta-
GANs apresentam facilidade conceitual para sua pas. A primeira etapa é o treinamento do discrimi-
implementação e apresentam se refere a classe de nador D:
algoritmos de geração derivadas da proposta inicial
de Goodfellow [1]. Com GANs, podemos gerar no-
vos elementos que reproduzem as caraterísticas da-
queles pertencentes a um dado dataset. GANs apre-
sentam facilidade conceitual para sua implementa-
ção e apresentam bons resultados para reproduzir
dados conhecidos de maneira diversificada. Por es-
tes motivos, encontramos as mais diversas aplica-
Figura 1. Treinamento de D
ções de GANs [2], como na geração de imagens de
rostos humanos [4], animais e paisagens; replicação
de sons urbanos e vozes; no aumento artificial da • Selecionamos aleatoriamente um mini-
resolução de imagens [5]. batch de n amostras do dataset de treino e
as etiquetamos como "1".
O principio por trás de uma aplicação GAN • Com G, geramos outro mini-batch de n
é um "jogo"entre duas redes neurais: o discrimina- amostras com etiquetas "0". Aqui vale res-
dor (D) e o gerador (G). D é um classificador biná- saltar que G tem o mesmo numero de nós
rio treinado com um dataset para aprender a distin- de saída que a entrada de D.
guir se algum dado pertence ou não ao dataset. G é • Combinamos esses mini-batches para o
treinado para transformar um input aleatório (como treinamento de D, que a cada amostra
ruído branco) em um dado que consiga enganar D. otimiza os parâmetros da rede, assim D
Consideremos uma analogia em que G se- aprende a diferenciar uma entrada do data-
ria um falsificador de obras de arte tentando enganar set ("1") de uma entrada do G ("0"), mini-
D (aqui um detetive especialista em falsificações), mizando uma função de custo proposta.
cujo dever é julgar se uma obra é verdadeira ou
Na segunda etapa fazemos o treinamento do gerador
falsa. Um problema para nosso falsificador G é que
G:
ele não conhece a obra que deve falsificar, as únicas
instruções que tem são os julgamentos do detetive • Congelamos os parâmetros da rede D.
Projeto final
IA006 - Tópicos em Sistemas Inteligentes II - Aprendizado de Máquina Campinas, 01 de julho de 2019

vencional e RaGAN), treinados com a base de da-


dos MNIST, imagens de 28x28 pixels, em escala de
cinza, dos algarismos de 0 a 9, escritos a mão.

3. Metodologia
Figura 2. Treinamento de G
A implementação foi feita em Python utilizando a
biblioteca Keras. A arquitetura do gerador G é:
• Input aleatório de 100 variáveis aleatórias
• Durante esta etapa só permitimos a otimiza-
gaussianas com média 0 e variância 1.
ção dos parâmetros da rede G.
• Três camadas fully connected com 256, 512
• Para que uma entrada em G corresponda em
e 1024 neurônios; batch normalization e
"1"após percorrer as redes G+D.
função de ativação ReLu.
• Com G, geramos um mini-batch de n amos-
• Camada de saída com 784 neurônios e fun-
tras com etiquetas "1"para a rede D e treina-
ção de ativação tanh, ao fim a saída é re-
mos o conjunto G+D.
modelada em uma imagem 28x28 pixels.
Assim temos um caso muito parecido com A arquitetura do descriminador D é:
nossa analogia, a cada ciclo completo D aprende
• Entrada 784 neurônios.
a discriminar melhor as "falsificações"e G aprende
• Duas camadas fully connected com 512
como "falsificar"melhor.
neurônios, função de ativação ReLu e dro-
pout de 20%.
1.2. GAN de média relativística (RaGAN) • Camada de saída com 1 neurônio, ativação
Existe um dilema conceitual na formulação origi- sigmóide.
nal do GAN (chamada daqui pra frente de standard Para o treino foram usados 60000 imagens de 28x28
GAN ou SGAN). Para o treinamento do discrimi- pixels do MNIST, obtidas pela separação padrão do
nador, as imagens do gerador são sempre rotuladas conjunto em dados de treinamento (60000 imagens)
como falsas. Isso pode ser conflitante quando o ge- e dados de teste (10000 imagens). A arquitetura do
rador aprende a gerar imagens mais parecidas com GAN e do RaGAN é a mesma, a diferença é a mo-
o conjunto real, que serão igualmente penalizadas dificação da função de custo no treinamento do dis-
pelo discriminador. Essa pode ser uma causa de ins- criminador, como explicado previamente. Ambos
tabilidade no treinamento, um dos problemas mais foram treinados por 100 épocas, com o otimizador
notáveis das redes GANs [7]. Adam com parâmetros: learning rate = 2e-4, beta1
O RaGAN (Relativistic avarage GAN), pro- = 0.5 e beta2 = 0.99. Para ambos, foi escolhido o
posto em [3], utiliza uma formulação que busca con- critério de minimizar a entropia cruzada.
tornar essa contradição. A função de custo de trei-
namento do discriminador é alterada para que as 4. Resultados
imagens originais sejam mais "realistas"do que uma Na figura 3, observamos as imagens geradas pelo
média de imagens geradas. Para o treinamento do SGAN, RaGAN e as imagens originais da database
gerador, o oposto, que as imagens geradas sejam MNIST. Podemos observar que o SGAN conseguiu
mais "realistas"do que uma média de imagens ori- replicar com fidelidade satisfatória os algarismos do
ginais. Dessa forma, o discriminador penaliza mais MNIST. Visualmente, notamos que a performance
as imagens que parecem falsas e menos as que pare- do RaGAN foi ligeiramente inferior, especialmente
cem reais, atuando mais como um "crítico". É possí- para alguns algarismos (como o 2, 5 e 7). A evo-
vel mostrar que essa formulação tende a trazer mais lução das imagens dos geradores a partir de ruído
estabilidade para o treinamento da rede, comparado aleatório pode ser visto na figura 4.
com a formulação original [3].
Um cenário indesejado no treinamento de
GANs é o caso em que o gerador fica restrito a um
2. Proposta subconjunto do conjunto original de treinamento.
O objetivo do nosso projeto foi criar e avaliar a per- Para avaliar a qualidade e diversidade das imagens
formance de dois tipos diferentes de GAN (con- geradas pelos GANs, propomos o seguinte teste.
Projeto final
IA006 - Tópicos em Sistemas Inteligentes II - Aprendizado de Máquina Campinas, 01 de julho de 2019

Figura 3. Dígitos de 0 a 9 originais e gerados. Na primeira linha, exemplos retirados das base de dados
MNIST, na segunda, exemplos gerados pelo SGAN e na terceira, exemplos geradas pelo RaGAN, ambos
após 100 épocas de treinamento.

Inicialmente, treinamos um classificador


com uma rede MLP com o conjunto de treino com-
pleto do MNIST (60000 amostras). A rede MLP
tem a mesma arquitetura utilizada nos discrimina-
dores da GAN, porém, com 10 neurônios na saída.
Esse classificador é capaz de atingir acurácia de
99% e 98% nos conjuntos de treino e teste, respec-
tivamente.
Então, utilizamos esse classificador para ro-
tular as imagens geradas pelo GAN a partir de entra-
das aleatórias. Separamos as imagens em conjuntos
de acordo com o dígito classificado. Figura 4. Treinamento do SGAN e resultados
Escolhemos um número de amostras de do gerador. É possível ver o aprendizado da
rede com a evolução da qualidade das ima-
cada conjunto e formamos um novo conjunto de
gens geradas após a) 0 época, b) 1 época, c) 10
treinamento. Com esse conjunto, treinamos um épocas e d) 100 épocas. Resultados obtidos
novo classificador e medimos a sua acurácia no com RaGAN são visualmente semelhantes.
conjunto de teste do dataset original. Repetimos
esse procedimento utilizando imagens geradas pela com imagens dos GANs não é muito inferior.
SGAN e RaGAN, assim como utilizando imagens
originais do conjunto de treinamento. Realizamos
5. Conclusões
várias configurações diminuindo o número de amos-
tras por classe. Os resultados são apresentados na A implementação e treinamento das redes GANs fo-
tabela 1. ram feitos com sucesso. As imagens geradas são vi-
sualmente satisfatórias. A partir do teste proposto,
Podemos ver que a acurácia dos classifica-
estimamos que as imagens geradas apresentam uma
dores diminui com o número de amostras por classe
diversidade significativa em relação ao conjunto ori-
utilizada, o que é esperado. Com esse teste, busca-
ginal de dados. Ressaltamos que haveria espaço
mos analisar a diferença de utilizar como conjunto
para uma validação mais criteriosa dos GANs, caso
de treinamento amostras originais ou amostras ge-
fosse preciso uma análise mais detalhada dos resul-
radas pelos GANs. Podemos perceber que os classi-
tados [6].
ficadores treinados com imagens dos GANs perfor-
mam ligeiramente pior que os classificadores treina- Por se tratar de um problema de baixa com-
dos com imagens originais. plexidade, não foi possível comparar efetivamente a
formulação original do GAN com a variação relati-
Supomos que isso acontece devido a uma
vística. Consideramos que ambas as redes apresen-
perda de representatividade do conjunto original
taram resultados semelhantes. Para explorar eventu-
para o conjunto de imagens geradas pelo GANs. Por
ais diferenças, sugerimos que sejam utilizados con-
outro lado, estimamos que essa perda seja pequena,
juntos mais complexos que o dataset MNIST, uma
uma vez que a acurácia dos classificadores treinados
vez que a formulação relativística foi proposta para
Projeto final
IA006 - Tópicos em Sistemas Inteligentes II - Aprendizado de Máquina Campinas, 01 de julho de 2019

Amostras (N) MNIST SGAN RaGAN gans. In Advances in neural information pro-
5000 98% 96% 96% cessing systems, pages 2234–2242, 2016.
2000 97% 95% 95%
1000 97% 94% 94% Códigos
500 95% 92% 91%
200 92% 89% 89% Os scripts realizados em Python estão disponibiliza-
100 91% 87% 86% dos em arquivos separados, assim como os modelos
50 86% 85% 85% treinados e algumas das imagens geradas. Gostaría-
20 84% 83% 83% mos de creditar que os nossos scripts foram inspira-
dos pelos seguintes códigos disponibilizados publi-
Tabela 1. Acurácia dos classificadores multi- camente:
classe no conjunto de teste original. Os clas-
sificadores foram treinados com N amostras 1. https://github.
por dígito, com imagens originais (MNIST) ou com/IShengFang/
com imagens geradas pelos GANs (SGAN e
Relativistic-average-GAN-Keras
RaGAN).
2. https://github.com/
eriklindernoren/Keras-GAN
melhorar o desempenho em situações em que há ins- 3. https://keras.io/examples/
tabilidade no treinamento de GANs convencionais. mnist_mlp/
Tentamos explorar o problema com ima-
gens coloridas e maior resolução (dataset CIFAR-
10), porém fomos desencorajados por algumas di-
ficuldades técnicas. As redes MLP não conseguem
bons resultados nesses conjuntos. Conseguimos ob-
ter resultados melhores com redes neurais convolu-
cionais, porém o longo tempo de treinamento dessas
redes em computadores convencionais inviabilizou
uma análise mais detalhada.

Referências
[1] Ian J. Goodfellow. Generative adversarial nets.
arXiv:1406.2661v1 [stat.ML], 2014.
[2] Yongjun Hong. How generative adversarial
networks and their variants work: An overview.
arXiv:1711.05914v10 [cs.LG], 2019.
[3] Alexia Jolicoeur-Martineau. The relativistic
discriminator: a key element missing from stan-
dard gan. arXiv:1807.00734v3 [cs.LG], 2018.
[4] Tero Karras. A style-based generator architec-
ture for generative adversarial networks. ar-
Xiv:1812.04948v3 [cs.NE], 2019.
[5] Christian Ledig. Photo-realistic single image
super-resolution using a generative adversarial.
arXiv:1609.04802v5 [cs.CV], 2017.
[6] Mario Lucic, Karol Kurach, Marcin Michalski,
Sylvain Gelly, and Olivier Bousquet. Are gans
created equal. A Large-Scale Study. ArXiv e-
prints, 2(4), 2017.
[7] Tim Salimans, Ian Goodfellow, Wojciech Za-
remba, Vicki Cheung, Alec Radford, and
Xi Chen. Improved techniques for training

Você também pode gostar