Você está na página 1de 118

Redes Neurais Profundas

Aula 1

Prof. Anderson Soares


www.inf.ufg.br/~anderson
Instituto de Informtica
Universidade Federal de Gois
2
Sumrio
Introduo
Inspirao biolgica
Histrico
Neurnio artificial
Treinamento do neurnio
Implementaes
Recomendaes finais

3
Introduo

4
Redes Neurais Artificiais (RNA)
Robert Hecht-Nielsen, definiu rede neural como:

"...um sistema computacional feito a por uma srie de


elementos de processamentos simples, altamente
conectados, cuja informao processada a partir de
entradas de informao externas. "

5
Inspirao biolgica

6
A unidade bsica do crebro o neurnio.
Aproximadamente 86 bilhes
Aproximadamente 1010 de sinapses.

7
8
9
Os dentritos: recebem os estmulos transmitidos pelos
outros neurnios;
O corpo de neurnio, tambm chamado de soma:
responsvel por coletar e combinar informaes vindas
de outros neurnios;
Axnio: constitudo de uma fibra tubular que pode
alcanar at alguns metros, e responsvel por
transmitir os estmulos para outras clulas. 10
Em mdia, cada neurnio forma
entre mil e dez mil sinapses.

O crebro humano possui cerca de


1011 neurnios, e o nmero de
sinapses de mais de 1014,
possibilitando a formao de redes
muito complexas.

11
Crebro humano

12
Quadro comparativo entre
crebro e o computador
Parmetro Crebro Computador
Material Orgnico Metal e plstico
Velocidade Milisegundos Nanosegundos
Tipo de Processamento Paralelo Seqencial
Armazenamento Adaptativo Esttico
Controle de Processos Distribudo Centralizado
Nmero de elementos
1011 1014 105 106
processados

Eficincia energtica 10-16 J/op./seg. 10-6 J/op./seg

Ligaes entre elementos


10.000 <10
processados
13
Redes Neurais Artificiais (RNA)
Definies:

1. Tcnica inspirada no funcionamento


do crebro, onde neurnios artificiais,
conectados em rede, so capazes de
aprender e de generalizar.

2. Tcnica de aproximao de funes


por regresso no linear.
14
Capacidade de Generalizao
Isso significa que se a rede aprende a lidar
com um certo problema, e lhe apresentado
um similar, mas no exatamente o mesmo,
ela tende a reconhecer esse novo problema,
oferecendo a mesma soluo.

15
Aproximador de funes
A caracterstica mais significante de redes
neurais est em sua habilidade de
aproximar qualquer funo contnua ou no
contnua com um grau de correo
desejado. Esta habilidade das redes neurais
as tem tornado til para modelar sistemas
no lineares.

16
Mapeamento Entrada-Sada
para Aproximao de Funes

Objetivo da Aprendizagem: descobrir a funo


f() dado um nmero finito (desejvel
pequeno) de pares entrada-sada (x,d).

17
Teorema da Projeo Linear
Objetivo da aproximao de funes: em uma rea compacta
S do espao de entrada descrever uma funo f(x), pela
combinao de funes i(x) mais simples:
N
f (x, w ) = wi i (x )
i =1

onde wi so elementos reais do vetor w=[w1,,wN] tais que

f (x ) f (x, w ) <
e pode ser arbitrariamente pequeno.
A funo f (x, w ) chamada de aproximante e as funes
{i(x)} so chamadas de funes elementares.

18
Redes Neurais Artificiais (RNA)
Devido sua estrutura, as Redes Neurais
Artificiais so bastante efetivas no
aprendizado de padres a partir de dados:

no-lineares,
incompletos,
com rudo e at
compostos de exemplos contraditrios.

19
Histrico

20
Histrico (1943)
O neurofisiologista McCulloch e matemtico
Walter Pitts (1943), cujo trabalho fazia uma
analogia entre clulas vivas e o processo
eletrnico, simulando o comportamento do
neurnio natural, onde o neurnio possua
apenas uma sada, que era uma funo do
valor de suas diversas entradas.

