Intro à Inteligência Artificial — Parte 2
“Em um mundo propriamente educado e automatizado, as máquinas talvez provem ser a verdadeira influência humanizada. Pode ser que as máquinas irão fazer o trabalho que faz a vida possível e que os seres humanos vão fazer todas as outras coisas que fazem da vida agradável e valer a pena” -
Isaac Asimov (O autor de “Eu robô”), Robot Visions.
No último post falamos um pouco sobre Backpropagation e como essa teoria levou a avanços monumentais em Machine Learning.
Essa imagem da uma noção melhor sobre como a Inteligência artificial é estruturada como ciência.
Dentro dessa área existem outras duas chamadas Machine Learning e Deep Learning. Sendo que a última está dentro de machine learning.
Hoje vamos focar unicamente em Deep Learning.
Esses são os autores considerados mais importantes nessa área. Pela aplicação de Backpropagation em Redes Neurais, pela invenção de Convolutional Neural Networks e muito mais..
O primeiro paper importante, esse que já mostrei no último post fala sobre como usar cálculo diferencial para criar uma rede neural que aprende à partir dos erros que comete.
Quando é verificado o erro, automaticamente o programa se treina de novo até reduzir mais e mais a curva de erro.
A equação acima calcula a função que determina a curva de erro.
Essa curva é de extrema importância por que ela que define se o seu programa de inteligência artificial é eficiente ou não.
E em vários artigos que fazem review dos estudos nessa área, eles comparam o AUC de cada Pesquisa para determinar a melhor.
Sendo que o ROC(Receiving operating caracteristic) é a linha em azul escuro e a AUC(Area under curve) em Azul claro.
Vamos falar sobre elas com mais detalhes depois em outro post.
Esse paper, que se você notar têm 2 dos nomes presentes no começo desse post, o de LeCun e Bengio.
Eles usam nesse artigo Convolutional Neural Networks para reconhecer digitos, isso em 1998.
Essa rede tem 5 camadas sem contar a de Input, essas camadas vão mapear partes da imagem e juntar o quebra cabeça no final, o foco é fazer o computador reconhecer e classificar essas imagens.
Por causa de ser uma integração de todas as camadas verificando a forma dessas imagens, ela é chamada de Convolutional (Convolução).
No momento da pesquisa esse método já estava sendo usado em diversos bancos dos Estados Unidos para ler a assinatura de cheques, isso em 1998 gente…
É como eu disse no post passado, Inteligência artificial não é um assunto tão novo quanto parece.
A imagem acima mostra o programa reconhecendo os caracteres.
O código da Lenet-5 é open source e pode ser encontrado no github, esse foi escrito em TensorFlow.
Essa é parte do código do modelo que no caso é CNN(Convolutional Neural Networks).
Antes de usá-lo você deve instalar tensorflow no seu linux usando:
- pip install tensorflow
Existem várias tentativas de mostrar que Deep Learning em diversos aspectos pode explicar como o nosso cérebro aprende biologicamente.
Reconhecendo naturalmente padrões visuais e sonoros entre outros desde o nascimento e se treinando através de algo que seja parecido com Back-propagation.
Para fazer backpropagation você deve calcular a função de custo (que mede a performance do seu programa ) de cada Weight na sua rede.
Isso vai criar um loop de aprendizado em que cada vez que o programa erra os weights são atualizados e isso várias vezes até ele começar a acertar.
Embora seja possível provar que o cérebro calcula os erros cometidos, dizer que as sinaśes em si mudam baseadas nos erros é meio complicado.
Embora que em Deep Learning e Machine Learning é isso que faz o programa funcionar.
Resumindo essa palestra dada por Blake Aaron Richard na Universidade de Toronto no Canadá.
O cérebro não se comporta como os algoritimos usados em machine learning que citamos, ele não atualiza as sinapses baseadas nos erros nem usa backpropagation da forma que esses programas usam.
Mas o autor demonstrou que usando um modelo baseado em spike-timing based Plasticity, que é uma teoria que descreve como partes do cérebro guardam informação e a aprendem.
Isso daria base para o conceito de que o nosso cérebro consegue fazer backpropagation e forward propagation ao mesmo tempo.
O paper acima descreve essa teoria com muito mais detalhes.
Basicamente essa se essa teoria estiver correta, seria uma base melhor para desenvolver algoritimos de Machine Learning mais próximos do funcionamento do nosso cérebro.
Embora que esse tema é ainda bem difícil e faltam muitas questões a serem resolvidas sobre a forma que essas conexões neurais funcionam na nossa mente.
Esse repositório no github mostra com detalhes como usar esse modelo e como ele funciona.
O autor usa as libs Pytorch (Lib de machine learning) e Matplotlib (Para visualização dos gráficos).
No fim é a mesma conclusão da palestra supracitada, embora seja um modelo mais biológico que os demais, o resultado como algoritimo ainda não é mais eficiente que os outros, ainda!
Agora, vamos para uma parte mais prática sobre para que serve Deep Learning.
Na lista acima:
- Reconhecimento de voz
- Reconhecimento de objetos
- Detecção de objetos
- Para descobrir novos antibióticos
- Análise de genes
Essa lista da uma abrangência maior, quero ressaltar principalmente a parte de Healthcare (Na área da saúde) que é a que vamos focar até o fim desse post.
O Youtube, Google, facebook, Amazon, a maioria das grandes empresas usam Machine Learning de uma forma ou outra.
Mas essa página acima da Netflix mostra alguns usos práticos que a empresa vêm usando para a recomendação de filmes e séries na plataforma.
Eles explicam como o algoritimo escolhe um poster diferente de séries e filmes dependendo do gosto que a pessoa vêm demonstrando interesse nas coisas que ela assiste.
Eles teorizam se isso realmente funciona, eu particularmente não quis assistir diversos filmes por causa da capa, mas quando finalmente assisti, falei tipo: “ Como assim… o filme é bom!”
Acima têm 2 perfis de pessoas, as que assistem mais comédia e as que gostam mais de romance, baseado nesses dados a imagem A ou B p ara o filme Gênio Indomável é escolhida. Esse é um ótimo filme por sinal.
Eu por exemplo prefiro a imagem A, eu fico mais inclinado a clicar, mesmo não gostando de romance.
Nessa página estão diversos artigos escritos pela netflix sobre o uso de Machine Learning na sua Plataforma, e especificamente sobre Deep Learning para recomendação de Séries e filmes.
Te recomendo dar uma olhada.
O artigo acima é lindo sinceramente. Finalmente um paper que vem com o link do código no github.
A maioria dos papers na biomedicina e medicina não divulgam o código no github, o que nos deixa só com o pseudo-código na maioria das vezes.
O objetivo desse artigo era criar um programa que pudesse identificar através dos genes da pessoa a possibilidade de ela desenvolver câncer, somente 12 tipos nesse caso.
Lembra da curva que vimos no começo? a ROC e a AUC? Elas determinam a performance do programa.
Veja que esse gráfico mostra a precisão em cada um dos 12 câncers usados na pesquisa, variando de 70% até praticamente 100% de acuracidade.
Vamos dar uma espiada no programa.
Ele tem 3 camadas ao todo, as outras duas são a de entrada (dados do database de genomas) e a saída (que mostra o resultado.)
Na função acima da para ver a criação de camada dessa Rede usando tensorflow.
E alguns conceitos como Cross Entropy e GradientDescent que vamos explicar em outro post.
Nessa parte temos alguns parâmetros escolhidos no programa, e o banco de dados presente no repositório sendo lido.
E por fim um for loop dizendo para treinar o programa x vezes usando o banco de dados de genomas.
O banco de dados acima, foi o usado como entrada(Input) para treinar o algoritimo.
Foram usados 6083 configurações gênomicas para treinar o programa.
É claro que não existem só 12 tipos de câncer existem muito mais. Mas essa pesquisa mostra que se é possível detectar essas doenças através do sequenciamento genético, mais pesquisa em Deep Learning aumentaria as chances de detecção de câncer em pacientes do mundo todo.
O que poderia prevenir fatalidades e realmente salvar vidas. Machine Learning têm sido usado na saúde há mais de 20 anos, mas parece que cada vez mais vêm achando espaço nesse meio.
Se você curtiu o isso, sobre Deep Learning na Medicina, te recomendo os artigos da Nature, dá pra ter uma noção com alta qualidade nesse assunto.
Fontes:
- Yann LeCun, YoshuaBengio&Geoffrey Hinton Nature521,436–444 (28 May 2015),
- Learning representations by backpropagating errors. Institute for Cognitive Science, University of California.
- ROC and AUC in R. StatQuest with Josh Starmer
- Object Recognition with Gradient-Based Learning. AT&T Shannon Lab.
- Lenet-5-tensorflow. Repositório no Github.
- A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way. Towards Data Science.
- A History of Machine Learning and Deep Learning. Import.io
- Richards, Aaron.Deep Learning in the Brain. University of Toronto.
- Spiking Neural Network (SNN) with PyTorch : towards bridging the gap between deep learning and the human brain. Github
- Spike-timing dependent plasticity. J. Sj ̈ostr ̈om and W. GerstnerScholarpedia, 5(2):1362 (2010)
- Unsupervised Learning with Spike-Timing Dependent Plasticity. Agi.io
- Marina Chatterjee. Top 20 Applications of Deep Learning in 2020 Across Industries.
- Pavel Surmenok. Contextual Bandits and Reinforcement Learning. Towards Data Science.
- Machine Learning, Netflix Research.
- Identification of 12 cancer types through genome deep learning. Nature Research.
- Genome-Deep-Learning. Github.
- Genomic data Commons data Portal. National Cancer Institute.
Originally published at https://www.linkedin.com.