Machine Learning

Machine Learning para todos, de forma simples e com exemplos!

Este post foi criado a partir de uma tradução livre do artigo de Vasily Zubarev, disponibilizado aqui. É o conteúdo mais didático que li em 2019 sobre uma introdução profunda acerca de machine learning.

Meu objetivo aqui é disponibilizar mais conteúdo técnico e teórico, de qualidade, para a língua portuguesa.

Se você alguma vez tentou ler artigos sobre aprendizado de máquina na Internet, provavelmente se deparou com dois tipos: trilogias acadêmicas cheias de teoremas (não consigo nem chegar a metade deles) ou contos de fadas sobre inteligência artificial, ciência de dados e empregos do futuro.

Eu decidi escrever um post que eu desejava que existisse há muito tempo. Uma introdução simples para quem sempre quis entender o aprendizado de máquina.

Apenas com problemas do mundo real, soluções práticas, linguagem simples e nenhum teorema de alto nível. Único e para todos, independente se você é um programador ou está em um cargo de gestão.

Preparado? Então vamos lá!

 

Por que queremos que as máquinas aprendam?

Para exemplificar esse conceito vamos utilizar nosso amigo Billy, como exemplo. Ele quer comprar um carro e, para isso, tenta calcular quanto precisa economizar mensalmente. Billy analisou dezenas de anúncios na internet e descobriu que os carros novos de um determinado modelo custam em torno de R$ 50 mil, os seminovos R$ 46 mil, os com dois anos de uso R$ 42 mil e assim por diante.

Então, Billy começa a identificar um padrão: o preço de um carro depende da sua idade e cai R$ 4 mil a cada ano. Entretanto, nunca fica abaixo de R$ 20 mil.

Em termos de aprendizado de máquina, Billy inventou a regressão – ele previu um valor (preço) baseado em dados históricos conhecidos. As pessoas fazem isso o tempo todo, quando tentam estimar um custo razoável para um iPhone usado no MercadoLivre ou quando tentam descobrir quantas costelas comprar para o churrasco do final de semana.

Sim, seria bom ter uma fórmula simples para todos os problemas do mundo real. Especialmente, para o planejamento de um churrasco. Infelizmente, tal fórmula não existe.

Vamos voltar aos carros. Um problema é que eles possuem anos de fabricação diferentes, dezenas de opções, condições técnicas específicas, picos sazonais de demanda e só Deus sabe quantos mais fatores ocultos.

Uma pessoa normal como Billy não pode manter todos os dados em sua cabeça ao calcular o preço. E eu também não.

As pessoas, em geral, são preguiçosas – precisam de robôs para fazer as contas por elas. Então, vamos utilizar ajuda computacional aqui.

Vamos fornecer alguns dados à máquina e pedir que ela encontre todos os padrões ocultos relacionados ao preço. E isso realmente funciona!

O mais interessante é que a máquina lida com essa tarefa muito melhor do que uma pessoa de verdade ao analisar cuidadosamente todas as dependências em sua mente.

Esse foi o nascimento do aprendizado de máquina…

 

Componentes do aprendizado de máquina

Sem todo esse AI-bullshit, o único objetivo do aprendizado de máquina é prever os resultados com base nos dados recebidos. É isso aí. Todas as tarefas de machine learning podem ser representadas desta forma, ou então não é um problema do ML.

Quanto maior a variedade de amostras, mais fácil será encontrar padrões relevantes para prever um resultado. Portanto, precisamos de três componentes para ensinar a máquina:

 

1. Dados

Deseja detectar spam? Obtenha amostras de mensagens de spam. Quer prever estoques? Encontre o histórico de preços. Quer descobrir as preferências de um usuário? Analise suas atividades no Facebook.

Menos você Mark Zuckerberg! Pare de coletar nossos dados! 🧐

Quanto mais diversificados forem os dados, melhor será o resultado. Dezenas de milhares de linhas é o mínimo para os desesperados.

Existem duas maneiras principais de obter os dados: a manual e a automática. Os dados coletados manualmente contêm muito menos erros, mas levam mais tempo para coletar – o que os torna mais caros em geral.

A abordagem automática é mais barata – você reune tudo o que pode encontrar e espera pelo melhor.

Alguns espertalhões, como o Google, usam seus próprios clientes para rotular os dados gratuitamente. Lembra do ReCaptcha que obriga você a “selecionar todas as imagens de sinaleiras em uma rua”? E é exatamente isso o que você está fazendo: trabalho gratuito!

É extremamente difícil coletar uma boa coleção de dados, ao qual geralmente denominamos conjunto de dados, ou datasets. Eles são tão importantes que as empresas podem até revelar seus algoritmos, mas raramente seus conjuntos de dados.

 

2. Características/Features

Também conhecidos como parâmetros ou variáveis. Essas podem ser a quilometragem do carro, o sexo do usuário, o preço das ações e a frequência das palavras no texto. Em outras palavras, esses são os fatores aos quais a máquina vai analisar.

Quando os dados estão armazenados em tabelas é muito simples – as características ou features são os nomes das colunas. Mas e quando você tem 100gb de fotos de gatos? Não podemos considerar cada pixel como uma característica.

É por isso que selecionar os recursos certos geralmente leva mais tempo do que todas as outras tarefas de ML. Essa etapa também é a principal fonte de erros.

Além disso, seres humanos são sempre subjetivos. Eles escolhem apenas as características que mais gostam ou consideram “mais importantes”. Por favor, ao trabalhar com machine learning, evite isso a todo custo!

 

3. Algoritmos

Essa é a parte mais óbvia. Mas atenção, pois qualquer problema pode ser resolvido de forma diferente. O método escolhido afeta a precisão, o desempenho e o tamanho do modelo final.

