Matemática e Programação para Aprendizado de Máquina

Uma lista para cobrir rapidamente os pré-requisitos para aprendizado de máquina.

Postado em 15/05/2017

Aprendizado de máquina e inteligência artificial podem parecer impossíveis de aprender, principalmente devido às exigências de conhecimento matemático e de programação. Assim, quem (acha que) tem dificuldade com matemática acaba desistindo antes mesmo de começar a aprender. Pensando nisso, montei uma lista com os pré-requisitos matemáticos e de programação para iniciar os estudos em aprendizado de máquina. Se você reservar de 4 à 6 horas do seu dia para estudar esses conteúdos, em menos de um mês, já terá todo o conhecimento necessário para começar a implementar sistemas inteligentes!


Matemática

ml

Yann LeCun, um dos gurus do aprendizado de máquina, tem um conselho muito simples para se dar bem nessa ciência: estude matemática, matemática e mais matemática. Agora, isso não é motivo para se assustar. Em aprendizado de máquina, você não precisará decorar fórmulas nem fazer contas à mão. Em vez disso, é preciso entender matemática em um nível conceitual, ou seja, é preciso saber como expressar e entender ideias complexas de maneira simplificada, em linguagem matemática. Em outras palavras, nós usamos matemática para expressar de forma clara, não ambígua e concisa uma ideia que é muito mais complexa do que nossa imaginação permite apreender. Matemática é, pois, uma ferramenta de abstração.

Quer um exemplo? Pois bem, imagine uma forma em duas dimensões. Uma reta (isso foi fácil)! Agora, imagine uma forma em 3 dimensões. Um cubo (fácil, também)! OK. Agora, imagine uma forma de 4 dimensões. Provavelmente você não vai conseguir. Infelizmente, nós só conseguimos perceber o mundo em, no máximo, 3 dimensões espaciais. E se eu te disser que um simples algoritmo de aprendizado de máquina pode envolver caminhar em um espaço com mais de 1000 dimensões? e que outros, mais complexos, trabalham com informações em infinitas dimensões? Como podemos lidar com essa multiplicidade de dimensões sem enlouquecer? Basta usar matemática! Mais precisamente, álgebra linear.

Como esse site é pensado para pessoas de humanas, vou supor que você também é de humanas. Mais ainda, acredito que você não tem facilidade com matemática (como eu também não tenho), e que, mais importante, não tem tempo de sobra. Por isso, copilei uma lista de fontes para aprender em duas semanas os pré-requisitos matemáticos para aprendizado de máquina.

Cálculo

Cálculo é a ferramenta que usamos em aprendizado de máquina para otimização: minimizar a incerteza das nossas previsões e maximizar a probabilidade dos estimadores. Cálculo é a chave para o treinamento de modelos de aprendizado de máquina. Existem duas operações fundamentais no cálculo: a derivada e a integral. Por motivos de limitação computacional, na prática, nós quase não usamos integrais. As derivadas, por outro lado, são aplicadas em todo canto de aprendizado de máquina. Assim, vamos focar apenas nelas aqui:

  1. Relembrando Funções: tempo estimado de 1 dia.
  2. Limite: tempo estimado de 1 dia.
  3. Derivadas: tempo estimado de 1 dia.
  4. Derivadas Parciais: tempo estimado de 1 dia.

Álgebra Linear

Álgebra Linear nos permite representar conjuntos de dados (matrizes e redes) de forma concisa e compreensível. Ela nos ajuda a abstrair espaços multidimensionais e realizar múltiplas operações de maneira simples e computacionalmente eficiente. Você precisa entender os conceitos básicos de vetores, matrizes, assim como as operações realizadas com esses elementos. Por fim, é bom entender sobre projeções e mudanças de bases, principalmente a decomposição de uma matriz em valores singulares. OBS: Os links abaixo, têm playlists com conteúdo em forma de vídeo, texto e exercício. Você só precisa ir além dos vídeos caso queira se aprofundar ou caso esteja com dificuldades.

  1. Vetores e Espaços: tempo estimado de 1 dia.
  2. Operações com Matrizes: tempo estimado de 2 dia.
  3. Projeções e Bases: tempo estimado de 2 dias.

Estatística Básica

Estatística é útil para raciocinar sob incerteza. Nós a usamos para realizar previsões e planejar o futuro. Além disso, estatística é uma ferramenta fundamental para resumir informação de forma eficiente, com indicadores e figuras. Você precisa entender muito bem o que é uma variável aleatória, as operações de média e variância e como medir a incerteza, com intervalos de confiança e testes de hipóteses.

  1. Estatística Descritiva: tempo estimado de 2 dias.
  2. Estatística Inferencial: tempo estimado de 3 dias.

Alternativamente, se você já estudou matemática superior e quer apenas relembrar o conteúdo, leia a Parte I do livro de Deep Learning, de Ian Goodfellow.

Programação

python

Você não precisa saber programação para entender aprendizado de máquina. No entanto, eu suponho que você queira, além de aprender, aplicá-la nos seus problemas do dia a dia. Nesse caso, programação é fundamental tanto para a implementação de sistemas inteligentes, quanto para manipulação de dados. Você não precisa ser nenhum gênio da programação para usar aprendizado de máquina. Eu mesmo sei apenas o essencial. Por isso, novamente considerando que você não tem muito tempo sobrando, copilei uma lista de conteúdo para aprender programação em menos de duas semanas. Vou considerar a linguagem de programação Python, que é a preferida pela comunidade de cientistas de dados e tambm por mim.

  1. Introdução à Ciência da Computação e à Programação: tempo estimado de 7 dias.
  2. Python Orientado a Objetos: tempo estimado de 2 dias.
  3. Python para Ciência de Dados: tempo estimado de 4 dias.
  4. Git e GitHub (Opcional): tempo estimado de 1 dia.

Recursos adicionais: Tutoriais para Python. Consultar quando julgar necessário.


Para saber se está pronto para seguir em frente, crie uma classe em Python que implementa regressão linear usando Numpy para as operações algébricas. Essa classe deverá ter um método .fit que aceita variáveis aleatórias dependente e independentes e estima os parâmetros do modelo. Além disso, essa classe deverá ter um método .predict que prevê a resposta da variável dependente a partir das variáveis independentes. A resposta para esse problema está no meu próximo tutorial.

É importante ressaltar que o conteúdo acima servirá apenas para iniciar seus estudos de aprendizado de máquina. Essa ciência está constantemente se renovando, de forma que o aprendizado constante é fundamental. Mais importante, você precisa saber fazer perguntas e pesquisar respostas na internet. Lembre-se sempre: são altas as chances de que alguém já tenha tido a mesma dúvida que você, ou pelo menos uma dúvida análoga. Alguns bons fóruns para isso são:

Com isso, você está pronto para começar seus estudos em aprendizado de máquina! Eu sugiro começar pela introdução que fiz na seção de Aprendizado de Máquina Essencial. Depois, siga meus tutoriais na ordem. Bons estudos!