Articles

Modelos generativos

este post descreve quatro projetos que compartilham um tema comum de melhorar ou usar modelos generativos, um ramo de técnicas de aprendizagem não supervisionadas na aprendizagem de máquinas. Além de descrever nosso trabalho, este post lhe dirá um pouco mais sobre modelos generativos: o que eles são, por que eles são importantes, e para onde eles podem estar indo.

uma das nossas aspirações centrais no OpenAI é desenvolver algoritmos e técnicas que dotem os computadores com uma compreensão do nosso mundo.

é fácil esquecer o quanto você sabe sobre o mundo: você entende que é feito de ambientes 3D, objetos que se movem, colidem, interagem; pessoas que andam, falam e pensam; animais que pastam, voam, correm ou ladram; monitores que exibem informações codificadas na linguagem sobre o tempo, que ganharam um jogo de basquete, ou o que aconteceu em 1970.

Esta enorme quantidade de informação está lá fora e, em grande medida, facilmente acessível — seja no mundo físico dos átomos ou no mundo digital dos bits. A única parte complicada é desenvolver modelos e algoritmos que possam analisar e entender este tesouro de dados.modelos generativos são uma das abordagens mais promissoras para este objetivo. Para treinar um modelo generativo, primeiro coletamos uma grande quantidade de dados em algum domínio (por exemplo, pensar milhões de imagens, sentenças, ou sons, etc.) e, em seguida, treinar um modelo para gerar dados como ele. A intuição por trás desta abordagem segue uma famosa citação de Richard Feynman:

“What I cannot create, I do not understand.”

—Richard Feynman

O truque é que as redes neurais usamos como geradora de modelos possuem um número de parâmetros significativamente menor do que a quantidade de dados que treiná-los, então os modelos são forçados a descobrir e eficiente de internalizar a essência de dados, a fim de gerar-lo.

modelos generativos têm muitas aplicações de curto prazo. Mas a longo prazo, eles têm o potencial de aprender automaticamente as características naturais de um conjunto de dados, sejam categorias ou dimensões ou algo completamente diferente.

gerando imagens

vamos tornar isto mais concreto com um exemplo. Suponha que temos uma grande coleção de imagens, tais como os 1,2 milhões de imagens no conjunto de dados de ImageNet (mas tenha em mente que isso poderia eventualmente ser uma grande coleção de imagens ou vídeos da internet ou robôs). Se nós dimensionarmos cada imagem para ter largura e altura de 256 (como é comumente feito), nosso conjunto de dados é um grande bloco de pixels1,200,000x256x256x3 (cerca de 200GB). Aqui estão algumas imagens de exemplo deste conjunto de dados:

estas imagens são exemplos de como o nosso mundo visual se parece e referimo-nos a estas como “amostras da verdadeira distribuição de dados”. Nós agora construímos nosso modelo generativo que gostaríamos de treinar para gerar imagens como esta do zero. Concretamente, um modelo generativo neste caso poderia ser uma grande rede neural que produz imagens e nos referimos a elas como”amostras do modelo”.

DCGAN

um modelo recente é a rede DCGAN de Radford et al. (abaixar). Esta rede recebe como entrada 100 números aleatórios extraídos de uma distribuição uniforme (referimo-nos a estes como um código, ou variáveis latentes, em vermelho) e produz uma imagem (neste caso 64x64x3 imagens à direita, em verde). Como o código é alterado incrementalmente, as imagens geradas também — isso mostra que o modelo aprendeu características para descrever como o mundo parece, em vez de apenas memorizar alguns exemplos.

a rede (em amarelo) é composta por componentes da rede neural convolucional padrão, tais como camadas desconvolúcionais (inversa de camadas convolúcionais), camadas totalmente conectadas, etc.:

DCGAN is initialized with random weights, so a random code plugged into the network would generate a completely random image. No entanto, como você pode imaginar, a rede tem milhões de parâmetros que pode ser ajustado, e o objetivo é encontrar uma definição desses parâmetros que torna amostras geradas a partir de códigos aleatórios olhar como os dados de treinamento. Ou, por outras palavras, queremos que a distribuição do modelo corresponda à verdadeira distribuição de dados no espaço das imagens.

treinando um modelo generativo

