Se você já ouviu falar de ferramentas de inteligência artificial generativa como DALL-E-2, Midjourney ou Stable Diffusion, você já tem uma noção do que modelos de difusão podem fazer.
Os modelos de difusão ou diffusion models ganharam popularidade recentemente e já são considerados uma mudança de paradigma em machine learning. Eles são projetados principalmente para tarefas generativas e possuem desempenhos fantásticos em processos como geração de imagens, eliminação de ruído (denoising) e detecção de anomalias. Neste post, vamos explorar o que é essa tecnologia.
Entenda o que são modelos stable diffusion
Existem vários tipos de diffusion models. Todos eles modelam o processo de transformação de um dado simples, geralmente um ruído gaussiano, em dados estruturados complexos. Essa transformação ocorre de forma iterativa com cada etapa revelando um pouco mais do dado. Pense nesses modelos como uma classe de super algoritmos capazes de extrair padrões e informações de dados supostamente caóticos.
Porém, uma desvantagem desses modelos de difusão é que o processo de eliminação de ruído é lento devido à sua natureza repetida e sequencial. Além disso, esses modelos consomem muita memória porque operam no espaço de pixeis.
Stable diffusion é um modelo de difusão latente que supera essas desvantagens. Ele é chamado de modelo de difusão latente porque opera com uma representação da imagem em dimensão menor. Ou seja, ele não usa o espaço real de pixeis, mas um espaço latente de dimensão inferior. Esta é a principal diferença entre os modelos de difusão padrão e de difusão latente: na difusão latente, o modelo é treinado para gerar representações latentes (comprimidas) das imagens. Para isso, ele possui um codificador que comprime a imagem em uma representação menor e um decodificador para converter a representação comprimida de volta em uma imagem.
Como diffusion models funcionam?
Os diffusion models se baseiam no conceito de difusão. Tecnicamente, difusão se refere um processo estatístico de distribuição gradual de uma substância ou informação ao longo do tempo.
A ideia básica por trás desses algoritmos é modelar o processo através do qual uma distribuição simples e conhecida evolui para a distribuição de dados complexa e estruturada que queremos capturar. Este processo é realizado iterativamente ao contrário. A cada passo, uma parte do ruído é removida e os dados se tornam mais estruturados.
Ou seja, esses modelos operam através da decomposição do processo de geração de uma imagem em uma série de passos de remoção de ruído. Em essência, o processo começa com a geração de um ruído randômico. O modelo atua através da remoção gradual de ruído em cada etapa de seu funcionamento até que sua ação resulte em uma imagem.
Na prática, esses modelos de difusão consistem em dois processos: difusão direta e um processo reverso parametrizado.
Difusão direta e parametrização reversa
O processo de difusão direta mapeia os dados em ruído. Isso é formalmente alcançado por um processo estocástico simples que começa a partir de uma amostra de dados e gera iterativamente amostras mais ruidosas usando difusão gaussiana. Ou seja, a cada etapa deste processo, o ruído gaussiano é adicionado gradativamente aos dados.
O segundo processo é um processo reverso parametrizado que desfaz a difusão direta e realiza a remoção de ruído iterativamente. Seu objetivo é recuperar a imagem original usando uma rede neural. Para isso, uma rede neural generativa é treinada para receber imagens com ruído como entrada e retorna imagens sem ruído como saída. A cada passo do processo, a saída da difusão direta é fornecida como entrada para a rede neural, e ela tenta eliminar o ruído dessa entrada, ou seja, tenta prever a entrada do processo direto.
Imagem modificada a partir desta fonte.
Deep learning generativa
No centro dos diffusion models, como mencionado acima, está uma rede neural generativa. Essa rede aprende a transformar amostras simples de ruído em saídas complexas e estruturadas. Em essência, a rede generativa aprende a “desdifundir” os dados.
A arquitetura das redes generativas empregadas em diffusion models têm geralmente camadas neurais profundas (deep learning). Isso permite que os modelos capturem padrões complexos e hierárquicos em dados.
O treinamento
O treinamento de modelos stable diffusion consiste em otimizar os parâmetros da rede neural generativa para minimizar as diferenças entre as distribuições dos dados previstas pela rede e dados reais. Esse processo precisa de quantidades grandes de dados para treinamento.
Modelos stable diffusion usam stochastic gradient descent ou técnicas de otimização semelhantes para atualizar iterativamente os parâmetros de suas redes. Com isso, elas se tornam progressivamente melhores na remoção de ruídos ao longo de seus treinamentos.
As principais ferramentas para implementar Stable Diffusion Models
Implementar modelos do tipo stable diffusion costuma ser uma tarefa complexa. No entanto, existem diversas bibliotecas e ferramentas que podem simplificar bastante o processo. Entre as principais estão:
PyTorch: PyTorch é uma das bibliotecas mais populares de deep learning e fornece excelente suporte para implementação de diffusion models como grafos de computação dinâmicos.
JAX: ferramenta para computação numérica particularmente adequada para tarefas de machine learning de alto desempenho e também para computação científica. Ela tem autograd, o que é muito útil para a implementação de modelos complexos.
Hugging Face: é uma excelente plataforma com ferramentas para implementar vários modelos avançados. Ela conta com inúmeros modelos pré-treinados que podem ser modificados para tarefas específicas.
Pyro: Pyro é uma ferramenta de programação probabilística construída em PyTorch.
Flax: Flax é uma biblioteca de deep learning de código aberto construída sobre a biblioteca JAX. Ela é modular e bastante flexível. Consequentemente, essa é uma biblioteca adequada para implementações de modelos complexos como diffusion models.
Onde diffusion models são utilizados
Diffusion models têm vastas aplicações, entre algumas das principais estão:
- Veículos autônomos – auxílio na compreensão de dados complexos de sensores
- Análises de imagens médicas e detecção de doenças
- Análises preditivas no mercado financeiro
- Detecção de anomalias e prevenção de fraudes
- Otimizações de estratégias de mercado
- Criação de imagens artísticas
Conclusões
Modelos stable diffusion são um avanço impressionante na área de machine learning e inteligência artificial. Eles têm vastas aplicações na geração de imagens, eliminação de ruído e podem atuar em diversos setores, desde saúde até finanças. Com a evolução crescente do campo de machine learning, esses modelos certamente desempenharão cada vez mais um papel significativo na descoberta de padrões ocultos em dados complexos.
As imagens neste post são exemplos de IA generativa e foram criadas com DALL-E-2. A única exceção tem sua fonte original indicada abaixo de sua postagem.