Também há uma nuancia importante: se os dados são ruins, até mesmo o melhor algoritmo não ajudará. Às vezes nos referimos a isso como: “entra lixo, sai lixo”. Portanto, não preste muita atenção à porcentagem de precisão, tente adquirir mais dados primeiro.

 
Areas Relacionadas com Machine Learning

 

Aprendizagem vs Inteligência

Uma vez li um artigo, em algum site de mídia “hipster”, intitulado “As redes neurais substituirão o aprendizado de máquina?”. O pessoal da mídia sempre chama qualquer regressão linear de inteligência artificial, quase uma SkyNet.

Aqui está um esquema simples para mostrar quem é quem:

 
Inteligência Artificial

 
Inteligência artificial é o nome de todo um campo de conhecimento, semelhante à biologia ou à química.

Aprendizado de Máquina é uma parte da inteligência artificial. Uma parte importante, mas não a única.

Redes neurais são um dos tipos de aprendizado de máquina. Um tipo muito popular, mas existem outras ótimas abordagens nessa classe.

Deep Learning é um método moderno de construção, treinamento e uso de redes neurais. Basicamente, é uma nova arquitetura. Hoje em dia, na prática, ninguém separa a deep learning das “redes mais comuns”. Nós até usamos as mesmas bibliotecas para elas. Para não se parecer alguém que nao sabe o que está falando, é melhor nomear o tipo de rede e evitar buzzwords (chavões).

A regra geral é comparar as coisas no mesmo nível. É por isso que a frase “as redes neurais substituem o aprendizado de máquina” soa como “as rodas substituirão os carros”. Querida mídia, isso está comprometendo muito a sua reputação! Veja um resumo abaixo:

Maquinas podem:

  • Realizar previsões;
  • Memorizar;
  • Reproduzir padrões;
  • Escolher o melhor item.

Máquinas não podem

  • Criar algo inteiramente novo;
  • Ficar muito inteligente rapidamente;
  • Ir além das suas tarefas;
  • Matar todos os humanos.

 

O mapa da aprendizagem de máquina

Se você tem preguiça de ler muito, dê uma olhada na figura abaixo para entender melhor.

 
Mapa de Machine Learning no Mundo

 
Sempre é importante lembrar – nunca há uma única maneira de resolver um problema no mundo da aprendizagem de máquinas. Há sempre vários algoritmos adequados ao problema e você precisa escolher qual deles se encaixa melhor.

Tudo pode ser resolvido com uma rede neural, é claro, mas quem pagará por toda essa força computacional?

Atualmente, existem quatro direções principais no aprendizado de máquina. E vamos explicar todos eles neste artigo.

 
Tipos de Machine Learning

 

Parte 1. Aprendizado de Máquina Clássico

Os primeiros métodos vieram da estatística pura nos anos 50. Eles resolviam tarefas matemáticas formais – procurando padrões em números, avaliando a proximidade dos pontos de dados e calculando as direções dos vetores.

Hoje em dia, metade da Internet funciona baseada nestes algoritmos. Quando você vê uma lista de artigos para “ler em seguida” ou o seu banco bloqueia seu cartão em um posto de gasolina aleatório no meio do nada, provavelmente é o trabalho de um algoritmo de machine learning.

Empresas de tecnologia são grandes fãs de redes neurais, obviamente. Para elas, uma precisão de 2% é uma receita adicional de 2 bilhões. Mas quando você é pequeno, não faz sentido tanto esforço.

Ouvi histórias de equipes gastando um ano em um novo algoritmo de recomendação para o site de comércio eletrônico, antes de descobrir que 99% do tráfego vinha de mecanismos de pesquisa. Seus algoritmos eram inúteis. A maioria dos usuários nem abriu a página principal.

Apesar da popularidade, as abordagens clássicas são tão naturais que você poderia facilmente explicá-las a uma criança. Elas são como aritmética básica – usamos todos os dias, sem sequer pensar.

 
Aprendizado de Máquina Clássico

 

1.1 Aprendizagem Supervisionada

O aprendizado de máquina clássico é freqüentemente dividido em duas categorias – Aprendizado Supervisionado e Não Supervisionado.

No primeiro caso, a máquina tem um “supervisor” ou um “professor”, que dá à máquina todas as respostas, como por exemplo para identificar se é um gato ou um cachorro em uma foto. Neste caso, o “professor”já dividiu (rotulou) os dados em gatos e cães e a máquina está usando esses exemplos para aprender.

Aprendizado não supervisionado significa que a máquina é deixada sozinha com uma pilha de fotos de animais e uma tarefa: descobrir quem é quem. Os dados não são rotulados, não há professor e a máquina está tentando encontrar padrões por conta própria. Vamos falar sobre esses métodos abaixo.

Claramente, a máquina aprenderá mais rápido com um professor. Por isso, é mais comum encontrarmos esse caso nas tarefas da vida real.

Existem dois tipos de tarefas: classificação – predição de categoria de um objeto e previsão de regressão – de um ponto específico em um eixo numérico.

 

Classificação

Os algoritmos de classificação dividem os objetos com base em um dos atributos conhecidos de antemão. Separa as meias com base na cor, documentos baseados na linguagem e as músicas por gênero.

 
Problema de Classificacao

 
Usada nos dias de hoje para:

  • Filtragem de spam;
  • detecção de idioma;
  • Pesquisa por documentos semelhantes;
  • Análise de sentimentos;
  • Reconhecimento de caracteres e números manuscritos;
  • Detecção de fraude.

 
Algoritmos populares: Naive BayesDecision TreeLogistic RegressionK-Nearest NeighboursSupport Vector Machine.

Aprendizado de máquina é, principalmente, uma tarefa de classificar as coisas. A máquina aqui é como um bebê aprendendo a classificar brinquedos: aqui está um robô, aqui está um carro, aqui está um carro-robô … Oh, wait!