suponha que usamos uma rede recém-inicializada para gerar 200 imagens, cada vez começando com um código aleatório diferente. A questão é: como devemos ajustar os parâmetros da rede para incentivá-la a produzir amostras um pouco mais credíveis no futuro? Note que nós não estamos em um ajuste supervisionado simples e não temos nenhum alvo desejado explícito para as nossas 200 imagens geradas; nós apenas queremos que elas pareçam reais. Uma abordagem inteligente em torno deste problema é seguir a abordagem Gerativa da rede adversária (GAN). Aqui introduzimos uma segunda rede discriminadora (geralmente uma rede neural convolucional padrão) que tenta classificar se uma imagem de entrada é real ou gerada. Por exemplo, poderíamos alimentar as 200 imagens geradas e 200 imagens reais no discriminador e treiná-lo como um classificador padrão para distinguir entre as duas fontes. Mas além disso — e aqui está o truque-nós também podemos backpropagate através do discriminador e do gerador para descobrir como devemos mudar os parâmetros do gerador para tornar as suas 200 amostras um pouco mais confusas para o discriminador. Estas duas redes estão, portanto, bloqueadas numa batalha: o discriminador está a tentar distinguir imagens reais de imagens falsas e o gerador está a tentar criar imagens que fazem o discriminador pensar que são reais. No final, a rede do gerador está expondo imagens que são indistinguíveis das imagens reais para o discriminador.

existem algumas outras abordagens para combinar estas distribuições que vamos discutir brevemente abaixo. Mas antes de chegarmos lá abaixo estão duas animações que mostram amostras de um modelo Generativo para dar-lhe um sentido visual para o processo de treinamento.em ambos os casos, as amostras do gerador começam ruidosas e caóticas, e ao longo do tempo convergem para ter estatísticas de imagem mais plausíveis.:

VAE de aprendizagem para gerar imagens (registo de tempo)
GAN aprendizagem para gerar imagens (tempo linear)

Este é emocionante, estas redes neurais estão aprendendo que o mundo visual parece! Estes modelos geralmente têm apenas cerca de 100 milhões de parâmetros, então uma rede treinada em ImageNet tem que (lossily) comprimir 200GB de dados de pixels em 100MB de pesos. Isto incentiva-o a descobrir as características mais salientes dos dados: por exemplo, ele provavelmente vai aprender que pixels próximos são susceptíveis de ter a mesma cor, ou que o mundo é composto de arestas horizontais ou verticais, ou bolhas de cores diferentes. Eventualmente, o modelo pode descobrir muitas regularidades mais complexas: que existem certos tipos de fundos, objetos, texturas, que eles ocorrem em certos arranjos prováveis, ou que eles se transformam de certa forma ao longo do Tempo em vídeos, etc.

formulação mais geral

matematicamente, pensamos num conjunto de dados de exemplos \(x_1, \ldots, x_n\) como amostras de uma verdadeira distribuição de dados \(P(x)\). Na imagem de exemplo abaixo, a região azul mostra a parte do espaço de imagem que, com uma alta probabilidade (acima de algum limiar) contém imagens reais, e pontos negros indicam nossos pontos de dados (cada uma é uma imagem em nosso conjunto de dados). Agora, o nosso modelo também descreve uma distribuição \(\hat{P}_{\theta} (x)\) (verde) que é definida implicitamente tomando pontos de uma distribuição gaussiana unidade (vermelho) e mapeando — os através de uma rede neural (determinística) – o nosso modelo generativo (amarelo). A nossa rede é uma função com parâmetros \(\theta\), e ajustar estes parâmetros irá ajustar a distribuição gerada das imagens. Nosso objetivo, então, é encontrar os parâmetros \(\theta\) que produzem uma distribuição que corresponde De Perto à verdadeira distribuição de dados (por exemplo, por ter uma pequena perda de divergência KL). Portanto, você pode imaginar a distribuição verde começando aleatoriamente e, em seguida, o processo de treinamento iterativamente mudando os parâmetros \(\theta\) para esticar e apertá-lo para melhor corresponder à distribuição azul.

três abordagens a modelos generativos

