Publicado em: 21 de agosto de 2024
Colaboradores: Dave Bergmann, Cole Stryker
Modelos de difusão são modelos generativos usados principalmente para geração de imagens e outras tarefas de visão computacional. Redes neurais baseadas em difusão são treinadas por meio de deep learning para “difundir” progressivamente amostras com ruído aleatório e, em seguida, reverter esse processo de difusão para gerar imagens de alta qualidade.
Os modelos de difusão estão entre as arquiteturas de redes neurais na vanguarda da IA generativa, representadas principalmente por modelos populares de conversão de texto em imagem, incluindo o Stable Diffusion da Stability AI, o DALL-E da OpenAI (começando com o DALL-E-2), o Midjourney e o Imagen do Google . Eles melhoram o desempenho e a estabilidade de outras arquiteturas de aprendizado de máquina usadas para síntese de imagens, como autocodificadores variacionais (VAEs), redes adversárias generativas (GANs) e modelos autorregressivos, como o PixelCNN.
A intuição por trás dos modelos de difusão é inspirada na física, tratando os pixels como as moléculas de uma gota de tinta se espalhando em um copo de água ao longo do tempo. Assim como o movimento aleatório das moléculas de tinta acabará por levar à sua dispersão uniforme no vidro, a introdução aleatória de ruído em uma imagem acabará resultando no que parece ser estática de TV. Ao modelar esse processo de difusão e, em seguida, aprender de alguma forma a revertê-lo, um modelo de inteligência artificial pode gerar novas imagens simplesmente “reduzindo o ruído” de amostras de ruído aleatório.
Os modelos de difusão são de forma mais proeminente associados à geração de imagens e outras tarefas de processamento de imagens, como pintura e superresolução, mas suas aplicações se estendem a outros domínios, incluindo geração de áudio, projeto de medicamentos e geração de moléculas. Para simplificar, este artigo se concentrará na geração de imagens.
Saiba mais sobre os principais benefícios obtidos com a IA generativa e os recursos de IA tradicional trabalhando juntos, e como as organizações podem incorporar com confiança a IA generativa, modelos fundamentais e ML em suas operações de negócios.
Assine os boletins informativos da IBM
Para explicar e entender os modelos de difusão, é importante primeiro observar que o processo generativo agora chamado de "difusão" foi descoberto de forma independente em duas ocasiões diversas por meio de duas abordagens matemáticas distintas. Resumindo, existem várias maneiras pelas quais os modelos de difusão, que são conceitualmente simples, mas matematicamente complexos, podem "funcionar".
Desenvolvimentos subsequentes emprestaram ideias de ambas as abordagens, combinando as vantagens de cada uma para, eventualmente, produzir os modelos de difusão modernos que atualmente dominam o campo da geração de imagens. Uma breve revisão da história e da teoria dos modelos de difusão facilita, portanto, a compreensão não apenas de como os modelos de difusão funcionam, mas por que funcionam.
Os modelos de difusão inspirados na física foram introduzidos pela primeira vez por Sohl-Dickstein et al em seu artigo de 2015, "Deep Unsupervised Learning using Nonequilibrium Thermodynamics". Seu algoritmo aplicou a dinâmica de Langevin (link externo a ibm.com), um método para modelar o movimento de sistemas moleculares, para sustentar a premissa básica dos modelos de difusão: transformar dados em ruído, para que você possa transformar o ruído em dados.
Uma nota sobre funções de densidade de probabilidade
Como a maioria dos modelos generativos, como os autocodificadores variacionais (VAEs), o algoritmo de Sohl-Dickstein modelou a densidade de probabilidade: a probabilidade relativa de uma variável amostrada aleatoriamente, x, cair dentro de um intervalo específico de valores. Essencialmente, modelar uma função de densidade de probabilidade para um conjunto de dados de treinamento permite que um algoritmo gere amostras com alta probabilidade de se ajustarem à distribuição de dados de treinamento. Ao gerar uma nova imagem, o modelo assume uma alta probabilidade de os valores de pixel serem distribuídos daquela maneira específica, com base na distribuição de probabilidade que ele aprendeu a partir de padrões em dados de treinamento.
Logicamente falando, as funções de densidade de probabilidade exigem que a probabilidade de todas as possibilidades somem 1. Em outras palavras, a chance percentual de todas as possibilidades deve somar exatamente 100%. Na prática, isso geralmente requer uma constante de normalização: um valor incorporado a uma função de probabilidade que reduz a probabilidade total a 1.
Calcular uma constante de normalização que funcione para todos os valores de variável possíveis é frequentemente intratável: tecnicamente solucionável, mas exigindo tempo infinito para calcular. Nesses casos, os modelos baseados em probabilidade devem ser restritos a arquiteturas de modelo específicas ou desenvolver soluções alternativas inteligentes que se aproximem da constante de normalização de uma forma tratável.
Independentemente do trabalho de Sohl-Dickstein, Yang Song e Stefano Ermon desenvolveram um tipo de modelo baseado em energia (link externo a ibm.com) chamado de rede de pontuação condicional de ruído em seu artigo de 2019, “Generative Modeling by Estimating Gradients of the Data Distribution”. O algoritmo deles modelou o gradiente (∇x) do logaritmo () da função de densidade de probabilidade . O gradiente da função de densidade de probabilidade logarítmica, escrito como é chamado de pontuação de Stein ou simplesmente de "função de pontuação"."
Ao contrário das funções convencionais de densidade de probabilidade, as funções de pontuação não exigem uma constante de normalização porque não modelam diretamente a densidade de probabilidade (e, portanto, não precisam normalizar a probabilidade total para 1). Em vez disso, elas são treinadas por meio da correspondência de pontuação: parâmetros do modelo de aprendizado, θ, que produz um modelo pθ(x) cuja pontuação — em outras palavras, seu gradiente — corresponde à da distribuição de dados q(x) dos dados de treinamento.
Outro benefício desses modelos generativos baseados em pontuação (SGMs) é que, diferentemente dos modelos baseados em verossimilhança, eles não impõem muitas restrições à arquitetura do modelo de pθ (x).
Explorando maneiras de melhorar o desempenho de seu modelo, Song e Ermon coincidentemente chegaram às mesmas técnicas empregadas por Sohl-Dickstein et al. Seu artigo observou que "perturbar dados com ruído gaussiano aleatório torna a distribuição de dados mais receptiva à modelagem generativa baseada em pontuação". O modelo deles, construído usando a arquitetura U-Net, originalmente desenvolvida para segmentação de imagens, da mesma forma aplicou a dinâmica de Langevin para gerar amostras.
Em 2020, Ho et al propuseram usar a abordagem de Sohl-Dickstein para gerar imagens de alta qualidade usando inferência variacional em seu artigo seminal, "Modelos probabilísticos de difusão de redução de ruído" (DDPMs). O artigo mostrou que maximizar o limite inferior de evidência (ELBO)— uma maneira de reescrever problemas de otimização baseados em probabilidade para serem tratáveis — para treinar modelos de difusão é essencialmente equivalente à combinação de objetivos de correspondência de pontuação usados para treinar SGMs.
Implementando a abordagem de Sohl-Dickstein usando correspondência de pontuações, Ho et al demonstraram que modelos probabilísticos de difusão podem alcançar qualidade de imagem competitiva com GANs, que na época eram de última geração. Essas conexões foram exploradas ainda mais por Song, Ermon, Sohl-Dickstein e outros (incluindo Diederik P. Kingma, criador do VAE) em seu artigo de 2021, "Score-Based Generative Modeling through Stochastic Diferencial Equations".
Posteriormente naquele ano, Dhariwal e Nichol, aproveitando insights do artigo mencionado anteriormente, publicaram “Diffusion Models Beat GANs on Image Synthesis”, estabelecendo firmemente os modelos de difusão como os mais avançados existentes.
Os DDPMs, em vez dos SGMs, geralmente continuam sendo o modo dominante de modelos de difusão, embora com melhorias introduzidas por meio de pesquisas subsequentes. Por exemplo, o influente artigo de 2022 “High-Resolution Image Synthesis with Latent Diffusion Models” marcou avanços importantes em eficiência e relação custo/benefício.
No treinamento, os modelos de difusão difundem gradualmente um ponto de dados com ruído aleatório, passo a passo, até que seja destruído, então aprendem a reverter esse processo de difusão e reconstruir a distribuição de dados original.
Um modelo de difusão treinado pode, então, gerar novos pontos de dados que se assemelham aos dados de treinamento, simplesmente eliminando o ruído de uma amostra inicial aleatória de ruído puro. Conceitualmente, isso é semelhante a um autocodificador de redução de ruído, no qual as imagens ruidosas atuam como variáveis latentes.
Transformar diretamente o ruído aleatório em uma imagem coerente é extremamente difícil e complexo, mas transformar uma imagem ruidosa em uma imagem um pouco menos ruidosa é relativamente fácil e simples. Os modelos de difusão, portanto, formulam o processo de difusão reversa como uma transformação incremental, passo a passo, de uma distribuição simples (como o ruído gaussiano ) para uma distribuição mais complexa (como uma imagem coerente).
O processo de treinamento e, em seguida, a implementação de uma difusão pode ser dividido em três estágios principais:
O objetivo do processo de difusão para a frente é transformar dados limpos do conjunto de dados de treinamento, como uma imagem ou amostra de áudio, em ruído puro. O método mais comum envolve a injeção iterativa de ruído gaussiano até que toda a distribuição de dados seja gaussiana.
Em termos matemáticos, esse processo passo a passo é formulado como uma cadeia de Markov: um tipo de processo estocástico, um processo aleatório que segue certas regras probabilísticas, para modelar dados sequenciais de séries temporais. Em uma cadeia de Markov, o resultado em cada etapa de tempo é influenciado apenas pela etapa de tempo imediatamente anterior a ela. Simplificando: xt, o estado da cadeia de Markov x na etapa de tempo t, é diretamente influenciado apenas por xt-1. A função matemática que define a transição de qualquer xt para xt+1 é chamada de kernel de transição.
Em cada etapa de tempo t, uma pequena quantidade de ruído gaussiano é adicionada a xt-1 e a imagem é, então, redimensionada, para manter um tamanho de imagem constante, apesar da injeção contínua de pixels aleatórios. Nessa formulação, x0 é o ponto de dados limpos original; x1 é o ponto de dados após a primeira etapa de tempo, com uma pequena quantidade de ruído gaussiano adicionado a ele; xT é o estado final do processo de difusão para a frente. Se T for grande o suficiente (ou seja, após etapas suficientes), xT convergirá para ruído gaussiano puro.
Definimos cada etapa para a frente como prever o estado da distribuição de dados q (xt), dado q(xt-1). Em um DDPM padrão, esse processo para a frente não envolve nenhum aprendizado de máquina: o resultado final da cadeia de Markov será sempre uma distribuição gaussiana e, portanto, não requer otimização.
Em um DDPM, o ruído gaussiano adicionado em cada etapa na cadeia de Markov não é constante nem arbitrário. Em vez disso, o ruído é derivado da estrutura da imagem original, e a taxa na qual ele é adicionado aumenta constantemente a cada etapa consecutiva.
Variar a quantidade de ruído melhora a estabilidade do treinamento do modelo e melhora o desempenho geral, ao equilibrar duas prioridades concorrentes. Conforme observado por Yang Song em seu post de blog sobre modelos generativos baseados em pontuação (link externo a ibm.com):
Lembre-se de que qualquer distribuição gaussiana (normal) tem uma média, , e uma variância, . Outro parâmetro, β, serve como um fator de escala para a média e variância do ruído gaussiano no kernel de transição que define cada etapa na cadeia de Markov para a frente. Alterar o valor de β em uma determinada etapa resulta na alteração do ruído gaussiano adicionado nessa etapa. β1 é a variância na etapa de tempo 1; βt é a variância na etapa de tempo t e assim por diante, até βT.
O valor da taxa de β em cada etapa é, por sua vez, determinado pela tabela de variâncias.
Em cada etapa t, a imagem é ligeiramente deslocada de sua iteração na etapa anterior (pela média), e é adicionado ruído a essa versão deslocada da imagem (de acordo com a variância). A magnitude de cada deslocamento e a adição de ruído são determinados pelo valor de : como aumenta de acordo com a tabela de variâncias, a taxa de difusão aumenta constantemente como resultado. β é sempre um valor entre 0 e 1: portanto, 0 < β1 < β2 < … < βT < 1.
Escolher uma tabela de variâncias específica para β é uma consideração importante. Geralmente é definida manualmente como um hiperparâmetro, seja fixado a um valor constante ou procedendo de acordo com alguma fórmula com um valor inicial e final predeterminados para β. No artigo do DDPM, Ho et al usaram uma tabela linear com 1.000 etapas em que β1 = 10-4 e βT = 0,02. Pesquisas posteriores descobriram melhorias no desempenho e na eficiência com outros tipos de tabelas, como uma tabela de cossenos,[1] ou tornando a tabela em si outro parâmetro aprendido.[2]
O valor de βt determina a média e a variância do ruído gaussiano adicionado na etapa t.
Resumindo, em cada etapa t, a imagem é ligeiramente deslocada de sua iteração na etapa anterior (de acordo com a média), e o ruído é adicionado a essa versão deslocada da imagem (de acordo com a variância). A magnitude de cada deslocamento e a adição de ruído são determinadas pelo valor de βt: à medida que βt aumenta de acordo com a tabela de variâncias, a taxa de difusão aumenta constantemente como resultado.
Como a adição de ruído gaussiano começa gradualmente, e o ruído em si é sempre derivado da estrutura essencial da imagem original na etapa anterior, as qualidades essenciais da imagem original são retidas por muitas etapas. Isso permite que o modelo aprenda de forma significativa os padrões e a estrutura da distribuição de dados original durante o processo de difusão reversa.
Uma falha desse processo passo a passo é que ele é complicado e computacionalmente caro: para cada imagem em um conjunto de dados de treinamento que pode conter milhares ou milhões de imagens, o processo para a frente exigiria dezenas ou centenas de etapas individuais.
Em vez de adicionar ruído repetidamente, a fórmula para o processo para a frente pode ser reescrita de forma inteligente, reparametrizando a expressão de como um novo parâmetro, . Por meio de uma "propriedade agradável" das cadeias de Markov, esse novo parâmetro pode ser estendido ainda mais para um parâmetro adicional, , derivado da multiplicação iterativa de em cada etapa progressiva da cadeia até aquele ponto. Este parâmetro adicional reflete essencialmente a relação sinal/ruído (SNR) de xt: em outras palavras, quanto da imagem original permanece na etapa de tempo t.
Por exemplo, em x1, uma pequena quantidade de ruído foi adicionada uma vez. O valor de é próximo de 1, o que significa que a imagem ainda retém a maior parte do seu "sinal" original. Em uma etapa posterior, como x50, o ruído foi adicionado muitas vezes. Porque , o valor de é sempre menor que 1. Desde , o valor de na etapa 50 estará muito mais próximo de 0, o que significa que uma maior parte da imagem original foi substituída por ruído. Na etapa de tempo T, xT é totalmente ruído, e o valor de se aproxima de 0.
Embora a derivação complexa da equação esteja além do escopo deste artigo, há duas conclusões importantes para entender a importância desse truque de reparametrização:
Nos modelos de difusão, o processo de difusão reversa é onde ocorre o aprendizado de máquina real. Ao aprender a executar a reversão das etapas de ruído do processo para a frente, o modelo está essencialmente aprendendo a reduzir o ruído gaussiano puro em uma imagem limpa. Uma vez que a rede neural tenha sido treinada, essa capacidade pode ser usada para gerar novas imagens a partir do ruído gaussiano por meio de difusão reversa passo a passo.
Em teoria, a tarefa do modelo pode ser considerada o simples reverso da difusão para a frente. O processo para a frente, começando com o ponto de dados x0 amostrado da distribuição real de dados q(x) do conjunto de dados de treinamento, é definido como : isto é, dado , calcular . Seu oposto, difusão reversa, seria definido como . Mas, na prática, a computação é intratável.
Em vez disso, a tarefa de treinamento é formulada por meio de duas soluções alternativas:
Lembre-se novamente de que a média do ruído gaussiano adicionado na difusão para a frente não é arbitrária: embora seja de fato aleatória, a estrutura do ruído é inicialmente derivada da estrutura da imagem original x0. Portanto, ao aprender a prever com precisão o ruído por meio da difusão reversa, o modelo não apenas aprende a reduzir o ruído da imagem, mas também aprende implicitamente a estrutura de x0.
O objetivo específico de treinamento usado para modelos de difusão está intimamente relacionado ao termo de perda de reconstrução usado para otimizar autocodificadores variacionais (VAEs). Como os VAEs, os modelos de difusão são otimizados maximizando o limite inferior variacional (VLB), também chamado de limite inferior de evidência (ELBO), de uma combinação de termos de perda múltipla.
A maximização do VLB é usada na inferência variacional para aproximar a função de pontuação intratável : em vez de minimizar diretamente o erro, reformula a equação como maximizando a estimativa mínima (ou limite inferior) da precisão das previsões do modelo.
Os termos de perda usados refletem a divergência de Kullback-Leibler (ou "divergência KL", geralmente denotada como DKL) entre os resultados das etapas de difusão para a frente de q e as etapas reversas previstas por pθ. A divergência KL é usada para medir a diferença entre duas distribuições de probabilidade — por exemplo, entre a distribuição dos valores de pixels em uma imagem e a distribuição dos valores de pixels em outra.
Especificamente, a função de perda para modelos de difusão combina três termos de perda: LT, Lt e L0.
Embora sua derivação matemática complexa esteja além do escopo deste artigo, o VLB pode ser simplificado para o erro médio quadrático (MSE) entre o ruído previsto pelo modelo, e o verdadeiro ruído adicionado no processo para a frente, , em cada etapa de tempo. Isso explica por que a produção do modelo é uma previsão de ruído em cada etapa, em vez da própria imagem sem ruído.
Calculando o gradiente da função de perda durante a retropropagação e, em seguida, ajustando os pesos do modelo para minimizar a função de perda por meio do gradiente descendente, as previsões do modelo em todo o conjunto de dados de treinamento se tornarão mais precisas.
Depois que o modelo de difusão tiver aprendido a estimar com precisão o ruído a ser subtraído em cada etapa, ele poderá ser usado para gerar novas imagens por amostragem a partir de uma imagem ruidosa aleatória xT da distribuição de dados que aprendeu e eliminando-a por T etapas. Semelhante aos VAEs, introduzir um pequeno elemento de aleatoriedade no processo de amostragem permite que os modelos de difusão produzam novas imagens que se assemelham aos dados de treinamento, em vez de reproduzir diretamente as imagens de treinamento.
Ao contrário do processo de treinamento de difusão reversa, a quantidade de etapas no processo de geração não precisa corresponder à quantidade de etapas usadas no processo para a frente. Isso é possível porque o modelo é treinado para prever todo o ruído em cada etapa da imagem, em vez da quantidade específica de ruído a ser removida nessa etapa.
Menos etapas implicam maior velocidade e menores demandas computacionais, com uma possível compensação em detalhes finos; mais etapas normalmente melhoram a precisão, embora ao custo de diminuição da velocidade e aumento dos custos computacionais.
Enquanto um modelo de difusão padrão pode produzir variações de alta qualidade de imagens de treinamento de forma aleatória, a maioria dos usos práticos de um modelo de geração de imagens exige algum controle sobre a produção do modelo. Os modelos de difusão guiada permitem que um usuário condicione as imagens geradas com uma orientação específica .
A forma mais comum de modelo de difusão guiada é um modelo de difusão de texto para imagem que permite aos usuários condicionar a produção com um prompt de texto, como "uma girafa usando uma cartola". Isso envolve o emparelhamento de um modelo de difusão com um grande modelo de linguagem (LLM) separado para interpretar o prompt de texto, introduzido pela primeira vez pelo Google no artigo "Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding".
Os modelos de difusão padrão visam prever a função de pontuação condicional : em outras palavras, o gradiente do logaritmo da probabilidade de que a imagem x gerada pelo modelo p se ajuste aos dados de treinamento x. Os modelos de difusão guiada introduzem uma categoria visual específica, y (por exemplo, "girafa") e preveem a função de pontuação condicional : em outras palavras, a probabilidade da imagem x, dado que ela deve se encaixar na categoria y.
Os métodos de difusão guiada podem ser separados em duas categories:
Apesar de sua capacidade de ponta de gerar imagens de alta qualidade, os modelos de difusão convencionais têm duas desvantagens importantes: são lentos e computacionalmente caros. Essas desvantagens foram muito reduzidas pelo advento dos modelos de difusão latente, começando pelo Stable Diffusion.
A premissa por trás dos modelos de difusão latente é simples, baseando-se mais uma vez na conexão com autocodificadores variacionais (VAEs). Em vez de aplicar o processo de difusão em um espaço de pixelsde alta dimensão (ou seja, diretamente nas imagens de input), o modelo pode primeiro projetar o input para o espaço latentede menor dimensão e, em seguida, aplicar o processo de difusão lá.
Em essência, os modelos de difusão latente empregam uma arquitetura de autocodificador semelhante ao VAE para treinar um codificador para produzir representações latentes z dos dados de input x. Essas representações latentes são então usadas como input para um modelo de difusão padrão, normalmente usando a arquitetura U-Net. Como o modelo de difusão está trabalhando com dados de menor dimensão, sua produção é então alimentada em uma rede de decodificadores para aumentar a amostragem até o tamanho final da imagem desejado.
Treine, valide, ajuste e implemente IA generativa, modelos fundamentais e recursos de ML com facilidade e construa aplicações de IA em uma fração do tempo com uma fração dos dados.
Construa facilmente aplicações de IA personalizadas para o seu negócio, gerencie todas as fontes de dados e acelere workflows de IA responsável, tudo em uma única plataforma.
Reinvente sua forma de trabalhar com a IA: nossa equipe global diversificada de mais de 20 mil especialistas em IA pode ajudá-lo a projetar e escalar a IA e a automação de forma rápida e confiável em toda a sua empresa, trabalhando com nossa própria tecnologia IBM watsonx e um ecossistema aberto de parceiros para oferecer qualquer modelo de IA, em qualquer nuvem, guiado ética e confiança.
Neste trabalho, a IBM propõe o Prompting4Debugging (P4D) como uma ferramenta de depuração e red teaming que encontra automaticamente prompts problemáticos para modelos de difusão para testar a confiabilidade de um mecanismo de segurança implementado.
Os modelos de difusão podem ser sequestrados com backdoors ocultos, dando aos invasores controle sobre o processo de criação de imagens. Os pesquisadores da IBM exploraram maneiras de monitorar e manter a segurança de modelos.
A modelagem de sons emitidos por interações de objetos físicos é crítica para experiências perceptivas imersivas em mundos reais e virtuais. Neste artigo, a IBM propõe um modelo de difusão orientado pela física que pode sintetizar som de impacto de alta fidelidade para um videoclipe mudo.
OBSERVAÇÃO: todos os links são externos a ibm.com.
[1] "Improved Denoising Diffusion Probabilistic Models," arXiv, 18 February 2021
[2] "Variational Diffusion Models," arXiv, revisado pela última vez em 14 de abril de 2023