Na classificação, você sempre precisa de um professor. Os dados devem ser rotulados com as características para que a máquina possa atribuir classes com base nelas. Tudo poderia ser classificado – usuários por interesses (como os feeds algorítmicos), artigos baseados em linguagem ou tópicos (isso é importante para os mecanismos de busca), músicas por gênero (playlists do Spotify), até seus emails.

Na filtragem de spam, o algoritmo Naive Bayes é amplamente usado. A máquina conta o número de menções “viagra” no spam e nas mensagens normais, depois multiplica as duas probabilidades usando a equação de Bayes, soma os resultados e Voilá, temos Aprendizado de Máquina.

 
Algoritmo Naive Bayes

 
Entretanto, mais tarde, os spammers aprenderam a lidar com filtros bayesianos adicionando muitas palavras “boas” ao final do e-mail. Ironicamente, o método foi chamado de envenenamento bayesiano.

Naive Bayes entrou para a história como o mais elegante e o primeiro algoritmo realmente útil para essa tarefa. Mas agora outros algoritmos são usados ​​para filtragem de spam.

Vamos a outro exemplo prático de classificação. Vamos dizer que você precisa de algum dinheiro a crédito. Como o banco saberá se você vai pagá-lo de volta ou não? Não há como saber com certeza. Mas o banco tem muitos perfis de pessoas das quais recebeu dinheiro antes. Eles têm dados sobre idade, educação, ocupação, salário e – o mais importante – o fato de pagar o dinheiro de volta. Ou não.

Usando esses dados, podemos ensinar a máquina a encontrar padrões e obter a resposta. Entretanto, o banco não pode confiar cegamente na resposta da máquina. E se houver uma falha no sistema ou ataque hacker?

Para lidar com isso, temos as árvores de decisão. Todos os dados são automaticamente divididos em perguntas de sim ou não, que alias poderiam soar um pouco estranhas do ponto de vista humano.

Um exemplo de pergunta estranha seria se o credor possui uma renda mensal maior que U$ 128,12. No entanto, a máquina faz essas perguntas para dividir melhor os dados em cada etapa.

É desse modo que uma árvore de decisão é feita: quanto maior o ramo – mais ampla é a questão. Árvores de decisão são amplamente usadas em esferas de alta responsabilidade: diagnósticos, medicina e finanças.

Árvores de decisão puras raramente são usadas hoje. No entanto, elas frequentemente estabelecem a base para grandes sistemas e seus conjuntos até funcionam melhor que redes neurais. Nós vamos falar sobre isso mais tarde.

 
Árvores de Decisão para Concessão de empréstimo

 
Já o Support Vector Machine (SVM) é o método mais popular de classificação clássica. Foi usado para classificar tudo o que existe: plantas por aparência em fotos, documentos por categorias, etc.

A ideia por trás do SVM é simples – ele tenta desenhar duas linhas entre seus pontos de dados com a maior margem entre eles. Veja a imagem abaixo:

 
Problema de Classificação com Support Vector Machine (SVM)

 
Existe um lado muito útil da classificação: a detecção de anomalias. Quando um recurso não se encaixa em nenhuma das classes, nós o realçamos. Agora também é usado na medicina – em ressonância magnética os computadores destacam todas as áreas suspeitas ou desvios do teste.

Os mercados de ações também utilizam ela para detectar um eventual comportamento anormal dos comerciantes para encontrar os insiders. Ao ensinar um computador as coisas certas, nós automaticamente ensinamos quais são as coisas que estão erradas.

Atualmente, as redes neurais são mais freqüentemente usadas para classificação. Alias, é para isso que elas foram criadas…

A regra geral é quanto mais complexos os dados, mais complexo é o algoritmo. Para textos, números e tabelas, eu escolheria a abordagem clássica. Os modelos são menores lá, eles aprendem mais rápido e trabalham com mais clareza. Para fotos, vídeos e todas as outras coisas complicadas de Big Data, eu definitivamente optaria por redes neurais.

Há apenas cinco anos, você poderia encontrar um classificador de faces construído em SVM. Hoje é mais fácil escolher entre centenas de redes pré-treinadas. Nada mudou para filtros de spam, no entanto. Eles ainda são escritos com o SVM e não há uma boa razão para mudar.

Até mesmo este site possui detecção de spam baseada em SVM nos comentários ¯_ (ツ) _ / ¯

 

Regressão

“Desenhe uma linha através desses pontos. Sim, isso é o aprendizado de máquina”.

 
Regressão Linear

 
Usada nos dias de hoje para:

  • Previsões do preço das ações;
  • Análise de demanda e volume de vendas;
  • Diagnóstico médico;
  • Quaisquer correlações numéricas.

 
Algoritmos populares: Regressão Linear e Regressão Polinomial.

Regressão é basicamente uma classificação em que prevemos um número em vez de uma categoria. Exemplos disso são a previsão do preço de um carro pela sua quilometragem, tráfego por hora do dia, volume de demanda por crescimento da empresa, etc. A regressão é perfeita quando algo depende do tempo.

Todo mundo que trabalha com finanças e análises adora a regressão. Inclusive é embutida no Excel. E é super leve computacionalmente – a máquina simplesmente tenta desenhar uma linha que indica correlação média. Embora, ao contrário de uma pessoa com uma caneta e um quadro branco, a máquina faz isso com precisão matemática, calculando o intervalo médio entre cada ponto.

 
Predição de Tráfego

 
Quando a linha resultante é reta – é uma regressão linear, quando é curva – polinomial. Esses são os dois tipos principais de regressão. Os outros são mais exóticos. A regressão logística é uma excessão, pois não é uma regressão, mas sim um método de classificação. Fique atento!

