Uma máquina de Helmholtz é um tipo de rede neural projetada para aprendizado não supervisionado de modelos probabilísticos. Foi introduzida em 1995 por Geoffrey Hinton, Peter Dayan, Brendan Frey e Richard Zemel. A arquitetura consiste em dois componentes complementares: um modelo de reconhecimento que mapeia dados de entrada para uma distribuição sobre variáveis latentes, e um modelo generativo que reconstrói dados a partir dessas variáveis latentes. A máquina é treinada usando o algoritmo de vigília-sono, que alterna entre ajustar os pesos de reconhecimento para inferir estados latentes e ajustar os pesos generativos para reconstruir os dados.
A máquina de Helmholtz recebe esse nome em homenagem a Hermann von Helmholtz, um físico e fisiologista do século XIX que propôs que a percepção envolve inferência inconsciente - o cérebro constrói um modelo do mundo para interpretar a entrada sensorial. A máquina incorpora essa ideia ao aprender um modelo generativo hierárquico de dados, onde níveis mais altos representam características mais abstratas e níveis mais baixos representam detalhes mais finos.
Arquitetura
A máquina de Helmholtz tem uma estrutura em camadas com dois conjuntos de conexões. As conexões de baixo para cima (reconhecimento) vão da camada de entrada até a camada superior, e as conexões de cima para baixo (generativas) vão na direção reversa. Cada camada contém um conjunto de unidades binárias estocásticas. O modelo de reconhecimento calcula a probabilidade de cada unidade oculta estar ativa dado a camada abaixo, enquanto o modelo generativo calcula a probabilidade de cada unidade estar ativa dado a camada acima.
Esse design bidirecional permite que a rede realize tanto inferência (reconhecimento de padrões) quanto geração (produção de novas amostras). O modelo de reconhecimento aproxima a distribuição posterior sobre variáveis latentes, que é intratável de calcular exatamente em geral. O modelo generativo define uma distribuição conjunta sobre dados e variáveis latentes, que pode ser amostrada para produzir novos pontos de dados.
Algoritmo de Vigília-Sono
O algoritmo de vigília-sono é um procedimento de treinamento em duas fases. Na fase de vigília, a rede é apresentada a um vetor de dados, e o modelo de reconhecimento é usado para amostrar um conjunto de estados latentes de baixo para cima. Esses estados amostrados são então usados para ajustar os pesos generativos, de modo que o modelo generativo reconstrua melhor os dados. Na fase de sono, o modelo generativo é usado para amostrar um conjunto de estados latentes de cima para baixo, e esses são usados para ajustar os pesos de reconhecimento, de modo que o modelo de reconhecimento infira melhor os estados latentes que produziram as amostras.
O algoritmo é uma aproximação ao aprendizado de máxima verossimilhança. Não é garantido que convirja para um ótimo global, mas é computacionalmente eficiente e funciona bem na prática para muitas tarefas. O algoritmo de vigília-sono foi um exemplo inicial de um método para treinar modelos generativos profundos, e influenciou desenvolvimentos posteriores como autoencoders variacionais e máquinas de Boltzmann.
Aplicações e Influência
Aplicações iniciais da máquina de Helmholtz incluíram reconhecimento de dígitos manuscritos e modelagem de documentos. A máquina era capaz de aprender características úteis a partir de dados não rotulados, que poderiam então ser usadas para classificação ou outras tarefas downstream. O conceito de aprender representações hierárquicas por meio de uma combinação de processamento de baixo para cima e de cima para baixo tem sido influente no desenvolvimento do aprendizado profundo.
Muitos modelos generativos modernos, incluindo redes adversariais generativas e modelos de difusão, baseiam-se em ideias que foram exploradas pela primeira vez na máquina de Helmholtz. O algoritmo de vigília-sono também antecipou o uso do algoritmo de maximização de expectativa em modelos de variáveis latentes, embora difira em sua abordagem para aproximar o posterior.
Limitações e Desenvolvimentos Posteriores
A máquina de Helmholtz original tinha várias limitações. O modelo de reconhecimento era uma rede feedforward simples, o que limitava sua capacidade de capturar distribuições posteriores complexas. O algoritmo de vigília-sono também sofria de uma incompatibilidade entre a distribuição usada para treinar o modelo de reconhecimento e o posterior verdadeiro, o que poderia levar a soluções subótimas.
Trabalhos posteriores abordaram essas questões introduzindo métodos de inferência mais sofisticados, como inferência variacional e inferência amortizada. O autoencoder variacional, introduzido em 2013 por Diederik Kingma e Max Welling, pode ser visto como um descendente moderno da máquina de Helmholtz, usando um modelo de reconhecimento aprendido e um modelo generativo treinado maximizando um limite inferior na verossimilhança.