Guia prático para dominar Machine Learning

Faculdade de Educação Tecnológica do Estado do Rio de Janeiro

Guia prático para dominar Machine Learning

Sua aplicação pode provocar um impacto profundo em seu negócio, mas o hype semeia confusão. Confira aqui como a tecnologia pode ser usada hoje

Por: Mary Branscombe

O Machine Learning está transformando negócios. Mas ainda que a tecnologia avance, as empresas continuam lutando para tirar proveito dela, em grande parte porque não entendem como implementar estrategicamente Machine Learning no atendimento de objetivos de negócios. O Hype não ajudou, semeando confusão sobre o que é exatamente a tecnologia, o quão bem funciona e o que pode fazer para sua empresa.

Aqui, nós fornecemos um olhar claro sobre o aprendizado da máquina e como pode ser usado hoje.

O que é?
Machine Learning é um subconjunto de Inteligência Artificial que permite que os sistemas aprendam e prevejam resultados sem programação explícita. Muitas vezes, é usado de forma intercambiável com o termo IA porque é a técnica de IA que teve o maior impacto no mundo real até agora, e é o que você provavelmente usará em sua empresa. Chatbots, recomendações de produtos, filtros de spam, carros autônomos e uma enorme variedade de outros sistemas aproveitam o Aprendizado de Máquinas, assim como “agentes inteligentes” como Siri e Cortana.

Em vez de escrever algoritmos e regras que tomem decisões diretamente, ou tentar programar um computador para “ser inteligente” usando conjuntos de regras, exceções e filtros, o Machine Learning ensina sistemas informáticos a tomar decisões aprendendo com grandes conjuntos de dados. Os sistemas baseados em regras rapidamente se tornam frágeis quando precisam explicar a complexidade do mundo real; A Aprendizagem Automática pode criar modelos que representam e generalizam padrões nos dados que você usa para treiná-lo, e pode usar esses modelos para interpretar e analisar novas informações.

O Aprendizado Automático da máquina é adequado para a classificação, que inclui a capacidade de reconhecer texto e objetos em imagens e vídeos, bem como encontrar padrões e associações  em dados ou segmentar dados em clusters (por exemplo, encontrar grupos de clientes). O Machine Learning também é adepto da previsão , como o cálculo da probabilidade de eventos ou resultados de previsão. E pode ser usado para gerar dados faltantes; por exemplo, a versão mais recente do CorelDRAW usa Machine Learning para interpolar o curso suave que você está tentando extrair de vários cursos difíceis que você faz com a caneta.

O coração do Machine Learning são os algoritmos. Alguns, como regressões, k-means clustering e suporte de máquinas vetoriais, estão em uso há décadas. A chave para o uso efetivo  está na combinação do algoritmo certo com o seu problema.

Redes Neurais
Uma Rede Neural é um algoritmo de Machine Learning construído em uma rede de nós interconectados que funcionam bem para tarefas como reconhecimento de padrões.

Não são um novo algoritmo, mas a disponibilidade de grandes conjuntos de dados e processamento mais poderoso (especialmente as GPUs, que podem lidar com grandes fluxos de dados em paralelo) as tornaram úteis na prática. Apesar do nome, as Redes Neurais são baseadas apenas vagamente em neurônios biológicos. Cada nó em uma rede neural possui conexões para outros nós que são acionados por entradas. Quando desencadeada, cada nó adiciona um peso à sua entrada para marcar a probabilidade de que ele faça ou não a função desse nodo. Os nós são organizados em camadas fixas tarvés das quais os dados fluem, ao contrário do cérebro, que cria, remove e reorganiza regularmente conexões de sinapse.

Deep Learning
O Deep Learning é um subconjunto do Machine Learning baseado em Redes Neurais profundas, que têm muitas camadas para realizar a aprendizagem em várias etapas. As chamadas Convolutional Deep Neural Networksgeralmente realizam o reconhecimento da imagem ao processar uma hierarquia de recursos em que cada camada procura objetos mais complicados. Por exemplo, a primeira camada de uma rede profunda que reconhece raças de cães pode ser treinada para encontrar a forma do cachorro em uma imagem, a segunda camada pode observar texturas como pele e dentes, com outras camadas reconhecendo ouvidos, olhos, caudas e outras características e o nível final que distingue as diferentes raças. Já as Recursive Deep Neural Networks são usadas ​​para reconhecimento de fala e processamento de linguagem natural, onde a seqüência e o contexto são importantes.