21
O neurnio de McCulloch e Pitts
Consiste basicamente de
um neurnio que executa
uma funo lgica.
Os ns produzem somente
resultados binrios e as
conexes transmitem
exclusivamente zeros e
uns.
As redes so compostas
de conexes sem peso, de
tipos excitatrios e
inibitrios.
Cada unidade
caracterizada por um certo
limiar (threshold).
22
Histrico (1949)
O psiclogo Donald Hebb, demostrou que a
capacidade da aprendizagem em redes neurais
biolgicas vem da alterao da eficincia sinptica,
isto , a conexo somente reforada se tanto as
clulas pr-sinpticas quanto as ps-sinpticas
estiverem excitadas;

Hebb foi o primeiro a propor uma lei de


aprendizagem especfica para as sinpses dos
neurnios.
23
Histrico (1951)
Construo do primeiro neuro computador,
denominado Snark, por Mavin Minsky. O
Snark operava ajustando seus pesos
automaticamente.

24
Histrico (1958)
Rosemblatt (1958) mostrou em seu livro
(Principles of Neurodynamics) o modelo
dos "Perceptrons".

Nele, os neurnios (Perceptrons) eram


organizados em camada de entrada e
sada, onde os pesos das conexes
eram adaptados a fim de se atingir a
eficincia sinptica usada no
reconhecimento de caracteres.
25
Perceptron Clssico Rosenblatt (1958)
rea de
projeo respostas
rea de
associao

retina

conexes
locais conexes
aleatrias

26
associao

retina resposta

27
Histrico (1960)
Em 1960 surgiu a rede ADALINE
(ADAptative LInear NEtwork) e o MADALINE
(Many ADALINE), proposto por Widrow e
Hoff.

O ADALINE/MADALINE utilizou sadas


analgicas em uma arquitetura de trs
camadas.

28
Histrico (1969)
Foi constatado por Minsky & Papert que um
neurnio do tipo Perceptron s capaz de
resolver problemas com dados de classes
linearmente separveis.

29
Histrico (1960-1970)

Muitos historiadores desconsideram a


existncia de pesquisa nessa rea nos
anos 60 e 70.

30
Histrico (1982)

Retomada das pesquisas com a


publicao dos trabalhos do fsico e
bilogo Hopfield relatando a utilizao de
redes simtricas para otimizao, atravs
de um algoritmo de aprendizagem que
estabilizava uma rede binria simtrica
com realimentao.

31
Histrico (1986)
Rumelhart, Hinton e Williams introduziram
o poderoso mtodo de treinamento
denominado Backpropagation.

Rumelhart e McClelland escreveram o


livro Processamento Paralelo Distribudo:
Exploraes na Microestrutura do
Conhecimento.

32
Histrico (1988)
Broomhead e Lowe descreveram um
procedimento para o projeto de uma rede
neural (feedforward) usando funes de
base radial (Rede de Base Radial RBF).

33
Neurnio artificial

34
Componentes do neurnio artificial

As sinapses (entradas), com seus pesos


associados

A juno somadora; e

A funo de ativao.

35
entrada fixa wk0=bk (bias)
x0=+1 wk0

x1 wk1
funo
de ativao
sinais uk yk
x2 wk2
de f(uk)
entrada
sada
juno
aditiva
xm wkm Funo
degrau

pesos
sinpticos 36
Princpio de funcionamento
A operao de um neurnio artificial se resume em:
Sinais so apresentados entrada (x1 xm);
Cada sinal multiplicado por um peso que indica sua
influncia na sada da unidade (wk);
feita a soma ponderada dos sinais que produz um nvel
de atividade (uk);
A funo de ativao f(uk) tem a funo de limitar a sada e
introduzir no-linearidade ao modelo.
O bias bk tem o papel de aumentar ou diminuir a influncia
do valor das entradas.
possvel considerar o bias como uma entrada de valor
constante 1, multiplicado por um peso igual a bk.
Expresso matemtica do neurnio
artificial
Matematicamente a sada pode ser expressa por:

