Desmistificando Machine Learning

Linda Ines
bawilabs
Published in
6 min readJul 24, 2017

Ultimamente tem-se falado muito nos termos deep learning, machine learning e artificial intelligence. Muitas pessoas os tratam como se fossem a mesma coisa. Embora eles estejam atrelados, eles não são sinônimos. Então, vamos lá, definir sucintamente cada um, começando pela mãe de todos:

  • Artificial Intelligence: Pode até parecer algo recente, pois só agora ouvimos falar de tecnologias que fazem uso dela, mas a galera já estava falando de AI lá no final da década de 1950. Tirando a parte teórica da coisa, AI é basicamente a capacidade da máquina de imitar o comportamento humano. Devido a falta de poder de processamento das máquinas naquela época e enorme distância que o computador ainda estava do ser humano, a AI ficou muito atrelada a ficção científica e não foram desenvolvidadas tecnologias que ajudassem na prática. Até que lá pela década de 80, surgiu o Machine Learning e mudou a situação.
  • Machine Learning: é uma forma concreta de aplicar a AI, permitindo que a mesma saia apenas do mundo da imaginação e se torne algo que realmente ajude a resolver problemas. Em suma, são algoritmos capazes de aprender com uma massa de dados através do reconhecimento de padrões sem que sejam projetados para resolver casos específicos. Traduzindo: um algoritmo capaz de reconhecer uma mensagem como spam ou não, com pequenas alterações também é capaz de classificar um paciente como doente ou saudável. Nossa função é fornecer os dados, a forma como ele vai encontrar uma lógica para combinar esses dados matematicamente de maneira que consiga rotular novas amostras corretamente é todo problema dele.

Dentro do ML, temos uma divisão importante: algoritmos de aprendizado supervisionado e de aprendizado não supervisionado. A diferença básica entre eles é que no primeiro caso, as amostras fornecidas para o algoritmo são rotuladas, ou seja, eu digo que uma pessoa que com febre, dor de cabeça e tontura está com dengue, já uma pessoa com febre, dor de cabeça e sem tontura está com gripe e assim por diante. No caso do aprendizado não supervisionado, também chamado de não assistido, eu não digo a doença que cada paciente tem, apenas forneço os dados.

Aqui nós iremos abordar o aprendizado supervisionado. Existem outras duas categorias dentro desse tipo de aprendizado: classificação, que seria o caso exemplificado acima, classificar as entradas (sintomas do paciente) em saídas (doença) e existe também a regressão, que basicamente que é quando não precisamos de rotular e sim chegar em algum número. Utilizando o mesmo exemplo, seria como se as entradas fossem as mesmas (sintomas do paciente), mas na saída precisássemos chegar em algum número, como quantos dias essa pessoa tem de vida se não for medicada.

Sabendo disso, já podemos dar mais um passo rumo a implementação de um algoritmo de ML. Existem clássicos, como Naive Bayes, Máquina de Vetores, KNN, Redes Neurais, e por aí vai. O que não foge a regra é que todos eles fazem uso de alguma matemática pra conseguir encontrar padrões. E sim, padrão provavelmente é a palavra mais importante por aqui.

Hoje vamos desenvolver uma rede neural bem simples chamada Perceptron. Nesse caso, utilizamos conceitos do sistema nervoso central como base para a construção de um algoritmo capaz de treinar e aprender gradativamente com seus erros (parece meio filosófico, mas na prática é isso mesmo).

A imagem mostra um neurônio que recebe um sinal, vê o que pode ser feito com ele e se for o caso, o repassa pra outro neurônio.

Pra quem não é muito fã de biologia pode ficar tranquilo porque o importante pra nós é essa imagem que mostra o perceptron computacionalmente representado.

Temos basicamente as entradas (x1,x2… xn), os pesos (w1, w2… wn), a função de agregação (weighted sum), a função de ativação (step function) que geram uma determinada saída.

  • Entradas: já falamos delas acima, no caso da classificação do paciente(com febre, dor de cabeça, tontura…).
  • Saídas: é como o Perceptron vai classificar a amostra (gripe, dengue, malária…).
  • Pesos: muita atencão aqui! Os pesos são a parte fundamental da coisa. Como o próprio nome já entrega, eles fazem com que cada atributo da entrada tenha um peso diferente.
  • Função de agregação: uma matemática bem simples é realizada por aqui, os atributos de entrada (são transformados em números) e são multiplicados pelos pesos.
  • Funcão de ativação: o resultado da função acima (um número) é jogado na função de ativação e dependendo do valor do mesmo, ela rotula o dado de acordo com as possíveis saídas.

Mas como o algoritmo aprende?
A chave do negócio são os pesos. Quando os pesos corretos são encontrados, então temos uma rede treinada e pronta pra classificar corretamente novas amostras. No início do processo eles são gerados aleatoriamente e depois vão sendo ajustados.

E como ele sabe que precisa ajustar os pesos?
Ele compara a saída da rede com a que já é conhecida da amostra, dependendo do quão distante elas estão, o algotimo muda os valores. No caso do Perceptron, eles são alterados levando em consideração a seguinte fórmula:

O principal objetivo é encontrar um modelo (uma linha, curva, ou algo que separe os dados). A medida que o ajuste de pesos é feito, essa separação vai ficando mais eficiente.

Como o Perceptron é um algoritmo bem simples, ele só consegue encontrar um modelo sem erros para dados linearmente separáveis. Um exemplo é a operação OR (lembra das portas lógicas?!), para classificações mais complexas (como o caso da descoberta da doença que cada paciente tem) algoritmos mais complexos precisam ser implementados.

Tabela da verdade para a operação OR

A seguir o código de um Perceptron comentado :

Pronto! Através da aplicação de Machine Learning conseguimos fazer um algoritmo que consegue rotular as saídas para a operação OR. Repare que em momento algum fizemos nada de específico para essa classificação em si, podemos aproveitar esse modelo para resolver outro problema qualquer (desde que seus dados sejam linearmente separáveis).

O interessante é que não se trata de mágica, o computador usa matemática para encontrar padrões em questão de segundos em situações que nós provavelmente levaríamos anos ou até mais.

E o que é Deep Learning?

Trata-se de uma forma para implementar Machine Learning usando técnicas muito mais complexas com a ajuda de bibliotecas poderosas (como Tensor Flow). Vem se tornado cada vez mais forte devido ao grande volume de dados produzidos e a melhoria significativa no hardware (principalmente nas GPU’s que são bastante úteis nos cálculos realizados pelos modelos).

E o futuro dessas tecnologias?

Essa é uma questão delicada, pois ao mesmo passo que a cada dia temos mais aplicações de AI, ML e DL, como sistemas de recomendação, tradução, reconhecimento de voz, facial, carros autônomos etc, esbarramos em alguns problemas muito sérios relacionados principalmente a ética. Confira aqui um vacilo seríssimo do Google.

O certo é que com a quantidade de dados gerada, vão ficar muito pra trás as empresas que não conseguem encontrar formas de tirar proveito deles. Nós aqui na Bawi felizmente não seremos uma delas :)

--

--