Como as maiores empresas do mundo projetam aplicativos com Machine Learning

 


ml10.png

Como Apple, Google, Microsoft, Facebook e Spotify projetam seus aplicativos utilizando aprendizado de máquina.

 

Existem muitas abordagens diferentes para a construção de aplicações baseadas em machine learning. E nada melhor do que aprender as bases e fundamentos com quem é tão bem sucedido quanto as maiores empresas de tecnologia do mundo.

O cientista de dados Daniel Bourke examinou as diretrizes que essas grandes empresas publicaram sobre o tema e é notável como há muitas sobreposições na forma como as aplicações são pensadas, o que cria um parâmetro interessante de boas práticas que podemos usar no dia a dia.

Diretrizes da Apple para Aprendizado de Máquina

As Diretrizes de Interface Humana da Apple para Aprendizado de Máquina começam com duas perguntas principais:

  1. Qual é a função do aprendizado de máquina em seu aplicativo?

  2. Quais são as entradas e saídas?

A partir dessas questões principais, seguem mais direcionamentos. Para a função de aprendizado de máquina em seu aplicativo, as novas questões são: é essencial (necessário) ou complementar (bom ter)? É privado ou público? É visível ou invisível? Dinâmico ou estático?

Para as entradas e saídas (analogia às entradas e saídas de um modelo de Machine Learning), é analisado o que uma pessoa colocará em seu sistema e o que seu sistema mostrará a ela.

Um usuário dá feedback explícito a um modelo? Por exemplo, eles dizem ao seu modelo se está certo ou errado? Ou seu sistema coleta feedback implícito (feedback que não exige que uma pessoa faça nenhum trabalho extra além de usar o aplicativo)?


Perguntas para pensar ao perguntar qual papel o aprendizado de máquina desempenha em seu aplicativo.

Perguntas para pensar ao perguntar qual papel o aprendizado de máquina desempenha em seu aplicativo.

Pesquisa de pessoas e inteligência artificial do Google (PAIR)

Os princípios de design do Google para IA podem ser encontrados no guia People and AI Research (PAIR).

Ele divide o design de um projeto de Inteligência Artificial em seis seções e cada uma dela disponibiliza uma planilha para praticar os aprendizados:

Necessidades do usuário + Definindo o sucesso

  • Onde está a interseção do que a IA é capaz de fazer e do que as pessoas que usam seu serviço exigem?

  • Você deve automatizar (remover uma tarefa dolorosa) ou melhorar com IA?Qual é o resultado ideal?

Coleta de dados + avaliação

  • Transforme os requisitos de uma pessoa em requisitos de dados (tudo começa com os dados);

  • De onde vêm seus dados? (é de origem responsável?);

  • Construa, ajuste e otimiz seu modelo (bons modelos começam com bons dados).

Modelos mentais (definindo expectativas)

  • O que uma pessoa acredita que seu sistema de ML pode alcançar?

Explicabilidade + confiança

  • Os sistemas de IA são baseados em probabilidade (e podem dar resultados estranhos), como isso pode ser explicado?

  • Que informações uma pessoa deve saber sobre como um modelo de ML tomou uma decisão? (níveis de confiança, “estamos mostrando isso porque você gostou daquilo…”)

Feedback + controle

  • Como uma pessoa pode dar feedback para ajudar a melhorar o seu sistema?

Erros + Falhas

  • O que é um “erro” e o que é uma “falha”? (um carro autônomo parando em um semáforo verde pode ser um erro, mas passar em um semáforo vermelho pode ser uma falha);

  • Os sistemas de ML não são perfeitos e seu sistema irá eventualmente falhar, o que você faz quando isso acontece?

Uma tendência que é notável depois de passar pelas diretrizes do Google é sobre definir as expectativas do que seu sistema é capaz de fazer. Se uma pessoa espera que seu sistema seja mágico (como o ML é frequentemente retratado), mas não está ciente de suas limitações, ela pode se decepcionar.

Diretrizes de design da Microsoft para interação entre humanos e IA

As diretrizes de design da Microsoft para interação entre humanos e IA abordam o problema em quatro estágios:

  • Inicialmente, o que uma pessoa deve saber ao usar seu sistema pela primeira vez;

  • Durante a interação, o que deve acontecer enquanto uma pessoa está usando seu serviço;

  • O que acontece quando o seu sistema apresenta erros

  • Como seu sistema melhora com o tempo?

Essas diretrizes da Microsoft nos faz “calçar os sapatos” dos usuários das nossas aplicações, em um exercício de empatia, para pensar de forma centrada neste usuário.

A tendência apresentada pela empresa segue o processo:
Problema → Criar solução (ML ou não) → Definir expectativas → Permitir feedback → Ter um mecanismo para quando estiver errado → Melhorar com o tempo (voltar ao início).


Diretrizes da Microsoft para interação humano-IA, desde os estágios iniciais até o que fazer enquanto uma pessoa interage com seu sistema de aprendizado de máquina ao longo do tempo.

