Deep Learning com Linguagem R – Parte 1

Deep Learning com Linguagem R – Parte 1

Seja você profissional ou entusiasta de Machine Learning e Big Data, com certeza deve estar acompanhando o frenesi em torno da Inteligência Artificial. Nunca estivemos tão próximos de fazer com que as máquinas sejam capazes de ter um comportamento similar ao comportamento humano, resolvendo os mais variados tipos de problemas. Todos os grandes players como Google, Facebook, IBM, Microsoft, Apple, Amazon e Nvidia já estão colhendo os frutos pelo trabalho pioneiro que estão realizando em pesquisa e desenvolvimento de Inteligência Artificial. E ainda estamos apenas no começo.

E no epicentro da rápida evolução em Inteligência Artificial estão as Deep Neural Networks, ou o termo que você deve ouvir com mais frequência, Deep Learning.

Deep Learning é uma das áreas mais quentes de Machine Learning na atualidade, que permite ensinar os computadores a fazer coisas que até então somente os seres humanos eram capazes de fazer. Deep Learning é o estado da arte em atividades de aprendizagem de máquina como visão computacional, reconhecimento de voz e processamento de linguagem natural. Deep Learning vem sendo usado nas mais diversas áreas, desde descoberta de doenças e novos medicamentos, passando por tradutores online de idiomas (cada vez mais precisos), até busca em documentos e assistentes virtuais. Mas lembre-se, tudo tem seu preço. O poder que Deep Learning oferece traz junto temas complexos, processamento computacional intensivo e muita, muita matemática. Mas aprender sobre Deep Learning pode ser a chance de construir algo totalmente novo, que transformará radicalmente a forma como os seres humanos trabalham, se divertem e se relacionam. Estamos prestes a dar um salto na evolução humana. Na Europa já está em discussão se robôs deverão ter direitos e deveres. Isso já está acontecendo e se você acha que ainda é ficção científica, é melhor prestar mais atenção, pois a Inteligência Artificial vai gerar transformações bastante significativas.

Pensando nisso, o blog Ciência e Dados começa a temporada 2017 com novo layout e uma sequência de 5 artigos 100% dedicados a Deep Learning utilizando a linguagem R para criar nossos modelos e realizar experimentos. Neste primeiro artigo, vamos definir o que é Deep Learning e discutir sobre os principais pacotes R para aprendizagem profunda.

Deep Learning

Deep Learning é o termo usado para descrever o processo de utilizar modelos de redes neurais de múltiplas camadas e que podem ser usados para uma incrível variedade de diferentes combinações de técnicas matemáticas. Esses modelos são incrivelmente poderosos, mas nossa habilidade de utilizar redes neurais de forma verdadeiramente eficiente tem sido um fenômeno relativamente novo, já que agora temos massivas quantidades de dados disponíveis (Big Data) e capacidade computacional que nos permite transformar os modelos de Deep Learning em uma técnica extremamente poderosa.

O diferencial do Deep Learning está no fato que o modelo criado tem mais flexibilidade em decidir como os dados serão usados para gerar o melhor resultado possível. O Cientista de Dados não precisa perder tanto tempo tentando descobrir que inputs devem ser incluídos, pois modelos de Deep Learning podem considerar todos os parâmetros e automaticamente determinar a melhor combinação dos valores de entrada. Isso torna o processo de tomada de decisão muito mais sofisticado, convertendo computadores e dispositivos em sistemas mais inteligentes do que nunca. Com Deep Learning podemos criar carros que dirigem por si próprios ou telefones que compreendem nossa voz, sistemas de tradução de idiomas, reconhecimento facial, análise preditiva, composição de músicas por algoritmos e uma infinidade de outras aplicações de Inteligência Artificial que estão se tornando viáveis graças ao Deep Learning.

Embora os conceitos matemáticos por trás do Deep Learning estejam entre nós há muitas décadas, bibliotecas de programação de computadores dedicadas a criar e treinar os modelos de Deep Learning surgiram apenas nos últimos anos (o que mostra como esta área ainda vai crescer e muito). Mas infelizmente muitas dessas bibliotecas possuem verdadeiros dilemas entre flexibilidade e possibilidade de uso em produção. Bibliotecas flexíveis são excelentes para pesquisa e desenvolvimento de novas arquiteturas, mas não estão prontas para uso em produção com aplicações críticas de sistemas web por exemplo. Por outro lado, existem bibliotecas velozes e eficientes para execução em ambiente paralelo e distribuído (e portanto excelentes alternativas para ambiente de produção), mas que são especializadas em apenas alguns tipos de redes neurais e possuem pouca flexibilidade. Isso nos deixa com um grande dilema entre qual biblioteca escolher para um projeto de Inteligência Artificial por exemplo.

Pacotes R para Deep Learning

Embora existam diversos pacotes para Machine Learning em R, existem poucos dedicados a Redes Neurais e Deep Learning. O pacote nnet é um pacote recomendado para construir redes neurais feed-forward com uma camada oculta. O pacote neuralnet também pode ser usado para criar modelos de redes neurais artificiais com uma camada oculta, mas pode treiná-los usando backpropagation e funções de ativação do neurônio. Finalmente, chegamos ao pacote RSNNS, que é um wrapper R do Simulador de Rede Neural de Stuttgart (SNNS). O SNNS foi originalmente escrito em C, mas foi portado para C++. O pacote RSNNS disponibiliza muitos componentes de modelos SNNS, tornando possível treinar uma grande variedade de modelos SNNS em R. Outros 3 importantes pacotes para Deep Learning em R:

Deepnet

O pacote deepnet fornece uma série de ferramentas para aprendizagem profunda em R. Especificamente, ele pode treinar RBMs (Restricted Boltzmann Machines) e usá-los como parte de DBNs (Deep Belief Networks) para gerar valores iniciais e treinar redes neurais profundas. O pacote deepnet também permite diferentes funções de ativação e o uso de dropout para regularização.

Darch

O pacote darch é baseado em código Matlab criado por George Hinton (considerado o pai do Deep Learning, Professor da Universidade de Toronto no Canadá e Consultor de Deep Learning do Google) para arquiteturas profundas. Ele pode treinar RBMs e DBNs juntamente com uma variedade de opções relacionadas a cada um. Uma limitação do pacote darch é que, por ser uma implementação R pura, o treinamento do modelo tende a ser lento.

H2O

O pacote h2o fornece uma interface para o software H2O. H2O é escrito em Java e é rápido e escalável. Oferece não só uma funcionalidade de aprendizagem profunda, mas também uma variedade de outros algoritmos e modelos de aprendizado de máquina e os resultados do modelo podem ser armazenados como código Java puro para permitir uma pontuação rápida, facilitando a implantação de modelos para resolver problemas do mundo real.

 

Caso alguns dos termos técnicos não sejam comuns a você, não se preocupe. Trataremos disso ao longo dos próximos artigos desta série.

 

Referências:

Geoffrey E. Hinton

nnet: Feed-Forward Neural Networks and Multinomial Log-Linear Models

neuralnet: Training of Neural Networks

RSNNS: Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS)

deepnet: deep learning toolkit in R

darch: Package for Deep Architectures and Restricted Boltzmann Machines

H2O

Curso Online – Machine Learning

 

David Matos

 

6 comments

  1. Fico feliz em ter encontrado este site e ler bons artigos em português sobre ciência de dados, especialmente sobre Deep Learning.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *