Modelo de difusão
Em aprendizado de máquina, os modelos de difusão, também conhecidos como modelos generativos baseados em difusão ou modelos generativos baseados em pontuação, são uma classe de modelos generativos de variáveis latentes. Um modelo de difusão consiste em dois componentes principais: o processo de difusão direta e o processo de amostragem reversa. O objetivo dos modelos de difusão é aprender um processo de difusão para um determinado conjunto de dados, de modo que o processo possa gerar novos elementos que sejam distribuídos de forma semelhante ao conjunto de dados original. Um modelo de difusão modela dados como gerados por um processo de difusão, pelo qual um novo dado realiza um passeio aleatório com deriva através do espaço de todos os dados possíveis. Um modelo de difusão treinado pode ser amostrado de várias maneiras, com diferentes eficiência e qualidade.
Termodinâmica de não-equilíbrio
Os modelos de difusão foram introduzidos em 2015 como um método para treinar um modelo que pode amostrar a partir de uma distribuição de probabilidade altamente complexa. Eles usaram técnicas da termodinâmica de não-equilíbrio, especialmente difusão. Considere, por exemplo, como se poderia modelar a distribuição de todas as fotos que ocorrem naturalmente. Cada imagem é um ponto no espaço de todas as imagens, e a distribuição de fotos que ocorrem naturalmente é uma "nuvem" no espaço, que, ao adicionar repetidamente ruído às imagens, se difunde para o resto do espaço da imagem, até que a nuvem se torne quase indistinguível de uma distribuição gaussiana N ( 0 , I ) {\displaystyle {\mathcal {N}}(0,I)} . Um modelo que pode aproximadamente desfazer a difusão pode então ser usado para amostrar a partir da distribuição original. Isso é estudado na termodinâmica de "não-equilíbrio", pois a distribuição inicial não está em equilíbrio, ao contrário da distribuição final.
Modelo Probabilístico de Difusão com Desruído (DDPM)
O artigo de 2020 propôs o Modelo Probabilístico de Difusão com Desruído (DDPM), que melhora o método anterior por inferência variacional. Para apresentar o modelo, alguma notação é necessária. Um processo de difusão direta começa em algum ponto inicial x 0 ∼ q {\displaystyle x_{0}\sim q} , onde q {\displaystyle q} é a distribuição de probabilidade a ser aprendida, então repetidamente adiciona ruído a ela por x t = 1 − β t x t − 1 + β t z t {\displaystyle x_{t}={\sqrt {1-\beta _{t}}}x_{t-1}+{\sqrt {\beta _{t}}}z_{t}} onde z 1 , . . . , z T {\displaystyle z_{1},...,z_{T}} são amostras IID (Variáveis aleatórias independentes e identicamente distribuídas) de N ( 0 , I ) {\displaystyle {\mathcal {N}}(0,I)} . Os coeficientes 1 − β t {\displaystyle {\sqrt {1-\beta _{t}}}} e β t {\displaystyle {\sqrt {\beta _{t}}}} garantem que Var ( X t ) = I {\displaystyle {\mbox{Var}}(X_{t})=I} assumindo que Var ( X 0 ) = I {\displaystyle {\mbox{Var}}(X_{0})=I} . Os valores de β t {\displaystyle \beta _{t}} são escolhidos de modo que para qualquer distribuição inicial de x 0 {\displaystyle x_{0}} , se ela tem segundo momento finito, então lim t → ∞ x t | x 0 {\displaystyle \lim _{t\to \infty }x_{t}|x_{0}} converge[necessário esclarecer] para N ( 0 , I ) {\displaystyle {\mathcal {N}}(0,I)} .
Processo de difusão reversa
Após uma rede de previsão de ruído ser treinada, ela pode ser usada para gerar pontos de dados na distribuição original em um loop como segue:
O modelo generativo baseado em pontuação é outra formulação da modelagem por difusão. Eles também são chamados de rede de pontuação condicionada a ruído (NCSN) ou correspondência de pontuação com dinâmica de Langevin (SMLD).
Correspondência de pontuação
Considere o problema da geração de imagens. Seja x {\displaystyle x} representando uma imagem, e seja q ( x ) {\displaystyle q(x)} a distribuição de probabilidade sobre todas as imagens possíveis. Se tivéssemos a própria q ( x ) {\displaystyle q(x)} , então poderíamos dizer com certeza quão provável é uma certa imagem. No entanto, isso é intratável em geral. Na maioria das vezes, não estamos interessados em saber a probabilidade absoluta de uma certa imagem. Em vez disso, geralmente estamos apenas interessados em saber quão provável é uma certa imagem em comparação com seus vizinhos imediatos — por exemplo, quanto mais provável é uma imagem de um gato em comparação com algumas pequenas variantes dela? É mais provável se a imagem contém dois bigodes, ou três, ou com algum ruído gaussiano adicionado?
Processos de difusão contínua
Considere novamente o processo de difusão direta, mas desta vez em tempo contínuo: x t = 1 − β t x t − 1 + β t z t {\displaystyle x_{t}={\sqrt {1-\beta _{t}}}x_{t-1}+{\sqrt {\beta _{t}}}z_{t}} Tomando o limite β t → β ( t ) d t , d t z t → d W t {\displaystyle \beta _{t}\to \beta (t)dt,{\sqrt {dt}}z_{t}\to dW_{t}} , obtemos um processo de difusão contínua, na forma de uma equação diferencial estocástica: d x t = − 1 2 β ( t ) x t d t + β ( t ) d W t {\displaystyle dx_{t}=-{\frac {1}{2}}\beta (t)x_{t}dt+{\sqrt {\beta (t)}}dW_{t}} onde W t {\displaystyle W_{t}} é um processo de Wiener (movimento browniano multidimensional). Agora, a equação é exatamente um caso especial da equação de Langevin com amortecimento d x t = − D k B T ( ∇ x U ) d t + 2 D d W t {\displaystyle dx_{t}=-{\frac {D}{k_{B}T}}(\nabla _{x}U)dt+{\sqrt {2D}}dW_{t}} onde D {\displaystyle D} é o tensor de difusão, T {\displaystyle T} é a temperatura, e U {\displaystyle U} é o campo de energia potencial. Se substituirmos D = 1 2 β ( t ) I , k B T = 1 , U = 1 2 ‖ x ‖ 2 {\displaystyle D={\frac {1}{2}}\beta (t)I,k_{B}T=1,U={\frac {1}{2}}\|x\|^{2}} , recuperamos a equação acima. Isso explica por que a frase "dinâmica de Langevin" é às vezes usada em modelos de difusão.
Rede de pontuação condicionada a ruído (NCSN)
No limite contínuo, α ¯ t = ( 1 − β 1 ) ⋯ ( 1 − β t ) = e ∑ i ln ( 1 − β i ) → e − ∫ 0 t β ( t ) d t {\displaystyle {\bar {\alpha }}_{t}=(1-\beta _{1})\cdots (1-\beta _{t})=e^{\sum _{i}\ln(1-\beta _{i})}\to e^{-\int _{0}^{t}\beta (t)dt}} e então x t | x 0 ∼ N ( e − 1 2 ∫ 0 t β ( t ) d t x 0 , ( 1 − e − ∫ 0 t β ( t ) d t ) I ) {\displaystyle x_{t}|x_{0}\sim N\left(e^{-{\frac {1}{2}}\int _{0}^{t}\beta (t)dt}x_{0},\left(1-e^{-\int _{0}^{t}\beta (t)dt}\right)I\right)} Em particular, vemos que podemos amostrar diretamente de qualquer ponto no processo de difusão contínua sem passar pelas etapas intermediárias, primeiro amostrando x 0 ∼ q , z ∼ N ( 0 , I ) {\displaystyle x_{0}\sim q,z\sim {\mathcal {N}}(0,I)} , então obtendo x t = e − 1 2 ∫ 0 t β ( t ) d t x 0 + ( 1 − e − ∫ 0 t β ( t ) d t ) z {\displaystyle x_{t}=e^{-{\frac {1}{2}}\int _{0}^{t}\beta (t)dt}x_{0}+\left(1-e^{-\int _{0}^{t}\beta (t)dt}\right)z} . Isto é, podemos amostrar rapidamente x t ∼ ρ t {\displaystyle x_{t}\sim \rho _{t}} para qualquer t ≥ 0 {\displaystyle t\geq 0} .
DDPM e modelos generativos baseados em pontuação são equivalentes. Isso significa que uma rede treinada usando DDPM pode ser usada como uma NCSN, e vice-versa. Sabemos que x t | x 0 ∼ N ( α ¯ t x 0 , σ t 2 I ) {\displaystyle x_{t}|x_{0}\sim N\left({\sqrt {{\bar {\alpha }}_{t}}}x_{0},\sigma _{t}^{2}I\right)} , então pela fórmula de Tweedie, temos ∇ x t ln q ( x t ) = 1 σ t 2 ( − x t + α ¯ t E q [ x 0 | x t ] ) {\displaystyle \nabla _{x_{t}}\ln q(x_{t})={\frac {1}{\sigma _{t}^{2}}}(-x_{t}+{\sqrt {{\bar {\alpha }}_{t}}}E_{q}[x_{0}|x_{t}])} Como descrito anteriormente, a função de perda do DDPM é ∑ t L s i m p l e , t {\displaystyle \sum _{t}L_{simple,t}} com L s i m p l e , t = E x 0 ∼ q ; z ∼ N ( 0 , I ) [ ‖ ϵ θ ( x t , t ) − z ‖ 2 ] {\displaystyle L_{simple,t}=E_{x_{0}\sim q;z\sim {\mathcal {N}}(0,I)}\left[\left\|\epsilon _{\theta }(x_{t},t)-z\right\|^{2}\right]} onde x t = α ¯ t x 0 + σ t z {\displaystyle x_{t}={\sqrt {{\bar {\alpha }}_{t}}}x_{0}+\sigma _{t}z} . Por uma mudança de variáveis, L s i m p l e , t = E x 0 , x t ∼ q [ ‖ ϵ θ ( x t , t ) − x t − α ¯ t x 0 σ t ‖ 2 ] = E x t ∼ q , x 0 ∼ q ( ⋅ | x t ) [ ‖ ϵ θ ( x t , t ) − x t − α ¯ t x 0 σ t ‖ 2 ] {\displaystyle L_{simple,t}=E_{x_{0},x_{t}\sim q}\left[\left\|\epsilon _{\theta }(x_{t},t)-{\frac {x_{t}-{\sqrt {{\bar {\alpha }}_{t}}}x_{0}}{\sigma _{t}}}\right\|^{2}\right]=E_{x_{t}\sim q,x_{0}\sim q(\cdot |x_{t})}\left[\left\|\epsilon _{\theta }(x_{t},t)-{\frac {x_{t}-{\sqrt {{\bar {\alpha }}_{t}}}x_{0}}{\sigma _{t}}}\right\|^{2}\right]} e o termo dentro se torna uma regressão de mínimos quadrados, então se a rede realmente atinge o mínimo global da perda, então temos ϵ θ ( x t , t ) = x t − α ¯ t E q [ x 0 | x t ] σ t = − σ t ∇ x t ln q ( x t ) {\displaystyle \epsilon _{\theta }(x_{t},t)={\frac {x_{t}-{\sqrt {{\bar {\alpha }}_{t}}}E_{q}[x_{0}|x_{t}]}{\sigma _{t}}}=-\sigma _{t}\nabla _{x_{t}}\ln q(x_{t})}
Dado um modelo de difusão, pode-se considerá-lo como um processo contínuo, e amostrar a partir dele integrando uma EDE, ou pode-se considerá-lo como um processo discreto, e amostrar a partir dele iterando as etapas discretas. A escolha da "agenda de ruído" β t {\displaystyle \beta _{t}} também pode afetar a qualidade das amostras. Uma agenda de ruído é uma função que envia um número natural para um nível de ruído: t ↦ β t , t ∈ { 1 , 2 , … } , β ∈ ( 0 , 1 ) {\displaystyle t\mapsto \beta _{t},\quad t\in \{1,2,\dots \},\beta \in (0,1)} Uma agenda de ruído é mais frequentemente especificada por um mapa t ↦ σ t {\displaystyle t\mapsto \sigma _{t}} . As duas definições são equivalentes, pois β t = 1 − 1 − σ t 2 1 − σ t − 1 2 {\displaystyle \beta _{t}=1-{\frac {1-\sigma _{t}^{2}}{1-\sigma _{t-1}^{2}}}} . Na perspectiva do DDPM, pode-se usar o próprio DDPM (com ruído), ou DDIM (com quantidade ajustável de ruído). O caso em que se adiciona ruído é às vezes chamado de amostragem ancestral. Pode-se interpolar entre ruído e sem ruído. A quantidade de ruído é denotada η {\displaystyle \eta } ("valor eta") no artigo do DDIM, com η = 0 {\displaystyle \eta =0} denotando sem ruído (como no DDIM determinístico), e η = 1 {\displaystyle \eta =1} denotando ruído total (como no DDPM).
Agenda de ruído
No DDPM, a sequência de números 0 = σ 0 < σ 1 < ⋯ < σ T < 1 {\displaystyle 0=\sigma _{0}<\sigma _{1}<\cdots <\sigma _{T}<1} é chamada de agenda de ruído (tempo discreto). Em geral, considere uma função monotônica estritamente crescente σ {\displaystyle \sigma } do tipo R → ( 0 , 1 ) {\displaystyle \mathbb {R} \to (0,1)} , como a função sigmoide. Nesse caso, uma agenda de ruído é uma sequência de números reais λ 1 < λ 2 < ⋯ < λ T {\displaystyle \lambda _{1}<\lambda _{2}<\cdots <\lambda _{T}} . Ela então define uma sequência de ruídos σ t := σ ( λ t ) {\displaystyle \sigma _{t}:=\sigma (\lambda _{t})} , que então deriva as outras quantidades β t = 1 − 1 − σ t 2 1 − σ t − 1 2 {\displaystyle \beta _{t}=1-{\frac {1-\sigma _{t}^{2}}{1-\sigma _{t-1}^{2}}}} .
Modelo de Difusão Implícito com Desruído (DDIM)
O método original do DDPM para gerar imagens é lento, pois o processo de difusão direta geralmente leva T ∼ 1000 {\displaystyle T\sim 1000} para fazer a distribuição de x T {\displaystyle x_{T}} parecer próxima de gaussiana. No entanto, isso significa que o processo de difusão reversa também leva 1000 etapas. Ao contrário do processo de difusão direta, que pode pular etapas pois x t | x 0 {\displaystyle x_{t}|x_{0}} é gaussiana para todos t ≥ 1 {\displaystyle t\geq 1} , o processo de difusão reversa não permite pular etapas. Por exemplo, para amostrar x t − 2 | x t − 1 ∼ N ( μ θ ( x t − 1 , t − 1 ) , Σ θ ( x t − 1 , t − 1 ) ) {\displaystyle x_{t-2}|x_{t-1}\sim {\mathcal {N}}(\mu _{\theta }(x_{t-1},t-1),\Sigma _{\theta }(x_{t-1},t-1))} requer que o modelo primeiro amostre x t − 1 {\displaystyle x_{t-1}} . Tentar amostrar diretamente x t − 2 | x t {\displaystyle x_{t-2}|x_{t}} exigiria marginalizar x t − 1 {\displaystyle x_{t-1}} , o que geralmente é intratável.
Modelo de difusão latente (LDM)
Como o modelo de difusão é um método geral para modelar distribuições de probabilidade, se alguém quiser modelar uma distribuição sobre imagens, pode primeiro codificar as imagens em um espaço de dimensão inferior por um codificador, então usar um modelo de difusão para modelar a distribuição sobre imagens codificadas. Então, para gerar uma imagem, pode-se amostrar a partir do modelo de difusão, então usar um decodificador para decodificá-la em uma imagem. O par codificador-decodificador é mais frequentemente um autoencoder variacional (VAE).
Melhorias arquiteturais
Nichol & Dhariwal (2021) propuseram várias melhorias arquiteturais. Por exemplo, eles propuseram interpolação no espaço log durante a amostragem reversa. Em vez de amostrar de x t − 1 ∼ N ( μ ~ t ( x t , x ~ 0 ) , σ ~ t 2 I ) {\displaystyle x_{t-1}\sim {\mathcal {N}}({\tilde {\mu }}_{t}(x_{t},{\tilde {x}}_{0}),{\tilde {\sigma }}_{t}^{2}I)} , eles recomendaram amostrar de N ( μ ~ t ( x t , x ~ 0 ) , ( σ t v σ ~ t 1 − v ) 2 I ) {\displaystyle {\mathcal {N}}({\tilde {\mu }}_{t}(x_{t},{\tilde {x}}_{0}),(\sigma _{t}^{v}{\tilde {\sigma }}_{t}^{1-v})^{2}I)} para um parâmetro aprendido v {\displaystyle v} . No formalismo v-prediction, a fórmula de ruído x t = α ¯ t x 0 + 1 − α ¯ t ϵ t {\displaystyle x_{t}={\sqrt {{\bar {\alpha }}_{t}}}x_{0}+{\sqrt {1-{\bar {\alpha }}_{t}}}\epsilon _{t}} é reparametrizada por um ângulo ϕ t {\displaystyle \phi _{t}} tal que cos ϕ t = α ¯ t {\displaystyle \cos \phi _{t}={\sqrt {{\bar {\alpha }}_{t}}}} e uma "velocidade" definida por cos ϕ t ϵ t − sin ϕ t x 0 {\displaystyle \cos \phi _{t}\epsilon _{t}-\sin \phi _{t}x_{0}} . A rede é treinada para prever a velocidade v ^ θ {\displaystyle {\hat {v}}_{\theta }} , e o desruído é feito por x ϕ t − δ = cos ( δ ) x ϕ t − sin ( δ ) v ^ θ ( x ϕ t ) {\displaystyle x_{\phi _{t}-\delta }=\cos(\delta )\;x_{\phi _{t}}-\sin(\delta ){\hat {v}}_{\theta }\;(x_{\phi _{t}})} . Esta parametrização foi considerada para melhorar o desempenho, pois o modelo pode ser treinado para atingir ruído total (ou seja, ϕ t = 90 ∘ {\displaystyle \phi _{t}=90^{\circ }} ) e depois revertê-lo, enquanto a parametrização padrão nunca atinge ruído total, pois α ¯ t > 0 {\displaystyle {\sqrt {{\bar {\alpha }}_{t}}}>0} é sempre verdadeiro.
Orientação por classificador
A orientação por classificador foi proposta em 2021 para melhorar a geração condicional a classes usando um classificador. A publicação original usou codificadores de texto CLIP para melhorar a geração de imagem condicional a texto. Suponha que desejamos amostrar não de toda a distribuição de imagens, mas condicional à descrição da imagem. Não queremos amostrar uma imagem genérica, mas uma imagem que se encaixa na descrição "gato preto com olhos vermelhos". Geralmente, queremos amostrar da distribuição p ( x | y ) {\displaystyle p(x|y)} , onde x {\displaystyle x} varia sobre imagens, e y {\displaystyle y} varia sobre classes de imagens (uma descrição "gato preto com olhos vermelhos" é apenas uma classe muito detalhada, e uma classe "gato" é apenas uma descrição muito vaga).
Orientação sem classificador (CFG)
Se não temos um classificador p ( y | x ) {\displaystyle p(y|x)} , poderíamos ainda extrair um do próprio modelo de imagem: ∇ x ln p γ ( x | y ) = ( 1 − γ ) ∇ x ln p ( x ) + γ ∇ x ln p ( x | y ) {\displaystyle \nabla _{x}\ln p_{\gamma }(x|y)=(1-\gamma )\nabla _{x}\ln p(x)+\gamma \nabla _{x}\ln p(x|y)} Tal modelo é geralmente treinado apresentando-lhe tanto ( x , y ) {\displaystyle (x,y)} quanto ( x , N o n e ) {\displaystyle (x,{\rm {None}})} , permitindo-lhe modelar tanto ∇ x ln p ( x | y ) {\displaystyle \nabla _{x}\ln p(x|y)} quanto ∇ x ln p ( x ) {\displaystyle \nabla _{x}\ln p(x)} . Observe que para CFG, o modelo de difusão não pode ser meramente um modelo generativo de toda a distribuição de dados ∇ x ln p ( x ) {\displaystyle \nabla _{x}\ln p(x)} . Ele deve ser um modelo generativo condicional ∇ x ln p ( x | y ) {\displaystyle \nabla _{x}\ln p(x|y)} . Por exemplo, na difusão estável, a espinha dorsal da difusão recebe como entrada tanto um modelo ruidoso x t {\displaystyle x_{t}} , um tempo t {\displaystyle t} , e um vetor de condicionamento y {\displaystyle y} (como um vetor codificando um prompt de texto), e produz uma previsão de ruído ϵ θ ( x t , y , t ) {\displaystyle \epsilon _{\theta }(x_{t},y,t)} .
Falando abstratamente, a ideia do modelo de difusão é pegar uma distribuição de probabilidade desconhecida (a distribuição de imagens de aparência natural) e, em seguida, convertê-la progressivamente em uma distribuição de probabilidade conhecida (distribuição gaussiana padrão), construindo um caminho de probabilidade absolutamente contínuo conectando-as. O caminho de probabilidade é de fato definido implicitamente pela função de pontuação ∇ ln p t {\displaystyle \nabla \ln p_{t}} . Nos modelos de difusão com desruído, o processo direto adiciona ruído, e o processo reverso remove ruído. Ambos os processos direto e reverso são EDEs, embora o processo direto seja integrável em forma fechada, então pode ser feito sem custo computacional. O processo reverso não é integrável em forma fechada, então deve ser integrado passo a passo por solvers EDE padrão, o que pode ser muito caro. O caminho de probabilidade nos modelos de difusão é definido através de um processo de Itô e pode-se recuperar o processo determinístico usando a formulação de fluxo EDO de probabilidade.
Fluxo de transporte ótimo
A ideia do fluxo de transporte ótimo é construir um caminho de probabilidade minimizando a métrica de Wasserstein. A distribuição na qual condicionamos é uma aproximação do plano de transporte ótimo entre π 0 {\displaystyle \pi _{0}} e π 1 {\displaystyle \pi _{1}} : z = ( x 0 , x 1 ) {\displaystyle z=(x_{0},x_{1})} e q ( z ) = Γ ( π 0 , π 1 ) {\displaystyle q(z)=\Gamma (\pi _{0},\pi _{1})} , onde Γ {\displaystyle \Gamma } é o plano de transporte ótimo, que pode ser aproximado por transporte ótimo de mini-batch. Se o tamanho do lote não for grande, então o transporte que ele computa pode estar muito longe do verdadeiro transporte ótimo.
Fluxo retificado
A ideia do fluxo retificado é aprender um modelo de fluxo tal que a velocidade seja quase constante ao longo de cada caminho de fluxo. Isso é benéfico, pois podemos integrar ao longo de tal campo vetorial com muito poucas etapas. Por exemplo, se uma EDO ϕ t ˙ ( x ) = v t ( ϕ t ( x ) ) {\displaystyle {\dot {\phi _{t}}}(x)=v_{t}(\phi _{t}(x))} segue caminhos perfeitamente retos, ela se simplifica para ϕ t ( x ) = x 0 + t ⋅ v 0 ( x 0 ) {\displaystyle \phi _{t}(x)=x_{0}+t\cdot v_{0}(x_{0})} , permitindo soluções exatas em uma etapa. Na prática, não podemos alcançar tal perfeição, mas quando o campo de fluxo está quase assim, podemos dar algumas grandes etapas em vez de muitas pequenas etapas.
Modelo de difusão
Para gerar imagens por DDPM, precisamos de uma rede neural que recebe um tempo t {\displaystyle t} e uma imagem ruidosa x t {\displaystyle x_{t}} , e prevê um ruído ϵ θ ( x t , t ) {\displaystyle \epsilon _{\theta }(x_{t},t)} a partir dela. Como prever o ruído é o mesmo que prever a imagem desruída, então subtraí-la de x t {\displaystyle x_{t}} , arquiteturas de desruído tendem a funcionar bem. Por exemplo, a U-Net, que foi considerada boa para desruído de imagens, é frequentemente usada para modelos de difusão de desruído que geram imagens. Para o DDPM, a arquitetura subjacente ("espinha dorsal") não precisa ser uma U-Net. Ela só precisa prever o ruído de alguma forma. Por exemplo, o transformer de difusão (DiT) usa um Transformer para prever a média e a covariância diagonal do ruído, dado o condicionamento textual e a imagem parcialmente desruída. É o mesmo que o modelo de difusão de desruído padrão baseado em U-Net, com um Transformer substituindo a U-Net. O Transformer com mistura-de-especialistas também pode ser aplicado.
Condicionamento
O modelo de difusão base pode gerar apenas incondicionalmente a partir de toda a distribuição. Por exemplo, um modelo de difusão aprendido no ImageNet geraria imagens que parecem uma imagem aleatória do ImageNet. Para gerar imagens de apenas uma categoria, seria necessário impor a condição e então amostrar da distribuição condicional. Qualquer condição que se queira impor, é necessário primeiro converter o condicionamento em um vetor de números de ponto flutuante, então alimentá-lo na rede neural do modelo de difusão subjacente. No entanto, tem-se liberdade para escolher como converter o condicionamento em um vetor. O Stable Diffusion, por exemplo, impõe condicionamento na forma de um mecanismo de atenção cruzada, onde a consulta é uma representação intermediária da imagem na U-Net, e tanto a chave quanto o valor são os vetores de condicionamento. O condicionamento pode ser aplicado seletivamente apenas a partes de uma imagem, e novos tipos de condicionamentos podem ser ajustados finamente sobre o modelo base, como usado no ControlNet.
Aumento de escala
Como gerar uma imagem leva muito tempo, pode-se tentar gerar uma imagem pequena por um modelo de difusão base, depois aumentá-la de escala por outros modelos. O aumento de escala pode ser feito por GAN, Transformer, ou métodos de processamento de sinal como reamostragem de Lanczos. Os próprios modelos de difusão podem ser usados para realizar aumento de escala. O modelo de difusão em cascata empilha múltiplos modelos de difusão um após o outro, no estilo do Progressive GAN. O nível mais baixo é um modelo de difusão padrão que gera imagem 32x32, então a imagem seria aumentada por um modelo de difusão especificamente treinado para aumento de escala, e o processo se repete.
Esta seção coleta alguns modelos de difusão notáveis e descreve brevemente suas arquiteturas.
OpenAI
A série DALL-E da OpenAI são modelos de difusão de imagens condicionais a texto. A primeira versão do DALL-E (2021) não é realmente um modelo de difusão. Em vez disso, usa uma arquitetura Transformer que gera auto-regressivamente uma sequência de tokens, que é então convertida em uma imagem pelo decodificador de um VAE discreto. Lançado com o DALL-E estava o classificador CLIP, que foi usado pelo DALL-E para classificar as imagens geradas de acordo com o quão próximo a imagem se encaixa no texto. GLIDE (2022-03) é um modelo de difusão de 3,5 bilhões de parâmetros, e uma versão pequena foi lançada publicamente. Pouco depois, DALL-E 2 foi lançado (2022-04). DALL-E 2 é um modelo de difusão em cascata de 3,5 bilhões de parâmetros que gera imagens a partir de texto "invertendo o codificador de imagem CLIP", a técnica que eles chamaram de "unCLIP".
Lightricks
LTX é uma família de modelos fundamentais de inteligência artificial para vídeo desenvolvidos pela Lightricks, lançada pela primeira vez em novembro de 2024. Os modelos mais recentes, LTX-2, criam vídeos com base em prompts do usuário, condicionados a texto, imagens, vídeo ou áudio - e capazes de gerar áudio e visual de forma unificada. Eles foram precedidos pelo LTX Video, que foi lançado em 2024 como o primeiro modelo de texto para vídeo da empresa.
Stability AI
Stable Diffusion (2022-08), lançado pela Stability AI, consiste em um modelo de difusão latente de desruído (860 milhões de parâmetros), um VAE e um codificador de texto. A rede de desruído é uma U-Net, com blocos de atenção cruzada para permitir a geração de imagem condicional. Stable Diffusion 3 (2024-03) mudou o modelo de difusão latente da UNet para um modelo Transformer, e por isso é um DiT. Ele usa fluxo retificado. Stable Video 4D (2024-07) é um modelo de difusão latente para vídeos de objetos 3D.
Imagen (2022) usa um modelo de linguagem T5-XXL para codificar o texto de entrada em um vetor de incorporação. É um modelo de difusão em cascata com três submodelos. O primeiro passo desrui um ruído branco para uma imagem 64×64, condicional ao vetor de incorporação do texto. Este modelo tem 2B parâmetros. O segundo passo aumenta a imagem em escala por 64×64→256×256, condicional à incorporação. Este modelo tem 650M parâmetros. O terceiro passo é semelhante, aumentando por 256×256→1024×1024. Este modelo tem 400M parâmetros. As três redes de desruído são todas U-Nets. Muse (2023-01) não é um modelo de difusão, mas um Transformer apenas de codificador que é treinado para prever tokens de imagem mascarados a partir de tokens de imagem não mascarados.
Meta
Make-A-Video (2022) é um modelo de difusão de texto para vídeo. CM3leon (2023) não é um modelo de difusão, mas um Transformer auto-regressivo com mascaramento causal, com quase a mesma arquitetura que LLaMa-2. Transfusion (2024) é um Transformer que combina geração de texto auto-regressiva e difusão com desruído. Especificamente, ele gera texto auto-regressivamente (com mascaramento causal), e gera imagens por desruído múltiplas vezes sobre tokens de imagem (com atenção all-to-all). Movie Gen (2024) é uma série de Transformers de Difusão operando no espaço latente e por casamento de fluxo.