m
yk = f (uk ) = f wkj x j + bk
j =1
ou considerando o bias como entrada de valor x0=1 e
peso wk0=bk,

m
y k = f (u k ) = f wkj x j
j =0
38
Funes de ativao

39
Funo de ativao tangente hiperblica
e puk e puk f
f (u k ) = tanh( pu k ) = puk = p (1 u k2 ) > 0
e + e puk u k

(a) (b)
Tangente hiperblica (a) e sua derivada (b). 40
Funo de ativao logstica (sigmide)
e puk 1 f
f (u k ) = puk = = pu k (1 u k ) > 0
e + 1 1 + e puk u k

(a) (b)
Sigmide (a) e sua derivada (b). 41
Funo de ativao semi-linear
1 se puk 1

f (uk ) = puk se 0 < puk < 1
0 puk 0
se
p constante e positivo

(a) (b)
Funo de ativao semi-linear (a) e sua derivada (b). 42
Resposta do neurnio (sada)
Considerando um neurnio artificial com duas
entradas (x1, x2) e funo de ativao sigmide:

43
Separao Linear
Sabe-se que se formarmos uma combinao linear de duas
variveis, e igual-la a um nmero, ento os pontos no espao
bidimensional podem ser divididos em trs categorias:
a) pontos pertencentes linha com coordenadas tais que
w1. x1 + w2 . x2 = q
b) pontos em um lado da linha tem coordenadas tais que
w1 . x1 + w2 . x2 < q
c) pontos no outro lado da linha tem coordenadas tais que
w1 . x1 + w2 . x2 > q .

Nota: bias b = - q, pois:

y = f ( w1 x1 + w2 x 2 + w0 ), onde w0 = b
44
Exemplo x2

Pontos 2x1+3x2 posio 2.0 (0.0,2.0) (1.0,2.0)


(x1 , x2 )
(0.0, 2.0) 6 linha 1.5 linha
2 x1 + 3 x2 = 6
(1.0, 1.0) 5 abaixo
(1.0,1.0) (2.0,1.0)
(1.0, 2.0) 8 acima 1.0
(2.0, 0.0) 4 abaixo (2.0,0.66)
(2.0, 0.66) 6 linha 0.5
(2.0, 1.0) 7 acima (2.0,0.0)
0.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 x1

Posio dos pontos em funo da linha 2 x1 + 3 x2 = 6 de delimitao.


Linha: 2 x1 + 3 x2 = 6
Acima: 2 x1 + 3 x2 > 6 q=6
Abaixo: 2 x1 + 3 x2 < 6
45
w0=b
x0=+1 w0

f(u)
u y
x1 w1

x2 w2

f (u ) = 1 se u 0
y = f ( w1 x1 + w2 x 2 + w0 ), sendo
f (u ) = 0 se u < 0

Com os parmetros w0, w1 e w2, a funo f(u) separa o espao


de entradas em duas regies, usando uma linha reta dada por:
w1x1 + w2x2 + w0 = 0
46
Perceptron de limiar
O perceptron de limiar chamado separador
linear
Porque traa um plano entre os pontos de entrada
onde a sada zero ou um

47
Funes linearmente separveis (a) e (b)
Treinamento do neurnio

48
Exemplo: um neurnio para a funo AND
de 2 entradas

Iniciamos o neurnio com os pesos 0.5 e 0.6


para as duas entradas, e -0.3 para o limiar (w0).
Isso equivalente equao:

u = 0.5 x1 + 0.6 x2 - 0.3 x0

onde x0 a entrada estvel sempre igual a 1.

Assim, a sada y deve disparar quando u >= 0).

49
x1
w1
= 0.5