Não há problema em trabalhar com regressão e classificação, no entanto. Muitos classificadores se transformam em regressão após algum ajuste. Podemos não apenas definir a classe do objeto, mas também memorizar o quão próximo ele está. Aí começa a regressão.

 

1.2 Aprendizagem não supervisionada

A aprendizagem não supervisionada foi inventado um pouco mais tarde, nos anos 90. É usada com menos frequência, mas às vezes simplesmente não temos escolha.

Os dados rotulados são um luxo. Mas e se eu quiser criar, digamos, um classificador de ônibus? Devo tirar fotos manualmente de milhões de ônibus nas ruas e rotular cada um deles? De jeito nenhum! Isso vai levar uma vida inteira e eu ainda tenho tantos jogos não jogados na minha conta da Steam.

Neste caso, ou você recorre ao Mechanical Turk, ou você pode tentar usar o aprendizado não supervisionado.

Geralmente é útil para análise exploratória de dados, mas não como algoritmo principal. Pessoas “especialmente treinadas”, graduadas em Oxford, alimentam a máquina com uma tonelada de “lixo” e a observa. Existem alguns clusters? Não. Quaisquer relações visíveis? Não.

Bem, você queria trabalhar em ciência de dados, certo? 😎

Então continue lendo!

 

Clusterização

“Divide objetos com base em características desconhecidas. A máquina escolhe o melhor caminho”.

 
Clusterização

 
Usada nos dias de hoje para:

  • Segmentação de mercado (tipos de clientes, fidelidade);
  • Mesclar pontos próximos em um mapa;
  • Compressão de imagem;
  • Analisar e rotular novos dados;
  • Detectar um comportamento anormal.

 
Algoritmos populares: K-means_clusteringMean-ShiftDBSCAN.

Clusterização ou agrupamento (clustering), é uma classificação sem classes predefinidas. É como dividir meias por cor quando você não se lembra de todas as cores que você tem.

O algoritmo de clusterização tenta encontrar objetos semelhantes (por características) e mesclá-los em um cluster. Aqueles que têm muitas características semelhantes são unidos em uma classe. Com alguns algoritmos, você ainda pode especificar o número exato de clusters que você deseja.

Um excelente exemplo de clusterização são marcadores em mapas da web. Quando você está procurando por todos os restaurantes ao seu redor para escolher a melhor opção para o almoço, o mecanismo de agrupamento agrupa-os em bolhas com um número.

O Apple Photos e o Google Photos usam clusters mais complexos. Eles procuram rostos em fotos para criar álbuns de seus amigos. O aplicativo não sabe quantos amigos você tem e como eles se parecem, mas busca encontrar características faciais comuns. É um agrupamento típico.

Outro problema popular é a compactação de imagens. Ao salvar uma imagem em PNG, você pode definir a paleta, digamos, para 32 cores. Isso significa que o agrupamento encontrará todos os pixels “avermelhados”, calculará o “vermelho médio” e o definirá para todos os pixels vermelhos. Quanto menor o número de cores – menor será o tamanho dos arquivos e menor será o custo!

No entanto, você pode ter problemas com cores do tipo Ciano. Ela é verde ou azul? Aqui entra o algoritmo K-Means.

O K-Means define aleatoriamente 32 pontos de cor na paleta, que são definidos como centróides. Os pontos restantes são marcados como atribuídos ao centróide mais próximo.

Assim, temos tipos de “galáxias” em torno dessas 32 cores. Então, movemos o centróide para o centro de sua galáxia e repetimos o processo até que os centróides parem de se mover.

Tudo pronto! Clusters estão definidos, estáveis ​​e existem exatamente 32 deles. Aqui está uma explicação mais real:

 
Clusterizacao ou Agrupamento - Clustering

 
Procurar pelos centróides é conveniente em muitos casos. Entretanto, clusters da vida real nem sempre formam círculos. Vamos imaginar que você é um geólogo e precisa encontrar alguns minerais semelhantes no mapa. Nesse caso, os clusters podem ter uma forma estranha. Além disso, você nem sabe quantos deles esperar. Seriam 10? 100? K-means não se encaixa aqui, mas o DBSCAN pode ser muito útil.

Vamos para um exemplo mais claro do K-means. Digamos que os nossos pontos sejam pessoas na praça da sua cidade. Encontre três pessoas próximas umas das outras e peça para elas darem as mãos. Então, diga a elas para começarem a pegar as mãos daqueles vizinhos que eles podem alcançar. E assim por diante, até que ninguém mais possa pegar a mão de ninguém. Esse é o nosso primeiro cluster.

Repita o processo até que todos estejam agrupados. Todas as pessoas que não conseguissem dar as mãos para outras pessoas seriam consideradas anomalias, neste caso.

Assim como a classificação, o agrupamento pode ser usado para detectar anomalias.

Um usuário se comporta de forma anormal depois de se inscrever? Deixe a máquina bani-lo temporariamente e crie um ticket para o suporte para verificá-lo. Talvez seja um bot. Nós nem precisamos saber o que é “comportamento normal”, apenas fazemos o upload de todas as ações do usuário para o nosso modelo e deixamos a máquina decidir se é um usuário “típico” ou não.

Esta abordagem não funciona tão bem em comparação com a classificação, mas nunca é demais tentar.

 

Redução de Dimensionalidade (Generalização)

“Monta características específicas em mais alto nível”.

 
Redução a Dimensionalidade

 
Usada nos dias de hoje para:

  • Criar sistemas de recomendação (★);
  • Criar belas visualizações;
  • Modelar tópicos e pesquisa de documentos similares;
  • Análise de imagens falsas;
  • Gerenciamento de riscos.

 
