Você está na página 1de 5

Introdução ao Perceptron

Gilzamir Ferreira Gomes1


¹Universidade Estadual Vale do Acaraú
¹gilzamir.gomes@uvanet.br

Resumo. Este artigo faz uma breve apresentação do Perceptron, um tipo de rede neural desenvolvida em
1957 por Frank Rossemblatt no Laboratório de Aeronáutica de Cornell. O objetivo é prover um texto
didático para que alunos de graduação possam compreender facilmente os conceitos fundamentais do
Perceptron.

1 Introdução
A rede Perceptron é um tipo de rede neural artificial inventada em 1957 no Laboratório de
Aeronáutica de Cornell por Franck Rosenblatt [1]. Trata-se de um classificador binário, pois dado
um conjunto de dados pertencente a duas classes, é possível configurar um perceptron para
reconhecer a classe de qualquer elemento do conjunto, desde que o conjunto de dados seja
linearmente separável. Isso significa que se os dados podem ser separados por meio de um
hiperplano2 quando dispostos em um espaço, então a rede Perceptron pode ser treinada de modo a
gerar um hiperplano que divide o espaço adequadamente em duas regiões correspondentes às duas
classes. A seguir, a rede Perceptron será apresentada em termos de suas unidades constituintes:
neurônios de McCulloc e Pitts.
A perceptron consiste em uma rede composta por neurônios baseados no modelo de neurônio
artificial proposto por McCulloc & Pitts [2], que foram os primeiros a proporem um modelo
matemático de um neurônio artificial. Apesar de seu poder computacional restrito, o estudo do
Perceptron aborda os principais elementos para a compreensão mais geral das redes neurais
artificiais, que são:
1. pesos de conexões, que proveem a plasticidade da rede (capacidade de se adaptar ao
ambiente);
2. uma função objetivo, a ser aprendida;
3. uma regra de atualização de pesos;
4. um algoritmo que procura minimizar o erro na saída de acordo com uma regra de
atualização de pesos.
Portanto, este trabalho apresenta os fundamentos do Perceptron, levando-se em conta um público-
alvo de graduação e que o material foi produzido como complemento da disciplina de Inteligência
Artificial do Curso de Ciência da Computação da Universidade Vale do Acaraú (UVA).
Para melhor compreensão do assunto abordado, o artigo foi organizado da seguinte forma: Na
Seção 2, será abordado os fundamentos do modelo neural de McCulloc e Pitts; na Seção 3, os
fundamentos do Perceptron e do algoritmo de treinamento do Perceptron são apresentados;
finalmente, na Seção 4, é mostrado uma descrição de como o algoritmo de treinamento do
Perceptron pode ser implementado.

1 Gilzamir F. Gomes é Professor Auxiliar I da Universidade Estadual Vale do Acaraú (UVA) e Mestre em Ciência da
Computação pela Universidade Estadual do Ceará (UECE).
2 Em um espaço Rn , um hiperplano é um objeto Rn−1 . Por exemplo, uma reta é um hiperplano do plano (
2 1 2 3
R ), dado que a reta é um objeto R . Um plano ( R ) é um hiperplano do espaço R .
2 Modelo Neural de McCulloc & Pits (Neurônio MCP)
O modelo neural de McCulloc e Pitts ou neurônio MCP (McCulloc e Pitts) representa um neurônio
artificial, que nada mais é do que uma função matemática. Um neurônio MCP é constituído por
n unidades de entrada  x 1, x 2, ... , x n  tal que cada entrada x i é ponderada por um peso w i
correspondente. As entradas ponderadas são somadas e o resultado é avaliado de acordo com uma
função de limiar. O somatório das entradas é como mostrado na Equação (I).
∑in=1 x i⋅wi (I)
Caso o somatório ponderado das entradas seja maior ou igual a um limiar θ , o neurônio produz
1 como saída, caso contrário, produz 0 , como mostrada a Equação II.
n
f ( ∑i=1 xi⋅w i)=1 se ≥θ (II)
0 se<θ
Pode-se, por exemplo, utilizar o modelo MCP para representar uma função lógica. Seja a função
lógica OU , tal que retorna 0 somente se suas entradas são iguais a 0, caso contrário, é
retornado 1 . Supondo-se θ=1 , w 1=1 e w 2=1 , teríamos o neurônio como ilustrado na
Figura 1.

x2
W2
=1
.0
f {0,1}
.0
=1
W1
x1
Figura 1: Modelo de McCulloc & Pitts.

Ou seja, o neurônio mostrado na Figura 1 é equivalente à Equação em III:

f  x 1 x 2= 1 se≥ (III)


0 se 
Dado que o domínio da função OU fica restrito ao conjunto de pares ordenados (a , b) , tal que
a , b∈{0,1 } , as entradas da função são I ={(1,1) ,(1,0), (0,1),(0,0) } e as respostas
correspondentes são: f (1,1)=1, f (1,0)=1, f ( 0,1)=1 e f (0, 0)=0 . A Figura 2 ilustra como a
função mostrada na Equação II divide os dados em duas classes bem definidas.

