INF 1771 Inteligência Artificial  
Aula 18 Redes Neurais  
Edirlei Soares de Lima  
<elima@inf.puc-rio.br>  
Formas de Aprendizado  
Aprendizado Supervisionado  
Árvores de decisão.  
K-Nearest Neighbor (KNN).  
Support Vector Machines (SVM).  
Redes Neurais  
Aprendizado Não Supervisionado  
Aprendizado Por Reforço  
Introdução  
Redes Neurais podem ser consideradas um  
paradigma diferente de computação.  
Inspirado na arquitetura paralela do cérebro  
humano.  
Elementos de processamento  
simples.  
Grande grau de interconexões.  
Interação adaptativa entre os  
elementos.  
Introdução  
No cérebro, o comportamento inteligente é uma  
propriedade emergente de um grande número de  
unidades simples (ao contrário do que acontece com  
regras e algoritmos simbólicos).  
Neurônios ligam e desligam em alguns milissegundos,  
enquanto o hardware atual faz o mesmo em nano  
segundos.  
Entretanto, o cérebro realiza tarefas cognitivas complexas  
(visão, reconhecimento de voz) em décimos de segundo.  
O cérebro deve estar utilizando um paralelismo  
massivo.  
Introdução  
O cérebro humano tem sido  
extensamente estudado, mas  
ainda não somos capazes de  
entender completamente o  
seu funcionando.  
O cérebro é muito complexo,  
até mesmo o comportamento de  
um simples neurônio é  
extremamente complexo.  
Neuronio  
Estrutura de um Neuronio:  
Corpo celular  
Dendritos  
Axônio  
Terminais sinápticos  
Funcionamento de um Neurônio  
Através dos dentritos, o neurônio recebe sinais de  
outros neurônios a ele conectados por meio das  
sinapses.  
Os sinais são acumulados no corpo do neurônio.  
Quando a soma dos sinais passa de um certo limiar (~  
5
0mV) um sinal é propagado no axônio.  
As sinapses tem um peso que pode ser:  
excitatório: incrementam a soma dos sinais.  
inibidor: decrementam.  
Introdução  
Características do Cérebro Humano:  
11  
0 neurônios.  
1
Cada neurônio tem em media 104 conexões.  
Milhares de operações por segundo.  
Neurônios morrem frequentemente e nunca são  
substituídos.  
Reconhecimento de faces em aproximadamente 0.1  
segundos.  
Introdução  
O cérebro humano é bom em:  
Reconhecer padrões,  
Associação,  
Tolerar ruídos...  
O computador é bom em:  
Cálculos,  
Precisão,  
Lógica.  
Introdução  
Formas mais básicas de aprendizado  
em Redes Neurais:  
Perceptron: Algoritmo para aprendizagem de  
redes neurais simples (uma camada)  
desenvolvido nos anos 50.  
Backpropagation: Algoritmo mais complexo  
para aprendizagem de redes neurais de  
múltiplas camadas desenvolvido nos anos 80.  
Aprendizagem de Perceptron  
Usa-se um conjunto de exemplos de  
treinamento que dão a saída desejada para  
uma unidade, dado um conjunto de entradas.  
O objetivo é aprender pesos sinápticos de tal  
forma que a unidade de saída produza a saída  
correta pra cada exemplo.  
O algoritmo faz atualizações iterativamente até  
chegar aos pesos corretos.  
Perceptron  
Unidade de Threshold Linear  
W1  
X1  
W2  
X2  
.
n
n
1
if  
wi xi 0  
wi xi  
.
.
i=0  
i=0  
Wn  
1 otherwise  
Xn  
Rede de Perceptrons  
Valores de Saída  
Camada de Saída  
Pesos Ajustaveis  
Camada de Entrada  
Sinais de entrada  
Aprendizado de Perceptrons  
Para que um perceptron possa aprender uma  
função deve-se mudar o valor dos pesos ajustáveis  
por um quantidade proporcional a diferença entre a  
saída desejada e atual saída do sistema.  
Saída desejada: t  
wi = wi +wi  
x1  
x1  
x2  
x2  
...  
...  
xn  
xn  
o
t
wi =(t o)xi  
t = saída desejada.  
o = atual saída do perceptron.  
= Learning rate.  
Aprendizado de Perceptrons  
Regra de aprendizado:  
wi = wi +wi  
wi =(t o)xi  
Se a saída do perceptron não estiver correta (t != o):  
Os pesos wi são alterados de forma que a saída do perceptron para os  
novos pesos seja próxima de t.  
O algoritmo vai convergir para a correta classificação se:  
O conjunto de treinamento é linearmente separável.  
é suficientemente pequeno.  
Treinando um Neuronio  
Threshold = 0.2  
Learning Rate = 0.1  
Operador And  
A B Saída  
A
B
0
.3  
0
0
1
1
0
1
0
1
0
0
0
1
T=0.2  
-
0.1  
A B  
Somatório  
Saída  
Erro  
0
0
0
1
1
0
1
0
1
(0*0.3)+(0*-0.1) = 0  
(0*0.3)+(1*-0.1) = -0.1  
(1*0.3)+(0*-0.1) = 0.3  
(1*0.3)+(1*-0.1) = 0.2  
0
0
1
1
0
-1  
0
Treinando um Neuronio  
Threshold = 0.2  
Learning Rate = 0.1  
Operador And  
A B Saída  
A
B
0
.2  
0
0
1
1
0
1
0
1
0
0
0
1
T=0.2  
0
.0  
A
B
Somatório  
Saída  
Erro  
0
0
0
1
1
0
1
0
1
(0*0.2)+(0*0.0) = 0  
(0*0.2)+(1*0.0) = 0  
(1*0.2)+(0*0.0) = 0.2  
(1*0.2)+(1*0.0) = 0.2  
0
0
1
1
0
-1  
0
Treinando um Neuronio  
Threshold = 0.2  
Learning Rate = 0.1  
Operador And  
A B Saída  
A
B
0
.1  
0
0
1
1
0
1
0
1
0
0
0
1
T=0.2  
0
.1  
A B  
Somatório  
Saída  
Erro  
0
0
0
1
1
0
1
0
1
(0*0.1)+(0*0.1) = 0  
(0*0.1)+(1*0.1) = 0.1  
(1*0.1)+(0*0.1) = 0.1  
(1*0.1)+(1*0.1) = 0.2  
0
0
0
1
0
0
0
Limitações  
Um único Perceptron consegue  
resolver somente funções  
linearmente separáveis.  
Em funções não linearmente  
separáveis o perceptron não  
consegue gerar um hiperplano  
para separar os dados.  
Redes Multicamadas  
Perceptrons expressam somente superfícies  
de decisão linear.  
Entretanto, é possível combinar vários  
perceptrons lineares para gerar superfícies  
de decisão mais complexas.  
Dessa forma podemos, por exemplo, gerar  
uma superfícies de classificação para o  
operador XOR.  
Operador XOR  
Operador XOR  
A B Saída  
0
0
1
1
0
1
0
1
0
1
1
0
-
0.5  
h1  
1
OR  
X1  
1
1
o
1
1
-
0.5  
-
1
X2  
h2  
AND  
-
1.5  
Redes Multicamadas  
Camada de Saída  
Camadas Ocultas  
Camada de Entrada  
Redes Multicamadas  
Adicionar uma camada oculta  
a rede permite que a rede  
possa gerar uma função de  
convex hull.  
Duas camadas ocultas permite  
a rede gerar um função com  
diferentes convex hulls.  
Redes Multicamadas  
Unidades lineares são capazes gerar  
funções lineares, dessa forma função de  
uma rede multicamada também será linear.  
Entretanto, existem muitas funções que não  
podem ser modeladas por funções  
lineares.  
Por esse motivo é necessário utilizar uma  
outra função de ativação.  
Redes Multicamadas  
Funções de ativação mais comuns:  
Sigmoidal:  
n
y = fh = w01+ wi xi ; p =  
1
h p  
1+ e  
i=1  
Radial (Gausiana):  
h2  
2  
2
n
1  
2
y = f h = (xiwi ) ; = w0 =  
e
  
