Um Resumo sobre Aprendizado de Máquina
Sobre treinamento, predição, tipos de problemas e algoritmos utilizados
Me siga no X | Me siga no LinkedIn | Apoie a Newsletter | Solicite uma consultoria
As técnicas de aprendizagem de máquina estão por trás de chatbots, de ferramentas de traduções de texto, de sugestões de séries da Netflix, além dos algoritmos que selecionam qual conteúdo das redes sociais será apresentado a você, e muito mais.
Quando as empresas implantam programas inteligentes hoje em dia, é muito provável que estejam usando alguma técnica de aprendizado de máquina.
Embora o aprendizado de máquina seja um subcampo da inteligência artificial, muitas vezes esses termos são usados de forma intercambiável e às vezes de maneira ambígua.
De maneira geral, o aprendizagem de máquina permite que os sistemas de IA aprendam com dados e experiências passadas, ajustando seus modelos e tomando melhores decisões à medida que mais informações estão disponíveis.
Nesse texto vamos revisitar alguns conceitos básicos sobre aprendizado de máquina, e entender em quais contextos podem ser mais adequados para emprega-los.
📚 Você é dev e quer aprender um pouco mais sobre a criação de aplicações baseadas em LLM?
Eu criei um curso que aborda aspectos teóricos e práticos do desenvolvimento de aplicações baseadas em LLMs. Alguns dos tópicos cobertos:
🟠 O que são e como criar embeddings
🟡 Como selecionar partes relevantes nos seus documentos
🔵 Como integrar essas partes documentos com uma LLM
Como esses algoritmos funcionam?
O aprendizado de máquina é uma subárea da inteligência artificial (IA) que se concentra no desenvolvimento de algoritmos e modelos computacionais que permitem que um programa de computador aprenda e melhore sua performance em uma tarefa específica.
Estes algoritmos operam por meio de um processo complexo e iterativo que difere significativamente da programação tradicional. Em vez de serem explicitamente programados, esses algoritmos aprendem a fazer previsões a partir dos dados disponíveis.
De maneira geral, esses algoritmos funcionam em duas etapas: treinamento e predição.
Etapa de treinamento
Durante o treinamento, um modelo de ML é alimentado com um conjunto extenso de dados de entrada. Este conjunto contém exemplos que incluem tanto as entradas (os dados brutos) quanto as saídas desejadas (os resultados que queremos prever ou classificar). O modelo, neste estágio, busca automaticamente identificar regras, padrões e correlações nos dados. Essas regras e padrões são representados internamente pelo modelo por meio de parâmetros ajustáveis.
À medida que o modelo passa por algumas iterações de treinamento, ele ajusta esses parâmetros para minimizar o erro entre as previsões que faz e os resultados reais do conjunto de treinamento. Esse ajuste é realizado através de algoritmos de otimização que refinam gradualmente o modelo. O objetivo é que o modelo seja capaz de generalizar a partir dos exemplos de treinamento, de modo que possa fazer previsões precisas em dados que nunca viu antes.
Etapa de predição
Uma vez que o modelo tenha sido treinado com sucesso, ele pode ser usado para fazer previsões ou classificações em novos dados. Durante a predição, o modelo recebe novos dados de entrada (não utilizados na etapa de treinamento) e aplica as regras e padrões que aprendeu durante o treinamento, na tentativa de gerar uma previsão ou classificação acurada.
O desempenho de um modelo de ML em sua fase de predição, no entanto, está diretamente relacionado a qualidade dos dados e do processo de treinamento. Outro ponto é que, com o passar do tempo, os dados de treinamento podem se tornar desfasados e não mais representativos. Logo, se faz necessário monitorar e ajustar periodicamente os modelos, uma vez que novos padrões podem emergir ao longo do tempo.
Algoritmos de ML ou algoritmos tradicionais?
Um dos problemas clássicos do aprendizado de máquina é a categorização se um email é um spam ou não. Hoje em dia estes filtros de spam estão implementados em tantos clientes de email que talvez nem percebemos mais a inteligência por trás deles.
Mas, como poderíamos implementar um?
Antes de pensar em como poderíamos resolver esse problema com aprendizado de máquina, vamos pensar em como poderíamos resolve-lo usando técnicas de programação tradicionais. Poderíamos ter um algoritmo como:
Primeiro, precisamos definir as características de um spam. Podemos imaginar que alguns desses emails tem palavras do tipo “de graça”, “cartão de crédito”, “promoção imperdível”, etc, no campo de assunto do email. Podemos também imaginar alguns outros padrões, como nome do remetente usando um domínio desconhecido, imagens no corpo do email, etc.
Segundo, implementaríamos uma mecanismo de busca textual, procurando pelos padrões definidos anteriormente. Caso esses padrões sejam detectados, o email seria categorizado como spam.
Por fim, precisaríamos fazer alguns testes, repetindo os passos 1 e 2 várias vezes, de forma a garantir que o algoritmo de fato estivesse classificando spams corretamente.
Em princípio, uma abordagem com a descrita acima pode parecer efetiva. No entanto, imagine que os spammers perceberam que todos os emails com as palavras “Promoção de” estão sendo frequentemente bloqueados? Através de pequenas adições e modificações em algumas palavras, os spammers poderiam escapar do nosso algoritmo com regras fixas.
Dessa forma, a medida que os spams evoluem ao longo do tempo (adicionando novas palavras ou características), a estratégia de busca deveria também evoluir, para levar em consideração essas mudanças. Isso tornaria o processo de manutenção desse algoritmo algo muito custoso e sem previsão de fim.
Por outro lado, utilizar técnicas de aprendizado de máquina poderiam diminuir o esforço de manutenção da lista de regras da estratégia de busca. Isso aconteceria porque um algoritmo de aprendizado de máquina poderia aprender automaticamente quais são as palavras e frases que são bons indicadores de um spam, ou semi-automaticamente, com apoio da intervenção do usuário, marcando quais emails são spam.
De forma geral, algoritmos de aprendizado de máquina são mais indicados do que algoritmos tradicionais em problemas em que as regras de negócio não são fixas ou estão em constante evolução.
Outro cenário é quando não se tem (ou não se conhece) um algoritmo para resolver um problema devido a sua complexidade. Pense, por exemplo, em como criar um algoritmo capaz de identificar qual número está presente em uma imagem. Considere que o número foi escrito a mão, logo, haverá vária sutis mudanças na imagem, por conta dos diferentes padrões de escrita. Como implementar um algoritmo como esse?
Problema adequados para aprendizado de máquina
Além dos problemas mencionados acima, de forma geral, há algumas classes de problemas que tendem a ser mais adequados ao uso de algoritmos de aprendizado de máquina, em relação aos algoritmos tradicionais. Por exemplo:
Regressão: Quando você precisa prever valores contínuos com base em variáveis de entrada. Por exemplo, previsão de oscilação de preços de ações na bolsa de valores ou de imóveis, com base em recursos como tamanho e localização.
Reconhecimento de Padrões e Classificação: Problemas nos quais você deseja categorizar ou classificar dados em diferentes classes com base em características. Além da deteção de spam, outros exemplos incluem reconhecimento de imagens para diagnóstico médico ou reconhecimento de voz.
Recomendação: A criação de sistemas de recomendação, como os usados por serviços como Netflix e Spotify, para sugerir produtos ou conteúdo personalizado aos usuários com base em seus históricos e preferências.
Processamento de Linguagem Natural (NLP): Mais recentemente, a área de NLP ganhou notoriedade por conta do seu desempenho em aplicações como tradução automática, resumo automático de texto ou criação de chatbots.
Tipos de aprendizado de máquina
Os modelos de aprendizado de máquina se enquadram em três categorias principais.
Aprendizado de Máquina Supervisionado
O aprendizado supervisionado é definido pelo uso de conjuntos de dados rotulados para treinar algoritmos a classificar dados ou prever resultados com precisão. O aprendizado supervisionado se preocupa com dados rotulados para fazer previsões.
Existem dois ramos de algoritmos de aprendizado supervisionado: algoritmos de regressão e algoritmos de classificação.
Métodos baseados em regressão tentam prever saídas com base em variáveis de entrada. Algoritmos de regressão estimam o resultado de problemas que têm um número infinito de soluções (conjunto contínuo de possíveis resultados). No blog já abordamos um exemplo de algoritmo de regressão.
Métodos baseados em classificação identificam a qual categoria um conjunto de dados pertence. Algoritmos de classificação são baseados em probabilidade, o que significa que o resultado é a categoria para a qual o algoritmo encontra a maior probabilidade de que o conjunto de dados pertença a ela.
Independente do tipo de aprendizado, um problema comum em aprendizado de máquina é que à medida que os dados de entrada são alimentados no modelo, ele ajusta seus pesos até que esteja ajustado adequadamente. Isso ocorre como parte do processo de validação cruzada para garantir que o modelo evite o overfitting ou underfitting.
O overfitting ocorre quando um modelo de aprendizado de máquina se ajusta excessivamente aos dados de treinamento, capturando ruídos e detalhes irrelevantes, em vez de aprender padrões gerais. Isso resulta em um desempenho ruim em dados desconhecidos, uma vez que o modelo não generaliza bem.
O underfitting, por outro lado, ocorre quando um modelo de aprendizado de máquina é muito simples para capturar a complexidade dos dados de treinamento. Isso resulta em um desempenho ruim, pois o modelo não consegue aprender nem mesmo os padrões básicos presentes nos dados de treinamento e, portanto, não generaliza bem para novos dados.
O aprendizado supervisionado ajuda as organizações a resolver uma variedade de problemas do mundo real em grande escala, desde a classificação de spams em uma pasta separada da sua caixa de entrada, como a identificação de doenças como parkinson usando smartphones. Alguns métodos usados no aprendizado supervisionado incluem: redes neurais, naive bayes, regressão linear, regressão logística, random forest e support vector machine (SVM).
Aprendizado de Máquina Não Supervisionado
O aprendizado não supervisionado utiliza foca em analisar e agrupar conjuntos de dados não rotulados. Ou seja, esses algoritmos descobrem padrões ocultos ou agrupamentos de dados sem a necessidade de intervenção humana.
A capacidade desse método de descobrir características (semelhantes ou diferentes) nas informações o torna uma escolha interessante para análise exploratória de dados ou segmentação de clientes. Também é usado para reduzir o número de características em um modelo por meio do processo de redução de dimensionalidade.
O PCA é um algoritmo não-supervisionado comumente empregado. Na engenharia de software, o LDA, por sua vez, se tornou uma escolha interessante. Como algoritmo não supervisionado, o LDA não requer rótulos ou supervisão prévia nos dados. Em vez disso, ele analisa os padrões subjacentes nos documentos e tenta identificar tópicos latentes com base nas coocorrências de palavras em um conjunto de documentos.
Outros algoritmos usados no aprendizado não supervisionado incluem redes neurais e k-means.
Aprendizado de Máquina Semi-Supervisionado
O aprendizado semi-supervisionado oferece um meio-termo entre o aprendizado supervisionado e o não supervisionado. Durante o treinamento, ele usa um conjunto de dados rotulado menor para orientar a classificação e extração de características a partir de um conjunto de dados não rotulado maior.
O aprendizado semi-supervisionado pode resolver o problema de não ter dados rotulados suficientes para um algoritmo de aprendizado supervisionado. Também ajuda se for muito caro rotular dados suficientes.
Conclusão
A aprendizagem de máquina é um componente essencial da tecnologia contemporânea, impulsionando uma variedade de aplicações, como chatbots e recomendações de conteúdo.
Este texto explorou algumas ideias gerais, como as fases de treinamento e predição, ilustrando como os algoritmos de ML aprendem com dados passados para aprimorar seu desempenho. Demonstramos que, em comparação com abordagens tradicionais, os algoritmos de aprendizado de máquina são mais adequados para problemas em constante evolução, como a detecção de spam.
Por fim, apresentamos as principais áreas de aprendizado de máquina: supervisionado (previsão e classificação), não supervisionado (revelação de padrões em dados não rotulados) e semi-supervisionado (uso de dados rotulados e não rotulados).