Perceptron
Perceptron
Perceptron
OUT/2007
1 Definições Preliminares
De inı́cio, vamos assumir que existe uma lei matemática F(·), também chamada aqui de função ou
mapeamento, que relaciona um vetor de entrada qualquer, x ∈ Rp+1 , com um vetor de saı́da, d ∈
Rq . Esta relação, representada genericamente na Figura 1, pode ser descrita matematicamente
da seguinte forma:
d = F[x] (1)
em que se assume que F(·) é totalmente desconhecida, ou seja, não sabemos de antemão quais são
as fórmulas usadas para associar um vetor de entrada x com seu vetor de saı́da d correspondente.
Sistema
x d
F(.)
Entrada (desconhecido) Saida
Figura 1: Representação simplificada de um mapeamento entrada-saı́da genérico.
O mapeamento F(·) pode representar diversos problemas de interesse prático, tais como pro-
blemas de aproximação de função ou de classificação de padrões. De modo resumido, problemas
de classificação de padrões são aqueles em que se desja construir um programa de computador
que categorize o vetor de entrada em uma dentre várias classes disponı́veis. Por exemplo, de
posse de um vetor contendo medidas que descrevem determinado processo industrial, deseja-
se saber se este processo está operando em modo seguro (classe normal) ou inseguro (classe
anormal).
Em problemas de aproximação de função, também chamados por Estatı́sticos de problemas
de regressão, deseja-se conhecer a dependência númerica entre uma variável de saı́da e p variáveis
1
de entrada. Por exemplo, qual a relação entre o preço hoje de uma certa ação na bolsa de valores
e seus valores ontem e anteontem? Há outras variáveis importantes para descrever esta relação
de modo mais preciso? Por exemplo, o preço do dólar ontem e anteontem.
Em aproximação de funções a saı́da é, em geral, dada por números reais, enquanto em
classificação de padrões a saı́da é normalmente representada por números binários.
Independentemente da aplicação de interesse, o mapeamento F(·) pode ser tão simples quanto
um mapeamento linear, tal como
d = Mx (2)
em que M é uma matriz de dimensão (p + 1) × q. Contudo, F(·) pode ser bastante com-
plexo, envolvendo relações não-lineares entre as variáveis de entrada e saı́da. É justamente o
funcionamento da relação matemática F(·) que se deseja imitar 1 através do uso de algoritmos
adaptativos, tais como as redes neurais.
Supondo que a única fonte de informação que nós temos a respeito de F(·) é conjunto finito
de N pares entrada-saı́da observados (ou medidos), ou seja:
x1 , d1
x2 , d2
.. ..
. . (3)
xN , dN
y = F̂[x] (4)
em que y é a saı́da gerada pela rede neural que, espera-se, seja muito próxima da saı́da real
d. Dá-se o nome de Aprendizado Indutivo ao processo de obtenção da relação matemática geral
F̂(·) a partir de apenas alguns pares {xµ , dµ } disponı́veis.
A seguir será mostrado um dos primeiros modelos matemáticos adaptativos usados com o
propósito de obter uma representação aproximada de um mapeamento entrada-saı́da qualquer.
em que foi feito x0 (t) = −1 e wi0 (t) = θi (t). O sobrescrito T indica a operação de transposição
dos vetores. Note que a ativação do neurônio no instante t é simplesmente o produto-escalar do
vetor de entrada x(t) com o vetor de pesos wi (t) do i-ésimo neurônio. Assim, a rede Perceptron
faz uma verificação de quais vetores de pesos são mais semelhantes ao vetor de entrada atual.
Do ponto de vista geométrico, valores positivos de ui (t) indicam que o ângulo entre os vetores
x(t) e wi (t) é menor do que 90 graus2 (Figura 3a).
Wi (t) Wi (t)
Figura 3: Produto interno entre o vetor de entrada atual x(t) e o vetor de pesos wi (t) do i-ésimo
neurônio da rede Perceptron.
2
Por definição, o produto-escalar entre dois vetores x e y é dado por x · y = kxk · kyk · cos β, em que β é o
ângulo entre os vetores.
A saı́da atual do Perceptron é dada pela aplicação da função sinal, dada por:
+1, ui (t) ≥ 0
yi (t) = sinal(ui (t)) = (9)
−1, ui (t) < 0
Note que como a saı́da yi (t) pode assumir apenas dois possı́veis valores (isto é, a saı́da é
binária!), o Perceptron é comumente aplicado a problemas de classificação de padrões. Conforme
mostrado na Eq. (8), a ativação do i-ésimo neurônio é o resultado do produto-escalar do vetor de
entrada atual com o seu vetor de pesos. Assim, a saı́da yi (t) indica se o vetor de pesos wi (t) pode
ser considerado similar o suficiente ao vetor x(t). Caso afirmativo, então yi = +1, indicando o
disparo do neurônio. Caso contrário, a saı́da é yi (t) = −1.
Em particular pode-se fazer a seguinte afirmação:
O algoritmo Perceptron é basicamente utilizado em tarefas de classificação de padrões
em que os dados ou as classes são linearmente separáveis.
Exercı́cio 1 - Explicar geometricamente a afirmação de que o Perceptron só é capaz de
classificar dados linearmente separáveis. Dica: usar as funções lógicas AND, OR e XOR para
desenvolver o raciocı́nio.
que nada mais é do que a soma dos vetores mal-classificados. Substituindo este resultado na
Definição (13) chagamos a X
wnovo = watual + α zk . (15)
zk ∈Z
O tipo de treinamento que usa a regra de aprendizagem monstrada na Equação (15) é algumas
vezes chamada de treinamento época-a-época ou em lote (batch), uma vez que todos os
vetores mal-classificados são usados ao mesmo tempo para atualizar w. Muitas vezes é preferı́vel
atualizar w logo que um erro de classificação ocorre. Este procedimento é comumente chamado
de treinamento padrão-a-padrão (pattern-by-pattern) ou seqüencial. Neste caso, a regra de
aprendizagem passa a ser escrita como
em que xj corresponde à j-ésima entrada. Analisando a Eq. (19), podemos concluir que atua-
lização do peso wij depende apenas de informação local, ou seja, de informação disponı́vel apenas
3
Também chamado de método da descida mais ı́ngreme (method of steepest descent).
naquela sinapse do neurônio i, seja através da entrada por meio de xj (t), seja na saı́da por meio
de ei (t).
Para finalizar, vamos considerar uma notação matricial para a regra de aprendizagem do
Perceptron, já apresentada sob uma notação vetorial na Eq. (18) e sob uma notação escalar na
Eq. (19). A notação matricial permite que o Perceptron seja implementado em poucas linhas
quando usamos softwares do tipo Matlab/Octave/Scilab para simulação computacional.
Considere que os vetores de pesos wi estão organizados como linhas de uma matriz W, ou
seja
w1T
wT
2
W = .. (20)
.
wqT
em que dim(W) = q × (p + 1). Organizando os erros gerados pelos q neurônios de saı́da no
instante t em um vetor de erros e(t) = [e1 (t) e2 (t) · · · eq (t)]T , podemos escrever a regra de
aprendizagem do Perceptron Simples da seguinte maneira:
época ao modelo Perceptron, sendo que a ordem de apresentação dos pares entrada-saı́da deve
ser mudada a cada época.
O treinamento deve ser interrompido quando o aprendizado convergir. Isto equivale a verificar
se os pesos deixaram de variar, ou seja
em que kAkf rob denota a norma de Frobenius4 da matriz A, a matriz W está definida na Eq. (21)
e n corresponde à época de treinamento atual. Para monitorar a convergência época-a-época,
pode-se fazer o gráfico da norma de Frobenius da matriz W(n) em função de n. Este gráfico,
em geral, apresenta uma tendência de queda exponencial até atingir um patamar próximo de
zero.
Outro critério de parada para o treinamento envolve simplesmente a especificação de um
número máximo (Kmax ≫ 1) de épocas de treinamento. Normalmente, os dois critérios são
usados simultaneamente.
Fase de Teste - Para validar o modelo Perceptron treinado, ou seja, dizer que ele está pronto
para ser utilizado, é importante testar a sua resposta para dados de entrada diferentes daqueles
vistos durante o treinamento. Durante esta fase os pesos da rede não são ajustados.
Os pares entrada-saı́da de teste podem ser obtidos através de novas medições, o que nem
sempre é possı́vel de se realizar. A opção viável então consiste na utilização dos N2 = N − N1
pares entrada-saı́da restantes, chamados de conjunto de teste. A avaliação, em geral, é feita
também com base no valor de JN . O valor de JN calculado para o conjunto de teste é chamado
de erro de generalização do modelo Perceptron, pois testa a capacidade deste em “extrapolar”
o conhecimento aprendido durante o treinamento para novos dados.
Como o modelo Perceptron é usado como classificador de padrões, o seu desempenho é
também comumente avaliado pela taxa de acerto na classificação, definida como:
Número de vetores classificados corretamente
Pepoca = (23)
Número de total de vetores de teste
p
4
kAkf rob = tr(AT A), em que tr(B) é o traço da matriz B.
Neste caso, é prática estabelecida representar o vetor de saı́das desejadas d(t) como um vetor
que tem apenas uma componente com valor igual a +1, as outras possuem valor −1. A saı́da
desejada com valor +1 representa a classe do vetor de entrada correspondente.
Assim, o número de neurônios é sempre igual ao número de classes existentes. Por exemplo,
para um problema de classificação com três classes, terı́amos três neurônios de saı́da, sendo
que os respectivos vetores de saı́das desejadas, representando os rótulos das classes, seriam
representados por:
+1 −1 −1
Classe 1 ⇒ d(t) = −1 , Classe 2 ⇒ d(t) = 1 e Classe 3 ⇒ d(t) = −1 (24)
−1 −1 1
Exercı́cio 3 - Usar o banco de dados sobre dermatologia disponı́veis no repositório UCI para
avaliar o modelo Perceptron em um problema de diagnóstico automático de doenças. Pede-se
determinar a curva de aprendizagem do modelo Perceptron, a taxa de acerto média e o desvio-
padrão correspondente obtidos no teste e a matriz de confusão.
Referências
[1] A. Webb. Statistical Pattern Recognition. John Wiley & Sons, 2nd edition, 2002.