Algoritmos populares: Principal Component Analysis (PCA), Singular Value Decomposition(SVD), Latent Dirichlet allocation (LDA), Latent Semantic Analysis (LSA, pLSA, GLSA), t-SNE (para visualização).

 
Anteriormente, esses métodos eram usados ​​por cientistas de dados experientes, que precisavam encontrar “algo interessante” em enormes quantidades de dados. Quando os gráficos do Excel não ajudaram, eles forçaram as máquinas a fazer a descoberta de padrões. É assim que eles criaram métodos de redução de dimensão.

É sempre mais conveniente que as pessoas usem abstrações, não um monte de recursos fragmentados. Por exemplo, podemos unir todos os cachorros com orelhas triangulares, narizes longos e caudas grandes a uma bela abstração denominada “pastor”. Sim, estamos perdendo algumas informações sobre os pastores específicos, mas a nova abstração é muito mais útil para nomear e explicar propósitos. Como bônus, esses modelos “abstratos” aprendem mais rápido, causam menos “overfit” e usam um número menor de características.

Esses algoritmos se tornaram ferramentas incríveis para Modelagem de Tópicos. Podemos abstrair de palavras específicas até seus significados. É isso que a análise semântica latente (LSA) faz. É baseada em quão frequente você vê a palavra em um tópico específico. Por exemplo, existem mais termos de tecnologia em artigos de tecnologia? Com certeza. Os nomes dos políticos também são encontrados principalmente em notícias políticas, entre outros exemplos.

Sim, nós também podemos fazer clusters de todas as palavras nos artigos, mas perderemos todas as conexões importantes, como, por exemplo, palavras com um mesmo significado em contextos diferentes em documentos diferentes. A LSA lida com isso corretamente e é por isso que é chamada de “semântica latente”.

Então, precisamos conectar as palavras e documentos dentro da uma feature (característica) para manter essas conexões latentes. Ocorre que a decomposição Singular (SVD) resolve essa tarefa, revelando clusters de tópicos úteis a partir de aglomerados de palavras.

 
Latent Semantic Analysis - LSA

 
Sistemas de recomendação e filtragem colaborativa são outros usos super populares do método de redução de dimensionalidade. Se você usá-los para abstrair as classificações do usuário, você terá um ótimo sistema para recomendar filmes, músicas, jogos e o que você quiser.

Aqui posso recomendar o meu livro favorito “Programming Collective Intelligence“. Foi o meu livro de cabeceira enquanto estudava na universidade!

É quase impossível entender completamente essa abstração de máquina, mas é possível ver algumas correlações a partir de um olhar mais atento. Algumas delas se correlacionam com a idade do usuário – as crianças que brincam de Minecraft e também assistem mais desenhos animados; outros correlacionam-se com gênero de filme ou hobbies de usuário.

As máquinas obtêm esses conceitos de alto nível mesmo sem entendê-los, com base apenas no conhecimento das classificações dos usuários.

 

Aprendizagem de regras de associação

“Procure padrões na ordem das escolhas”.

 
Machine Learning - Aprendizagem de regras de associação

 
Usada nos dias de hoje para:

  • Para prever vendas e descontos;
  • Para analisar mercadorias compradas em conjunto;
  • Para colocar os produtos nas prateleiras;
  • Para analisar padrões de navegação na web.

Algoritmos populares: Apriori, Euclat, FP-growth.

 
A aprendizagem por regras de associação inclui todos os métodos para analisar carrinhos de compras, automatizar estratégias de marketing e outras tarefas relacionadas a eventos. Quando você tem uma sequência de algo e quer encontrar padrões nela – tente usar ele.

Digamos que um cliente entre um um mercado, pegue um pacote de seis cervejas e vá para o caixa. Devemos colocar amendoins no caminho? Com que frequência as pessoas compram estes dois itens juntos?

Sim, provavelmente funciona para cerveja e amendoim, mas que outras sequências podemos prever? Pode uma pequena mudança no arranjo de mercadorias levar a um aumento significativo nos lucros?

O mesmo vale para o comércio eletrônico. A tarefa é ainda mais interessante – o que o cliente vai comprar da próxima vez?

Não tenho a menor idéia de por que o aprendizado por regras parece ser o menos elaborado na categoria de aprendizado de máquina. Os métodos clássicos são baseados em uma visão frontal de todos os produtos comprados usando árvores ou conjuntos. Algoritmos só podem procurar por padrões, mas não podem generalizar ou reproduzí-los em novos exemplos.

No mundo real, todo grande varejista constrói sua própria solução proprietária, portanto não há revoluções acontecendo aqui.

 

Parte 2. Aprendizagem por Reforço

“Jogue um robô em um labirinto e deixe-o encontrar uma saída”

 
Machine Learning - Aprendizagem por Reforço

 
Usada nos dias de hoje para:

  • Carros autônomos;
  • Jogos;
  • Automatizando a negociação;
  • Gerenciamento de recursos corporativos.

 
Algoritmos populares: Q-Learning, SARSA, DQN, A3C, Genetic algorithm.

 
Agora chegamos a algo que se parece com inteligência artificial real. Em muitos artigos, o aprendizado por reforço é colocado entre o aprendizado supervisionado e o não supervisionado, mas eles não têm nada em comum!

O aprendizado por reforço é usado nos casos em que seu problema não está relacionado a dados, mas você tem um ambiente virtual ou real para interação, como um mundo de videogame ou uma cidade para carros autônomos.

O conhecimento de todas as regras de trânsito no mundo não ensinará o piloto automático a dirigir nas estradas. Independentemente da quantidade de dados que coletarmos, ainda não poderemos prever todas as situações possíveis. É por isso que seu objetivo é minimizar o erro, não prever todos os movimentos.

Veja o exemplo abaixo de redes neurais jogando Mário.

 

 
Sobreviver dentro de um ambiente é a idéia central do aprendizado por reforço. Através de um sistema de punições e recompensas o robô é ensinado da mesma maneira que uma criança aprende.