Diretrizes da Microsoft para interação humano-IA, desde os estágios iniciais até o que fazer enquanto uma pessoa interage com seu sistema de aprendizado de máquina ao longo do tempo.

Guia do Facebook para aprendizado de máquina

Embora os recursos anteriores tenham adotado a abordagem de um sistema geral de ML, o guia de campo para aprendizado de máquina do Facebook se concentra mais no lado da modelagem das coisas.

Em uma série de vídeos, o projeto de modelagem de aprendizado de máquina é dividido em seis partes:

  • Definição do problema – que problema você está tentando resolver?

  • Dados – quais dados você possui?

  • Avaliação – o que define o sucesso?

  • Recursos – quais recursos dos dados se alinham melhor com sua medida de sucesso?

  • Modelo – qual modelo melhor se adapta ao problema e aos dados que você possui?

  • Experimentação – como você pode iterar e melhorar as etapas anteriores?

À medida que o lado da modelagem das coisas no aprendizado de máquina fica mais acessível (graças a modelos pré-treinados, bases de código existentes, etc.), é importante ter em mente todas as outras partes do aprendizado de máquina.

Os 3 princípios do Spotify para projetar produtos movidos a ML

O Spotify compartilha os seus três princípios para projetar produtos baseados em Machine Learning, que o ajuda a construir um serviço que fornece música a mais de 250 milhões de usuários em todo o mundo:

Princípio 1: Identifique o atrito e automatize-o

Qualquer lugar em que uma pessoa se esforce para alcançar seus objetivos enquanto usa seu serviço pode ser considerado atrito. Imagine uma pessoa procurando por novas músicas no Spotify, mas não consegue encontrar nada que atenda a seus gostos. Fazer isso pode prejudicar a experiência de alguém.

O Spotify percebeu isso e usou sistemas de recomendação baseados em aprendizado de máquina para criar o Discover Weekly (o que estou ouvindo no momento), uma lista de reprodução que se atualiza com novas músicas todas as semanas.

Princípio 2: Faça as perguntas certas

Se você não souber perguntar, pode acabar projetando um produto na direção errada. Assim como muitas das outras etapas da diretriz acima desafiam você a pensar a partir da pessoa que usa o ponto de vista do seu serviço, o objetivo aqui é fazer as perguntas certas para descobrir quais problemas seus clientes encontram e checar se é possível resolvê-los usando Machine Learning.

Princípio 3: Vá ao manual antes de se tornar mágico

Encontrou uma fonte de atrito? Você pode resolver isso sem aprendizado de máquina? Que tal começar com uma heurística (uma ideia de como as coisas deveriam funcionar)?

Por exemplo, se você fosse o Spotify e estivesse tentando construir uma playlist de músicas novas em que alguém estivesse interessado, como você classifica algo como novo?

Sua heurística inicial poderia ser qualquer coisa com mais de 30 dias e não seria classificada como nova. Depois de testar várias heurísticas e hipóteses (um processo manual), você pode revisar novamente se o aprendizado de máquina pode ou não ajudar. E por causa de seus experimentos, você o faria de um ponto de vista muito bem informado.

Esta citação, apresentada no guia do Spotify, ilustra bem o mindset a ser utilizado aqui:

 

“A inovação de produto não é sobre novos produtos que resolvem novos problemas. A inovação de produto envolve novos produtos que resolvem problemas existentes melhor do que os que estão resolvendo atualmente”, Joshua Porter.

 

Aprendendo na prática

As orientações que trouxemos aqui são sobre como pensar a construção de sistemas movidos a ML. Mas eles não mostram necessariamente as ferramentas ou como fazer.

Por isso pinçamos essas dicas do engenheiro de ML australiano Daniel Bourke e trouxemos recursos extras recomendados para preencher as lacunas práticas das diretrizes das Big Techs.

A dica é consumir os conteúdos aos poucos, enquanto coloca em prática trabalhando em sua aplicação construindo seu próprio projeto baseado em ML:

Práticas recomendadas de engenharia para aprendizado de máquina (Software Engineering 4 Machine Learning) – um guia completo no desenvolvimento de sistemas de software com componentes de aprendizado de máquina.

Livro de Engenharia de Aprendizado de Máquina de Andriy Burkov – uma obra de referência para muitas das diretrizes e etapas discutidas acima

CS329s: Machine Learning System Design – um curso completo de Stanford que cobre todas as etapas necessárias para projetar um sistema baseado em aprendizado de máquina, com aulas ministradas por engenheiros de muitas empresas diferentes.

Full Stack Deep Learning – o aprendizado de máquina não para depois que um modelo é e ele é uma pequena parte de todo o sistema. Full Stack Deep Learning apresenta muitas das etapas em torno da construção de modelos, como armazenamento de dados, manipulação de dados, controle de versão de dados implantação de modelo, bem como diferentes ferramentas para implementá-los.

Feito com currículo ML MLOps – MLOps = operações de aprendizado de máquina. Feito com ML MLOps é feito em estilo de aprendizado, “aqui está como eu construiria um serviço baseado em ML e como você também pode fazer”.