Funo de Sada y = (u)


w2 = 0.6 transferncia
x2 u = xi wi
(ativao)
w0 = -0.3 ( u)

pesos
x0
=1
entradas

x1 x2 u y
a sada 1 para os padres 01,
0 0 -0.3 0
10 e 11, enquanto desejamos que
0 1 0.3 1
1 0 0.2 1 a sada seja 1 somente para o
padro 11.
1 1 0.8 1
50
Seqncia de passos na aplicao do algoritmo
Inicio w1 = 0.5 w2 = 0.6 w0 = -0.3
Entrada 0 0 u = - 0.3 y = 0 correta
Entrada 0 1 u = 0.3 y = 1 incorreta
Correo dos pesos de 0.1 para baixo w1 = 0.5 w2 = 0.5 w0 = -0.4
Entrada 1 0 u = 0.1 y = 1 incorreta
Correo dos pesos de 0.1 para baixo w1 = 0.4 w2 = 0.5 w0 = -0.5
Entrada 1 1 u = 0.4 y = 1 correta
Entrada 0 0 u = - 0.5 y = 0 correta
Entrada 0 1 u= 0 y = 1 incorreta
Correo dos pesos de 0.1 para baixo w1 = 0.4 w2 = 0.4 w0 = -0.6
Entrada 1 0 u = - 0.2 y = 0 correta
Entrada 1 1 u = 0.2 y = 1 correta
Entrada 0 0 u = -0.6 y = 0 correta
Entrada 0 1 u = - 0.2 y = 0 correta
Entrada 1 0 u = - 0.2 y = 0 correta
Entrada 1 1 u = 0.2 y = 1 correta
Fim w1 = 0.4 w2 = 0.4 w0 = -0.6
51
Resultado do aprendizado

x1
w1
= 0.4

Funo de Sada y = (u)


w2 = 0.4 transferncia
x2 u = xi wi
(ativao)
w0 = -0.6 ( u)

pesos
x0
=1
entradas

52
x2

1.5

1.0 0,1 1,1

0.5

0,0 1,0 x1
0.0 0.5 1.0 1.5

A reta 0.4 x1 + 0.4 x2 - 0.6 = 0 separa os pontos 00, 01 e


10, do ponto 11.
53
Exemplo: um neurnio para a funo XOR

54
No caso do XOR, no existe uma nica reta que divide os
pontos (0,0) e (1,1) para um lado, e (0,1) e (1,0) do outro
lado. x2

(1,0) (1,1)

Funo xor:
(0,0) (1,0)
x1

y=0 y=1

Conclui-se que um neurnio do tipo Perceptron no


implementa uma funo ou-exclusivo (constatado por Minsky
& Papert, em 1969). 55
Algoritmo de treinamento do Perceptron

Para classificao padres de entrada como


pertencentes ou no a uma dada classe,
considere o conjunto de treinamento formado
por N amostras {x1,d1}, {x2,d2}, ..., {xN,dN},
onde xj o vetor de entradas e dj a sada desejada
(classe), que em notao vetorial tem-se {X,d},
onde:

X mxN
d 1 xN

56
57
Aprendizagem de Perceptrons
O algoritmo

Executa os exemplos de treinamento atravs da rede;

Ajusta os pesos depois de cada exemplo para reduzir o


erro;

Cada ciclo atravs dos exemplos chamado de poca;

As pocas so repetidas at que se alcance algum


critrio de parada.
Em geral, quando as mudanas nos pesos forem pequenas.

58
Se os padres de entrada forem
linearmente separveis, o algoritmo de
treinamento possui convergncia
garantida, i., tem capacidade para
encontrar um conjunto de pesos que
classifica corretamente os dados.

59
Perceptrons de limiar
Algoritmo de aprendizagem simples:

Adaptar o perceptron de limiar a qualquer conjunto de