a maioria dos modelos generativos têm esta configuração básica, mas diferem nos detalhes. Aqui estão três exemplos populares de abordagens de modelo Generativo para dar-lhe um sentido da variação:

  • Generativo Contraditório Redes (GANs), que nós já discutimos acima, representam o processo de formação como um jogo entre duas redes separadas: um gerador de rede (como visto acima) e uma segunda discriminatório rede que tenta classificar amostras como proveniente da verdadeira distribuição de \(p(x)\) ou o modelo de distribuição de \(\hat{p}(x)\). Cada vez que o discriminador percebe uma diferença entre as duas distribuições, o gerador ajusta seus parâmetros ligeiramente para fazê-lo desaparecer, até que no final (em teoria) o gerador reproduz exatamente a verdadeira distribuição de dados e o discriminador está adivinhando aleatoriamente, incapaz de encontrar uma diferença.
  • Autoencoders variacionais (VAEs) nos permitem formalizar este problema no quadro de modelos gráficos probabilísticos onde estamos maximizando um limite inferior na probabilidade logarítmica dos dados.
  • modelos Autoregressivos como Pixelrn em vez disso treinam uma rede que modela a distribuição condicional de cada pixel individual dado pixels anteriores (para a esquerda e para o topo). Isto é semelhante a ligar os pixels da imagem em um char-rnn, mas os RNNs executam tanto horizontalmente quanto verticalmente sobre a imagem em vez de apenas uma sequência de caracteres 1D.todas estas abordagens têm os seus prós e contras. Por exemplo, Autoencoders variacionais permitem-nos realizar tanto a aprendizagem como a inferência bayesiana eficiente em modelos gráficos probabilísticos sofisticados com variáveis latentes (por exemplo, veja DRAW, ou Attend infere Repeat for hints of recent relatively complex models). No entanto, as amostras geradas tendem a ser ligeiramente desfocadas. GANs atualmente geram as imagens mais nítidas, mas são mais difíceis de otimizar devido à dinâmica de treinamento instável. PixelRNNs têm um processo de treinamento muito simples e estável (perda de softmax) e atualmente dão o melhor likelihoods log (ou seja, plausibilidade dos dados gerados). No entanto, eles são relativamente ineficientes durante a amostragem e não fornecem facilmente códigos simples de baixa dimensão para imagens. Todos esses modelos são áreas ativas de pesquisa e estamos ansiosos para ver como eles se desenvolvem no futuro!

    nossas recentes contribuições

    estamos bastante entusiasmados com modelos generativos no OpenAI, e acabamos de lançar quatro projetos que promovem o estado da arte. Para cada uma dessas contribuições estamos também lançando um relatório técnico e código fonte.melhoria do GANs (código). Primeiro, como mencionado acima GANs são uma família muito promissora de modelos generativos porque, ao contrário de outros métodos, eles produzem imagens muito limpas e afiadas e aprendem códigos que contêm informações valiosas sobre essas texturas. No entanto, GANs são formulados como um jogo entre duas redes e é importante (e complicado!) para mantê-los em equilíbrio: por exemplo, eles podem oscilar entre soluções, ou o gerador tem uma tendência a colapsar. Neste trabalho, Tim Salimans, Ian Goodfellow, Wojciech Zaremba e colegas introduziram algumas novas técnicas para tornar o treinamento de GAN mais estável. Estas técnicas permitem-nos escalar GANs e obter nice 128x128 ImageNet samples:

    Real images (ImageNet)
    Generated images

    Our CIFAR-10 samples also look very sharp – Amazon Mechanical Turk workers can distinguish our samples from real data with an error rate of 21.3% (50% would be random guessing):

    Real images (CIFAR-10)
    Generated images

    In addition to generating pretty pictures, we introduce an approach for semi-supervised learning with GANs that involves the discriminator producing an additional output indicating the label of the input. Esta abordagem nos permite obter resultados de última geração em MNIST, SVHN e CIFAR-10 em configurações com muito poucos exemplos rotulados. Em MNIST, por exemplo, nós alcançamos 99,14% de precisão com apenas 10 exemplos rotulados por classe com uma rede neural totalmente conectada — um resultado que é muito próximo dos melhores resultados conhecidos com abordagens totalmente supervisionadas usando todos os 60.000 exemplos rotulados. Isto é muito promissor porque exemplos rotulados podem ser muito caros para obter na prática.as redes de oposição Gerativas são um modelo relativamente novo (introduzido há apenas dois anos)e esperamos ver progressos mais rápidos na melhoria da estabilidade destes modelos durante a formação.melhoria das VAEs (código). In this work Durk Kingma and Tim Salimans introduce a flexible and computationally scalable method for improving the accuracy of variational inference. Em particular, a maioria das VAEs foram treinadas até agora usando posteriores aproximados brutos, onde cada variável latente é independente. Extensões recentes têm abordado este problema condicionando cada variável latente nos outros antes dele em uma cadeia, mas isso é computacionalmente ineficiente devido às dependências sequenciais introduzidas. A contribuição fundamental deste trabalho, denominado fluxo autoregressivo inverso( IAF), é uma nova abordagem que, ao contrário do trabalho anterior, nos permite paralelizar a computação de posteriores aproximados ricos, e torná-los quase arbitrariamente flexíveis.

    mostramos alguns exemplos 32x32 amostras de imagem do modelo na imagem abaixo, à direita. À esquerda estão amostras anteriores do modelo de desenho para comparação (vanilla VAE amostras pareceria ainda pior e mais desfocado). O modelo DRAW foi publicado apenas há um ano, sublinhando mais uma vez os rápidos progressos realizados nos modelos geradores de formação.

    Gerado a partir de um EMPATE modelo
    Gerado a partir de um VAE treinados com IAF

    InfoGAN (código). Peter Chen e colegas introduzem InfoGAN – uma extensão de GAN que aprende representações desenfreadas e interpretáveis para imagens. Regular GAN atinge o objetivo de reproduzir a distribuição de dados no modelo, mas o layout e a organização do espaço de código é underspecified — há muitas soluções possíveis para o mapeamento da unidade de Gauss para imagens e o final pode ser complexa e altamente enredado. O InfoGAN impõe uma estrutura adicional a este espaço, acrescentando novos objetivos que envolvem a maximização da informação mútua entre pequenos subconjuntos das variáveis de representação e a observação. Esta abordagem proporciona resultados bastante notáveis. Por exemplo, nas imagens das faces 3D abaixo, variamos uma dimensão contínua do Código, mantendo todas as outras fixas. É claro a partir dos cinco exemplos fornecidos (ao longo de cada linha) que as dimensões resultantes na captura de código dimensões interpretáveis, e que o modelo talvez tenha entendido que existem ângulos de câmera, variações faciais, etc., sem ter sido dito que estas características existem e são importantes:

    (a) Azimuth (pose)
    (b) Elevation
    (c) Lighting
    (d) Wide or Narrow

    We also note that nice, disentangled representations have been alcançado antes (como com DC-IGN por Kulkarni et al.), mas estas abordagens dependem de supervisão adicional, enquanto a nossa abordagem é totalmente não supervisionada.

    os dois próximos projetos recentes estão em uma configuração de reforço de aprendizagem (RL) (outra área de foco no OpenAI), mas ambos envolvem um componente de modelo generativo.

    Exploration-driven in Deep Reinforcement Learning via Bayesian Neural Networks (code). A exploração eficiente em espaços de alta dimensão e contínua é atualmente um desafio não resolvido na aprendizagem de reforço. Sem métodos de exploração eficazes, os nossos agentes andam por aí até tropeçarem aleatoriamente em situações gratificantes. Isso é suficiente em muitas tarefas simples de brinquedo, mas inadequado se quisermos aplicar esses algoritmos a configurações complexas com espaços de ação de alta dimensão, como é comum na robótica. Neste artigo, Rein Houthooft e colegas propõem VIME, uma abordagem prática da exploração usando incerteza em modelos generativos. VIME faz o agente auto-motivado; ele busca ativamente para fora surpreendentes ações de Estado. Mostramos que a VIME pode melhorar uma série de métodos de pesquisa de políticas e faz progressos significativos em tarefas mais realistas com recompensas escassas (por exemplo, cenários em que o agente tem de aprender primitivas de locomoção sem qualquer orientação).

    Política de formação com VIME
    Política de formação com a ingênua exploração

    por último, gostaríamos de incluir um bônus quinto projeto: Generative Contraditório Imitação de Aprendizagem (código), em que Jônatas Ho e colegas apresentam uma nova abordagem para a imitação de aprendizagem. Jonathan Ho vai juntar-se a nós no OpenAI como estagiário de Verão. Ele fez a maior parte deste trabalho em Stanford, mas incluímo-lo aqui como uma aplicação relacionada e altamente criativa do GANs ao RL. A configuração padrão de aprendizagem de reforço geralmente requer um para projetar uma função de recompensa que descreve o comportamento desejado do agente. No entanto, na prática, isso pode, por vezes, envolver dispendioso processo de tentativa e erro para obter os detalhes certo. Em contraste, em imitação de aprendizagem, o agente aprende a partir de exemplos de demonstrações (por exemplo, fornecidas pela teleoperação em robótica), eliminando a necessidade de conceber uma função de recompensa.

    Popular imitação abordagens envolvem dois estágio de pipeline: primeiro aprendizagem de uma recompensa de função e, em seguida, executando o RL em que a recompensa. Tal oleoduto pode ser lento, e porque é indireto, é difícil garantir que a política resultante funciona bem. Este trabalho mostra como se pode extrair diretamente Políticas de dados através de uma conexão com o GANs. Como resultado, esta abordagem pode ser usada para aprender políticas com demonstrações de especialistas (sem recompensas) em ambientes de ginásio abertos, como Ant e humanóide.

    seguir em frente

    modelos generativos são uma área de pesquisa em rápido avanço. À medida que continuamos a avançar esses modelos e aumentar o treinamento e os conjuntos de dados, podemos esperar gerar amostras que retratam imagens ou vídeos inteiramente plausíveis. Isso pode por si só encontrar uso em várias aplicações, como arte gerada a pedido, ou comandos Photoshop++ Como “make my smile wider”. Aplicações adicionais atualmente conhecidas incluem desnoising de imagem, pintura, super-resolução, previsão estruturada, exploração na aprendizagem de reforço, e pré-treinamento de rede neural nos casos em que dados rotulados são caros.no entanto, a promessa mais profunda deste trabalho é que, no processo de formação de modelos gerativos, dotaremos o computador de uma compreensão do mundo e do que ele é feito.