Perceptron

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 9

Perceptron Simples

Prof. Dr. Guilherme de Alencar Barreto

OUT/2007

Departmento de Engenharia de Teleinformática


Programa de Pós-Graduação em Engenharia de Teleinformática (PPGETI)
Universidade Federal do Ceará (UFC), Fortaleza-CE

[email protected]

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

Os pares entrada-saı́da mostrados acima podem ser representados de maneira simplificada


como {xµ , dµ }, em que µ é um apenas indı́ce simbolizando o µ-ésimo par do conjunto de dados.
Uma maneira de se adquirir conhecimento sobre F(·) se dá exatamente através dos uso destes
pares.
Para isto pode-se utilizar uma rede neural qualquer para implementar um mapeamento
entrada-saı́da aproximado, representado como F̂(·), tal que:

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.

2 Modelo Perceptron Simples


Nesta seção descreveremos um tipo elementar de algoritmo adaptativo, chamado Perceptron
Simples, composto de apenas um elemento processador (neurônio). Este modelo foi proposto
por Rosenblatt no seguinte artigo:
F. Rosenblatt (1958). “The Perceptron: A probabilistic model for information sto-
rage and organization in the brain”, Psychological Review, vol. 65, p. 386-408.
O modelo Perceptron simples é considerado como a primeira arquitetura neural inventada.
Seu bloco construtivo é o neurônio artificial de McCulloch & Pitts (neurônio M-P), mostrado
na Figura 2, proposto no seguinte artigo:
1
Termo, digamos assim, mais tecnicamente apropriados do que imitar seriam aproximar ou modelar.
x 0 = −1
x1
w1 w0 = θ
x2 w2
u(t) y(t) = + 1
x3
w3 Σ −
: : _
wp +
xp
d(t)
e(t)
Figura 2: Arquitetura do neurônio da rede neural Perceptron.

W. S. McCullogh and W. Pitts (1943). “A logical calculus of the ideas immanent in


nervous activity”, Bulletin of Mathematical Biophysics, vol. 5, p. 115-133.
O vetor de entrada do Perceptron é então definido como:
x0 (t) −1
   
 x1 (t)   x1 (t) 
 .   . 
 .   .
 .   .

x(t) =  = (5)

 xj (t)   xj (t)


 .   .
 ..   ..


xp (t) xp (t)
em que xj (t) denota uma componente qualquer do vetor de entrada x(t) e t indica o instante de
apresentacão deste vetor à rede.
O vetor de saı́das desejadas é representado por um vetor de q componentes, ou seja:
d1 (t)
 
 .. 
 . 
d(t) =  di(t)  (6)
 
 . 
 .. 
dq (t)
em que di (t) a saı́da desejada para o i-ésimo neurônio.
O vetor de pesos associado ao i-ésimo neurônio é representado da seguinte forma:
wi0 (t) θi (t)
   
 wi1 (t)   wi1 (t) 
 ..   .. 
. .
   
wi (t) =  = (7)
   
 wij (t)   wij (t) 

 ..   .. 
 .   . 
wip (t) wip (t)
em que wij é o peso sináptico que conecta a entrada j ao i-ésimo neurônio, θi define um limiar
(threshold ou bias) associado ao i-ésimo neurônio.
Importante: Cada neurônio da rede Perceptron possui o seu próprio vetor de pesos wi .
Assim, uma rede com q neurônios terá p × q pesos sináticos wij e q limiares θi , resultando em um
total de (p + 1) × q parâmetros ajustáveis. Estes parâmetros deverão ser ajustados por meio de
uma regra de atualização recursiva denominada Regra de Aprendizagem do Perceptron.

3 Funcionamento do Perceptron Simples


Após a apresentação de um vetor de entrada x, na iteração t, a ativação ui (t) do i-ésimo neurônio
de saı́da é calculada por meio da seguinte expressão:
p
X
ui (t) = wij (t)xj (t) − θi
j=1
p
X
= wij (t)xj (t) + wi0 (t)x0 (t)
j=1
p
X
= wij (t)xj (t)
j=0

= wiT (t)x(t) (8)

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)

90 < α < 180


0 < α < 90 α
α

ui(t) > 0 => yi(t) = 0 X(t) X(t)


ui(t) < 0 => yi(t) = −1
(a) (b)

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.

4 Função-Objetivo do Perceptron Simples


