Conceitos de Deep Learning para novos curiosos
Deep Learning está no centro de muitas aplicações de inteligência artificial (IA). São sistemas capazes de praticar tarefas analíticas, e até mesmo físicas, sem a intervenção humana.
Esse tipo de tecnologia está por trás de diversas aplicações, como detecções de fraudes, reconhecimento de fala, assistentes virtuais, visão computacional, entre tantas outras que já permeiam o nosso dia-a-dia, muitas vezes sem que sequer percebamos.
Neste artigo, você poderá entender alguns conceitos relacionados ao Deep Learning, de modo que ao final você terá um panorama da estrutura de funcionamento dessa tecnologia.
O Que é Deep Learning?
O Deep Learning é uma sub-área do Machine Learning que busca construir uma arquitetura de aprendizado por meio de redes neurais, capazes de abstrair padrões a partir de dados não-estruturados e criar modelos com alto nível de performance.
Com essa tecnologia, busca-se imitar a maneira como somos capazes de aprender o significado e atribuir utilidade às coisas que observamos, ouvimos e experimentamos.
As redes neurais funcionam como os neurônios do cérebro humano, que recebem uma quantidade imensa de dados do mundo real e buscam por padrões para torná-los inteligíveis. A diferença, obviamente, é que o algoritmo faz isso de forma limitada a um objetivo específico, como, por exemplo, identificar o que ocorre no trânsito ou para qual comida a câmera está apontando.
Nós, por outro lado, temos uma capacidade muito maior de interpretar os dados do mundo real a partir dos sentidos. Porém, o triunfo do Deep Learning reside na velocidade com a qual realiza tarefas específicas que, para nós, tomaria muito tempo e esforço.
Entendendo o Que São Redes Neurais
As redes neurais são estruturas de processamento de dados que formam a arquitetura do Deep Learning. Como disse logo acima, elas buscam imitar o processo da cognição humana ao conectar diversas camadas de neurônios artificiais.
Esses neurônios atuam combinando os dados recebidos, atribuindo-lhes pesos e vieses e associando-os a funções específicas de custo e ativação. Dessa forma, esses elementos trabalham juntos para definir as etapas de processamento até o output, que deve reconhecer, classificar ou descrever objetos reais a partir dos dados.
Em outras palavras, a partir dessas camadas, uma rede neural é capaz de interconectar os neurônios, afim de refinar e otimizar a previsão ou categorização. Assim, por meio do processamento e busca de padrões, podemos ter ao final um resultado interpretável por nós.
As camadas se desdobram em dois tipos: visíveis e invisíveis.
As camadas visíveis são aquelas, como o próprio nome diz, que podemos interagir e ver, que são o Input e o Output. A camada de Input é onde os dados são inseridos para processamento pela rede neural. No Output, temos o resultado do fluxo dos dados através da rede neural, com a previsão ou classificação do objeto real.
Já as camadas invisíveis são as responsáveis por processar os dados, buscar padrões, selecionar atributos, atribuir pesos, e ajustar funções que irão direcionar a escolha do Output.
Como a rede neural avalia seus resultados
Esse processo de Deep Learning descrito, em que há um fluxo de dados desde os inputs, passando pela codificação e pelo processamento dos dados, até a representação no output, é o que chamamos de Forward Propagation (FP).
O FP, portanto, é o sentido de aprendizado da rede neural, que está aprendendo as regras associadas àquele conjunto de dados específico.
Mas como a rede neural avalia se os resultados obtidos estão alinhados com o objeto real que ela pretende prever ou categorizar?
Para isso, existe o processo inverso que é o Backpropagation. Nesse caminho, a arquitetura de Deep Learning é treinada partindo do output com algoritmos como Gradiente Descendente (Gradient Descent), capazes de minimizar os erros através de várias iterações que buscam um mínimo local.
A partir desse ajuste fino e contínuo, o algoritmo redefine muitos pesos e vieses, modificando as funções de ativação e custo de modo a melhorar a acurácia do modelo com o tempo.
Obviamente que se trata de uma explicação simplificada, com o intuito de elucidar conceitos, e não de explicar os mecanismos mais complexos por trás. O tipo de rede neural descrito acima é apenas um entre tantos que existem para diferentes aplicações, como as redes neurais convolucionais, para visão computacional, ou as redes neurais recorrentes, para identificação de fala, por exemplo.
A Diferença entre Machine Learning e Deep Learning
As principais diferenças estão nos tipos de dados que o DL utiliza e seus métodos de aprendizado.
O ML utiliza de dados estruturados, com atributos definidos e organizados no formato de tabelas. Quando recebe dados não-estruturados, estes são pré-processados de modo a organizá-los de forma estruturada. O algoritmo então é capaz de interpretar os dados para realizar as previsões.
Já o DL elimina algumas etapas de pré-processamento, uma vez que seus algoritmos recebem dados não-estruturados de fontes como textos, imagens e áudios. Além disso, a automação no DL permite a extração de features e a organização desses atributos em uma hierarquia de importância para a previsão.
No ML, a escolha desses atributos mais relevantes normalmente é feita manualmente, a partir do conhecimento de domínio do profissional que está contruíndo o modelo.
Como foi dito antes, através do processo de backpropagation, com algoritmos como o gradiente descendente, as estruturas de DL são capazes de avaliar os desempenhos dos modelos, de modo a conseguir maior acurácia.
Já no ML, é necessário escolher quais parâmetros de desempenho são mais adequados para avaliar a tarefa que foi realizada. Por exemplo, problemas de regressão requerem atenção a métricas como MAE, MSE ou RMSE. Já tarefas de classificação dependem da análise das matrizes de confusão e métricas como recall, precision, f1-score.
Após essa avaliação, dependendo do tamanho dos erros, talvez seja necessária a otimização dos hiperparâmetros do modelo, uma nova divisão de dados, uma nova etapa de pré-processamento ou normalização. Ou seja, é um trabalho que requer maior atenção por parte do cientista de dados.
Toda a automação desses processos rendeu ao Deep Learning o título de Machine Learning Escalável, pois é capaz de lidar com uma vasta quantidade de dados de forma rápida e eficaz. O fato de poder trabalhar com dados não-estruturados é outra vantagem, visto que estima-se que 80% dos dados disponíveis são desestruturados.
Em suma, o Machine Learning não necessita de uma grande quantidade de dados para gerar um bom modelo, contanto que a estrutura subjacente dos dados esteja bem organizada. Por outro lado, o Deep Learning é empregado para tarefas mais complexas que envolvem vastas quantidades de dados não-estruturados, de modo que a própria qualidade do modelo depende desse volume de dados disponíveis.
A ponta do iceberg
Deep Learning é um assunto complexo e extenso. Se você é alguém curioso, que quer ou talvez até precisa saber mais, não vai haver falta de conteúdo para aprender.
Contudo, é sempre bom ter em mente os conceitos fundamentais que envolvem essa área. Sem eles, estamos trabalhando no escuro e torcendo para o melhor. É necessário sempre cultivar uma saudável curiosidade e a vontade de aprender, que todo cientista de dados deve ter.
Espero que esse artigo tenha ajudado a elucidar os conceitos mais fundamentais e a colocar cada coisa no seu devido lugar. Principalmente para novos curiosos na área, é sempre bom saber o que está por trás de muitas das novas tecnologias que vemos surgir a cada ano.
Se você gostou, se ajudou de alguma forma, deixe seu like pro artigo. Agradeço muito!
Obrigado pela leitura!
Me acompanhe nas redes sociais e confira os projetos no meu portfólio do GitHub, ou leia outros artigos aqui no Medium.