Inventamos um novo modelo generativo aceito na ICLR
(discrete-distribution-networks.github.io)- Discrete Distribution Networks (DDN) é um modelo generativo inovador com novos princípios e características
- O DDN apresenta resultados experimentais únicos e capacidade de representação discreta 1D por meio do algoritmo de otimização Split-and-Prune
- Com base em uma estrutura hierárquica, também aproxima distribuições contínuas e mostrou propriedades interessantes como geração condicional Zero-Shot
- O DDN mostra potencial de aplicação em várias tarefas reais, como geração de imagens e transferência de estilo
- Ele se diferencia dos modelos generativos existentes em escalabilidade, eficiência e adaptabilidade natural
Visão geral do DDN: Discrete Distribution Networks
Por que isso é importante?
O DDN (Discrete Distribution Networks) é uma abordagem totalmente nova em relação aos modelos generativos existentes, com princípios simples, uma estrutura hierárquica única e características como geração condicional Zero-Shot. Por funcionar de forma diferente de GANs e Diffusion, ele abre muitas possibilidades tanto para pesquisa quanto para aplicações práticas.
Resumo dos principais pontos
- DDN é um novo modelo generativo que aproxima distribuições de dados por meio de uma estrutura hierárquica de distribuições discretas
- Propõe a técnica de otimização Split-and-Prune e realiza experimentos com propriedades diferenciadas, como Zero-Shot Conditional Generation e representação latente discreta 1D, algo difícil de obter em modelos generativos existentes
- O DDN gera vários samples simultaneamente em cada camada e escolhe o sample mais próximo do objetivo para usar como condição da próxima camada
- À medida que o número de camadas aumenta, o espaço de representação da saída se expande exponencialmente, resultando na geração de samples semelhantes ao alvo
- Em vários experimentos (CIFAR-10, FFHQ, transferência de estilo, super-resolução etc.), o método mostrou vantagens em simplicidade, generalização e aplicabilidade prática em comparação com abordagens existentes
Experimentos de estimação de densidade do DDN
- Demonstração do processo de aproximação de densidade de probabilidade 2D
- À esquerda: todos os samples que o DDN consegue gerar no momento
- À direita: mapa de densidade de probabilidade alvo
- Diferentes distribuições-alvo (blur_circles, QR_code, spiral etc.) são aplicadas em sequência com otimização contínua
- Optimizer: uso simultâneo de Gradient Descent e Split-and-Prune
- Ao aplicar Split-and-Prune, a KL divergence fica ainda menor do que com samples reais
Principais contribuições do artigo
- Proposta de um novo modelo generativo — DDN, mais simples e eficiente
- Aplicação do algoritmo de otimização Split-and-Prune e de técnicas práticas
- Validação de propriedades como geração condicional Zero-Shot sem gradient e representação discreta 1D única
- Na review da ICLR, recebeu a avaliação de que “é muito diferente dos modelos generativos existentes e amplia a direção de pesquisa”
- Princípio do DDN: em cada camada, gera muitos samples discretos, seleciona apenas o resultado mais próximo do alvo e o refina hierarquicamente
Estrutura e modo de funcionamento
Estrutura hierárquica de distribuição discreta
- Cada camada recebe o sample selecionado da camada anterior como entrada e gera vários samples
- Entre eles, apenas o resultado mais próximo do sample de treino atual (resposta correta) é enviado para a próxima camada
- Com a repetição, o resultado vai sendo refinado e se aproxima da distribuição-alvo
- Com o aumento das camadas, o espaço de representação da saída gerada cresce exponencialmente
- A própria rede consegue representar diretamente a distribuição ao gerar vários samples simultaneamente
Reconstrução de imagem e representação latente
- Cada saída de camada produz imagens diferentes, e apenas o resultado semelhante ao objetivo final é passado para a próxima camada
- Papel do sampler: selecionar a imagem mais parecida com o alvo
- Em tarefas generativas, a amostragem aleatória maximiza a diversidade
- A variável latente do DDN pode ser interpretada como uma estrutura em árvore, e cada sample é mapeado para a ponta da árvore (nó folha)
Exemplos de resultados experimentais
- Aproximação de várias distribuições 2D (spiral, QR_code etc.)
- Com Split-and-Prune, minimiza a KL divergence e reduz problemas como dead nodes e density shift
- Em CIFAR-10, FFHQ etc., confirmou um modo de geração e eficiência únicos em comparação com modelos baseados em GAN e Diffusion
Suporte a geração condicional Zero-Shot
- O DDN permite geração condicional Zero-Shot sem gradiente
- Exemplo: geração de texto para imagem usando uma black-box do CLIP
- Também lida de forma eficaz com várias condições não limitadas a pixels, como transferência de estilo e super-resolução
Treinamento e dois paradigmas de modelo
- Durante o treinamento, após a seleção de samples em cada Discrete Distribution Layer (DDL), a otimização é feita com Adam + Split-and-Prune
- Single Shot Generator: cada camada tem pesos independentes
- Recurrence Iteration: todas as camadas compartilham pesos
Diversos casos de aplicação
Geração aleatória de imagens de rosto
- Resultados de geração de imagens de rosto com DDN treinado mostram diversidade e qualidade das saídas
Colorização condicional de imagem / conversão de borda para cor
- Com base em uma imagem específica, busca aproximar ao máximo o estilo e também satisfaz as condições
- Resolução da imagem gerada: 256x256
Visualização da geração hierárquica (MNIST etc.)
- Visualização dos resultados intermediários e finais em cada etapa de geração
- Imagens grandes são rascunhos; imagens pequenas são resultados finais refinados
Direções futuras de pesquisa e possibilidades de aplicação
- Há potencial de melhorar o desempenho do DDN com tuning de hiperparâmetros, experimentos exploratórios e análise teórica
- Expansão até problemas com complexidade de nível ImageNet e construção de modelos utilizáveis em serviços reais
- Aplicação em várias tarefas, como super-resolução, colorização de imagens, estimação de profundidade, estimação de pose e robótica
- Em comparação com modelos baseados em Diffusion, produz múltiplos samples em um único forward-pass
- Facilita o uso eficiente em casos como estimação de incerteza e aplicação de restrições
- Por permitir diferenciação end-to-end, pode ser combinado de forma eficiente com aprendizado por discriminação/recompensa existente
- Também pode ser usado em tarefas não generativas (clustering não supervisionado, compressão de dados etc.)
- Pesquisa futura aplicando as ideias de design do DDN a modelos generativos existentes (por exemplo, combinação de Diffusion com espaço latente discreto 1D)
- Apresenta novas direções, como modelagem direta de strings binárias em language modeling sem tokenizer
Perguntas frequentes
Q1: aumento no uso de memória de GPU?
- Em comparação com um Generator de GAN convencional, aumenta um pouco, mas não há grande diferença
- Durante o treinamento, apenas os samples selecionados armazenam gradient; os demais são descartados imediatamente, garantindo folga de memória
- Na etapa de geração, apenas um sample aleatório é produzido, sem gerar todos os samples possíveis, então o uso extra de recursos é mínimo
Q2: problema de mode collapse?
- Não ocorre. Como sempre apenas o resultado mais parecido com o alvo recebe loss, a diversidade é garantida
- Experimentalmente, o desempenho de reconstrução do conjunto de teste (capacidade de restauração) também é excelente
- Ainda assim, em dados de alta dimensionalidade que a própria complexidade do DDN não consegue cobrir, podem surgir samples borrados
1 comentários
Comentários do Hacker News
Os autores expressaram satisfação por terem considerado as revisões da ICLR úteis, vendo este caso como um exemplo de como a política da ICLR de tornar públicas todas as revisões de artigos funciona com sucesso
Há a vantagem de que os revisores, anonimamente, acabam servindo como uma espécie de “parecer” para os autores sobre como interpretaram o artigo, e também de que pessoas fora do meio acadêmico tradicional podem ver a discussão escondida por trás da aceitação ou rejeição de um artigo
O link para as revisões deste artigo está aqui
A lista completa de artigos rejeitados pode ser vista aqui
Na Fig.18 do artigo, é mencionado que o Taiji-DDN se parece com o taiji da antiga filosofia chinesa
Essa parte pareceu um pouco forçada
Como estrutura de ramificação é um conceito bem comum, achei um pouco estranho interpretar isso especificamente em associação com uma expressão clássica
Não acho que haja nada supersticioso ou estranho nisso
Ver um artigo de autor único ser aceito na ICLR parece especialmente impressionante, ainda mais quando propõe um método inovador
A estrutura parece muito interessante
Tem a vantagem de facilitar o debugging, mas como usa um sampler e não um roteador no estilo Mixture-of-Experts (MoE), existe a desvantagem de que, em cada camada, K-1 operações acabam sendo efetivamente desperdiçadas
Para mim, a analogia mais próxima é a combinação de MoE com um modelo de latent diffusion com alvo em
x0, e a principal inovação parece ser o sampler guiado e o otimizador split-and-prune, em vez do roteadorAcho que isso ajuda a facilitar o treinamento
Como a probabilidade de amostragem é 1/K independentemente da entrada, na inferência não é necessário executar de fato todos os K cálculos intermediários em cada camada; dá para decidir de antemão qual será usado e executar só aquela operação
Isso aparece na pergunta Q1 da seção “Common Questions About DDN”, no fim do artigo
Acho que você entendeu o artigo de forma equivocada
Não existem “experts”; a saída apenas serve para aproximar uma amostra aleatória da distribuição
Não há latent diffusion, e são usadas convoluções parecidas com as de GAN
Ressalto que, na inferência, o índice da amostra é escolhido antecipadamente, então não há cálculo desnecessário
É um conceito realmente incrível
Olhando os exemplos abaixo do resumo do artigo, surpreende como o modelo produz resultados bastante precisos em vários pontos
Por exemplo, a linha do cabelo na 2ª linha, 3ª coluna; a cor da camisa na 2ª linha, colunas 7/8/9/11; o batom ao longo de toda a 4ª/6ª linha; a posição/formato do rosto e do cabelo na 6ª linha, 4ª coluna etc.
Especialmente a parte vermelha no canto inferior esquerdo da 6ª linha, 4ª coluna, é muito curiosa: o modelo parece ter percebido que havia algo vermelho ali e colocou uma mancha vermelha exatamente na posição certa
Pode ser viés do dataset (por exemplo, batom) ou observação seletiva da minha parte, mas fico curioso se, no caso da alça vermelha no ombro, isso seria vazamento de dados, overfitting ou simplesmente coincidência
Eu também já implementei uma estrutura parecida, embora com método diferente: criei uma hierarquia de cross-attention e queries aprendidas, e apliquei L1 à matriz de atenção para aumentar a esparsidade
Representações hierárquicas discretas são realmente fascinantes
Os padrões ativados em cada camada funcionam como uma “árvore de parse” para cada entrada, comprimindo efetivamente imagens em sequências curtas de inteiros
Pergunto porque não conheço bem essa parte: se a rede for composta apenas de convoluções 1x1, então não haveria troca de informação alguma entre pixels?
Se for assim, isso significaria que cada pixel é completamente independente, e não deixaria o resultado inconsistente?
Não é o caso aqui, mas de fato existem arquiteturas que geram pixels de forma mutuamente independente
É possível gerar qualquer pixel ou elemento de imagem arbitrário sem gerar o restante, e elas são implícitas
Exemplos incluem NeRF, “single-pixel GAN” e MAE; os artigos estão aqui, aqui e aqui
Isso é possível porque dá para ver o modelo como tendo a capacidade de “memorizar” todos os dados possíveis, e gerar independentemente equivale apenas a recuperar uma parte específica dessa “memória”
O espaço latente é um objeto platônico imutável, então não é estranho gerar separadamente cada ponto físico
Assim como pontos arbitrários podem ser gerados por uma função como y=mx+b, a geração de imagens também é apenas uma entrada para uma função complexa
Esse conceito não se limita a imagens; linguagem natural também pode ser gerada de forma até certo ponto independente, e isso pode ser expandido com este código e com minha proposta aqui
No DDN, convoluções 1x1 são usadas apenas na camada de saída da Discrete Distribution Layer (DDL)
Os blocos de rede neural entre as DDLs são a principal fonte de operações e parâmetros, e neles são adotadas convoluções 3x3 padrão
Interessante
Há alguns dias, estudei diffusion para paralelizar sistemas profundos de reação em grafos usando matrizes de transformação simbólicas, então muita gente parece estar seguindo nessa direção geral
Acho que, nos próximos 1-2 anos, modelos baseados em diffusion devem liderar a geração de código
Muito legal, no passado investi bastante tempo em aprendizado de representações, e a grade de dígitos do MNIST traz lembranças
Acho que é de fato uma abordagem interessante e nova, e tenho curiosidade sobre o desempenho dela quando escalada e aplicada a domínios não visuais
Queria saber onde dá para acompanhar os próximos trabalhos
Pretendo postar os resultados das pesquisas futuras tanto no GitHub quanto no Twitter(X)
Parece uma pesquisa muito boa, então adicionei à minha lista de leitura
Obrigado por compartilhar no Hacker News