3 Perceptron
A rede Perceptron é uma rede neural composta de neurônios MCP. A entrada de um neurônio do
perceptron pode ser representada por um vetor x e os pesos das conexões de entrada, por um
vetor w . A soma ponderada das entradas é equivalente ao produto vetorial de x por w , ou
seja, x⋅w . Agora a equação II para um neurônio MCP pode ser reescrita como:

f ( x⋅w)= 1 se≥θ (IV)


0 se <θ
Contudo, pode-se encontrar a equação do hiperplano que separa o espaço em duas regiões fazendo
x⋅w=θ , ou seja, x⋅w−θ=0 . Pode-se, então, considerar θ como uma entrada da rede com
peso fixo −1 . Assim, podemos reescrever os vetores de entrada e de peso como,
respectivamente, x =(θ , x 1, x 2, ... , x n) e w=(−1, w 1, w 2, ... , w n) . Doravante, x e w serão
tratamos dessa forma e a função de limiar será tratada como mostrado na equação V.
f ( x⋅w)= 1 se≥0 (V)
0 se <0

Figura 2: Um exemplo de como o neurônio de McCulloc & Pitts


separa os dados de entrada em duas regiões distintas, funcionando
como a função lógica OU.

Na Seção 2 foi mostrado como uma rede pode ser configurada para representar a função lógica OU.
Imagine que precisássemos de uma função que, dada uma imagem equivalentes às letra T,
retornasse 1 caso a letra T estivesse presente. Nesse caso a letra seria representada por uma matriz
de pixels. Cada pixel aceso corresponde na matriz de duas cores a 1 (cor de frente ou branco). Cada
pixel apagado correspondente a 0 (cor de fundo ou preto). Em uma matriz n×n , haveria
m=n⋅n pixels. Assim, seria interessante configurar o neurônio com m entradas e uma saída.
Neste caso, o neurônio produz 1 se a matriz de pixels apresentada na entrada contiver a letra T e 0,
caso contrário. Neste caso, qual o valor que deve ser atribuído aos pesos da rede para que a rede
seja reconhecida? Encontrar estes valores manualmente não é nada ameno, por isso, seria
interessante lançarmos mão de um algoritmo que automaticamente altera os pesos da rede para que
esta reconheça a letra T . Mas a partir do que o algoritmo poderia se basear a alteração do peso
das redes? A resposta é simples, por meio de exemplos.
Como uma pessoa passa a reconhecer um ônibus? A resposta é a mesma, por meio de exemplos. Ao
ser apresentado diversas vezes para um ônibus e ter escutado alguém falar que aquilo é um ônibus,
as pessoas aprendem a reconhecer ônibus em muitas diferentes situações, situações inclusive que
não havia visto anteriormente. Alguém que mora em uma cidade e nunca tenha ido tão longe, está
acostumado a ver ônibus na rua. Em uma viagem de férias, provavelmente no deserto, poderia se
deparar com a imagem de um ônibus próximo a uma grande duna de areia. Provavelmente seria um
ônibus diferente do ônibus de cidade, algo adaptado para o deserto, mas a pessoa ainda assim
reconheceria que aquele objeto sobre a areia ainda assim é um ônibus.
Portanto, os exemplos servem para que a rede consiga aprender um padrão. A partir do momento em
que o padrão é aprendido, a rede pode ser utilizada para situações diferentes das condições do
aprendizado. Um exemplo seria, dessa forma, um par ( x i , d ) , onde x i é uma entrada
conhecida para a rede e d , a resposta esperada para a entrada x i . No caso, um conjunto
Γ={(x i , d i )}np=1 de treinamento é apresentado para a rede, que após ser treinada, espera-se que
mapeie corretamente não apenas os exemplos do conjunto de treinamento, mas entradas que não
foram apresentadas para a rede. A função real a ser aprendida é denominada função objetivo. Em
problemas realmente difíceis (que são a maioria dos problemas interessantes do mundo real), a
função objetivo é desconhecida e o objetivo do aprendizado é encontrar uma função h que
aproxima a função objetivo. Cada função h possível é denominada de hipótese. No aprendizado
com redes neurais, as funções possíveis são aquelas resultantes da atribuição de diferentes valores
para os pesos das conexões.

Algoritmo de Treinamento do Perceptron


