Post

Minha experiência aprendendo aprendizado de máquina e matemática

Ao ler A Arte de Fazer Ciência e Engenharia, de Richard Hamming, no ano passado, comecei a acompanhar suas ideias por meio de palestras e debates. Ele costumava perguntar aos cientistas: “Quais são os problemas mais importantes na sua área?” para poder perguntar: “Por que vocês não estão trabalhando neles?” — e também porque ouvir essa pergunta é útil para concentrar seus esforços em problemas com potencial de impacto significativo.

Com isso em mente, pensei profundamente sobre os problemas que eu poderia resolver na minha área e como eu poderia aproveitar meu conhecimento e tecnologia para fazer uma diferença real.

Todas as ideias possíveis tinham como alvo o aprendizado de máquina, não porque era, e ainda é, uma grande moda, mas por seu potencial de impacto real em outras áreas. Há problemas interessantes na medicina, saúde, biologia e ciências biológicas nos quais eu poderia alavancar a IA para ter um impacto significativo.

Em 2024, mudei de rumo e comecei minha jornada de aprendizado em ML. Minha ideia era consolidar o conhecimento fundamental, da teoria à prática, e aprender a área de forma adequada. Aprender a usar um framework como PyTorch ou TensorFlow não era suficiente para mim. Eu queria entender como funcionava nos bastidores. Da matemática à codificação.

No ano passado, minha experiência de aprendizado foi assim:

  • Matemática para ML: álgebra linear, cálculo, probabilidade e estatística
  • Teoria de ML: diferentes algoritmos de ML, desempenho e otimização
  • Prática de ML: construindo pipelines de ML para diferentes problemas
  • Teoria do aprendizado profundo: conceitos matemáticos e de aprendizagem de máquina
  • Prática de Deep Learning: construindo redes neurais do zero

Tudo isso acontece simultaneamente e está funcionando bem para mim. Como são conhecimentos fundamentais, sinto que estou construindo ideias sobre ideias, e elas estão se acumulando. Claro, ainda tenho muitas lacunas de conhecimento e muito a aprender, mas é ótimo progredir em uma área tão difícil. É intelectualmente gratificante.

Matemática

Atualmente, estou lendo os livros Matemática para Aprendizado de Máquina e Por que as Máquinas Aprendem. Eles têm ótimo conteúdo e são um pouco diferentes. Matemática para Aprendizado de Máquina parece um livro didático, rígido e se concentra mais em matemática. Por que as Máquinas Aprendem também é totalmente sobre matemática, mas com grande foco em Aprendizado de Máquina e conceitos básicos de aprendizado profundo.

Mas meu primeiro passo foi o curso de matemática para ML com Python, que abordava tópicos básicos de álgebra, álgebra linear, estatística e cálculo. Gostei porque era muito interativo e o uso do Python o tornou muito envolvente, principalmente porque sou engenheiro de software, então me sinto confortável com ele.

Em dezembro, decidi fazer um investimento maior (em tempo e dinheiro) e me inscrevi na Math Academy. Estou me dedicando bastante à matemática agora. Começando com conceitos básicos e evoluindo para conceitos avançados.

As primeiras 1–2 horas do meu dia sempre começam com matemática na Math Academy, atualmente trabalhando nos Fundamentos Matemáticos II. Meu objetivo é terminar os Fundamentos Matemáticos I, II e III em breve e começar o curso de Matemática para Aprendizado de Máquina, além de estar pronto para fazer o curso de Aprendizado de Máquina que eles estão preparando.

Estudar na Math Academy tem sido muito divertido e estou progredindo muito no meu conhecimento de matemática, preenchendo a lacuna entre matemática básica e conceitos avançados de ML. O sistema simplesmente funciona.

Cada tópico que você aprende contém três conceitos:

  • Teoria
  • Exemplos concretos
  • Exercícios

Cada tópico é uma pequena parte do curso e você pode concluí-lo em cerca de 4 a 12 minutos cada. São tópicos curtos e rápidos de fazer. Basicamente, você se mantém motivado e progride rapidamente.

Você não apenas aprende os conceitos, mas a plataforma usa um sistema de repetição espaçada, então de tempos em tempos ela irá sugerir tópicos que você estudou há algum tempo e você poderá testar o quanto consegue lembrar dos conceitos e resolver os problemas.

