Por que usar Machine Learning?
Além do argumento de ser uma tecnologia de ponta, adotada em larga escala por todas as indústrias, e uma habilidade em altíssima demanda para profissionais de diversas áreas, vamos tentar entender motivos para adotarmos (e aprendermos) Machine Learning.
Qualquer estudo de programação vai te apresentar primeiro a abordagem de programação tradicional. Onde nós temos um problema que precisamos resolver, e para resolver este problema temos que definir algumas regras, escrevemos as regras em formato de código e toda vez que nosso programa recebe novos dados, ele processa dentro dessas regras e nos traz respostas.
Vamos continuar com a analogia da nossa máquina para encontrar produtos defeituosos na linha de produção. E vamos supor que para saber se um produto é defeituoso ou não, vamos analisar apenas o peso dele e suas medidas (volume).
O processo para desenvolvimento do software para esta máquina seria mais ou menos o seguinte.
- Estudar o problema
- Escrever as regras
- Avaliar a performance do programa
- Analisar os erros
- Colocar em produção
É relativamente fácil definir as regras para isso. Podemos fazer condicionais para cada produto que passa pela máquina, se o peso for menor que o mínimo ou maior que o máximo aceitável, produto com defeito! Se as medidas ficarem fora do especificado, produto com defeito também!
Essas entradas de dados poderiam ser feitas de forma automatizada, com sensores e uma balança. Isso passaria pelo nosso programa e teríamos a resposta final. Fazemos alguns testes com produtos bons e ruins, e analisamos os erros. Se estiver com uma performance aceitável, colocamos para rodar em produção.
Mas e se quisermos ir além?
Se quisermos saber se o produto está com algum arranhão, algum amassado na superfície, se o rótulo está corretamente instalado, se há corrosão ou algum problema de pintura. Bom, não há forma melhor de analisar isso do que visualmente, certo? Para isso, usaríamos análise da imagem do produto. Visão Computacional, para sermos mais exatos.
Quando falamos de imagens, estamos falando de pixels. Cada pixel tem como ser representado pelo seu valor numérico através do seu código de cores RGB. Logo, as regras do nosso programa seriam de novo justamente condicionais para ver se as variáveis estariam dentro dos valores mínimos e máximos. Porém, imagine o tamanho da complexidade de se programar literalmente as condições de valores para cada pixel de uma imagem. Sem contar que um mínimo deslocamento do produto quebraria nosso programa.
Neste cenário mais complexo, a etapa dois da abordagem tradicional, escrever as regras, se tornaria inviável em determinado momento, se tornando o ponto mais crítico no desenvolvimento do sistema.
Para esse tipo de problema, seguimos uma abordagem de programação ligeiramente diferente. Utilizamos o Machine Learning.
Repare que invertemos a ordem ali. Agora nós entramos com os dados do produto a ser analisado e com as respostas, ou seja, nós fornecemos também os exemplos de produtos bons e produtos ruins, essa é a nossa experiência E.
Para ensinar essa máquina, precisamos fornecer uma série de exemplos de imagens com produtos bons e produtos ruins. Não temos como saber com antecedência o que exatamente o programa irá fazer, mas ele irá identificar padrões nos pixels e irá nos fornecer regras na saída. Este é o nosso Modelo de Machine Learning. Ele irá criar estas regras por conta própria, que na maioria das vezes são fórmulas matemáticas complexas demais para nós humanos entendermos, que irão classificar nosso produto com base nas imagens captadas pelas câmeras da nossa linha de montagem.
O processo de desenvolvimento nesta nova abordagem seria o seguinte.
- Estudar o problema
- Treinar um modelo de Machine Learning (com exemplos, ou melhor, dados)
- Avaliar a performance o programa
- Analisar os erros
- Colocar em produção
Esta abordagem torna o nosso programa bem mais simples, escalável e assertivo.
Usamos como exemplo o processo de Inspeção Visual, por meio de Visão Computacional. Mas o mesmo se aplica para outras aplicações como encontrar o caminho mais rápido entre dois pontos no seu GPS, reconhecimento de voz humana, tradução e geração de textos, reconhecimento facial, entre outros. Todas essas aplicações aprendem e melhoram a sua performance através de exemplos, encontrando padrões nos dados.
Vamos ver agora os tipos de sistemas de Machine Learning que normalmente encontramos.
7 comentários