Existem muitos kits de ferramentas de aprendizado profundo de código aberto disponíveis que você pode usar para criar seus próprios sistemas. Theano , Torch e Caffe são escolhas populares, e o TensorFlow, do Google e o Microsoft Cognitive Toolkit permitem que você use vários servidores para criar sistemas mais poderosos com mais camadas em sua rede.

O Microsoft Distributed Machine Learning Toolkit colabora com vários desses kits de ferramentas de Deep Learning e e outras bibliotecas de Machine Learning, e tanto a AWS como a Azure oferecem máquinas virtuais com ferramentas de aprendizado profundas pré-instaladas.

Aprendizado de Máquinas na prática
Os resultados do Machine Learning são uma certeza percentual de que os dados que você está procurando correspondem ao que seu modelo está treinado para encontrar. Assim, uma Deep Learning treinada para identificar as emoções de fotografias e vídeos de rostos das pessoas pode marcar uma imagem como “97,6% de felicidade 0,1% tristeza 5,2% surpresa 0,5% neutro 0,2% raiva 0,3% desprezo 0,01% detesto 12% de medo”. ML gera probabilidades e incerteza, não resultados exatos.

O Probabilistic Machine Learning  usa o conceito de probabilidade para permitir que você realize a aprendizagem automática sem a escrita de algoritmos Em vez dos valores estabelecidos das variáveis ​​na programação padrão, algumas variáveis ​​na programação probabilística têm valores que se enquadram em um alcance conhecido e outros têm valores desconhecidos. Trate os dados que deseja entender como se fosse o resultado deste código e você pode trabalhar para trás para preencher o que esses valores desconhecidos deveriam ser para produzir esse resultado. Com menos codificação, você pode fazer mais prototipagem e experimentação. O Probabilistic Machine Learning também é mais fácil de depurar.

Esta é a técnica que o recurso Clutter no Outlook usa para filtrar mensagens que são menos propensas a serem interessantes para você com base nas mensagens que você leu, respondeu e excluiu no passado. Ele foi construído com Infer.NET, um framework .NET que você pode usar para construir seus próprios sistemas probabilísticos.

Já Computação Cognitiva é o termo que a IBM usa para suas ofertas do Watson, porque em 2011, quando uma versão anterior ganhou o Jeopardy, o termo IA não estava na moda; Ao longo das décadas em que foi trabalhado, a IA passou por períodos alternados de hype e fracasso.

O Watson não é uma única ferramenta. É uma mistura de modelos e APIs que você também pode obter de outros fornecedores, como Salesforce, Twilio, Google e Microsoft. Estes oferecem os chamados serviços “cognitivos”, como reconhecimento de imagem, incluindo reconhecimento facial, reconhecimento de fala (falante), compreensão de linguagem natural, análise de sentimentos e outras API de reconhecimento que se parecem com habilidades cognitivas humanas. Quer se trate da Watson ou dos Microsoft Cognitive Services, o termo cognitivo é realmente apenas uma marca de marketing para designar uma coleção de tecnologias (muito úteis). Você poderia usar essas APIs para criar um chatbot a partir de uma página de FAQ existente que pode responder a consultas de texto e também reconhecer fotos de produtos para fornecer as informações de suporte corretas ou usar fotos de etiquetas de prateleiras para verificar os níveis de estoque.

Muitas APIs “cognitivas” usam Deep Learning, mas você não precisa saber como elas foram construídas porque muitos funcionam como APIs REST que você chama de seu próprio aplicativo. Alguns permitem criar modelos personalizados a partir de seus próprios dados. O Salesforce Einstein possui um serviço de reconhecimento de imagem personalizado e as APIs Cognitivas da Microsoft permitem que você crie modelos personalizados para texto, fala, imagens e vídeo.

Isso é facilitado pela transferência de aprendizagem, que é menos uma técnica e mais um efeito colateral útil de redes profundas. Uma Rede Neural Profunda que foi treinada para fazer uma coisa, como traduzir entre inglês e mandarim, descobre uma segunda tarefa, como traduzir entre inglês e francês, de forma mais eficiente. Isso pode ser porque os números muito longos que representam, digamos, as relações matemáticas entre palavras como “bigs” e “larges” são até certo ponto comuns entre as linguas, mas nós realmente não sabemos.

