Um dos objetivos centrais das pesquisas no subcampo da inteligência artificial conhecida como machine learning, é entender como a máquina aprende diretamente dos dados. Entre as técnicas mais bem-sucedidas de aprendizado de máquinas estão aquelas associadas ao deep learning, que usa várias camadas de representação para aprender recursos descritivos diretamente dos dados de treinamento [1]. Falei um pouco sobre o assunto em três textos anteriores (Visão computacional na era do deep learning; Configurando e depurando uma rede deep learning; e Derivada e Gradiente). Apesar de todo o sucesso das deep learnings, ainda não é muito bem compreendido teoricamente porque elas são tão bem-sucedidas em descobrir padrões em dados estruturados. Uma explicação, baseada na noção de informação relevante, vem ganhando terreno nos últimos anos. Ela começou a ser formulada em 1999, como uma adição à teoria da informação.
Os autores (Tishby, Pereira e Bialek) queriam confrontar um problema fundamental na formalização matemática da informação, que é fornecer uma noção quantitativa a respeito de informação “significativa” ou “relevante” [2]. Vale mencionar que as formalizações que geraram uma teoria própria da informação, propostas inicialmente por Claude E. Shannon e posteriormente desenvolvidas pela disciplina da cibernética, foi o que possibilitou desenvolvermos a informática. Também vale mencionar que as questões a respeito do que é informação “significativa” ou “relevante” foram intencionalmente deixadas de fora da teoria da informação em sua formulação original por Shannon, que focou a atenção no problema de transmissão de informações, em vez de julgar seu valor para o destinatário [2]. A medida-chave da teoria da informação é a entropia, que quantifica o valor da incerteza envolvida no resultado de um processo aleatório de transmissão de informação. É uma medida probabilística que mede o nível médio de “informação”, “surpresa” ou “incerteza” inerente a todos os resultados possíveis da variável. Quanto mais entropia, menos informação. Tishby, Pereira e Bialek propuseram o que chamaram de information bottleneck (gargalo de informação), formulado como um problema de otimização matemática. Explicando, imagine que “X” é um conjunto de dados complexo, como os pixels de uma foto de cachorro, e “Y” é uma variável mais simples representada por esses dados, como a própria palavra “cachorro”. Pelo princípio do gargalo de informação, é possível capturar todas as informações “relevantes” presentes no conjunto “X” a respeito de “Y”, compactando “X” o máximo que puder sem que se perca a capacidade de prever “Y”. O processo de compactação causaria um efeito de redução da entropia.
Foi apenas em 2014 que Tishby enxergou a conexão entre o princípio do gargalo de informação e as redes neurais profundas, após ler o paper de David Schwab e Pankaj Mehta [1]. Schwab e Mehta perceberam que um algoritmo específico chamado “deep belief net”, desenvolvido pelo Geoffrey Hinton (um dos criadores do deep learning), funciona, em um caso particular, exatamente como a renormalização, uma técnica usada na física para diminuir o “zoom” em um sistema físico, por meio de uma granulação grossa (uma representação simplificada) sobre seus detalhes e um cálculo de seu estado geral. Aqui estamos nos referindo à teoria dos sistemas – o estado de um sistema basicamente é definido se especificando valores de um conjunto de propriedades mensuráveis que são suficientes para determinar todas as outras propriedades. Para sistemas de fluido, por exemplo, as propriedades típicas são pressão, volume e temperatura. Quando Schwab e Mehta aplicaram o algoritmo “deep belief net” a um modelo de ímã em seu “ponto crítico”, onde o sistema é fractal (auto-similar em todas as escalas), eles descobriram que a rede usava automaticamente o procedimento de renormalização para descobrir o estado do modelo.
Tishby percebeu então, que tanto a rede neural profunda quanto o procedimento de granulação grossa poderiam ser encorpados pelo princípio do gargalo de informação. Em um paper em co-autoria com Noga Zaslavsky, levantou a hipótese de que o deep learning é um procedimento de gargalo de informações que comprime dados que são considerados ruídos tanto quanto possível, preservando as informações sobre o que os dados representam [3]. Aqui vale explicar que, pela teoria da informação, ao se processar um sinal, todas as modificações indesejadas (e, em geral, desconhecidas) que um sinal pode sofrer durante a captura, armazenamento, transmissão, processamento ou conversão, é considerado ruído. O termo também pode ser usado para qualificar sinais aleatórios e imprevisíveis, que não contém informações úteis (é importante clarificar que não nos referimos ao que a mensagem diz, mas aos bits que a compõem). A ideia é que uma deep learning se livra dos dados de entrada “barulhentos” e com detalhes estranhos, como se espremesse as informações por meio de um gargalo, retendo apenas os recursos mais relevantes para os conceitos gerais. Exatamente como no conceito original do princípio do gargalo de informação. Mas, como isso é feito? O processo é explicado em dois outros papers, um em co-autoria com Ravid Shwartz-Ziv [4] e o outro com Shwartz-Ziv e Zoe Piran [5]. Vamos a ele.
O algoritmo básico usado na maioria dos procedimentos de deep learning para ajustar as conexões neurais em resposta aos dados é chamado de “stochastic gradient descent” (SGD). Ele funciona da seguinte maneira: cada vez que os dados de treinamento são alimentados na rede, é ativada uma cascata de sinais, que sobe pelas camadas de neurônios artificiais. Quando finalmente o sinal atinge a camada superior, o padrão de disparo final pode ser comparado ao rótulo correto para a imagem, 1 ou 0, “cachorro” ou “não cachorro”. Quaisquer diferenças entre esse padrão de disparo e o padrão correto são “retro-propagadas” (mandadas de volta) pelas camadas. Isso significa que o algoritmo fortalece ou enfraquece cada conexão para “ensinar” à camada de rede o melhor padrão para produzir o sinal de saída correto. Ao longo do treinamento, padrões comuns nos dados se refletem na força das conexões, e a rede se torna “especialista” em os rotular corretamente. O experimento descrito em [4] rastreou a quantidade de informação que cada camada de uma rede neural profunda reteve dos dados de entrada e quanta informação entregou sobre o rótulo de saída. Descobriram que, camada por camada, as redes convergiram para o limite teórico do gargalo de informações, apresentado no artigo original de Tishby, Pereira e Bialek, que representa o melhor que o sistema pode fazer para extrair informações relevantes. No limite, a rede comprimiu a entrada tanto quanto possível, sem sacrificar a capacidade de prever com precisão o seu rótulo. A Fig 1 mostra essa compressão.
Segundo [4] e [5], o aprendizado profundo acontece em duas fases. Uma fase menor onde se dá o ajuste (fitting), em que a rede “aprende” a rotular os dados de treinamento e uma fase maior, de compressão, durante a qual ela se torna boa em generalização, medida pelo seu desempenho na rotulagem de novos dados (os dados de teste). À medida que uma deep learning ajusta suas conexões pelo SGD, o número de bits que armazena a respeito dos dados de entrada permanece constante (ou aumenta ligeiramente). Este momento é similar à memorização. Em seguida, o aprendizado muda para a fase de compressão. A rede começa então a distribuir informações sobre os dados de entrada, rastreando apenas os recursos mais fortes, ou seja, as correlações que são mais relevantes para o rótulo de saída. Isso acontece porque, em cada iteração de descida do SGD, correlações mais ou menos acidentais nos dados de treinamento dizem à rede para fazer coisas diferentes. Percebendo mudanças nos padrões, a rede ajusta os pesos das suas conexões neurais para cima e para baixo, em uma caminhada aleatória. Essa randomização é precisamente a compactação da representação do sistema dos dados de entrada. Explico, imagine que temos diversas imagens de cachorros. Algumas dessas imagens podem ter casas ao fundo, enquanto outras não. Conforme uma rede passa por essas fotos de treinamento, ela “esquece” a correlação entre casas e cachorros em algumas fotos porque as demais fotos onde não há casas ao fundo a neutralizam. É esse “esquecimento de especificidades” que permite à rede formar conceitos gerais. Marquei na Fig 2 (no gráfico mais à direita) as etapas e suas transições.
O estado inicial (A) acontece na primeira camada. Aqui são codificados todos os dados a respeito do input, incluindo seus rótulos. Os neurônios das camadas superiores estão em um estado quase aleatório, tendo pouca ou nenhuma relação com os dados ou seu rótulo. (B) representa a fase de ajuste (fitting) em que o aprendizado profundo começa. Aqui, os neurônios das camadas superiores começam a ganhar informação a respeito dos dados de input e vão melhorando na tarefa de atribuir corretamente rótulos a eles. (C) é o começo do processo de mudança. As camadas iniciam um estado de “esquecimento” das informações que compõem o input. (D) é a fase de compressão, onde as camadas superiores comprimem a sua representação dos dados de input, mantendo apenas o que é mais relevante para o output. Se tornam melhores em atribuir rótulos. (E) representa o estado final, em que a última camada adquire um equilíbrio ótimo de acuracidade e compressão, reduz a entropia e retém apenas as informações importantes para a predição do rótulo.
Ainda resta saber se o gargalo de informação rege todos os regimes de deep learning ou se existem outras rotas para generalização além da compressão. De qualquer forma, é um dos insights teóricos mais importantes já surgidos nessa área. Quando comecei a estudar redes neurais, em especial redes neurais profundas, era comum ouvir explicações dizendo que o que acontecia dentro das camadas era uma caixa-preta – significando que ninguém sabia muito bem como a rede chegava aos resultados que chegava. O mistério de como os nossos cérebros filtram os sinais emitidos pelos nossos sentidos e os elevam ao nível de consciência, despertou grande parte do interesse inicial em redes neurais profundas entre as pessoas que estudam e desenvolvem IA, que esperavam fazer uma espécie de engenharia reversa das regras de aprendizagem do cérebro. No final “das contas”, é possível que a inteligência artificial seja mais matemática do que humana. Pelo menos até termos a computação quântica em um estágio muito superior ao atual – uma vez que há indícios de que o nosso cérebro funcione de maneira quântica (como mostra a hipótese chamada quantum brain dynamics ou teorias como quantum mind). Mas, isso já é assunto para outro texto.
Este texto é uma homenagem ao Naftali Tishby, neurocientista computacional falecido em agosto de 2021. Na minha opinião, ele foi uma das mentes mais criativas da computação dos anos 1990 para cá. O seu seminário sobre o gargalo de informação era disputadíssimo (para quem se interessar, a Universidade de Stanford disponibilizou um deles aqui). Como se costuma dizer, “caminhamos sobre ombros de gigantes” e Tishby certamente foi um deles.
[1] Pankaj Mehta and David J. Schwab. “An exact mapping between the variational renormalization group and deep learning.” arXiv preprint arXiv:1410.3831 (2014).
[2] Naftali Tishby, Fernando C. Pereira, and William Bialek. “The information bottleneck method”. In Proc. of the 37-th Annual Allerton Conference on Communication, Control and Computing, pages 368–377, (1999).
[3] Naftali Tishby and Noga Zaslavsky. “Deep learning and the information bottleneck principle.” 2015 IEEE Information Theory Workshop (ITW). IEEE, (2015).
[4] Ravid Shwartz-Ziv and Naftali Tishby. “Opening the Black Box of Deep Neural Networks via Information”. arXiv e-prints, page arXiv:1703.00810, Mar (2017).
[5] Zoe Piran, Ravid Shwartz-Ziv, and Naftali Tishby. “The dual information bottleneck.” arXiv preprint arXiv:2006.04641 (2020).