Uma introdução a Machine Learning
Inteligência Artificial é a ciência de construir coisas inteligentes.
Inteligência humana exibida por máquinas.
Machine Learning é um subcampo de Inteligência Artificial (IA) e tem como principal abordagem a de aprender através da experiência para encontrar padrões em conjunto de dados.
Envolve ensinar, através de exemplos, um computador a reconhecer padrões em vez de programa-lo com regras específicas.
De acordo a definição de Tom M. Mitchell, cientista da computação e professor, “É dado a um programa de computador aprender com a experiência E em relação a uma classe de tarefas T e sua medida de desempenho P, sendo que seu desempenho nas tarefas T, conforme medido por P, melhora com a experiência E”
Vamos a um exemplo para tornar a definição acima mais clara, digamos que um programa de e-mail fique observando quais os e-mails que chegam e são marcados pelo usuário como spam ou não spam para aprender dessa forma filtrar melhor os próximos.
Teriamos então que, nosso T (Tarefas) seria a de classificar emails como spam ou não spam, nosso E (Experiência) seria a observação sobre a rotulação de e-mails como spam ou não spam e nosso P (Performance) seria a medida de e-mails corretamente classificados como spam ou não spam.
Sendo assim, nosso classificador aprenderia a filtrar melhor, reconhecendo os padrões de Spam ou não Spam, através da medida de erros que obtivesse e da experiência adquirida, quanto maior a experiência, mais chance de a performance ser melhor e ser mais assertivos quanto marcar corretamente um e-mail como Spam ou não Spam.
O exemplo a seguir é apenas uma representação bem simples do que seria um programa normal e suas regras e outro com Machine Learning.
Em Machine Learning há três principais classificações no que diz respeito aos algoritmos usados e o tipo de aprendizagem deles, são elas:
- Aprendizagem Supervisionada.
- Aprendizagem Não Supervisionada.
- Aprendizagem Por Reforço.
A escolha de qual das três usar vai depender do conjunto de dados que se tem e do problema que deseja resolver.
Em geral quase qualquer problema pode ser atribuído a uma das duas classificações: Aprendizagem Supervisionada e Aprendizagem Não Supervisionada.
Aprendizagem Supervisionada
A maioria das praticas de Machine Learning utiliza a aprendizagem supervisionada.
Na aprendizagem supervisionada é dado um conjunto de dados e sabemos como deve ser o resultado correto de retorno, visto que entre a entrada e a saída existe uma relação, ou seja, você tem as entrada (X) e as saídas (Y) e utiliza o algoritmo para a mapear a função de aprendizado que irá fazer a imagem da entrada (X) para a saída (Y).
Y =f(X)
O objetivo é que quando você tenha uma nova entrada (X) seja possível prever qual é a saída (Y), a partir do modelo produzido contendo regras aprendidas da função de aprendizado.
É chamado de Aprendizagem Supervisionada porque o processo de aprendizagem de um algoritmo em relação ao conjunto de dados pode ser acompanhado, como um professor acompanhando o processo de aprendizado. Sabe-se as respostas certas, o algoritmo faz as predições sobre o conjunto de dados e vamos corrigindo-o a medida que suas respostas não são de acordo o resultado esperado.
Os problemas que envolvem a Aprendizagem Supervisionada podem ser agrupados em problemas de classificação e/ou regressão.
- Classificação: em um problema de classificação a saída (Y) é um valor entre 0 e 1, onde a aproximação de 0 ou de 1 determinam o quão mais próximo se encontra o que se é avaliado, por exemplo, classificar um câncer se é maligno ou benigno, se um email é spam ou não é spam.
- Regressão: em uma regressão a saída (Y) é um valor real, exemplo o preço de uma casa em relação a preços de casas vistas e seu tamanho ou mesmo o valor de um carro de acordo ano e modelo.
Aprendizagem Não Supervisionada
Na Aprendizagem Não Supervisionada tem-se apenas a entrada (X) de dados e não a saída (Y) correspondente.
O objetivo nesse caso é modelar a estrutura ou distribuição subjacente dos dados para saber mais sobre os mesmos.
A Aprendizagem Não Supervisionada é chamada assim, porque não há um feedback com base nos resultados de previsão como no caso anterior, na verdade não se sabe a saída e não há um professor. Os algoritmos são deixados por seus próprios mecanismos para descobrir e apresentar a estrutura de dados, isso nos permite abordar problemas com pouca ou nenhuma ideia sobre os resultados.
Problemas de Aprendizagem Não Supervisionada podem ser agrupados em Agrupamento (Clustering) e Associação (Association)
- Agrupamento: em um problema de agrupamento deseja-se descobrir os grupos inerentes ao conjunto de dados, como agrupar clientes por comportamento de compras.
- Associação: em um problema de aprendizagem com regras associativas, deseja-se descobrir regras que descrevam grandes porções de seus dados, como pessoas que compram um determinado produto A, tendem a comprar o produto B.
Aprendizagem Por Reforço
Tentativa e erro, método de recompensa para os acertos é como podemos descrever a Aprendizagem Por Reforço. Sua abordagem é semelhante a de um bebê aprendendo coisas novas.
A máquina não conhece nada no começo. Ela então tentará algo e, de acordo com os resultados, decidirá se foi uma decisão boa ou ruim. Após inúmeras tentativas, se o modelo for bem aprendido, a máquina se tornará melhor e melhor e, eventualmente, apenas tomará boas decisões.
Na Aprendizagem por reforço um ambiente fornecerá dados aos quais um “agente” irá tomar decisões passo a passo de acordo eles. Esse ambiente irá responder com uma recompensa (que indicará se a ação foi boa ou não, estado da ação), essa recompensa determinará a alteração de regras de decisão feita pelo “agente” para atuar melhor no futuro. O objetivo a longo prazo da aprendizagem por reforço é maximizar as recompensas.
A dificuldade reside no fato de que as ações tomadas pelo agente podem mudar o ambiente, e o agente pode obter sua recompensa muito tempo depois de sua ação. Então, torna-se difícil saber quais ações levaram a qual recompensa.
Um bom exemplo de uso de aprendizagem por reforço são para ensinar novos comportamentos aos robôs, como no vídeo a seguir onde um robô está aprendendo a virar panquecas através da aprendizagem por reforço.
Esse post faz uma pequena introdução sobre as principais abordagens de Machine Learning, me refiro pequena porque dentro de cada uma delas existem várias funções e algoritmos há aprender e utilizar em um problema que se deseja resolver. Espero que possa ajudar, a quem tem curiosidade sobre a área, a entender melhor esse mundo fascinante em minha opinião.
Fontes de pesquisas:
https://www.coursera.org/learn/machine-learning
https://goo.gl/rnwc4k
http://www.cs.cmu.edu/~tom/
https://www.saagie.com/blog/machine-learning-pour-les-grand-meres
https://machinelearningmastery.com/master-machine-learning-algorithms/