Glossário (Parte 2) – Deep Learning e redes neurais

Photo by meo from Pexels

Atenção! o objetivo dos posts do Bluend sobre programação é sempre explicar os assuntos mais espinhosos da forma mais simples possível. É claro que isso significa que nem sempre vamos nos aprofundar nos detalhes. Sendo assim, caso você queira ir além do que abordamos aqui, lembre sempre de seguir os links das fontes que estão no post.

Pra começar, vamos relembrar a definição de Machine Learning, segundo Tom Mitchell:

A área de machine learning diz respeito a questão de como construir programas de computador que melhoram automaticamente através da experiência.

OK, é possível criar programas que “aprendam” através da experimentação, analisando os dados que eles mesmos produzem, ou bases de dados externas. Mas, qual é a diferença desse processo em comparação com Deep Learning? Para que possamos entender isso, vejamos primeiro a definição de rede neural, conforme Simon Haykin explica em seu livro Neural Networks – A Comprehensive Foundation:

Uma rede neural é uma máquina projetada para modelar a forma na qual o cérebro realiza uma tarefa ou função específica de interesse; a rede é geralmente implementada utilizando-se de componentes eletrônicos ou é simulada em um software (…)

O trecho acima lembra um pouco a definição de Inteligência Artificial: criar máquinas que executem tarefas humanas, tal e qual um humano faria. A diferença é que, enquanto I.A é o objetivo final, uma rede neural é o meio através do qual iremos criar um software desse tipo. Assim como temos camadas de neurônios interligadas em nosso cérebro, em uma rede neural temos vários objetos interligados. Pense nesses objetos como funções. Eles recebem parâmetros de entrada, executam operações utilizando esses dados e então geram parâmetros de saída. Esses parâmetros são passados adiante, para outra camada de neurônios, que fazem um novo processamento, e assim por diante.

Ao final do processo, os dados de saída de todos os neurônios são reunidos e um resultado (ou conjunto de resultados) é encontrado. É claro que essa é uma explicação bem generalista do processo, e caso você queria saber mais, recomendo esse vídeo. Mas o meu objetivo com essa explicação toda é contextualizar o conceito de Deep Learning, que por si só não é muito simples de entender, e que Yann LeCun explica da seguinte forma em artigo publicado na revista Nature:

O deep learning descobre estruturas intrincadas em grandes conjuntos de dados utilizando-se do algoritmo de backpropagation para indicar como uma máquina deveria alterar seus parâmetros internos que são utilizados para computar a representação em cada camada a partir da representação na camada anterior

Informação demais, né? Vamos quebrar isso em partes:

  • “Descobre estruturas em grandes conjunto de dados”: significa que o software é capaz de analisar um conjunto de dados (como um Big Data) e entender a estrutura interna dos mesmos: Quais dados se repetem? O que eles têm em comum?
  • “Utiliza-se do algoritmo de backpropagation”: esse é um dos algoritmos de aprendizado utilizado com redes neurais. Vamos falar um pouco dele logo mais. De momento, vamos analisar a parte mais complexa dessa citação.

[O Deep Learning utiliza um algoritmo] para indicar como uma máquina deveria alterar seus parâmetros internos que são utilizados para computar a representação em cada camada a partir da representação na camada anterior .

É exatamente disso que falamos na definição de redes neurais! Camadas de neurônios interligados que “computam” dados. Mas e quanto a esse algoritmo? Bom, a função dele é permitir que a rede faça um autoajuste (“altere seus parâmetros internos”), ou seja, que entenda quando está cometendo erros em sua análise dos dados e consiga “aprender” com esses erros e melhorar os resultados na próxima iteração. Por um acaso essa descrição soa familiar? Se você já ouviu falar em Machine Learning, a resposta só pode ser sim.

Em conclusão: Deep Learning é Machine Learning aplicado a grandes conjuntos de dados. A análise desses dados é realizada através de um software, que passa esses dados por uma rede neural a fim de aprender sobre eles. Uma vez que essa rede “aprendeu” com os dados, podemos dizer que ela foi “treinada”, e a partir de agora é capaz de fornecer respostas para possíveis perguntas. Quer saber qual é a dúvida do usuário a partir das palavras que eles escreveu no chat? Basta passar os dados para a rede, e ela irá analisar a situação e encontrar uma resposta, exatamente como um humano faria. E como chamamos os softwares que simulam o comportamento humano? Inteligências Artificiais.

Fontes: