Last Updated on July 19, 2019
Generative Adversarial Networks, ou GANs para abreviar, são uma abordagem à modelagem generativa usando métodos de aprendizagem profunda, tais como redes neurais convolucionais.
A modelação gerativa é uma tarefa de aprendizagem não supervisionada na aprendizagem mecânica que envolve a descoberta e aprendizagem automática das regularidades ou padrões nos dados introduzidos, de tal forma que o modelo possa ser usado para gerar ou produzir novos exemplos que plausivelmente poderiam ter sido extraídos do conjunto de dados original.
GANs são uma forma inteligente de treinar um modelo generativo ao enquadrar o problema como um problema de aprendizagem supervisionado com dois sub-modelos: o modelo gerador que treinamos para gerar novos exemplos, e o modelo discriminador que tenta classificar os exemplos como reais (do domínio) ou falsos (gerados). Os dois modelos são treinados em conjunto num jogo de soma zero, contraditório, até o modelo discriminador ser enganado cerca de metade do tempo, o que significa que o modelo gerador está a gerar exemplos plausíveis.
GANs são um campo excitante e em rápida mudança, cumprindo a promessa de modelos generativos em sua capacidade de gerar exemplos realistas através de uma série de domínios problemáticos, mais notadamente em tarefas de tradução de imagem para imagem, como traduzir fotos do verão para o inverno ou do dia para a noite, e em gerar fotos fotorealistas de objetos, cenas e pessoas que nem mesmo os humanos conseguem distinguir são falsas.
Neste post, você descobrirá uma introdução gentil a Generative Adversarial Networks, ou GANs.
Depois de ler este post, você saberá:
- Contextos para GANs, incluindo aprendizagem supervisionada vs. não supervisionada e modelagem discriminatória vs. generativa.
- GANs são uma arquitetura para treinamento automático de um modelo generativo, tratando o problema não supervisionado como supervisionado e usando tanto um modelo generativo quanto um modelo discriminativo.
- GANs fornecem um caminho para o aumento sofisticado de dados específicos do domínio e uma solução para problemas que requerem uma solução generativa, como a tradução da imagem para a imagem.
P>Dê início ao seu projeto com meu novo livro Generative Adversarial Networks with Python, incluindo tutoriais passo-a-passo e os arquivos de código fonte Python para todos os exemplos.
Dê início ao seu projeto.
A Gentle Introduction to Generative Adversarial Networks (GANs)
Photo de Barney Moss, alguns direitos reservados.
- Visão Geral
- O que são Modelos Generativos?
- Supervisionados vs. Aprendizagem não supervisionada
- Quer desenvolver GANs a partir do zero?
- Discriminativa vs. Generative Modeling
- Exemplos de Modelos Generativos
- O que são Redes Generativas Adversariais?
- O Modelo Gerador
- O Modelo Discriminador
- GANs como Jogo de Dois Jogadores
- GANs e Redes Neurais Convolucionais
- GANs Condicionais
- Por que Redes Adversariais Gerativas?
- Outras Leituras
- Posts
- Books
- Papers
- Articles
- Sumário
- Develop Generative Adversarial Networks Today!
- Develop Your GAN Models in Minutes
- Finally Bring GAN Models to your Vision Projects
Visão Geral
Este tutorial está dividido em três partes; elas são:
- O que são Modelos Generativos?
- O que são Redes Adversariais Generativas?
- Porquê Redes Adversariais Generativas?
O que são Modelos Generativos?
Nesta secção, iremos rever a ideia de modelos generativos, passando por cima dos paradigmas de aprendizagem supervisionados vs. não supervisionados e modelos discriminatórios vs. generativos.
Supervisionados vs. Aprendizagem não supervisionada
Um problema típico de aprendizagem da máquina envolve o uso de um modelo para fazer uma previsão, por exemplo, modelagem preditiva.
Isto requer um conjunto de dados de treinamento que é usado para treinar um modelo, composto de múltiplos exemplos, chamados de amostras, cada um com variáveis de entrada (X) e rótulos de classe de saída (y). Um modelo é treinado mostrando exemplos de inputs, fazendo com que ele preveja outputs, e corrigindo o modelo para tornar os outputs mais parecidos com os outputs esperados.
Na abordagem de aprendizagem preditiva ou supervisionada, o objetivo é aprender um mapeamento de inputs x para outputs y, dado um conjunto rotulado de pares input-output …
– Página 2, Aprendizagem de Máquina: A Probabilistic Perspective, 2012.
Esta correcção do modelo é geralmente referida como uma forma supervisionada de aprendizagem, ou aprendizagem supervisionada.
Exemplos de problemas de aprendizagem supervisionada incluem classificação e regressão, e exemplos de algoritmos de aprendizagem supervisionada incluem regressão logística e floresta aleatória.
Há outro paradigma de aprendizagem onde o modelo recebe apenas as variáveis de entrada (X) e o problema não tem nenhuma variável de saída (y).
Um modelo é construído extraindo ou resumindo os padrões nos dados de entrada. Não há correção do modelo, pois o modelo não está prevendo nada.
O segundo tipo principal de aprendizagem da máquina é a abordagem de aprendizagem descritiva ou não supervisionada. Aqui só nos são dadas entradas, e o objectivo é encontrar “padrões interessantes” nos dados. Este é um problema muito menos bem definido, uma vez que não nos é dito que tipos de padrões devemos procurar, e não existe uma métrica de erro óbvia a usar (ao contrário da aprendizagem supervisionada, onde podemos comparar a nossa previsão de y para um dado x com o valor observado).
– Página 2, Machine Learning: A Probabilistic Perspective, 2012.
Esta falta de correcção é geralmente referida como uma forma não supervisionada de aprendizagem, ou aprendizagem não supervisionada.
Exemplos de problemas de aprendizagem não supervisionada incluem clustering e modelagem generativa, e exemplos de algoritmos de aprendizagem não supervisionada são K-means e Generative Adversarial Networks.
Quer desenvolver GANs a partir do zero?
Faça agora o meu curso de 7 dias grátis por email (com código de exemplo).
Click para se inscrever e também obter uma versão PDF Ebook grátis do curso.
Download Your FREE Mini-Course
Discriminativa vs. Generative Modeling
Na aprendizagem supervisionada, podemos estar interessados em desenvolver um modelo para prever um rótulo de classe dado um exemplo de variáveis de entrada.
Esta tarefa de modelagem preditiva é chamada classificação.
Classificação também é tradicionalmente referida como modelagem discriminatória.
… usamos os dados de treinamento para encontrar uma função discriminante f(x) que mapeia cada x diretamente em um rótulo de classe, combinando assim as etapas de inferência e decisão em um único problema de aprendizagem.
— Page 44, Pattern Recognition and Machine Learning, 2006.
This is because a model must discriminate examples of input variables across classes; it must choose or make a decision as to what class a given example belongs.
Example of Discriminative Modeling
Alternately, unsupervised models that summarize the distribution of input variables may be able to be used to create or generate new examples in the input distribution.
As such, these types of models are referred to as generative models.
Example of Generative Modeling
For example, a single variable may have a known data distribution, such as a Gaussian distribution, or bell shape. Um modelo generativo pode ser capaz de resumir suficientemente essa distribuição de dados, e então ser usado para gerar novas variáveis que se encaixem plausivelmente na distribuição da variável de entrada.
Aplicações que modelam explícita ou implicitamente a distribuição de entradas e saídas são conhecidas como modelos generativos, porque por amostragem a partir deles é possível gerar pontos de dados sintéticos no espaço de entrada.
– Página 43, Pattern Recognition and Machine Learning, 2006.
Na verdade, um modelo generativo realmente bom pode ser capaz de gerar novos exemplos que não são apenas plausíveis, mas indistinguíveis de exemplos reais do domínio do problema.
Exemplos de Modelos Generativos
Naive Bayes é um exemplo de um modelo generativo que é mais frequentemente usado como um modelo discriminatório.
Por exemplo, Naive Bayes trabalha resumindo a distribuição de probabilidade de cada variável de entrada e a classe de saída. Quando uma previsão é feita, a probabilidade para cada resultado possível é calculada para cada variável, as probabilidades independentes são combinadas, e o resultado mais provável é previsto. Usado ao contrário, as distribuições de probabilidade para cada variável podem ser amostradas para gerar novos valores plausíveis (independentes) de características.
Outros exemplos de modelos generativos incluem a Alocação Latente Dirichlet, ou LDA, e o Modelo Mixto Gaussiano, ou GMM.
Métodos de aprendizagem profundos podem ser usados como modelos generativos. Dois exemplos populares incluem a Máquina Boltzmann Restrita, ou RBM, e a Rede de Crença Profunda, ou DBN.
Dois exemplos modernos de algoritmos de modelagem generativa de aprendizagem profunda incluem o Autocodificador Variacional, ou VAE, e a Rede Adversarial Generativa, ou GAN.
O que são Redes Generativas Adversariais?
Redes Generativas Adversariais, ou GANs, são um modelo generativo baseado na aprendizagem profunda.
Mais geralmente, os GANs são uma arquitectura de modelos para o treino de um modelo generativo, e é mais comum utilizar modelos de aprendizagem profunda nesta arquitectura.
A arquitetura GAN foi descrita pela primeira vez no artigo de 2014 por Ian Goodfellow, et al. intitulado “Generative Adversarial Networks”
Uma abordagem padronizada chamada Deep Convolutional Generative Adversarial Networks, ou DCGAN, que levou a modelos mais estáveis foi mais tarde formalizada por Alec Radford, et al. no trabalho de 2015 intitulado “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks”.
A maioria dos GANs hoje em dia são pelo menos vagamente baseados na arquitetura DCGAN …
– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
A arquitetura do modelo GAN envolve dois sub-modelos: um modelo gerador para gerar novos exemplos e um modelo discriminador para classificar se os exemplos gerados são reais, do domínio, ou falsos, gerados pelo modelo gerador.
- Generator. Modelo que é usado para gerar novos exemplos plausíveis a partir do domínio do problema.
- Discriminador. Modelo que é usado para classificar exemplos como reais (do domínio) ou falsos (gerados).
Redes geradoras de adversários são baseadas em um cenário teórico de jogo no qual a rede geradora deve competir contra um adversário. A rede geradora produz diretamente amostras. Seu adversário, a rede discriminadora, tenta distinguir entre amostras retiradas dos dados de treinamento e amostras retiradas do gerador.
– Página 699, Deep Learning, 2016.
O Modelo Gerador
O modelo gerador toma um vetor aleatório de comprimento fixo como entrada e gera uma amostra no domínio.
O vetor é retirado aleatoriamente de uma distribuição Gaussiana, e o vetor é usado para semear o processo generativo. Após o treinamento, pontos neste espaço vetorial multidimensional corresponderão a pontos no domínio do problema, formando uma representação comprimida da distribuição dos dados.
Este espaço vetorial é referido como um espaço latente, ou um espaço vetorial composto por variáveis latentes. Variáveis latentes, ou variáveis ocultas, são aquelas variáveis que são importantes para um domínio mas não são directamente observáveis.
Uma variável latente é uma variável aleatória que não podemos observar directamente.
– Página 67, Deep Learning, 2016.
Referimo-nos frequentemente a variáveis latentes, ou a um espaço latente, como uma projecção ou compressão de uma distribuição de dados. Ou seja, um espaço latente fornece uma compressão ou conceitos de alto nível dos dados brutos observados, tais como a distribuição dos dados de entrada. No caso dos GANs, o modelo gerador aplica significado aos pontos de um espaço latente escolhido, de tal forma que novos pontos extraídos do espaço latente podem ser fornecidos ao modelo gerador como entrada e usados para gerar novos e diferentes exemplos de saída.
Modelos de aprendizagem de máquina podem aprender o espaço estatístico latente de imagens, música e histórias, e podem então amostrar a partir deste espaço, criando novas obras de arte com características semelhantes às que o modelo viu nos seus dados de formação.
– Página 270, Deep Learning with Python, 2017.
Após o treinamento, o modelo gerador é mantido e utilizado para gerar novas amostras.
O Modelo Discriminador
O modelo discriminador toma um exemplo do domínio como input (real ou gerado) e prevê uma etiqueta de classe binária de real ou falsa (gerada).
O exemplo real vem do conjunto de dados do treinamento. Os exemplos gerados são gerados pelo modelo gerador.
O discriminador é um modelo de classificação normal (e bem compreendido).
Após o processo de treinamento, o modelo discriminador é descartado, pois estamos interessados no gerador.
Por vezes, o gerador pode ser redirecionado, pois ele aprendeu a extrair efetivamente características de exemplos no domínio do problema. Algumas ou todas as camadas de extração de características podem ser usadas em aplicações de aprendizagem de transferência usando os mesmos dados de entrada ou dados semelhantes.
Propomos que uma forma de construir boas representações de imagem é através do treinamento de Redes Geradoras Adversariais (GANs), e posteriormente reutilizando partes das redes geradoras e discriminatórias como extratores de características para tarefas supervisionadas
– Aprendizagem de Representação Não Supervisionada com Redes Geradoras de Convolução Profunda, 2015.
Exemplo do Modelo Discriminador de GAN
GANs como Jogo de Dois Jogadores
A modelagem gerativa é um problema de aprendizagem não supervisionada, como discutimos na seção anterior, embora uma propriedade inteligente da arquitetura do GAN seja que o treinamento do modelo generativo é enquadrado como um problema de aprendizagem supervisionada.
Os dois modelos, o gerador e o discriminador, são treinados em conjunto. O gerador gera um lote de amostras, e estas, juntamente com exemplos reais do domínio, são fornecidas ao discriminador e classificadas como reais ou falsas.
O discriminador é então atualizado para melhorar na discriminação de amostras reais e falsas na próxima rodada, e o mais importante, o gerador é atualizado com base no quão bem, ou não, as amostras geradas enganaram o discriminador.
Podemos pensar no gerador como sendo como um falsificador, tentando fazer dinheiro falso, e o discriminador como sendo como a polícia, tentando permitir dinheiro legítimo e apanhar dinheiro falso. Para ter sucesso neste jogo, o falsificador deve aprender a fazer dinheiro que é indistinguível do dinheiro genuíno, e a rede geradora deve aprender a criar amostras que são retiradas da mesma distribuição dos dados de treinamento.
– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
Desta forma, os dois modelos estão competindo um contra o outro, são adversários no sentido da teoria do jogo, e estão jogando um jogo de soma zero.
Porque o framework GAN pode ser naturalmente analisado com as ferramentas da teoria dos jogos, chamamos GANs de “adversarial”.
– NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
Neste caso, soma zero significa que quando o discriminador identifica com sucesso amostras reais e falsas, ele é recompensado ou nenhuma mudança é necessária nos parâmetros do modelo, enquanto o gerador é penalizado com grandes atualizações nos parâmetros do modelo.
Alternately, quando o gerador engana o discriminador, ele é recompensado, ou nenhuma mudança é necessária nos parâmetros do modelo, mas o discriminador é penalizado e seus parâmetros de modelo são atualizados.
Em um limite, o gerador gera réplicas perfeitas do domínio de entrada toda vez, e o discriminador não pode dizer a diferença e prevê “inseguro” (por exemplo, 50% para real e falso) em todos os casos. Este é apenas um exemplo de um caso idealizado; não precisamos chegar a este ponto para chegar a um modelo gerador útil.
Exemplo da Arquitetura do Modelo Generativo Adversarial de Rede
leva o discriminador a tentar aprender a classificar corretamente as amostras como reais ou falsas. Simultaneamente, o gerador tenta enganar o classificador para que este acredite que suas amostras são reais. Na convergência, as amostras do gerador são indistinguíveis dos dados reais, e o discriminador produz 1/2 em todos os lugares. O discriminador pode então ser descartado.
– Página 700, Deep Learning, 2016.
GANs e Redes Neurais Convolucionais
GANs normalmente trabalham com dados de imagem e usam Redes Neurais Convolucionais, ou CNNs, como modelos gerador e discriminador.
A razão para isso pode ser tanto porque a primeira descrição da técnica foi no campo da visão computacional e usou CNNs e dados de imagem, como também devido ao notável progresso que tem sido visto nos últimos anos usando CNNs de forma mais geral para alcançar resultados de última geração em um conjunto de tarefas de visão computacional como detecção de objetos e reconhecimento de face.
Dados de imagem de modelagem significam que o espaço latente, a entrada para o gerador, fornece uma representação comprimida do conjunto de imagens ou fotografias usadas para treinar o modelo. Também significa que o gerador gera novas imagens ou fotografias, fornecendo uma saída que pode ser facilmente visualizada e avaliada pelos desenvolvedores ou usuários do modelo.
Pode ser este facto acima de outros, a capacidade de avaliar visualmente a qualidade do output gerado, que levou tanto ao foco das aplicações de visão por computador com CNNs como aos saltos massivos na capacidade dos GANs em comparação com outros modelos generativos, baseados em aprendizagem profunda ou não.
GANs Condicionais
Uma importante extensão do GAN está no seu uso para gerar condicionalmente um output.
O modelo generativo pode ser treinado para gerar novos exemplos a partir do domínio de input, onde o input, o vetor aleatório do espaço latente, é fornecido com (condicionado por) algum input adicional.
O input adicional pode ser um valor de classe, como masculino ou feminino na geração de fotografias de pessoas, ou um dígito, no caso da geração de imagens de dígitos escritos à mão.
As redes adversas generativas podem ser estendidas a um modelo condicional se tanto o gerador quanto o discriminador estiverem condicionados a alguma informação adicional y. y poderia ser qualquer tipo de informação auxiliar, como etiquetas de classe ou dados de outras modalidades. Podemos realizar o condicionamento alimentando y tanto o discriminador quanto o gerador como camada de entrada adicional.
– Redes Adversariais Geradoras Condicionais, 2014.
O discriminador também é condicionado, significando que ele é fornecido tanto com uma imagem de entrada que é real ou falsa quanto com a entrada adicional. No caso de uma etiqueta de classificação tipo input condicional, o discriminador esperaria então que o input fosse dessa classe, por sua vez ensinando o gerador a gerar exemplos dessa classe para enganar o discriminador.
Desta forma, um GAN condicional pode ser usado para gerar exemplos de um domínio de um determinado tipo.
Dando mais um passo, os modelos de GAN podem ser condicionados a um exemplo do domínio, como uma imagem. Isto permite aplicações de GANs como tradução de texto para imagem, ou tradução de imagem para imagem. Isto permite algumas das aplicações mais impressionantes dos GANs, tais como transferência de estilo, colorização de fotos, transformação de fotos do verão para o inverno ou do dia para a noite, e assim por diante.
No caso de GANs condicionais para tradução de imagem para imagem, tais como transformação do dia para a noite, o discriminador é fornecido com exemplos de fotos reais e geradas à noite, bem como (condicionadas em) fotos reais durante o dia como entrada. O gerador é fornecido com um vetor aleatório do espaço latente, bem como (condicionado em) fotos diurnas reais como entrada.
Por que Redes Adversariais Gerativas?
Um dos muitos grandes avanços no uso de métodos de aprendizagem profunda em domínios como a visão computacional é uma técnica chamada de aumento de dados.
O aumento de dados resulta em modelos com melhor desempenho, tanto aumentando a habilidade do modelo como proporcionando um efeito regularizador, reduzindo o erro de generalização. Ela funciona criando exemplos novos, artificiais mas plausíveis a partir do domínio do problema de entrada no qual o modelo é treinado.
As técnicas são primitivas no caso de dados de imagem, envolvendo colheitas, inversões, zooms, e outras transformações simples de imagens existentes no conjunto de dados de treinamento.
A modelagem generativa bem sucedida fornece uma abordagem alternativa e potencialmente mais específica de domínio para o aumento de dados. Na verdade, a modelagem de aumento de dados é uma versão simplificada da modelagem generativa, embora raramente seja descrita desta forma.
… ampliando a amostra com dados latentes (não observados). Isto é chamado de aumento de dados. Em outros problemas, os dados latentes são dados reais que deveriam ter sido observados, mas estão faltando.
– Página 276, Os Elementos de Aprendizagem Estatística, 2016.
Em domínios complexos ou com uma quantidade limitada de dados, a modelagem generativa fornece um caminho para mais treinamento para a modelagem. Os GANs têm tido muito sucesso neste caso de utilização em domínios como a aprendizagem de reforço profundo.
Existem muitas razões de pesquisa pelas quais os GANs são interessantes, importantes e requerem um estudo mais aprofundado. Ian Goodfellow descreve uma série delas em sua palestra principal da conferência de 2016 e relatório técnico associado intitulado “NIPS 2016 Tutorial”: Generative Adversarial Networks”
Por essas razões, ele destaca a capacidade bem sucedida dos GANs de modelar dados de alta dimensão, lidar com dados ausentes e a capacidade dos GANs de fornecer resultados multimodais ou múltiplas respostas plausíveis.
Talvez a aplicação mais convincente dos GANs seja em GANs condicionais para tarefas que requerem a geração de novos exemplos. Aqui, o Goodfellow indica três exemplos principais:
- Super-Resolução de Imagem. A capacidade de gerar versões de alta resolução de imagens de entrada.
- Criando Arte. A capacidade de grandes imagens novas e artísticas, esboços, pintura, e mais.
- Image-to-Image Translation. A capacidade de traduzir fotografias entre domínios, como dia para noite, verão para inverno e mais.
Talvez a razão mais convincente para que os GANs sejam amplamente estudados, desenvolvidos e usados seja por causa de seu sucesso. Os GANs têm sido capazes de gerar fotos tão realistas que os humanos são incapazes de dizer que são de objetos, cenas e pessoas que não existem na vida real.
Astonishing não é um adjetivo suficiente para sua capacidade e sucesso.
Exemplo da Progressão nas Capacidades dos GANs de 2014 a 2017. Extraído de The Malicious Use of Artificial Intelligence (O Uso Malicioso da Inteligência Artificial): Forecasting, Prevention, and Mitigation, 2018.
Outras Leituras
Esta secção fornece mais recursos sobre o tópico, se estiver a procurar ir mais fundo.
Posts
- Best Resources for Getting Started With Generative Adversarial Networks (GANs)
- 18 Impressive Applications of Generative Adversarial Networks (GANs)
Books
- Chapter 20. Deep Generative Models, Deep Learning, 2016.
- Chapter 8. Generative Deep Learning, Deep Learning with Python, 2017.
- Machine Learning: A Probabilistic Perspective, 2012.
- Pattern Recognition and Machine Learning, 2006.
- The Elements of Statistical Learning, 2016.
Papers
- Generative Adversarial Networks, 2014.
- Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
- NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
- Conditional Generative Adversarial Nets, 2014.
- The Malicious Use of Artificial Intelligence: Forecasting, Prevention, and Mitigation, 2018.
Articles
- Modelo generativo, Wikipedia.
- Variável Latente, Wikipedia.
- Generative Adversarial Network, Wikipedia.
Sumário
Neste post, você descobriu uma introdução gentil a Generative Adversarial Networks, ou GANs.
Especificamente, você aprendeu:
- Contextos para GANs, incluindo GANs supervisionados vs. aprendizagem não supervisionada e modelagem discriminatória vs. generativa.
- GANs são uma arquitetura para treinamento automático de um modelo generativo, tratando o problema não supervisionado como supervisionado e usando tanto um modelo generativo quanto um modelo discriminatório.
- GANs fornecem um caminho para o aumento sofisticado de dados específicos do domínio e uma solução para problemas que requerem uma solução generativa, como a tradução da imagem para a imagem.
Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.
Develop Generative Adversarial Networks Today!
Develop Your GAN Models in Minutes
…with just a few lines of python code
Discover how in my new Ebook:
Generative Adversarial Networks with Python
It provides self-study tutorials and end-to-end projects on:
DCGAN, conditional GANs, image translation, Pix2Pix, CycleGAN
and much more…
Finally Bring GAN Models to your Vision Projects
Skip the Academics. Just Results.See What’s Inside