A Essência do Aprendizado de Máquina

O objetivo deste artigo é apresentar resumidamente uma introdução a alguns dos componentes mais importantes da inteligência artificial, sob o ponto de vista técnico, porém voltado a lideres e gestores negócios e iniciantes no tema, considerando: o aprendizado de máquina (machine learning), a aprendizagem profunda (deep learning) e a aprendizagem por reforço (reinforcement learning).

Uma visão geral sobre o tema pode ser visualizada com este primeiro diagrama que mostra a Relação entre a Inteligência Artificial, Aprendizado de Máquina e Aprendizagem Profunda:

Arthur Samuel descreveu-o em 1959 como: “o campo de estudo que dá aos computadores a capacidade de aprender sem serem explicitamente programados”.  Esta é uma definição mais antiga e informal.

Tom Mitchell fornece uma definição mais moderna: “Diz-se que um programa de computador aprende com a experiência E em relação a alguma classe de tarefas T e medida de desempenho P, se seu desempenho em tarefas em T, medido por P, melhora com a experiência E.”

Esse diagrama simplificado apresenta a diferença básica entre a Programação Clássica de computadores versus a Aprendizagem de Máquina, como segue:

A seguir serão apresentados alguns diagramas simplificados (em inglês), obtidos do post “Machine Learning for Everyone“, com uma breve explicação (traduzida para o português).

Vale lembrar que o aprendizado de máquina depende essencialmente de três elementos: 1) Dados – com quantidade maior possível e qualidade o melhor de dados possível, relacionados ao problema que se deseja resolver; 2) Algoritmos – com o algoritmo ou conjunto deles, apropriado(s) para resolver o problema desejado; e 3) Parâmetros – usados no ajuste do tratamento dos dados.

Estes três elementos servirão durante o desenvolvimento para gerar um determinado Modelo de aprendizado que será utilizado para obter soluções a partir de novos dados em testes ou produção. Em alguns casos podem ser necessários ajustes nos parâmetros, mais e/ou melhores dados, ou até mesmo a troca do algoritmo por outro obtenha melhor precisão de resultados.

Os principais tipos de aprendizagem de máquina

É importante destacar que não há uma única maneira de resolver um problema no mundo da aprendizagem de máquinas, pois existem vários algoritmos adequados ao problema, assim precisa-se escolher qual deles se encaixa melhor. Quase tudo pode ser resolvido com uma rede neural, por exemplo, mas nem sempre é a melhor solução, principalmente devido ao custo computacional.

Seguem quatro direções principais no aprendizado de máquina.

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 se vê uma lista de artigos para “ler em seguida” ou o banco bloqueia o cartão de alguém 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.

Há 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 vem 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, as usamos todos os dias, sem sequer pensar.

O aprendizado de máquina clássico é frequentemente dividido em duas categorias – Aprendizado SupervisionadoNão Supervisionado.

1.1 – Aprendizado Supervisionado

Nesse 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.

1.1.1 – 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.

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ô etc.

Na classificação, precisa-se sempre 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 e-mails.

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.

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.

Outro exemplo prático de classificação, digamos que precisa-se de algum dinheiro a crédito. Como o banco saberá se será pago 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 R$ 1280,50. 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.

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:

Os mercados de ações utilizam SVM 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 frequentemente 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, pode-se escolher 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, costuma-se definitivamente optar 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 (modelos). Nada mudou para filtros de spam, no entanto. Muitos 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 ¯_ (ツ) _ / ¯

1.1.2 – Regressão

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

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 LinearRegressã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.

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 exceçã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 – Aprendizado não supervisionado

O aprendizado não supervisionado foi inventado um pouco mais tarde, nos anos 90. É usado com menos frequência, mas às vezes simplesmente não temos escolha.
Os dados rotulados são um luxo. Mas e se alguém quiser criar, digamos, um classificador de ônibus? Deve-se tirar fotos manualmente de milhões de ônibus nas ruas e rotular cada um deles? De jeito nenhum! Isso vai levar uma vida inteira.

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.

1.2.1 – Agrupamento

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 grupo (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 centroides. Os pontos restantes são marcados como atribuídos ao centroide mais próximo.

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

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

Procurar pelos centroides é conveniente em muitos casos. Entretanto, clusters da vida real nem sempre formam círculos. Vamos imaginar que um geólogo 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 cidade. Encontra-se três pessoas próximas umas das outras e peça para elas darem as mãos. Então, diz-se 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. Nem precisa-se saber o que é “comportamento normal”, apenas faz-se o upload de todas as ações do usuário para o 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.

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

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

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, 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 característica (feature) 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.

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

É 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.

1.2.3 – Regras de Associação

“Procure padrões na ordem das escolhas”.

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 se tem uma sequência de algo e quer-se encontrar padrões nela – tenta-se associação.

Digamos que um cliente entre um um mercado, pegue um pacote de seis cervejas e vá para o caixa. Deveria 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?

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 reproduzi-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.

2 – Aprendizagem por Reforço

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

Usada nos dias de hoje para:

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

Algoritmos populares: Q-LearningSARSA, DQN, A3CGenetic 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

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-se pensar, 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. Há alguns anos, algoritmos genéticos 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.

3 – Método Conjuntos (ensemble)

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

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 ForestGradient 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. Pegando-se um monte de algoritmos ineficientes e forçando-os a corrigir os erros um dos outros, a qualidade geral de um sistema será maior do que os melhores algoritmos individuais.

Obter-se-á resultados ainda melhores com o uso dos 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 dado fora do comum (outlier) nos dados de entrada pode levar os modelos a enlouquecerem.

Pode-se 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. Por outro lado evita-se 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.

3.1 – Empilhamento (stacking)

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 as amigas se deve se encontrar com alguém, antes de tomar uma decisão final. Não somos tão diferentes desses algoritmos não é mesmo?

Ressalto aqui a palavra “diferente”. Misturar os mesmos algoritmos nos mesmos dados não faria sentido. A escolha dos algoritmos é totalmente de quem está resolvendo o problema. No entanto, para o modelo final de tomada de decisão, a regressão geralmente é uma boa escolha.
Na prática, o Stacking tem sido menos popular porque os dois próximos métodos estão fornecendo melhor precisão.

3.2 – Ensacamento (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.

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

Quando se abre o aplicativo de câmera do 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.

3.3 – Impulsionamento (boosting)

No método de Boosting, os algoritmos são treinados um a um sequencialmente. Cada algoritmo subsequente presta mais atenção aos pontos de dados que foram imprevisíveis pelo anterior. Esse processo ocorre 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.

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 automóvel.

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.

4 – Redes Neurais e Aprendizagem Profunda

“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 dos algoritmos de aprendizagem de máquina tradicionais;
  • 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.

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

Qualquer rede neural artificial é basicamente uma coleção de neurônios artificiais 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.

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.

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.

Este vídeo 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-o 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ça-se 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. Esse segundo vídeo 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 KerasTensorFlowPyTorch, 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.

Se gostou, por favor, compartilhe e não deixe de ler o post sobre Neurônios e Redes Neurais Artificiais.

Conte comigo em seus projetos. Sobre mim: aqui. Contato: aqui.

Um abraço, @neigrando

Referência

Este artigo trata-se da adaptação, redução e tradução, do post, em inglês, “Machine Learning for Everyone“.

Artigos relacionados

Neurônios e Redes Neurais Artificiais

Redes neurais artificiais são sistemas de computação inspirados nas redes neurais biológicas que constituem o cérebro humano.

Elas podem parecer novas e excitantes, mas o campo em si não é novo. Frank Rosenblatt, um psicólogo americano, conceituou e tentou construir uma máquina que responde como a mente humana em 1958, a qual ele nomeou “Perceptron”.

Depois disso, graças aos recursos computacionais atuais, tais redes neurais foram modernizadas, incluindo arquiteturas de rede aprimoradas e mais profundas e estão sendo utilizadas no aprendizado profundo (deep learning), que é a base para grande parte do atual boom da Inteligência Artificial.

Para os propósitos práticos, as redes neurais artificiais aprendem pelo exemplo, de maneira semelhante às suas contrapartes biológicas. As entradas externas são recebidas, processadas e acionadas de forma similar a do cérebro humano.

A estrutura em camadas das redes neurais

Sabemos que diferentes seções do cérebro humano estão conectadas para processar vários tipos de informação. Essas partes do cérebro são organizadas hierarquicamente em níveis. À medida que a informação entra no cérebro, cada camada, ou nível, de neurônios faz seu trabalho específico de processar as informações recebidas, derivar insights e transmiti-los para a camada seguinte e mais sênior.

Por exemplo, quando você passa por uma padaria, seu cérebro responderá ao aroma de pão recém assado em etapas:

  • Entrada de dados: O cheiro de pão quentinho
  • Pensamento: Isso me lembra minha infância
  • Tomada de decisão: acho que vou comprar um pouco desse pão
  • Memória: Mas eu já almocei
  • Raciocínio: Talvez eu pudesse fazer um lanche
  • Ação: Posso comer um pedaço desse pão, por favor?

É assim que o cérebro funciona em etapas. As redes neurais artificiais funcionam de maneira semelhante. As redes neurais tentam simular essa abordagem de várias camadas para processar várias entradas de informações e basear decisões nelas.

No nível celular ou neurônio individual, as funções são ajustadas. Os neurônios são as células nervosas do cérebro. As células nervosas têm extensões finas conhecidas como dendritos. Eles recebem sinais e os transmitem para o corpo celular. O corpo celular processa os estímulos e toma a decisão de acionar sinais para outros neurônios na rede. Se a célula decidir fazê-lo, a extensão no corpo celular conhecida como axônio conduzirá o sinal para outras células por meio de transmissão química. O funcionamento das redes neurais é inspirado na função dos neurônios em nosso cérebro, embora o mecanismo tecnológico de ação seja diferente do biológico.

Como as redes neurais funcionam de forma semelhante ao cérebro humano

Uma rede neural artificial em sua forma mais básica tem três camadas de neurônios. A informação flui de um para o outro, assim como no cérebro humano:

  • A camada de entrada: o ponto de entrada dos dados no sistema
  • A(s) camada(s) oculta(s): onde a informação é processada
  • A camada de saída: onde o sistema decide como proceder com base nos dados

Redes neurais artificiais mais complexas terão várias camadas, algumas ocultas.

A rede neural funciona por meio de uma coleção de nós ou unidades conectadas, assim como os neurônios artificiais. Esses nós modelam vagamente a rede de neurônios no cérebro animal. Assim como sua contraparte biológica, um neurônio artificial recebe um sinal na forma de estímulo, processa-o e sinaliza outros neurônios conectados a ele. Mas as similaridades acabam aí.

O funcionamento do neurônio e da rede neural

Um neurônio artificial é o menor bloco de construção em todas as redes neurais profundas.

Em uma rede neural artificial, o neurônio artificial recebe como entrada um ou mais estímulos na forma de sinais que são números reais (x1, x2, …). A saída (y) de cada neurônio é calculada usando alguns pesos fixos (w1, w2, …), uma polarização (b) e uma função de ativação definida (f) não linear da soma de suas entradas (∑).

  • As conexões entre os neurônios são chamadas de arestas.
  • Tanto os neurônios quanto as arestas têm um peso. Este parâmetro se ajusta e muda à medida que o aprendizado prossegue.
  • O peso aumenta ou diminui a força do sinal em uma conexão.
  • Os neurônios podem ter um limiar. Um sinal é enviado somente se o sinal agregado cruzar esse limite.

Como mencionado anteriormente, os neurônios se agregam em camadas. Diferentes camadas podem realizar diferentes modificações em suas entradas. Os sinais passam da primeira camada (a camada de entrada) para a última camada (a camada de saída) da maneira discutida acima, às vezes depois de percorrer as camadas várias vezes.

As redes neurais contêm inerentemente algum tipo de regra de aprendizado, que modifica os pesos das conexões neurais de acordo com os padrões de entrada com os quais são apresentadas, assim como uma criança em crescimento aprende a reconhecer animais a partir de exemplos de animais.

Redes neurais e aprendizado profundo (deep learning)

É impossível falar sobre redes neurais sem mencionar o aprendizado profundo. Os termos “redes neurais” e “aprendizado profundo” são frequentemente usados ​​de forma intercambiável, embora sejam distintos um do outro. No entanto, os dois estão intimamente ligados, pois um depende do outro para funcionar. Se as redes neurais não existissem, o aprendizado profundo também não existiria, pois:

  • O aprendizado profundo é a vanguarda de uma entidade que já está na vanguarda, a inteligência artificial (IA).
  • O aprendizado profundo é diferente do aprendizado de máquina, projetado para ensinar os computadores a processar e aprender com os dados.
  • Com o aprendizado profundo, o algoritmo do computador treina a si mesmo continuamente para processar dados, aprender com eles e criar mais recursos. As múltiplas camadas de redes neurais artificiais mais complexas são o que tornam isso possível.
  • As redes neurais complexas contêm uma camada de entrada e uma camada de saída, assim como as redes neurais de forma simples, mas também contêm várias camadas ocultas. Portanto, elas são chamados de redes neurais profundas e são propícias ao aprendizado profundo.
  • Um sistema de aprendizado profundo aprende a si mesmo e se torna mais “conhecido” à medida que avança, filtrando informações através de várias camadas ocultas, de maneira semelhante ao cérebro humano com todas as suas complexidades.

Por que o Deep Learning é importante para as organizações

O aprendizado profundo é como a nova corrida do ouro ou a mais recente descoberta de petróleo no mundo da tecnologia. O potencial do aprendizado profundo despertou o interesse de grandes corporações estabelecidas, bem como startups nascentes e tudo mais. Por quê?

Faz parte do panorama geral orientado por dados, em particular, graças ao aumento da importância de big data. Se você pensa em dados derivados da Internet como petróleo bruto armazenado em bancos de dados, data warehouses e data lakes, esperando para ser perfurado com várias ferramentas de análise de dados, o aprendizado profundo é a refinaria de petróleo que pega os dados brutos e os converte em produtos úteis.

O aprendizado profundo é o objetivo final em um mercado inundado de ferramentas analíticas em um mundo de dados: sem uma unidade de processamento eficiente e de última geração, extrair qualquer coisa de valor simplesmente não é possível.

O aprendizado profundo tem o potencial de substituir os humanos automatizando tarefas repetitivas. No entanto, o aprendizado profundo não pode substituir os processos de pensamento de um cientista ou engenheiro humano criando e mantendo aplicativos de aprendizado profundo, pelo menos por enquanto.

Fazendo a distinção entre aprendizado de máquina e outros tipos de aprendizado

Aprendizado de máquina. Como exatamente as máquinas aprendem? A resposta curta: Algoritmos.

Alimentamos algoritmos, que são conjuntos de regras usadas para ajudar os computadores a realizar operações de resolução de problemas, por meio de grandes volumes de dados. Geralmente, quanto mais dados um algoritmo de aprendizado de máquina é fornecido, mais preciso ele se torna. Estes algoritmos são divididos em categorias, conforme eles interagem com os dados. Trata-se de treinar algoritmos como regressão linear, K-means, árvores de decisão, Random Forest, algoritmo K-neest neighbors (KNN) e máquina de vetor de suporte ou algoritmo SVM.

Esses algoritmos vasculham conjuntos de dados, aprendendo à medida que avançam para se adaptar a novas situações e procurar padrões de dados interessantes e perspicazes. Os dados são o substrato chave para que esses algoritmos funcionem da melhor maneira possível.

Aprendizado Supervisionado. Os conjuntos de dados usados ​​para treinar o aprendizado de máquina podem ser rotulados.

Por exemplo, considere milhares de fotos de animais rotuladas. O algoritmo é treinando e “aprende” com estas fotos para que possa reconhecer imagens de animais que ainda não viu. Isso vale para imagens médicas, rostos, inadimplência de empréstimos, apólices de seguro de alto risco e muito mais.

Outro exemplo, um computador verificando uma caixa de entrada de e-mails em busca de spam pode ter sido treinado a partir de um conjunto de dados rotulado para entender quais e-mails são spam e quais são legítimos.

Isso é chamado de aprendizado supervisionado. Exemplos clássicos de técnicas de aprendizado supervisionado são regressão linear, máquinas de vetor de suporte (SVM), K-NN (neest neighbors ou vizinhos mais próximos), árvores de decisão e classificação.

Aprendizado não supervisionado.  É feito com dados que não são rotulados. É uma técnica popular para usar quando não se sabe o que esperar, mas deseja que a IA molde os dados em agrupamentos (clusters) com base em sua “intuição”. Em outras palavras, o aprendizado não supervisionado é ótimo para encontrar padrões nos dados – coisas que “parecem semelhantes” – e permitir que você decida o que os padrões significam; um algoritmo de agrupamento como K-means é um ótimo exemplo.

Aprendizado Semissupervisionado. É uma área de interesse crescente porque leva muito tempo para curar dados rotulados bons e limpos. Usando o aprendizado semissupervisionado, pode-se aumentar os dados rotulados com novos dados ou misturar dados rotulados e não rotulados.

Redes Neurais e Lógica Fuzzy.  É importante fazer a distinção entre redes neurais e lógica fuzzy. A lógica fuzzy permite tomar decisões concretas com base em dados imprecisos ou ambíguos. Por outro lado, as redes neurais tentam incorporar processos de pensamento semelhantes aos humanos para resolver problemas sem primeiro projetar modelos matemáticos.

Como as redes neurais diferem da computação convencional?

Para entender melhor como a computação funciona com uma rede neural artificial, um computador convencional e suas informações de processo de software devem ser entendidos.

Um computador possui um processador central que pode endereçar uma série de locais de memória onde os dados e instruções são armazenados. O processador lê as instruções e quaisquer dados de que a instrução precise de dentro dos endereços de memória. A instrução é então executada e os resultados salvos em um local de memória especificado.

Em um sistema serial ou paralelo padrão, as etapas computacionais são determinísticas, sequenciais e lógicas. Além disso, o estado de uma determinada variável pode ser rastreado de uma operação para outra.

O funcionamento nas redes neurais.  Em contraste, as redes neurais artificiais não são sequenciais nem necessariamente determinísticas. Elas não contêm nenhum processador central complexo. Em vez disso, elas são compostas de vários processadores simples que recebem a soma ponderada de suas entradas de outros processadores.

As redes neurais não executam instruções programadas. Elas respondem em paralelo (de forma simulada ou real) ao padrão de entradas apresentado a elas.

Nestas redes as informações estão contidas no estado geral de ativação da rede. O conhecimento é representado pela própria rede, que é literalmente mais do que a soma de seus componentes individuais.

Vantagens das redes neurais sobre as técnicas convencionais

Espera-se que as redes neurais se auto treinem de maneira bastante eficiente no caso de problemas em que os relacionamentos são dinâmicos ou não lineares. Essa capacidade é aprimorada ainda mais se os padrões de dados internos forem fortes. Também depende até certo ponto da própria aplicação.

As redes neurais são uma alternativa analítica às técnicas padrão um tanto limitadas a ideias como suposições estritas de linearidade, normalidade e independência variável.

A capacidade das redes neurais de examinar uma variedade de relacionamentos torna mais fácil para o usuário modelar rapidamente fenômenos que podem ter sido bastante difíceis, ou mesmo impossíveis, de compreender de outra forma.

Limitações das Redes Neurais

Existem alguns problemas específicos dos quais os usuários em potencial devem estar cientes, particularmente em conexão com redes neurais de retropropagação e alguns outros tipos de redes.

Processo não é explicável. As redes neurais de retropropagação têm sido referidas como a caixa preta definitiva. Além de delinear a arquitetura geral e possivelmente usar alguns números aleatórios como propagação, tudo o que o usuário precisa fazer é fornecer a entrada, manter um treinamento e receber a saída. Alguns pacotes de software permitem que os usuários experimentem o progresso da rede ao longo do tempo. A própria aprendizagem nestes casos progride por conta própria.

A saída final é uma rede treinada (modelo) que é autônoma no sentido de que não fornece equações ou coeficientes que definem uma relação além de sua própria matemática interna. A própria rede é a equação final do relacionamento.

Mais lento para treinar. As redes de retropropagação tendem a ser mais lentas para treinar do que outros tipos de redes e, às vezes, exigem milhares de iterações. Isso porque a unidade central de processamento da máquina deve calcular a função de cada nó e conexão separadamente. Isso pode ser muito complicado e causar problemas em redes muito grandes que contêm uma grande quantidade de dados. No entanto, as máquinas contemporâneas funcionam rápido o suficiente para contornar a maioria desses problema.

Aplicações de Redes Neurais

As redes neurais são aproximadores universais. Eles funcionam melhor se o sistema tiver uma alta tolerância a erros.

As redes neurais são úteis:

  • Para entender associações ou descobrir elementos regulares dentro de um conjunto de padrões
  • Onde os dados são enormes, seja em volume ou na diversidade de parâmetros
  • As relações entre as variáveis ​​são vagamente compreendidas
  • Onde as abordagens convencionais falham na descrição de relacionamentos

Considerações finais

A inteligência artificial é a tecnologia mais poderosa disponível para a humanidade atualmente, e o maior erro que qualquer um pode cometer é ignorá-la. E esse belo paradigma aqui apresentado sobre redes neurais artificiais profundas, inspirado na biologia é um dos desenvolvimentos tecnológicos mais elegantes de nossa era.

Se gostou, por favor, compartilhe! Um abraço, @neigrando

Referências

Livros recomendados

  • AI Ladder – Acelerate your Journey to AI, by Rob Thomas & Paul Zikopoulos, 2020
  • Artificial Intelligence – a modern approach, by Stuart Russel & Peter Novic, 2020

Artigos relacionados