A transferência de aprendizagem não é bem compreendida, mas pode permitir que você obtenha bons resultados de um conjunto de treinamento menor. O Microsoft Custom Vision Service usa transferência de aprendizagem para treinar um sistema que conheça uma imagem em apenas alguns minutos, usando 30 a 50 imagens por categoria, em vez de milhares, geralmente necessárias para obter resultados precisos.

Crie seu próprio sistema de Machine Learning
Se você não quer APIs pré-construídas, e você tem os dados para trabalhar, há uma enorme variedade de ferramentas criar sistemas de Machine Learning, desde scripts R e Python, até análises preditivas usando Spark e Hadoop, para ferramentas específicas da AI e estruturas.

Em vez de configurar sua própria infraestrutura, você pode usar serviços de Deep Learnig na nuvem para criar modelos de dados. Com os serviços em nuvem, você não precisa instalar uma variedade de ferramentas. Além disso, esses serviços desenvolvem mais conhecimentos necessários para obter resultados bem-sucedidos.

O Amazon Machine Learning oferece vários modelos de Machine Learning que você pode usar com dados armazenados em S3, Redshift ou R3, mas você não pode exportar os modelos e o tamanho do conjunto de treinamento é bastante limitado. O Azure ML Studio, da Microsoft, por sua vez, possui uma gama mais ampla de algoritmos, incluindo Deep Learning, além de pacotes R e Python, e uma interface gráfica de usuário para trabalhar com eles. Também oferece a opção de usar o Azure Batch para carregar periodicamente conjuntos de treinamento extremamente amplos, e você pode usar seus modelos treinados como APIs para seus próprios programas e serviços. Existem também recursos de aprendizado de máquina, como o reconhecimento de imagens incorporados em bancos de dados em nuvem, como o SQL Azure Data Lake, para que você possa fazer sua máquina aprendendo onde seus dados estão.

Aprendizagem supervisionada
Muitas técnicas de Machine Learning utilizam a aprendizagem supervisionada, em que uma função é derivada de dados de treinamento rotulados. Os desenvolvedores escolhem e rotulam um conjunto de dados de treinamento, colocam uma proporção desses dados para testes e marcam os resultados do sistema de Machine Learning para ajudá-lo a melhorar. O processo de treinamento pode ser complexo, e os resultados são muitas vezes probabilidades, com um sistema sendo, por exemplo, 30 por cento mais seguro de ter reconhecido um cachorro em uma imagem, 80 por cento seguro de que encontrado um gato, e talvez até com 2 por cento certeza de ter encontrado uma bicicleta. Os feedeback dos desenvolvedores iajudam o sistema definir a melhor a resposta no futuro.

É importante não treinar o sistema com precisão aos dados de treinamento; Isso é chamado de superposição e significa que o sistema não poderá generalizar para lidar com novas entradas. Se os dados mudam significativamente ao longo do tempo, os desenvolvedores precisarão treinar o sistema devido ao que alguns pesquisadores referem como “ML rot”.

Algoritmos de aprendizado de máquina – e quando usá-los
Se você já sabe quais são os rótulos de todos os itens do seu conjunto de dados, atribuir rótulos a novos exemplos é um problema de classificação. Se você está tentando prever um resultado como o preço de venda de uma casa com base em seu tamanho, isso é um problema de regressão porque o preço da casa é uma categoria contínua e não discreta. (Prever se uma casa irá vender por mais ou menos do que o preço pedido é um problema de classificação, porque estas são duas categorias distintas).

Se você não conhece todos os rótulos, não pode usá-los para treinamento; Em vez disso, você classifica os resultados e deixa o seu sistema criar regras que façam sentido, a partir de  respostas corretas ou erradas, no que é conhecido como aprendizagem não supervisionada. O algoritmo de ML não supervisionado mais comum é o clustering, que deriva a estrutura dos seus dados, observando as relações entre variáveis ​​nos dados. O sistema de recomendação de produtos da Amazon que diz o que as pessoas que compraram um item também tendem a comprar usa aprendizado não supervisionado.

Com o reinforcement learning, o sistema aprende como ver ao ver o que acontece. Você configura um conjunto claro de recompensas para que o sistema possa julgar o sucesso de suas ações. O aprendizado de reforço é adequado ao jogo porque há recompensas óbvias. O DeepMind AlphaGo do Google usou o reinforcement learning para aprender Go. O Project Malmo, da Microsoft, permite que os pesquisadores usem o Minecraft como um ambiente de aprendizagem de reforço. E um bot construído com o algoritmo de aprendizagem de reforço da OpenAI recentemente venceu vários jogadores de primeira linha no jogo Dota 2, da Valve .