2
i=1  
Redes Multicamadas  
Unidade Sigmoid  
W1  
X1  
W2  
X2  
.
n
1
.
.
net = wi xi  
o = (net) =  
h p  
Wn  
i=0  
1+ e  
Xn  
Função Sigmoidal  
1
(neti (t)− )/  
fi (neti (t)) = 1  
+ e  
1
=1  
0
1
-
1
Função Sigmoidal  
1
(neti (t)− )/  
fi (neti (t)) = 1  
+ e  
1
= 0.1  
0
1
-
1
Backpropagation  
Aprende os pesos para uma rede  
multicamadas, dada uma rede com um  
número fixo de unidades e interconexões.  
O algoritmo backpropagation emprega a  
descida do gradiente para minimizar o  
erro quadrático entre a saída da rede e os  
valores alvos para estas saídas.  
Descida do Gradiente  
A descida do gradiente busca  
determinar um vetor de pesos  
que minimiza o erro.  
Começando com um vetor  
inicial de pesos arbitrário e  
modificandoo repetidamente  
em pequenos passos.  
A cada passo, o vetor de pesos é alterado na direção que  
produz a maior queda ao longo da superfície de erro.  
Backpropagation  
Aprende os pesos para uma rede multicamadas,  
dada uma rede com um número fixo de unidades e  
interconexões.  
“O algoritmo backpropagation emprega a descida do  
gradiente para minimizar o erro quadrático entre a  
saída da rede e os valores alvos para estas saídas.  
Valor de saida da rede  
0.119 0.059 0.253 0.246  
Valor da saida buscada  
0
0
1
0
Erro (E) = (Valor da saida buscada) (Valor de saida da rede)  
Backpropagation  
Backpropagation  
Inicializa cada peso wi com um pequeno valor randômico.  
Enquanto condição de parada não for atingida faça  
{
Para cada exemplo de treinamento faça  
{
Entre com os dados do exemplo na rede e calcule a saída da rede (ok)  
Para cada unidade de saída k faça  
{
k ok (1ok )(tkok )  
}
Para cada unidade oculta h faça  
{
h oh (1oh )wh,kk  
k outputs  
}
Para cada peso wj da rede faça  
{
wi, j wi, j +wi, j  
where wi, j = j xi, j  
}
}
}
Backpropagation  
O backpropagation não é um algoritmo ótimo e não  
garante sempre a melhor resposta.  
O algoritmo de descida do gradiente pode ficar preso  
em um erro mínimo local.  
É possível refazer o treinamento variando os valores  
iniciais dos pesos.  
Backpropagation é o algoritmo de aprendizagem mais  
comum, porém existem muitos outros.