Dismistificando Deep Learning
Leandro Romualdo
Short BIO
www.linkedin.com/in/leandroromualdo
https://twitter.com/Leandro_Romuald
http://www.datascienceinstitute.com.br/
leandroromualdosilva@gmail.com
Agenda
Deep Learning
Redes Neurais
Frameworks
Demo TensorFlow
Onde Aprender
Perguntas
Deep Learning
Área de pesquisa em machine learning com objetivo de aproximar
machine learning de Inteligência artificial.
Uma estrutura de Deep Learning é uma arquitetura de vários niveis
Composta de unidades simples e todas sujeitas a treinamento, muitas
possuem transformações não lineares.
Cada camada tranforma sua entrada para melhorar suas
propriedades
Seleciona e amplifica apenas aspectos relevantes
DeepLearning
https://blogs-images.forbes.com/louiscolumbus/files/2017/08/hype-cycle-for-emerging-
technologies-2017.jpg
Deep Learning
https://www.nextbigfuture.com/2016/03/how-scale-is-enabling-deep-learning.html
Deep Learning
https://www.nextbigfuture.com/2016/03/how-scale-is-enabling-deep-learning.html
Processamento com GPU
• Plataforma de computação paralela, que permite ganhos
significativos de performance usando unidade de processamento
gráfico (GPU).
• Surgimento no final da década de 90
• Antigamente utilizava linguagem de baixo nível (ex. OpenGL)
• Em 2006 surgiu a CUDA
• Cuda ToolKit suporta linguagens C, C++, Python e Fortran
CUDA
http://www.nvidia.com.br/object/cuda_home_new_br.html
Deep Learning - Layers
https://devblogs.nvidia.com/parallelforall/accelerate-machine-learning-cudnn-deep-neural-
network-library/
Hierarquia das Layers para identificação de rosto.
Redes Neurais
• Arquiteturas que tem trazido muitos resultados nos dias atuais:
• Convolutional Neural Networks (CNN)
• Ideal para trabalhar com imagens (Dominante neste aspecto)
• Processa dados em forma de múltiplos arrays
• Camada de Input bidimensional
• Características analisadas em pixels da imagem
• Recurrent Neural Network (RNN)
• Faz uso de informações sequenciais, muito avançadas, pouca documentação
• Bons resultados em Processamento de linguagem natural.
• LSTM (Long Short term-memory), Ideal para trabalhar com dados sequenciais
Identificar próxima palavra de uma frase.
• Executa a mesma tarefa para cada elemento de uma sequência, tornando a
saída dependente dos cálculos anteriores.
NeurônioBiológico
• Cérebro humano possui cerca de 10 Bilhões de neurônios.
• 60 Trilhões de Sinapses
Redes Neurais
Arquitetura de uma rede Deep Feed Forward
Redes Neurais
Diversas arquiteturas disponíveis, Uma para tipo de problema
http://www.asimovinstitute.org/neural-network-zoo/
Arquitetura completa
Rede neural convolucional para reconhecimento visual
http://cs231n.stanford.edu/
• Escrita de novos episódios de GOT, rede LSTM link do projeto no
github aqui.
• Detecção de câncer por redes neurais convolucionais, leia mais aqui.
• Rede LSTM completa imagens faltando pedaços, link
Redes Neurais,
alguns exemplos
Frameworks
https://developer.nvidia.com/deep-learning-frameworks
Open Source Interface Plataform Written In Cuda Support
YES PYTHON, LINUX, C++ YES
MATLAB MAC OS X,
WINDOWS
YES PYTHON, LINUX, C++ YES
C++ WINDOWS,
MAC OS X
YES PYTHON LINUX, PYTHON YES
MAC OS X,
WINDOWS
YES PYTHON, LINUX, C++,PYTHON YES
R, LUA, C,C++ MAC OS X,
,JAVA, GO WINDOWS
YES PYTHON, LINUX, PYTHON YES
R MAC OS X,
WINDOWS
YES LUA,C,C++ LINUX, C, LUA YES
MAC OS X,
WINDOWS,
ANDROID,IOS
Exemplo de hoje
Biblioteca do Google
Documentação muito rica (Inglês)
Muitos exemplos na internet (Mnist, desafios do Kaggle, etc)
Baseado em Tensores e grafos
Comunidade ativa
CPU + GPU
Uso de GPU Necessita de CUDA ToolKit, cuDNN
Uso de GPU não necessita alterações no codigo
TensorFlow
• Biblioteca de computação numérica onde os dados fluem através dos
grafos
• Os dados são representados por arrays n-dimensionais chamados
tensores
• Os nodes do grafo representam operações matemáticas
• Programação diferenciada. Nada acontece até executar a sessão
Plataformas
Linguagens
Arquitetura
https://www.tensorflow.org/extend/architecture
Client, Inicia o fluxo de
Dados executando a sessão
Session.run() Faz a distribuição entre
As workers, para criação
De subgrafos.
Comunicação CPU + GPU
Utiliza API cudaMemcpyAsync.
E para comunicação multi GPU
Utiliza biblioteca NCCL.
tf.contrib.nccl
Contém mais de 200 operações
Padrão. Manipulações matemáticas
, manipulação de matriz, grande parte
Usa se beneficia de bibliotecas
Como Eigen::Tensor e cuDNN.
Estrutura de código
Criar constrante
Iniciar sessão
Executar operação
Import tensorflow as tf
# Cria Constant chamada Hello com a string “Hello, TensorFlow”
Hello = tf.constant(‘Hello, TensorFlow’)
# Cria sessão
Sess = tf.session()
# Executa a sessão e imprime resultado
Print(sess.run(hello))
TensorBoard
• Interface gráfica, mas não para treinar modelos de Deep Learning e Machine Learning
• Permite a visualização dos grafos
• Ideal para analisar camadas de redes neurais
• Visualização de até 36 Mil Nodes
Trabalhando com Imagens
• Transforma imagem em matriz multi-dimensional
• Ótica por:
• Quantidade de Pixels
• Canais de cores
• Largura
• Altura
• Cada camada é responsável por analisar uma parte da foto
• Borda
• Fundo
• Slyce para detecção de rostos e objetos
Trabalhando com Imagens
Demo
# Carrega Imagem
import matplotlib.image as mp_image
filename = "image.jpg"
input_image = mp_image.imread(filename)
# Dimensões
print ('input dim = {}'.format(input_image.ndim))
# Shape
print ('input shape = {}'.format(input_image.shape))
# Coleta dimensões
height, width, depth = input_image.shape
# Imprime a imagem
import matplotlib.pyplot as plt
plt.imshow(input_image)
plt.show()
import tensorflow as tf
x = tf.Variable(input_image, name = 'x')
model = tf.initialize_all_variables()
with tf.Session() as session:
x = tf.transpose(x, perm = [1,0,2])
session.run(model)
result=session.run(x)
plt.imshow(result)
plt.show()
MNIST
http://yann.lecun.com/exdb/mnist/
MNIST
DEMO
Imagenet
• 14197122 Imagens
• 1000+ classes
http://www.image-net.org/
TensorFlow para machine learning
Regressão linear
Clustering K-Means
KNN
Classificação
Etc
https://www.tensorflow.org/community/welcome/
ComunidadeTensorflow
TensorFlow - Playground
http://playground.tensorflow.org/
Onde aprender
https://www.nvidia.com/en-us/deep-learning-ai/education/
Deep Learning Institute - NVidia
Kaggle - Kernels
https://www.kaggle.com/kernels
Perguntas
Obrigado
Links
• https://www.infoq.com/br/articles/livro-mit-deep-learning
• http://www.convergenciadigital.com.br/cgi/cgilua.exe/sys/start.htm?UserActiveT
emplate=site&infoid=41957&sid=15
• http://conteudo.icmc.usp.br/pessoas/andre/research/neural/
• https://pt.wikipedia.org/wiki/Rede_neural_artificial
• http://www.datasciencecentral.com/profiles/blogs/end-to-end-deep-
learning?utm_content=buffer3af33&utm_medium=social&utm_source=linkedin.
com&utm_campaign=buffer
• http://aimotion.blogspot.com.br/2008/12/funes-de-ativao-para-redes-
neurais.html
• http://www.datasciencecentral.com/profiles/blogs/15-deep-learning-
tutorials?utm_content=bufferd5067&utm_medium=social&utm_source=linkedin.
com&utm_campaign=buffer
• https://tensorflow.rstudio.com/
• https://www.youtube.com/watch?v=Qk4SqF9FT-M

Dismistificando deep learning