Por hora, consideremos quando um exemplo é apresentado para a rede. Seja um exemplo qualquer
(x , d ) , ao ser apresentado para o vetor de entrada x , o Perceptron produzirá uma saída
qualquer y . O erro da rede para o exemplo apresentado é calculado como e=d− y . Aqui está
sendo suposto que os dados de entrada e de saída são valores lógicos, tal que 1 representa o valor
lógico verdadeiro e 0, o valor lógico falso . Portanto, há três resultados possíveis para o erro
e :
1. 0, quando d = y ;
2. 1, quando d =1 e y =0 e
3. -1, quando d =0 e y=1 .
No primeiro caso, nada precisa ser feito. Agora, os casos 2 e 3 serão analisados para derivarmos
uma regra de atualização para os pesos do Perceptron de modo que uma função lógica possa ser
aprendida. Na verdade, o Perceptron consegue aprender apenas funções linearmente separáveis.
Portanto, é suposto aqui que as funções lógicas apresentadas à rede são linearmente separáveis.
Primeiro, o segundo caso será considerado. Se e=1 , então y=0 . E se y=0 , x⋅w < 0.
Contudo, lembre-se que x⋅w=∣x∣⋅∣y∣⋅cos  , onde α é o ângulo entre os vetores x e w .
Como x⋅w0 , cos (α)<0 e, portanto, α>90º . Neste caso, é esperado que y=1 ;
contudo, para isso, é necessário que x⋅w≥0 , ou seja, é necessário “empurrar” o vetor w de
modo que o mesmo passe a formar um ângulo menor ou igual a 90º com o vetor x . Isso pode
ser feito adicionando-se ao vetor de pesos w um vetor na mesma direção do vetor x , ou seja,
fazendo-se  w = ⋅x , onde  é um valor do intervalo [0,1] .
Agora, o terceiro caso será considerado. No terceorp caso, temos que e=−1 , portanto y=1 .
Nesse caso, x⋅w≥0 . É esperado, contudo, que y=0 e que, consequentemente, x⋅w0 .
Observe, utilizando o mesmo raciocínio do primeiro caso, x⋅w≥0 implica que cos ≥0 e
≤90º , ou seja, o ângulo entre x e w precisa ser aumentado para que se obtenha
90º e, portanto, cos 90º . Assim, o valor da saída será o esperado, no caso, 1 . O
vetor a ser adicionado ao vetor de pesos é, portanto,  w=− x .
Finalmente, observando o primeiro, o segundo e o terceiro caso, podemos utilizar uma regra
conveniente que abrange as três situações:  w=⋅e⋅x . Quando e=0 , nada precisa ser feito
e, portanto,  w=0 ; Quando e=1 , haverá o segundo caso e  w= x (como foi mostrado
anteriormente para este caso); quando e=−1 , haverá o terceiro caso e  w=− x (como foi
mostrado anteriormente para o terceiro caso. Assim a regra geral de atualização de pesos do
perceptron é:
w t 1=wt ⋅e⋅x (VI)

4 Implementação do Algoritmo de Treinamento do Perceptron


Apesar da obtenção da fórmula de atualização do perceptron da seção anterior (doravante
denominada regra de atualização) ter sido realizada com base em um único exemplo, pode-se
mostrar que a atualização ao longo de vários exemplos de uma função linearmente separável
converge, ou seja, ao final do treinamento a rede separa adequadamente o conjunto de treinamento
i i
{ x i , d i } ( x i , d i ∈{0,1 } ) em dois subconjuntos disjuntos 0 { x , 0} e 1 { x ,1 } tal
que =0∪1 . Em outras palavras, seja ℘ uma função equivalente ao perceptron, ao final
do treinamento, ℘ x i=1 para todo x i ∈0 e ℘ x i=0 para todo x i ∈1 . Neste texto,
dado o objetivo de ser didático, preferiu-se uma demonstração intuitiva da convergência. Ora, se os
dados correspondentes podem ser separados de forma linear em um espaço e o perceptron
representa um hiperplano (que divide o espaço de forma linear), então um perceptron pode ser
configurado para dividir os dados em duas regiões equivalentes às classes do problema. Apesar
desta afirmação não provar que a regra delta converge para vários exemplos apresentados, supomos
que ela é suficiente para continuarmos. Uma prova consistente é apresentada em [3].
A implementação do algoritmo de treinamento do perceptron pode ser realizada por meio
dos seguintes passos:
1. Inicializar  ,  e w ( w pode ser inicializado aleatoriamente);
2. Enquanto e > 0:
1. para cada par  x i , d i  do conjunto  , atualizar o o vetor de pesos para cada um dos
nodos da rede de acordo com a regra na Equação VI.
Uma implementação do algoritmo foi realizado em Java e o resultado obtido para aprendizado da
função lógica OU é mostrado na Figura 3.

Figura 3: Perceptron treinado para a função OU.


Referências
[1] http://en.wikipedia.org/wiki/Perceptron, último acesso em 21 de fevereiro de 2011.
[2] McCulloc, W. e Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity.
Bulletin of Mathematical Biophysics, 7:115 – 133.
[3] Braga, Alberto de P. e Ludemir, Tereza B. e Carvalho, André Calor Ponte de Leon F. Redes
Neurais Artificiais: Teoria e Prática. Livros Técnicos e Científicos, Rio de Janeiro, 2000.

Você também pode gostar