Um truque eficaz para construir um modelo de carros autônomos é construir uma cidade virtual e deixar o self-driving-car aprender primeiro todos os seus truques. É exatamente assim que treinamos pilotos automáticos no momento. Crie uma cidade virtual baseada em um mapa real, preencha com pedestres e deixe o carro aprender a matar o menor número possível de pessoas. Quando o robô está razoavelmente confiante neste “GTA artificial”, é liberado para testar nas ruas reais. Diversão!

Pode haver ainda duas abordagens diferentes – com base em modelo e sem modelo.

Baseado em modelo significa que o carro precisa memorizar um mapa ou suas partes. Essa é uma abordagem bastante desatualizada, pois é impossível para o pobre carro autônomo memorizar o planeta inteiro.

No aprendizado sem modelo, o carro não memoriza todos os movimentos, mas tenta generalizar situações e agir racionalmente enquanto obtém uma recompensa máxima.

 

 
Lembra das notícias sobre a IA derrotando um dos melhores jogadores no jogo Go? Um pouco antes deste feito foi provado que o número de combinações neste jogo é maior que o número de átomos no universo.

Isso significa que a máquina mesmo sem se lembrar de todas as combinações, ainda assim, venceu no Go (como aconteceu no xadrez). A cada turno, ela simplesmente escolhia a melhor jogada para cada situação, superando o jogador humano ao final.

Essa abordagem é o conceito central por trás do Q-learning e seus derivados (SARSA e DQN). ‘Q’ no nome significa “Qualidade”, pois um robô aprende a executar a ação mais “qualitativa” em cada situação e todas as situações são memorizadas como um simples processo markoviano.

 
Processo Markoviano

 
Essa máquina pode testar bilhões de situações em um ambiente virtual, lembrando quais soluções levaram a uma maior recompensa. Mas como ela pode distinguir situações já vistas anteriormente de uma outra completamente nova?

Se um carro autônomo está em uma estrada e o semáforo fica verde – isso significa que pode ir agora? E se houver uma ambulância correndo por uma rua próxima? A resposta hoje é “ninguém sabe”. Não há resposta fácil. Os pesquisadores estão constantemente pesquisando, mas enquanto isso, apenas encontram soluções alternativas.

Alguns codificariam manualmente todas as situações que os permitiam resolver casos excepcionais, como o Problema de Trolley. Outros se aprofundariam e deixariam as redes neurais fazer o trabalho de descobrir isso. Isso nos levou à evolução do Q-learning, chamado Deep Q-Network (DQN). Embora seja muito bom, não é uma bala de prata.

O aprendizado por reforço para uma pessoa comum pareceria uma inteligência artificial real. Porque faz você pensar uau, esta máquina está tomando decisões em situações da vida real! Este tópico está no topo agora, avançando com um ritmo incrível.

Off-Topic. Quando eu era estudante, algoritmos genéticos (esse link tem uma visualização legal!) eram realmente populares. Trata-se de lançar um monte de robôs em um único ambiente e fazê-los tentar atingir a meta até que eles morram. Depois, escolhemos os melhores, cruzamos-os, modificamos alguns genes e executamos novamente a simulação. Depois de alguns bilhões de anos, teremos uma criatura inteligente. Provavelmente. Evolução no seu melhor.

Os algoritmos genéticos são considerados parte do aprendizado por reforço e possuem a característica mais importante comprovada pela prática de uma década: ninguém dá a mínima para eles.

A humanidade ainda não conseguiu chegar a uma tarefa em que seriam mais eficazes do que outros métodos. Mas eles são ótimos para experiências de estudantes e deixam as pessoas entusiasmadas.

 

Parte 3. Métodos Ensemble

“Um bando de árvores estúpidas aprendendo a corrigir erros umas das outras”

 
Machine Learning Ensemble Method

 
Usado nos dias de hoje para:

  • Tudo o que se encaixa nas abordagens clássicas de algoritmos (mas funciona melhor);
  • Sistemas de busca (★);
  • Visão computacional;
  • Detecção de objetos.

Algoritmos Populares: Random Forest, Gradient Boosting.

 
Finalmente chegamos aos métodos considerados mais vanguarda. Ensemble e Redes Neurais são os dois principais competidores na disputa para o caminho para a singularidade. Hoje eles estão produzindo os resultados mais precisos e são amplamente utilizados em produção.

Apesar de toda a eficácia, a idéia por trás disso é excessivamente simples. Se você pegar um monte de algoritmos ineficientes e forçá-los a corrigir os erros um dos outros, a qualidade geral de um sistema será maior do que os melhores algoritmos individuais.

Você obterá resultados ainda melhores se usar os algoritmos mais instáveis ​​que estão prevendo resultados completamente diferentes com pouco ruído nos dados de entrada. A Regressão e Árvores de Decisão, por exemplo, são tão sensíveis que até mesmo um único outlier nos dados de entrada pode levar os modelos a enlouquecerem.

E de fato, é disso que precisamos!

Nós podemos usar qualquer algoritmo que conhecemos para criar um Ensenble, que na tradução é “conjunto”. Basta jogar um monte de classificadores, apimentar com regressão e não se esqueça de medir a precisão. Da minha experiência: nem tente um Bayes ou kNN aqui. Embora “burros”, eles são realmente estáveis.

Em vez disso, existem três métodos testados em campo para criar Ensembles.

 

Stacking ou “Empilhamento”

A saída de vários modelos paralelos é passada como entrada para o último que toma uma decisão final. É como aquela garota que pergunta para suas amigas se deve se encontrar com você, antes de tomar sua decisão final. Não somos tão diferentes desses algoritmos não é mesmo?

 
Stacking

 
Ressalto aqui a palavra “diferente”. Misturar os mesmos algoritmos nos mesmos dados não faria sentido. A escolha dos algoritmos é totalmente sua. No entanto, para o modelo final de tomada de decisão, a regressão geralmente é uma boa escolha.

