E ai, povão. Como estão? Hoje vamos continuar o papo sobre inteligência artificial! O assunto de hoje é sobre aprendizado de máquinas ou machine learning.
No último post sobre inteligência artificial, vimos como essa tecnologia já está presente em nosso dia-a-dia e como ela nos ajuda resolver problemas bem complexos. Por exemplo, atualmente as máquinas já alcançaram desempenhos superiores ao humano em reconhecimento de imagens, o que é bem útil para desenvolver sistemas que vão desde desbloquear o seu celular até diagnóstico de tumores. Máquinas também já conseguem superar humanos em jogos como xadrez, Go e Jeopardy. Além disso, empresas como Netflix, Youtube, Facebook e Google usam aprendizado de máquinas o tempo inteiro, seja para recomendar amigos nas redes sociais ou um filme no final de semana. Isso tudo só é possível graças ao poder do aprendizado de máquinas.
A ideia central do aprendizado de máquinas é ensinar ao computador como resolver um problema sem precisar programar explicitamente nenhuma regra. Para ficar mais fácil de entender, vamos com um exemplo. Imagine que você precisa ensinar ao computador como jogar Mario Bros. Bem, a primeira coisa que ele precisa aprender são os botões; qual botão apertar para pular, abaixar, como se movimentar na tela do jogo etc. Além disso, também precisamos ensinar qual o objetivo do jogo, no caso do Mario a recompensa final seria salvar a princesa Peaches.
Esse exemplo de jogar Mario é um caso bem simples pois existe um conjunto pequeno de regras que precisam ser seguidas. Mas e se o problema fosse algo do tipo “Traduza esse texto do Inglês para Polonês” ou “Qual dessas imagens de microscopia apresenta células cancerosas?”. Para essas tarefas não é tão fácil pensar em um conjunto de regras claras para ensinar ao computador. É bem possível que mesmo especialistas tenham dificuldades com tarefas específicas, principalmente aquelas que precisam de horas de prática e experiência. E é justamente aqui que computadores brilham!
No aprendizado de máquina, o computador aprende diretamente dos dados, ou seja, dos exemplos que você fornece! Fazendo um paralelo, isso seria o mesmo que ensinar o computador andar de bicicleta mostrando apenas outras pessoas andando, sem ensinar nada sobre como a bicicleta funciona, onde vão os pés, como subir na bicicleta, como manter equilíbrio etc. O mesmo se aplica à outras tarefas, seja dirigir um carro sozinho, identificar rostos em fotos ou diagnóstico de câncer através de imagens de biópsia. Quanto mais dados ou exemplos nós mostramos ao computador, maior a capacidade dele extrair padrões úteis para resolver um problema. Nesse sentido, o potencial dos computadores é ilimitado pois quanto mais potentes os computadores ficam, e quanto mais dados tempos à disposição, mais fácil ficar aprender.
A ideia aqui é: com exemplos suficientes, o computador pode encontrar padrões que são úteis para resolver um problema.
Tipos de aprendizado de máquina
Conforme vimos, os computadores aprendem através de dados sobre um problema. Dependendo do tipo de dados que o computador recebe, podemos classificar aprendizados de máquina em dois grandes grupos:
1) Aprendizado supervisionado: neste tipo, cada exemplo que o computador recebe vem junto com uma etiqueta dizendo o que ele representa. Por exemplo, podemos mostrar ao computador fotos de cachorros e anotar a raça em cada foto.
2) Aprendizado não-supervisionado: pode acontecer de termos dados sem uma etiqueta dizendo o que são. Imagine aqui que você recebeu uma caixa de fotos e uma tarefa: Se vira ai! O aprendizado não-supervisionado funciona nessa linha, o computador recebe exemplos sem uma etiqueta e mesmo assim pode achar algum tipo de padrão. Por exemplo separando as fotos de acordo com o que tem nelas.
Existem muitos outros tipos de aprendizado de máquina, como aprendizado por reforço, aprendizado semi-supervisionado e detecção de anomalias. Mas vamos ficar só nesses dois por enquanto.
E como podemos ensinar coisas ao computador?
O treinamento do computador para resolver um problema passa por um modelo. Não, não do Fashion Week, mas um modelo matemático. Mas não se preocupe, vamos manter uma distância segura de termos técnicos e fórmulas super complexas.
Podemos pensar em modelos de aprendizado de máquinas como programas de computador que aprenderam a resolver uma tarefa específica. No treinamento, o modelo aprende a reconhecer padrões úteis para resolver a tarefa. Durante esse processo, podemos observar o progresso do modelo usando alguma pontuação do desempenho, por exemplo o número de fotos em que ele acerta a raça do cachorro. Depois de treinar o modelo, ele pode ser usado para fazer previsões sobre dados que ele não viu antes. Se liga aqui no tipo de padrão que um modelo pode aprender:
Vamos de exemplo! Imagine que você treinou um modelo para diferenciar raças de cachorro através de fotos. Quando o treinamento acaba, você pode mostrar uma foto de um cachorro para o modelo e receber como resposta algo do tipo: “Isso é um pitbull e eu tenho 90% de chance de estar certo”. Essa etapa é também é chamada de predição ou inferência.
Na prática, não existe um método ou algoritmo universal que seja melhor em relação aos outros. Existem vários fatores que vão afetar a escolha do algoritmo, incluindo a familiaridade com o método, o tipo de problema em questão, a quantidade de dados e poder computacional disponível.
Provavelmente os algoritmos de treinamento mais badalados do momento são as redes neurais, as quais foram desenvolvidas com inspiração na forma como neurônios reais funcionam. Nas redes neurais, os dados passam por diversos “neurônios artificiais” (não são simulações de neurônios, esse nome é mais uma questão histórica) organizados em várias camadas. Cada camada aprende uma coisa diferente sobre os dados, por exemplo a primeira pode aprender a diferença entre orelhas de cachorros, a segunda camada pode aprender padrões nos pêlos e assim vai. No final, o modelo consegue juntar todas essas informações para fazer predições.
Na verdade, redes neurais são tão importantes que existe um subcampo de aprendizado de máquina que trabalha exclusivamente com elas: o Deep Learning. Mas isso é assunto para o próximo post.
O que pode dar errado no treinamento?
Dependendo do tipo de tarefa, dos dados disponíveis e do tipo de modelo, o treinamento pode ser tão rápido quanto os gols da Alemanha na copa. Mas em algumas situações, o treinamento pode dar tão errado que as predições do modelo não servem para nada. A gente pode pensar em dois grandes problemas que podem acontecer no treinamento:
1) Sobreajuste ou overfitting: nesse caso o modelo simplesmente decorou os padrões durante o treinamento e por isso não consegue extrapolar. Isso é basicamente o que acontece quando decoramos a matéria para uma prova, mas chegando lá as perguntas são totalmente diferentes.
2) Subajuste ou underfitting: quando isso ocorre significa que o modelo não aprendeu suficiente para fazer predições. Provavelmente ele precisa de mais tempo treinando ou de mais dados. Sabe quando você começa estudar faltando 1h para prova? É nessa linha.
Sobre e subajustes são problemas bem comuns no aprendizado de máquina e existe uma área de pesquisa destinada a encontrar soluçẽs para isso. Na prática, boa parte do treinamento é controlar sobre/subajustes para que o modelo consiga generalizar os padrões que aprendeu para dados que ele nunca viu antes.
É fácil começar em aprendizado de máquinas? Como faço?
Uma dúvida muito comum de quem tem interesse em aprendizado de máquinas é sobre o que é preciso para começar. Não é incomum ver pessoas que desistiram ao tentarem começar pela teoria. Realmente, a quantidade de fórmulas matemáticas e conhecimento de programação e do computador em si é de assustar qualquer um!
Falando agora diretamente com o leitor, eu comecei por curiosidade. Sofri bastante tentando entender a teoria e evitava entrar em tópicos mais avançados do aprendizado de máquinas. E pior: quando tentava aplicar a teoria que aprendi, não conseguia fazer o modelo funcionar do jeito que eu queria e isso era extremamente frustrante.
Depois de uns meses quebrando a cabeça, eu tive contato com pessoas da área que me disseram para deixar a teoria de lado por um tempo e focar na prática. Provavelmente o primeiro conselho que você vai receber de especialistas na área e em cursos é: treine modelos e mais modelos. Quanto mais modelos você treinar, mais fácil fica de entender os conceitos teóricos, mesmo que você não entenda toda matemática ou programação por trás! É claro que a teoria é importante pois ela te oferece uma base para trabalhar. Mas nada substitui a prática.
Atualmente o aprendizado de máquinas está bem mais acessível que anos atrás. Existem diversos cursos gratuitos disponíveis na internet e com recursos para você começar treinando modelos que funcionam muito bem logo no primeiro dia. Conforme você avança na prática, acaba percebendo que o conhecimento daquele exemplo com raças de cachorro se aplica também para problemas como diagnóstico de câncer, tradução de textos, geração automática de músicas e fotos, e muitos outros que estão dando o que falar na mídia.
A forma como o computador aprende é inspirada na nossa. Lembra que eu disse que o modelo aprende com dados sem programação explícita? O modelo não precisa aprender tudo sobre cachorros para identificar as raças. E na verdade nós, humanos, também não. Então, se querem uma dica para começar, a melhor que podemos dar é:
Imagem 5
Autor
Membro do Ciência Povão
Marcos V. Santana
Farmacêutico
Mestre e doutor em Ciências e Biotecnologia
Pós-doc na FIOCRUZ - Pesquisa com Inteligência artificial
Referências:
Um livro e curso gratuitos sobre Deep Learning: http://deeplearningbook.com.br/
Uma breve introdução ao aprendizado de máquinas: https://medium.com/@morvanabonin/uma-introdu%C3%A7%C3%A3o-a-machine-learning-2c70e915873a
Outra intro bem legal sobre machine learning: https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec3c471
Fast.ai é um curso 100% gratuito sobre deep learning. É necessário um conhecimento básico sobre programação em Python: https://course.fast.ai/
Curso da Alura sobre machine learning: https://www.alura.com.br/formacao-machine-learning
Na plataforma Kaggle você encontra vários desafios (alguns com prêmios em dinheiro) para problemas em machine learning. Um ótimo lugar para praticar! : https://www.kaggle.com/learn/intro-to-machine-learning
Gostaram? Continuem com a gente, pois estaremos sempre trazendo novidades para vocês. Nos sigam no instagram @cienciapovao. Aproveitem e compartilhem com amigos e familiares.
Comments