Eles também têm testes que ajudam muito e forçam você a relembrar ativamente, mesmo sob pressão de tempo. Se você não for bem em alguns dos problemas, o programa sugerirá que você refaça os tópicos em que falhou, e você também pode refazer o teste para ter certeza de que realmente aprendeu.

Eles também têm links para tópicos pré-requisitos para um determinado tópico, para que você possa revisá-los e fortalecer esse conhecimento antes de abordar o tópico específico.

Com cada vez mais prática, você começa a associar conceitos e regras matemáticas a padrões e a desenvolver intuição por trás de cada ideia. Eu também utilizo cursos de mestrado e doutorado para me ajudar a desenvolver essa intuição mais rapidamente.

A Math Academy está me ajudando a preencher minhas lacunas de conhecimento, ao mesmo tempo em que constrói a base para aprender a matemática por trás de algoritmos de aprendizado de máquina e redes neurais. Mas ainda não é suficiente; sinto que preciso acelerar o processo para atingir esse nível de conhecimento. Ler os livros em paralelo está me ajudando a testar meus conhecimentos de matemática e verificar as lacunas que preciso preencher.

O que o futuro reserva em termos de matemática é: investir mais tempo na Math Academy e testar meus conhecimentos com livros como Math for ML e Why Machines Learn e artigos. Também pensei em fazer a especialização em Math for ML no Coursera, mas não tenho certeza se estou exagerando.

Aprendizado de máquina

Eu não queria apenas usar uma estrutura de ML. Eu queria entender profundamente os algoritmos de ML, como eles funcionam, a teoria por trás deles e todas as coisas interessantes. Comecei com Introdução à Aprendizagem Estatística com Python, tanto o livro quanto o curso. O livro é simplesmente ótimo, com muitos detalhes sobre cada algoritmo. Construí uma boa base lendo isso.

Aprendi o Scikit-learn em um curso de ML e usei essa ferramenta para praticar alguns desafios interessantes no Kaggle. O primeiro foi um problema de regressão para prever insuficiência cardíaca a partir de características clínicas. Foi a primeira vez que usei modelos de ML para fazer previsões. Aprendi Naive Bayes, SVM, Regressão Logística, KNN e modelos baseados em árvores, como Árvore de Decisão, Floresta Aleatória e XGBoost.

O segundo foi um problema de classificação. A ideia do desafio era prever se os tumores de câncer de mama eram malignos ou benignos.

Depois de aprender sobre tudo isso, decidi dar o salto e começar a aprender sobre aprendizado profundo e redes neurais, um tópico que abordarei na próxima seção.

Atualmente, estou lendo Designing Machine Learning Systems, de Chip Huyen. Não é minha prioridade, mas tento ler um pouco sempre que tenho tempo. Decidi comprar este livro porque quero preencher a lacuna entre a limpeza do conjunto de dados, a implementação e o treinamento do modelo de ML, a verificação e o ajuste do desempenho e o trabalho na implantação.

Não considero uma lacuna de conhecimento, mas sei que preciso continuar aprimorando minhas habilidades em muitas dessas áreas. Aqui está a lista de coisas para o futuro:

  • A matemática para ML
  • Melhorar minhas habilidades em Pandas e NumPy
  • Trabalhar em mais projetos de ML
  • Saber mais sobre otimizações de desempenho
  • Criar intuição sobre quais algoritmos escolher e por quê

Aprendizado profundo

Redes neurais profundas é o tema em que estou me concentrando atualmente. Comecei com o livro Compreendendo o Aprendizado Profundo, que é simplesmente incrível. Comprei o livro para ajudar a financiar este projeto. O livro é muito bem escrito e, se você tem interesse em aprendizado profundo, deveria dar uma chance a ele.

Dei uma pausa no livro para colocar os conceitos em prática. Aprendi sobre a matemática por trás das redes neurais e implementei tudo do zero, usando apenas Python e matemática.

Atualmente, estou trabalhando na especialização em Deep Learning, especificamente na otimização de desempenho.

Depois de terminar isso, pretendo continuar trabalhando em matemática para aprendizado profundo (livros e Math Academy) e trabalhar em redes neurais profundas avançadas (CNN, RNN e outras arquiteturas).

Para concluir tudo isso, pretendo estudar uma área específica para poder trabalhar em problemas mais interessantes. Meu foco são os desafios das ciências biológicas e da saúde, mas preciso ter um conhecimento básico melhor sobre essas áreas e entender os problemas para poder experimentar o que tenho aprendido.

This post is licensed under CC BY 4.0 by the author.