A complexidade da criação de recompensas precisas e úteis limitou o uso da aprendizagem de reforço, mas a Microsoft vem usando uma forma específica de aprendizagem de reforço chamado contextual bandits (com base no conceito de multi-armed slot machine) para melhorar significativamente as taxas de clique na MSN. Esse sistema já está disponível no Microsoft Custom Decision Service API. A Microsoft também está usando um sistema de aprendizagem de reforço em um piloto onde os chatbots do serviço ao cliente monitoram o quão úteis são suas respostas automatizadas.

Combinando algoritmos de aprendizagem de máquinas para obter melhores resultados
Muitas vezes, é preciso mais de um método de Machine Learning para obter o melhor resultado. Os sistemas ensemble learning usam múltiplas técnicas de ML combinadas. Por exemplo, o sistema DeepMind, que bateu jogadores humanos experientes no Go, usa não apenas o aprendizado de reforço, mas também o aprendizado profundo e o aprendizado supervisionado para aprender com milhares de partidas gravadas entre jogadores humanos. Essa combinação às vezes é conhecida como aprendizagem semi-supervisionada.

Da mesma forma, o sistema de ML usado pelo Microsoft Kinect para reconhecer os movimentos humanos foi construído com uma combinação de um sistema discriminatório – no qual a Microsoft alugou um sistema de captura de movimento de Hollywood, extraiu a posição do esqueleto e rotulou as partes do corpo para classificar qual das várias posturas conhecidas em que estava – e um sistema generativo, que usou um modelo das características de cada postura para sintetizar milhares de imagens para dar ao sistema um conjunto de dados suficientemente grande para aprender.

A análise preditiva muitas vezes combina diferentes técnicas de ML. Um modelo pode marcar qual a probabilidade de um grupo de clientes estar em condições de churn, com outro modelo que preveja qual canal você deve usar para entrar em contato com cada pessoa com uma oferta que possa mantê-los como clientes.

Navegando pelas desvantagens do Machine Learning
Como os sistemas de aprendizado de máquinas não estão explicitamente programados para resolver problemas, é difícil saber como um sistema chegou aos seus resultados. Isso é conhecido como um problema de “caixa preta”, e pode ter consequências, especialmente em indústrias reguladas.

À medida que o Machine Learning se torna mais amplamente utilizado, você precisará explicar por que seus sistemas fazem o que fazem. Alguns mercados – habitação, decisões financeiras e cuidados de saúde – já possuem regulamentos que exigem que você dê explicações para as decisões. Você também pode querer transparência algorítmica para que você possa auditar o desempenho do sistema de Machine Learning. Os detalhes dos dados de treinamento e os algoritmos em uso não são suficientes. Existem muitas camadas de processamento não-linear que ocorrem dentro de uma Deep Learning, tornando muito difícil entender por que uma rede profunda está tomando uma decisão específica. Uma técnica comum é usar outro sistema de Machine Learning para descrever o comportamento do primeiro.

Você também precisa estar ciente dos perigos do viés algorítmico, como quando um sistema de Machine Learning reforça o viés em um conjunto de dados que associa homens com esportes e mulheres com tarefas domésticas porque todos os seus exemplos de atividades esportivas têm fotos de homens e todas as pessoas retratadas nas cozinhas são mulheres. Ou quando um sistema que correlaciona informações não médicas toma decisões que prejudicam as pessoas com uma determinada condição médica.

O Machine Learning será tão bom quanto os dados de treinamento que ele usa para construir seu modelo e os dados que ele processa, por isso é importante examinar os dados que você está usando. Sistema ML também não compreendem os dados ou os conceitos por trás deles como uma pessoa consegue fazer.

Há muitos problemas de reconhecimento e classificação que o aprendizado da máquina pode resolver de forma mais rápida e eficiente do que os humanos, mas, considerando o futuro previsível, Machine Learning deve ser considerado como um conjunto de ferramentas para apoiar as pessoas no trabalho em vez de substituí-las.

Fonte: CIO

Texto original:
http://cio.com.br/tecnologia/2018/07/21/guia-pratico-para-dominar-machine-learning