Com base na minha experiência, o stacking é menos popular na prática, porque os dois próximos métodos estão fornecendo melhor precisão.

 

Bagging

Também conhecido como Bootstrap AGGregatING. É um método que usa os mesmos algoritmos, mas treina-os com diferentes subconjuntos de dados originais e no final usa apenas os resultados médios.

Dados em subconjuntos aleatórios podem se repetir. Por exemplo, de um conjunto como “1-2-3”, podemos obter subconjuntos como “2-2-3”, “1-2-2”, “3-1-2” e assim por diante. Usamos esses novos conjuntos de dados para ensinar o mesmo algoritmo várias vezes e, em seguida, prever a resposta final por meio da votação majoritária simples.

 
Bagging

 
O exemplo mais famoso de Bagging é o algoritmo Random Forest, que é simplesmente resultado de várias árvores de decisão, conforme ilustrado acima.

Quando você abre o aplicativo de câmera do seu telefone e o vê desenhando caixas em volta do rosto das pessoas – provavelmente é o resultado do trabalho do Random Forest. As redes neurais seriam muito lentas para serem executadas em tempo real, por isso, o método de Bagging, neste caso, é o ideal.

Em algumas tarefas, a capacidade do Random Forest de executar em paralelo é mais importante do que uma pequena perda de precisão no reforço, por exemplo. Especialmente no processamento em tempo real. Quando falamos de MAchine Learning, sempre temos um trade-off.

 
Machine Learning

 

Boosting

No método de Boosting, os algoritmos são treinados um a um sequencialmente. Cada algoritmo subseqüente presta mais atenção aos pontos de dados que foram imprevisíveis pelo anterior. Esse processo até o resultado ser satisfatório.

Do mesmo modo que o método Bagging, usamos subconjuntos de nossos dados, mas desta vez eles não são gerados aleatoriamente. Agora, em cada subamostra, coletamos uma parte dos dados que o algoritmo anterior falhou ao processar. Assim, o novo algoritmo aprende a corrigir os erros do anterior.

 
Boosting

 
A principal vantagem aqui é uma precisão de classificação muito alta. Os contras já foram destacados – não são processados de forma paralela, o que pode torná-lo não tão rápido. Entretanto, ainda assim, é mais rápido que as redes neurais.

Na verdade, é como uma corrida entre um caminhão de lixo e um carro de corrida. O caminhão pode fazer mais, mas se você quiser ir mais rápido, pegue um carro.

Se você quiser um exemplo real do Método de Boosting é só abrir o Facebook ou o Google e começar a digitar uma consulta de pesquisa. O resultado dessa pesquisa é trazido pelo Método Ensemble utilizando boosting.

Tem um artigo aqui no blog sobre o XGBoost!

 

Parte 4. Redes Neurais e Deep Learning

“Temos uma rede de mil camadas, dezenas de placas de vídeo, mas ainda não sabemos onde usá-la. Vamos gerar fotos de gatos!”

 
Usado nos dias de hoje para:

  • Substituição de todos os algoritmos acima;
  • Identificação de objetos em fotos e vídeos;
  • Reconhecimento e síntese de fala;
  • Processamento de imagem, transferência de estilo;
  • Maquina de tradução.

 
Neural Networks and Deep Leaning

 
Arquiteturas Populares: PerceptronConvolutional Network (CNN), Recurrent Networks (RNN), Autoencoders

 
Se ninguém nunca tentou te explicar as redes neurais usando analogias do “cérebro humano”, você é uma pessoa feliz.

Qualquer rede neural é basicamente uma coleção de neurônios e conexões entre eles. O neurônio é uma função com várias entradas e uma saída. Sua tarefa é pegar todos os números de sua entrada, executar uma função neles e enviar o resultado para a saída.

Aqui está um exemplo de um neurônio simples, mas útil na vida real: some todos os números das entradas e se essa soma for maior que N – dê “1” como resultado. Caso contrário – “zero”.

As conexões são como canais entre os neurônios. Eles conectam as saídas de um neurônio às entradas de outro, para que possam enviar dígitos um para o outro. Cada conexão possui apenas um parâmetro – peso. É como uma força de conexão para um sinal. Quando o número 10 passa por uma conexão com um peso 0,5, ele se transforma em 5.

Esses pesos dizem ao neurônio para responder mais a uma entrada e menos a outra. Os pesos são ajustados durante o treinamento – é assim que a rede aprende. Basicamente, é só isso.

 
Redes Neurais

 
Para impedir que a rede caia na anarquia, os neurônios são ligados por camadas, não aleatoriamente. Dentro de uma camada, os neurônios não estão conectados, mas estão conectados aos neurônios da camada “seguinte” e da camada “anterior”. Os dados na rede vão estritamente em uma direção – das entradas da primeira camada às saídas da última.

Se você lançar um número suficiente de camadas e colocar os pesos corretamente, obterá o seguinte: aplicando à entrada, digamos, a imagem do dígito manuscrito 4, pixels pretos ativam os neurônios associados, eles ativam as próximas camadas e assim por diante, até que finalmente acenda a saída encarregada dos quatro. O resultado é alcançado.

 
Multilayer Perceptron - MLP

 
Uma rede que possui várias camadas que têm conexões entre todos os neurônios é chamada de perceptron (MLP), conforme imagem acima, e é considerada a arquitetura mais simples para um iniciante, embora não seja vista em produção.

Ao fazer a programação da vida real, ninguém escreve neurônios e conexões. Em vez disso, tudo é representado como matrizes e calculado com base na multiplicação de matrizes para melhor desempenho.

