O que é machine learning e deep learning
O que é machine learning e deep learning?
dez 8 - 10 min leitura
Inteligência Artificial (IA) é uma área dentro da tecnologia que vem encantando a humanidade há algumas décadas (desde os anos 50, mais ou menos – mas alguns defendem que ela começou com os gregos e judeus!).
Mas, por que a IA está tão em voga hoje em dia?
Quais são os impactos que esse tipo de tecnologia vem trazendo e quais os potenciais que temos ao usar computadores que aprendem "sozinhos" para alcançar feitos que antes eram apenas coisa de ficção científica?
Como o domínio desse tipo de ferramenta e o avanço tecnológico na área podem trazer (e já trazem!) valor para vários tipos de negócios? Melhor ainda, como você pode começar a entender e explorar essa área?
Nesse texto vamos aprender o que é Inteligência Artificial (IA), Machine Learning (ML) e Deep Learning (DL) e as diferenças entre eles. Também vamos entender um pouco que tipo de problema essas tecnologias resolvem e como você pode aprender mais, começar a explorar e desenvolver soluções legais!
Ok, vamos começar dando uma olhada no que os dados nos dizem. Nos últimos quatro anos, a utilização de IA em diversas aplicações cresceu 270%. A IA vem sendo utilizada para vigilância e fiscalização em vários países, no mercado de bolsa de valores, no agronegócio, na previsibilidade de instituições públicas, na segurança do trabalho, no entretenimento, na saúde, na meteorologia, na manufatura, na sustentabilidade e muitos outros.
Além disso, a previsão é de que o mercado de IA vá atingir a singela marca de USD 202,57 bi em 2026, sendo sua avaliação atual de USD 20,67 bi, segundo a MarketWatch.
Então, acredito que já deu para entender um pouco o ponto: estamos vivendo o pleno deslanchar da inteligência artificial. Já vimos outras ondas como essa na história da tecnologia, mas é um ótimo momento para aproveitar o avanço não só tecnológico e científico, mas de infraestrutura e de oportunidades que se formam dentro do mercado, sem contar o impacto positivo que essa tecnologia pode gerar para a sociedade no geral (olha aqui um exemplo de IA aplicada na pesquisa sobre o COVID19).
"Beleza, mas você ainda não me falou o que é essa tal de inteligência artificial!". Calma, meu jovem! Vamos lá…
IA vs. Machine Learning vs. Deep Learning
Inteligência Artificial nada mais é do que um termo amplo que abarca qualquer tipo de implementação computacional que tente imitar características cognitivas humanas, como, por exemplo, aprendizagem ou resolução de problemas.
Então, se formos analisar "ao pé da letra", uma estrutura condicional que faça com que uma máquina se comporte de determinada maneira em situações específicas já poderia ser considerada uma "inteligência artificial". O que é engraçado é que, no fim das contas, isso poderia ser feito até com `if else`, por exemplo!
Por sua vez, Machine Learning (Aprendizado de Máquina) é um campo dentro de Inteligência Artificial. O foco de ML é a criação de algoritmos que podem se auto modificar, sem intervenção humana, de forma a produzir um resultado desejado. Isso é feito a partir do treinamento de um modelo matemático que é alimentado por dados estruturados.
A parte "sem intervenção humana" pode parecer assustadora de início (como no filme Transcendence), mas, na prática, isso significa somente que, uma vez que o modelo treinado está em produção, as predições (tarefas-objetivo do modelo) serão feitas automaticamente.
Agora é a vez do Deep Learning, que é uma técnica específica dentro da área de Machine Learning. Então, DL também envolve a construção de algoritmos que usam dados para aprender a resolver determinada tarefa. A diferença é que Deep Learning usa uma abordagem distinta daquela geralmente utilizada em ML. A ideia aqui é imitar a rede de neurônios presentes nos humanos, então a implementação de Deep Learning é feita com Redes Neurais Artificiais.
Vamos entender com um exemplo algumas diferenças entre os dois.
Classificando imagens: um exemplo para entender ML e DL
Vamos supor que queremos criar um sistema que analise uma imagem e reconheça se há um Hobbit ou um Orc. A ideia aqui é construirmos esse classificador utilizando ambas abordagens (ML tradicional e DL) e depois analisarmos prós e contras de cada uma.
O primeiro passo seria criar um dataset (conjunto de dados) com várias imagens de Orcs e Hobbits para que o modelo pudesse ser treinado, ou seja, para que ele aprendesse quais são as diferenças entre uma imagem de Hobbit e uma imagem de Orc.
Aqui vale só dar uma rápida relembrada do que são imagens digitais: são matrizes contendo números! Cada elemento nessa matriz é um pixel, que é a unidade mínima de uma imagem, e que é representado por um número, indicando a intensidade de verde, azul ou vermelho (caso fosse uma imagem RGB). Então, no fim das contas, um algoritmo que analisa imagens está analisando um conjunto de números.
Vamos então entender as diferenças entre as abordagens.
Um orc e um hobbit
Hobbits ou Orcs? – Usando Machine Learning
Escolhendo trabalhar com ML, poderíamos utilizar um dataset menor…mas você se lembra de que falamos sobre dados estruturados? Isso significa que os algoritmos de ML não conseguem lidar com raw data, como é o caso de imagens puras, documentos de texto ou arquivos de áudio, por exemplo.
Para trabalhar com imagens, nesse caso, precisamos extrair delas alguns atributos que possam representar bem o conjunto de números que forma cada imagem. Esse segundo passo é chamado de feature extraction (extração de atributos ou extração de características) e é um passo fundamental no processo com ML.
Esse passo requer um bom conhecimento do domínio do problema e é uma etapa recursiva, na qual vários testes são feitos com diferentes tipos de extração de atributos, até que se tenha um resultado satisfatório.
Nesse caso, um "resultado satisfatório" é atingir um ponto em que os dados a serem alimentados no treinamento do modelo de ML proporcionem uma representação razoável dos dados originais, de forma a trazer uma boa acurácia da classificação, em conjunto com a escolha de qual modelo será utilizado. Esse é o próximo ponto que vamos falar!
Recapitulando, depois de construir o dataset com as imagens de Orcs e Hobbits, vamos extrair atributos de cada imagem (aqui você pode ver um pouco sobre extração de features em imagens) e informar para o modelo, durante o seu treinamento, se aquela é uma imagem de Orc ou de Hobbit.
Ou seja, temos (1) um conjunto de atributos que representam os dados (imagens) originais e (2) um "rótulo" para cada imagem (também chamado de classe), e isso é um dado estruturado, meus amigos! Isso é, dados que possuem um formato padrão que indica qual o "tipo" daquele dado, no nosso caso, é hobbit ou orc.
Agora, como terceiro passo, precisamos escolher algum modelo de classificação (aqui temos um gráfico legal de como escolher algum dos modelos presentes na biblioteca em Python, scikit-learn). Eles são, geralmente, modelos matemáticos derivados da estatística. Então, no fundo, podem ser vistos como funções matemáticas que vão ser "afinadas" de acordo com o "tom" dos nossos dados de treinamento. Alguns modelos famosos são o SVM, KNN e Random Forest.
Para decidir qual modelo usar, precisamos treiná-lo (fazer esse processo de "afinação" – tuning – dos parâmetros) e testá-lo com algumas imagens de orcs e hobbits para verificar o quanto ele consegue acertar em sua classificação, ou seja, qual é a sua acurácia.
A partir disso, podemos melhorar a performance do nosso modelo de algumas formas: melhorando nossos dados, melhorando nossa extração de atributos, alterando algum parâmetro do nosso modelo ou escolhendo outro modelo.
No fim das contas, o algoritmo de ML nada mais é que um algoritmo de otimização, que busca diminuir a diferença entre a saída real (no caso, a classificação de uma imagem) e a saída esperada (a classe/rótulo que informamos previamente ao modelo durante o treinamento). Porém, caso essa otimização ainda seja insuficiente, deve haver intervenção humana para ajustes e retreinamento.
Bem, o que você tem que sair sabendo dessa seção: Machine Learning requer menos dados para treinamento, mas requer um trabalho a mais que é a alimentação com dados estruturados, ou seja, a parte de extração de features, que, por si só, já é um trabalho a parte.
No entanto, ela requer menos poder de processamento da máquina e é uma ótima escolha se você já tem dados estruturados ou se o seu problema não é muito complexo de ser resolvido.
Hobbits ou Orcs? – Usando Deep Learning
Como já vimos, a abordagem de Deep Learning é baseada em Redes Neurais Artificiais, essas redes contém variadas camadas. À medida que o dado de entrada (a imagem) passa por cada uma das diversas camadas da rede neural, a estrutura da rede vai definir atributos específicos daqueles dados, de forma hierárquica.
Então, o que acontece é que a etapa de extração de atributos é realizada pela própria rede neural, além de ela também realizar a classificação.
Comparação entre os processos de ML e DL. Fonte: Towards Data Science
Então, se fossemos usar DL para criar o nosso sistema de classificação, o segundo passo seria criar uma rede neural com um determinado número de camadas e um determinado número de neurônios em cada camada.
O terceiro passo seria alimentar essa rede com um grande dataset de imagens de orcs e hobbits, mas sem precisar de intervenção humana para extração de atributos ou para indicar previamente a qual classe aquela imagem pertence, porque a própria rede neural já consegue aprender por si só, estabelecendo identificadores para cada tipo de dado.
Ao final do processo de treinamento da rede, se ainda assim a acurácia estivesse ruim, o principal ponto com o qual um engenheiro de IA teria que se preocupar seria com a qualidade/quantidade de dados de entrada no para o treinamento.
Já que a rede, por si só, cria um processo/algoritmo de otimização, aprendendo com os próprios erros, não requerendo intervenção humana diretamente nessa etapa do processo.
Aqui precisamos entender um pouco mais a analogia entre uma rede neural humana e uma rede neural artificial. No caso humano, para realizar determinada tarefa, um neurônio recebe determinado impulso elétrico (ativação) e então ativa outros n neurônios ligados a ele e assim por diante, até que determinada tarefa seja realizada.
No caso de uma ANN (Artificial Neural Network – Rede Neural Artificial, em inglês), cada "ponto" da rede é chamado de neurônio e, de acordo com os dados de entrada, esses neurônios serão ativados e então ativarão os subsequentes na rede neural, de acordo com o valor de determinado dado.
Então, cada camada contém unidades (os neurônios) que transformam os dados de entrada em informação para que a próxima camada possa usar em sua tarefa de predição. Graças a essa estrutura, a máquina pode aprender durante o seu próprio processamento dos dados.
Vamos entender melhor com isso seria com um caso do nosso sistema "Hobbit ou Orc". Como vimos, uma imagem é um conjunto de números, uma matriz, e cada número desse indica a intensidade do pixel em determinado padrão de cores. Para simplificar, vamos fingir que nossa imagem é preto e branco.
Então, cada elemento da matriz é um número entre 0 e 1, sendo 0 = preto e 1 = branco. Se tivermos uma imagem de 100×200 pixels, podemos ter a primeira camada da nossa rede como cada pixel desse, então a nossa primeira camada teria 20000 neurônios, sendo cada um nada mais do que um número entre 0 e 1.
Montando uma rede com 2 hidden layers (camadas escondidas), contendo 32 neurônios cada uma (escolhi esses números aleatoriamente!), ela ficaria como na imagem a seguir.
Exemplo de rede neural para classificar imagens de hobbits e orcs
O que precisamos entender é que, durante o treinamento, as imagens de entrada irão ativar algumas dessas "linhas" que ligam os próximos neurônios, de acordo com o valor presente em cada elemento e então serão dados "pesos" para cada uma dessas linhas de ligação. Então, quando a rede estiver treinada, uma imagem de Orc irá ativar determinados neurônios da rede e uma imagem de Hobbit irá ativar neurônios diferentes, o que fará com que cada uma seja classificada corretamente ao chegar no fim da rede.
Apesar de termos usado Deep Learning e Machine Learning para resolver o mesmo problema no exemplo acima, geralmente eles não são usados de forma "intercambiável". Então, para te ajudar com a escolha sobre qual dos dois usar em determinado caso, vamos ver no que cada um é melhor.
Deep Learning vai ser uma boa escolha se você tiver uma quantidade gigantesca de dados (até porque DL não vai performar bem com uma quantidade pequena). Além disso, é interessante de ser usado em operações mais complexas, já que devido à sua estrutura de camadas e muitas interações entre os neurônios, o DL exige um poder computacional muito maior.
Já Machine Learning vai ser uma boa quando você tem uma quantidade menor de dados e o custo operacional de transformá-los em dados estruturados não é grande (ou até mesmo se já são dados estruturados por padrão). Geralmente, as soluções de ML podem ajudar bastante na parte de automação nos times de operação das empresas.
No gráfico abaixo, fica claro que a aplicação de redes neurais artificiais é interessante para larga escala, para casos em que escalabilidade é importante e casos em que se tem uma montanha de dados. Já a Machine Learning tradicional, acaba sendo a melhor opção com uma quantidade menor de dados.
Comparação de performance entre as abordagens. Fonte: Towards Data Science
Machine Learning é uma área dentro de Inteligência Artificial e é poderosíssima, estando em um dos seus momentos de auge. ML é um conjunto de algoritmos que analisam dados, aprendem com eles e tomam decisões informadas (fazem predições) baseando-se nos insights obtidos por meio dessa análise.
Deep Learning é uma subárea dentro de ML e é um dos maiores avanços dentro da área nos últimos 10 anos. A diferença principal de DL é a abordagem, já que ela é construída com redes neurais artificiais.
Se você gostou dessa área, vale a pena se dedicar e aprender Python, a linguagem mais utilizada no ramo que vai ter permitir trabalhar em vários domínios/cargos diferentes dentro do campo de Inteligência Artificial! As melhores e mais utilizadas bibliotecas para IA são implementadas em Python, você pode conferir TensorFlow, PyTorch, OpenCV, Theano e scikit-learn.
Boa jornada em IA para você!
Google Colab: o que é, como usar e quais são as vantagens?
Eu amo explorar, descobrir e construir coisas novas. Sou uma generalista com real interesse em tecnologia, em especial em ML, mas não acho que ela faça sentido por si só: tecnologia é sobre pessoas. Aqui na Kenzie, atuo como facilitadora no último módulo do curso, no qual trabalhamos com Django, Docker, implementação de regras de negócio, otimização de banco de dados, CI/CD e AWS.