Nesta seção demonstraremos que o Perceptron Simples é um classificador linear ótimo, ou seja,
sua regra de aprendizagem conduz à minimização de uma função-custo ou função-objetivo es-
pecı́fica. Por ser uma máquina (algoritmo) capaz de aprender, os pesos sinápticos do Perceptron
Simples devem ser determinados a fim de que a saı́da yi (t) gerada esteja bem próxima da saı́da
desejada di (t) associada a um certo vetor de entrada x(t).
Uma escolha razoável para a função-objetivo do Perceptron Simples seria aquela que quan-
tificasse a probabilidade média de erros de classificação, ou seja, que fornecesse a probabilidade
média de o Perceptron tomar uma decisão em favor de uma classe especı́fica quando o vetor de
entrada pertencesse na realidade a outra classe.
A tı́tulo de derivação teórica, vamos considerar apenas um neurônio de saı́da, de modo
que o problema de classificação envolve apenas duas classes (classe 1 - ω1 e classe 2 - ω2 ). Por
existir apenas um neurônio passaremos a representar o vetor de pesos deste simplesmente por w,
eliminando o ı́ndice i. Para a análise que se segue adotar a função sinal como função quantizadora
da saı́da.
Vamos também redefinir cada vetor de entrada x, de modo que este passe a ser representado
como 
x, se x ∈ ω1 .
z= (10)
−x, se x ∈ ω2 .
O propósito da Definição (10) é fazer com que o produto wT z seja sempre positivo para todo
z. Por definição, se wT z > 0 para todo z disponı́vel, então o problema de classificação é dito ser
linearmente separável. Contudo, na prática, mesmo que não consigamos obter wT z > 0 para
todos os vetores de entrada, buscamos uma solução para w que produza wT z > 0 para tantos
vetores de entrada quanto possı́vel.
Em outras palavras, buscamos minimizar o erro de classificação dos vetores de entrada.
Matematicamente, este procedimento pode ser representado pela seguinte função-objetivo[1]:
X
J[w] = (−wT zk ) (11)
zk ∈Z
em que zk denota o k-ésimo vetor de entrada mal-classificado (i.e. classificado erroneamente) e
Z é o conjunto dos vetores mal-classificados.
Visto que a função J[w] é contı́nua, podemos lançar mão de um procedimento baseado na
derivada primeira de uma função para encontrar sua solução ótima. No presente caso, utilizamos
um método iterativo conhecido como método do gradiente descendente3 para derivar uma regra
de ajuste recursivo do vetor de pesos w. Assim, temos que

wnovo = watual + ∆w (12)


∂J[w]
= watual − α (13)
∂w
em que watual corresponde o valor atual de w, enquanto wnovo denota o valor depois de ajustado.
A constante 0 < α ≪ 1 é chamada de passo ou taxa de aprendizagem.
A derivada ∂J[w]
∂w
é dada por
∂J[w] X
= (−zk ), (14)
∂w z ∈Z k

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

w(t + 1) = w(t) + αz(t), (16)

em que t denota o instante de apresentação do vetor de entrada z(t).


Em termos da notação original, a regra de aprendizagem mostrada na Eq. (16) pode a ser
escrita como:
w(t + 1) = w(t) + αe(t)x(t), (17)
em que e(t) = d(t) − y(t) corresponde ao erro de classificação do vetor de entrada x(t). Note que
quando a classificação do vetor de entrada é correta, o erro correspondente é nulo (i.e. e(t) = 0),
não havendo ajuste do vetor w. Só há ajuste quando ocorre uma classificação incorreta.
Para o caso em que há q neurônios, a regra de ajuste do vetor de pesos do i-ésimo neurônio
é dada por:
wi (t + 1) = wi (t) + αei (t)x(t), (18)
em que ei (t) = di (t) − yi (t) corresponde ao erro de classificação do i-ésimo neurônio.
Considerando a regra de aprendizagem do perceptron apenas do ponto de vista do peso
sináptico wij podemos escrever:

wij (t + 1) = wij (t) + αei (t)xj (t), i = 1, . . . , q j = 0, 1, . . . , p (19)

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:

W(t + 1) = W(t) + αe(t)xT (t). (21)


Usando a Eq. (21) a matriz de pesos W é atualizada de uma vez a cada apresentação de
um vetor de entrada. Note que isto só é possı́vel porque o funcionamento de cada neurônio é
independente do funcionamento dos demais.
Exercı́cio 2 - Obter através de argumentos geométricos a regra de aprendizagem do Per-
ceptron mostrada na Eq. (18). Sugestão: avaliar as condições em que o Perceptron erra a
classificação de um dado vetor de entrada, e o que o Perceptron deveria fazer para passar a não
errar àquela classificação.

4.1 Metodologias de Treinamento e Avaliação


O processo de ajuste dos pesos, também chamado de fase de aprendizado ou fase de treinamento
do Perceptron Simples equivale a um aprendizado que depende de um sinal de saı́da conhecido
previamente, ou como se diz no jargão da área, depende de saı́das desejadas di (t), fornecida por
um “supervisor” externo a fim de guiar o processo de ajuste dos parâmetros, conforme ilustrado
na Figura 4. Por este motivo, este tipo de aprendizado é chamado também de aprendizado
supervisionado.
O desempenho efetivo do Perceptron Simples como classificador é avaliado após a apre-
sentação de um conjunto de vetores selecionados aleatoriamente do conjunto total de vetores dis-
ponı́veis. Os vetores aleatoriamente selecionados constituem o conjunto de treinamento. Várias
reapresentações do conjunto de treinamento podem ser necessárias até que a rede aprenda a
representar adequadamente o conjunto de dados. A seguir são dadas algumas dicas para treinar
e avaliar o modelo Perceptron simples.
Fase de Treinamento - Nesta etapa, um determinado número N1 < N de pares entrada-saı́da
{xµ , dµ } são escolhidos aleatoriamente para formar o conjunto de dados de treinamento. Não
existe regra definida para a escolha de N1 ; em geral, faz-se N1 /N ≈ 0,75 ou 0,8. Os N1 pares
são então apresentados, um por vez, para o modelo Perceptron, que tem seus pesos modificados
segundo a Equação (18).
Toda vez que se apresenta todos os N1 vetores de treinamento, diz-se que uma época de
treinamento foi completada. Em geral, o conjunto de treinamento é apresentado mais de uma
x(t) Classificador Real d(t)
F(.)
(desconhecido)
+
e(t)
_
PERCEPTRON
^
F(.)

Figura 4: Aprendizado supervisionado.

é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

k∆Wkf rob = kW(n) − W(n − 1)kf rob ≈ 0. (22)

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.

Você também pode gostar