Meu vídeo favorito sobre isso, e sua sequência abaixo, descreve todo o processo de uma maneira facilmente digerível, usando o exemplo do reconhecimento de dígitos escritos à mão. Assista-os se você quiser entender melhor.

 

 
Depois que construímos uma rede, nossa tarefa é atribuir maneiras apropriadas para que os neurônios reajam corretamente aos sinais recebidos. Agora é a hora de lembrar que temos dados que são amostras de ‘entradas’ e ‘saídas’ apropriadas. Mostraremos à nossa rede um desenho do mesmo dígito 4 e informaremos ‘adapte seus pesos para que, sempre que você vir essa entrada, sua saída emita 4’.

Para começar, todos os pesos são atribuídos aleatoriamente. Depois que mostramos um dígito, ele emite uma resposta aleatória porque os pesos ainda não estão corretos e comparamos o quanto esse resultado difere do correto.

Então começamos a atravessar a rede de saída para entrada e dizemos a todos os neurônios: “ei, você ativou aqui, mas você fez um péssimo trabalho, vamos dar menos atenção a essa e mais a essa outra, ok?”

Depois de centenas de milhares de ciclos desse tipo de ‘inferir / punir’, há uma esperança de que os pesos sejam corrigidos e ajam como pretendido. O nome científico dessa abordagem é Backpropagation. O engraçado foi que levaram vinte anos para criar esse método.
Meu segundo vídeo favorito descreve esse processo com maior profundidade, mas ainda é muito acessível.

 

 
Uma rede neural bem treinada pode falsificar o trabalho de qualquer um dos algoritmos descritos neste capítulo (e freqüentemente funciona com mais precisão). Essa universalidade é o que a tornou amplamente popular.

Finalmente, temos uma arquitetura do cérebro humano, eles disseram que precisamos montar muitas camadas e ensiná-las sobre todos os dados possíveis que esperavam. Então, o primeiro inverno da IA começou, depois se derreteu e outra onda de decepção ocorreu.

Descobriu-se que as redes com um grande número de camadas exigiam um poder de computação inimaginável na época.

Atualmente, qualquer PC com placas de vídeo Geforce supera os datacenters da época. Portanto, as pessoas não tinham nenhuma esperança de adquirir poder computacional como os que hoje temoa acesso e as redes neurais eram uma chatice enorme.

E então, dez anos atrás, o Deep Learning floresceu!

Há uma boa linha do tempo de aprendizado de máquina descrevendo a montanha-russa de esperanças e ondas de pessimismo.

Em 2012, as redes neurais convolucionais conquistaram uma vitória esmagadora na competição ImageNet que fez o mundo se lembrar repentinamente dos métodos de Deep Learning descritos nos anos 90 e que agora se tornam viáveis com nossas placas de vídeo!

As diferenças do Deep Learning das redes neurais clássicas estavam em novos métodos de treinamento que podiam lidar com redes maiores. Atualmente, apenas a teoria tentaria dividir qual aprendizado considerar profundo e não tão profundo.

Nós, como profissionais, usamos bibliotecas ‘profundas’ populares como Keras, TensorFlow e PyTorch, mesmo quando construímos uma mini-rede com cinco camadas. Só porque é mais adequado do que todas as ferramentas que vieram antes. Nós apenas as chamamos de redes neurais.

Existe um artigo excelente chamado Neural Network Zoo, onde quase todos os tipos de redes neurais são explicadas brevemente.

 
Neural Network Zoo

 

Conclusão

Diferente do que se divulga na mídia, machine learning está muito mais ligado a operações matemáticas para medir distâncias entre pontos e cálculo de probabilidade do que recriar o cérebro humano artificialmente.

Apesar de muitas atividades estarem sendo automatizadas por sistemas baseados algoritmos, ainda há muito espaço para o ser humano utilizar a sua criatividade. A maior parte das atividades automatizadas hoje em dia são extremamente repetitivas e é um verdadeiro desperdício da capacidade humana brigar por esse espaço.

E não! Não haverá revolução das máquinas ou qualquer tipo de distopia da ficção. A maior parte deste tipo de alarmismo vem de pessoas que não compreendem exatamente como funciona a teoria por trás disso.

Continue acompanhando o nosso blog e compartilhe nas redes sociais. Estamos sempre trazendo novidades sobre esse assunto aqui! Caso tenha interesse em trocar uma ideia ou manter contato pelo LinkedIn, basta me adicionar neste link.

Avatar

About the Author: Pedro César Tebaldi Gomes

Atua há 10 anos no mercado B2B de tecnologia da informação como gerente de marketing, tendo escrito mais de 500 artigos sobre tecnologia durante esse período. Estuda ciência de dados, machine learning e estatística para atingir melhores resultados de negócios.

21 Comments

    1. Show. Estou focando bastante na criação de novos conteúdos. É uma oportunidade para aprender ainda mais sobre os assuntos abordados.

  1. Vou começar a fazer meu TCC na área, logo estou pesquisando bastante sobre, vou te dizer que achei muito boa a explicação, tem continuação? se não, quando vai sair?

    1. Daniel, casualmente estava com a segunda parte praticamente pronta. Acabei de publicar o final do artigo. Obrigado pelo feedback positivo!

  2. Meu Deus… Que trabalho excelente e impressionante! Mais esclarecedor do que esse artigo não vou encontrar em lugar nenhum, ainda mais em português.

    Muito Obrigado meu caro Pedro César, a sua dedicação e empenho para nos transmitir esse conhecimento ímpar, merece muito respeito e dedicação.

    Show de bola, você esclareceu vários tópicos de M.L em um único artigo! Me tirou da nuvem de dúvidas que eu estava mergulhado a bastante tempo…

    Abrs meu caro.

Deixe uma resposta

Machine Learning para todos, de forma simples e com exemplos!

tempo de leitura: 45 min