treinamento linearmente separvel
Idia: ajustar os pesos da rede para minimizar alguma
medida de erro no conjunto de treinamento
Aprendizagem = busca de otimizao no espao de
pesos
Medida clssica de erros = soma dos erros quadrticos

60
Funo [w] = perceptron (max_it, E, , X,d)
inicializar w // para simplicidade, com zeros
inicializar b // para simplicidade, com zero
t1
while t < max_it & E > 0 do
for i from 1 to N do // para cada padro de entrada
yi f(w xi + b) // determinar a sada
ei di yi // determinar o erro
w w + ei xi // atualizar o vetor peso
b b + ei // atualizar o bias
end for
E sum (ei) //quantidade de erros
t t+1
end while
end procedure
61
62
Adaline
Na mesma poca em que Rosenblatt props o
Perceptron, Widrow e Hoff propuseram o algoritmo
dos mnimos quadrados (regra delta) para a rede
Adaline (Adaptive Linear Element), similar ao
Perceptron, porm com funo de ativao linear
ao invs de funo degrau.

O objetivo do algoritmo de treinamento minimizar


o erro quadrtico mdio (MSE) entre a sada de
rede e a sada desejada.

63
A soma dos erros quadrticos para um determinado
padro dada por:
n n
E = e = ( d i yi )
2
i
2

i =1 i =1

O gradiente de E, tambm denominado de ndice de


desempenho ou funo custo, fornece a direo de
crescimento mais rpido de E.

Portanto, a direo oposta ao gradiente de E a direo


de maior decrescimento.
64
Um gradiente a razo segundo a qual
uma quantidade varivel aumenta ou
diminui.

A derivada de uma funo y = f (x) a razo


entre os acrscimos infinitesimais da funo
y e da varivel x. A derivada portanto uma
taxa de variao instantnea

65

66

67
Taxa de aprendizado baixa

Valor inicial: -4
Taxa de aprend.: 0,001

68
Valor inicial: -4
Taxa de aprend.: 0,005

69
Valor inicial: 4
Taxa de aprend.: 0,005

70
Taxa de aprendizado alta

Valor inicial: -4
Taxa de aprend.: 0,05

71
Qual o valor da
derivada quando a
funo passa por um
valor mximo ou
mnimo ?
Quando a funo
passa por um
mximo ou por um
mnimo a tangente
paralela ao eixo
X. 72
A derivada primeira informa sobre a
declividade do grfico da funo

73
Adaline (cont.)

O erro pode ser reduzido ajustando-se os pesos da


rede de acordo com:

E
wIJ = wIJ
wIJ

onde wIJ o peso especfico para o neurnio ps-


sinptico I, da entrada J, e a taxa de aprendizagem.

74
Como wIJ influencia apenas o neurnio I,

E n

=
wIJ wIJ

i =1
( d i y i
2
) =
w
( d I y I ) 2

IJ

Como

y I = f (w I .x) = f ( wIj x j ) = wIj x j


j j

E y I
= 2(d I y I ) = 2(d I y I ) x J
wIJ wIJ
75
Regra delta
Portanto a regra delta para o Adaline resume-se em:

wIJ = wIJ + (d I y I ) x J
bI = bI + ( d I y I )
Em notao vetorial tem-se:

W = W + e i x i
T

b = b + e i
onde :
W oxm , x i mx1 , i = 1,..., N ,
ei ox1 , e b ox1 76
77
Nesse momento temos...

78
Nesse momento temos...

79
Nesse momento temos...

80
Nesse momento temos...

81
82
Implementao

83
Kit de sobrevivncia...

84
Kit de sobrevivncia...

85
8
6
Notebook
Um interface web iterative que combina cdigos,
equaes, textos e visualizaes
Suporta diversas linguagens: Python,
Haskell, Julia, R

Sem desculpas para compreender!

http://www.jupyter.org
Um shell iterative aberto no browser
Conhecido como Jupyter Notebook ou IPython Notebook
In a browser

A Choice of
Kernels http://
http://

88
http://

Cdigo
89
http://

Isto um notebook em Python Cdigo


90
http://

Cdigo
91
Invocando commandos para o shell do
SO

Comandos Shell

92
http://

e captura a sada 93
Comandos shell
http://

94
http://

http:// Imagens

95
Em um Browser Textos e
frmulas

Cdigo

http://
Comandos Shell

Imagens
http://

96
O que TensorFlow
Biblioteca Open source para computao
numrica usando data flow graphs
Originalmente desenvolvido pelo time
Google Brain Team para pesquisas de
machine learning e deep learning
Comparao de frameworks de
deep learning na Wikipedia
Escolha do TensorFlow
Python API
Google open source project no Github
Novembro de 2015
Ambientes heterogneos
Fcil execuo em mltiplas GPUs
Visualizao (TensorBoard)
Maior comunidade (> 10,000 commits)
Pq Tensorflow?

Gostamos pq Google?
Pq Tensorflow?
Dataflow Graph
TensorFlow usa grafo de fluxo de dados
unificado para representar a computao de
um algoritmo e os estados em que ele
opera
TensorFlow separa a definio de uma
estrutura de sua execuo
Dataflow Graph
Os ns no grafo representam operaes
matemticas, enquanto as arestas
representam vetores multidimensionais de
dados (tensors)
Dataflow Graph
import tensorflow as tf
a = tf.constant(2, name='a')
b = tf.constant(3, name='b')
A = tf.add(a, b, name =
'add')

A
Ns: operadores, variveis
e constantes
Arestas: tensors(vetores n-
d)
Dataflow Graph
Criar uma sesso,
avalia o grafo para
buscar o valor do n.

with tf.Session() as A
sess:
print sess.run(A)
Dataflow Graph

import tensorflow as tf

a = tf.placeholder("float")
b = tf.placeholder("float")
y = tf.mul(a, b)

sess = tf.Session()
print sess.run(
y, feed_dict={a: 3, b: 3})

106
Dataflow
tf.add sum
tf.sub substraction
tf.mul multiplication
tf.div division
tf.mod module
tf.abs return the absolute value
tf.neg return negative value
tf.sign return the sign
107
Dataflow
tf.inv returns the inverse
tf.square calculates the square
tf.round returns the nearest integer
tf.sqrt calculates the square root
tf.pow calculates the power
tf.exp calculates the exponential
tf.log calculates the logarithm
tf.maximum returns the maximum
tf.minimum returns the minimum 108
Dataflow
tf.minimum returns the minimum
tf.cos calculates the cosine
tf.sin calculates the sine

109
Dataflow
tf.diag returns a diagonal tensor with a
given diagonal values
tf.transpose returns the transposes of the
argument
tf.matmul returns a tensor product of
multiplying two tensors listed as arguments

110
Dataflow
tf.matrix_determinant returns the
determinant of the square matrix specified
as an argument
tf.matrix_inverse returns the inverse of the
square matrix specified as an argument

111
Dataflow Graph
Permite quebrar
grafos em vrios
pedaos e execut-
los paralelamente em
vrias CPUs, GPUs
ou dispositivos
Como comear?

Passo 1:
pip install tensorflow (para CPU)
pip install tensorflow-gpu (com GPU)
Nvidia GPUs
Nvidia GPUs
GTX 1080 lanada em Junho de 2016 usa a
arquitetura Pascal com suporte especfico
para processamento de redes neurais, 8 GB
de memria (320 GB/sec bandwidth) 8.9
TFlops.
Entre R$ 3000,00 a R$ 4000,00
Outros modelos para iniciantes
GTX 650 R$ 400,00 (GPU Capability 3.0)
Aguardem a lista de 87
exerccios....

116
Prxima aula:
Como treinar uma rede neural com vrios
neurnios (Fortes emoes).

117
Fim

www.deeplearningbrasil.com.br

118