APENDICE A
1 - Matemática aplicada à
rede neural: Back-Propagation
1.1 - A função XOR
Back-Propagation é
um esquema supervisionado
de aprendizado pelo qual uma rede neural de propagação para
frente (feed forward) é treinada para tomar-se uma máquina
de comparações padrão. Para ilustrar como tal esquema
funciona, utilizar-se-á a função XOR e usando
o algoritmo de aprendizado Back-Propagation. A função
XOR faz parte de um bem conhecido problema de computação
com 2 entradas (exclusive-or), enquanto a saída é logicamente
verdadeira tem valor 1, quando as duas entradas são opostas. A FIGURA
01, mostra o esquema da rede, com os pesos de exemplo, segundo LAWRENCE
(l992):
FIGURA 01 - Função XOR
com neurônios e função de transferência basal
(threshold).
Os números entre os neurônios
são as forças de conexão entre eles, ou os pesos. Os
valores dos pesos serão modificados à medida que a rede é
treinada. A rede pode ser iniciada com um conjunto aleatório de pesos.
Neste exemplo é assumido que a base para o neurônio é
0,01. Isto significa que se a soma das entradas for menor que 0,01, o
neurônio terá como saída (output) um 0 (zero).
Se a soma das entradas for maior que
0,01, a saída será 1. Depois de aplicar um treinamento padrão
de 1 sobre cada uma das duas entradas (inputs), as saídas dos
neurônios são computadas como mostra a FIGURA 02.
FIGURA 02 - Cálculo das entradas
da rede.
Cada saída de neurônio é mostrada como a soma dos sinais internos dos neurônios. Neurônios a e b estão remetendo o valor 1 para a próxima camada. Neurônio x obtém dois sinais, um do neurônio a e outro do neurônio b. O peso do neurônio a para x é escrito Wxa. Seu valor é -4,9. É multiplicado o sinal vezes seu peso e obtém -4,9. A entrada para o neurônio x de b tem peso Wxb = 5. O sinal de b é 1. Isto contribui 5 para o neurônio x. É adicionado -4,9 + 5 para obter o total do sinal interno do neurônio x, igual a 0,1. Isto é maior que a base de 0,01, então a saída do neurônio x = 1. Similarmente, o sinal de saída pode ser obtido para o neurônio y e z. Com o treinamento padrão que foi dado para a rede (verdadeiro/falso), a saída final deveria ser 0 (zero), mas foi 1. A correção da rede é determinada por um fator de erro e pelo ajustamento dos pesos da última camada de volta para a primeira, uma camada por vez. O erro no neurônio z, Ez, é simplesmente a desejada saída (output) menos a atual saída : Ez = 0 - 1 = -1.
O ajustamento dos pesos é computado pela multiplicação do erro no neurônio vezes a saída do neurônio com o qual o peso é associado. Por exemplo, a alteração em Wzx = -1*1 = - 1. Isto é adicionado para o corrente valor de Wzx. O novo Wzx = -1 +2,2 =1,2. O novo peso para Wzy é o erro em z vezes o sinal de y, adicionado para o corrente valor de Wzy. O novo valor Wzy (-1*0) + 2,5 = 2,5.
Neste caso Wzy não teve mudança.
Agora computar o erro no neurônio
na próxima camada de volta. Para o neurônio x, ele é
igual ao erro em z vezes o peso de conexão de x para
z: Ex = - 1 *2,2 = -2,2. Para computar o novo valor Wxa,
multiplica-se o erro em x pelo sinal de a, então
adiciona o corrente Wxa. O novo Wxa = (-2,2*1) - 4,9 =
-7,1. Depois de todos os pesos terem sido ajustados, um novo valor de
entrada é aplicado na rede. Se existir um erro, a seqüência
de propagação de erro de retomo é aplicada. Quando todos
os quatro pares de entradas padrões (verdadeiro/falso) produzirem
as saídas corretas, o processo para. A rede está treinada.
1.2 - Quadrado médio do erro
(Mean Square Error)
O quadrado do erro de um neurônio i é:
(di - oi)2 = di2 +oi2 - (2 * di * oi)
Onde: di = desejada saída do neurônio; oi = saída atual.
Adaptando os pesos, podemos tentar minimizar o quadrado médio do erro. O quadrado médio do erro é:
(di
- oi)2/N Onde, N = é o número de
neurônios.
Se a função do quadrado
médio do erro de dois pesos é extraída, eles são
parábolas. A melhor solução do quadrado mínimo
linear corresponde à base da parábola (parte côncava).
A solução é obtida achando-se o gradiente da
função do quadrado médio do erro. Desde que nos tratamos
com dois pesos, o quadrado médio do erro é quadrático
nos pesos. O gradiente é a primeira força dos pesos, no caso
uma função linear de pesos. O algoritmo de declive descendente
é baseado numa correção a qual é proporcional
ao gradiente. Assim, a correção é proporcional a uma
função linear de pesos. Isto significa que temos que usar
alimentação para trás (feedback) para atingirmos a base
côncava da parábola. Neste caso, pode-se usar a teoria linear
de alimentação para trás (feedback) para descrever a
dinâmica do comportamento dos pesos.
1.3 - Matemática da
Back-Propagation
Tomando-se como modelo a rede neural chamada "Brainmaker", um neurônio toma entradas (inputs) somente de neurônios na camada antecedente e remete suas saídas (outputs) somente para entradas de neurônios na próxima camada. Camada 2 apanha as saídas da camada 1. Camada 2 dá suas saídas para a camada 3 como entradas. Cada camada pode ser pensada como um vetor das saídas dos seus neurônios. O poder de conexão entre duas camadas constitui os elementos de uma matriz de valores reais. Isto é chamado de matriz de pesos - W.
Wij, representa o peso da conexão do neurônio j para i. Se temos N pares de entradas/saídas que precisam ser aprendidas, podemos indicar estes pares com a letra "p", onde o valor p vai de 1 até N. É designado o p-iésima entrada (input) como Entradap, e a correspondente saída desejada como Padrãop. Devemos forçar os pesos para mudar em cada caminho para atingir finalmente um estado no qual o mapa da rede de Entradap para o Padrãop para todos os valores de p.
É designada a saída de um neurônio individual com índice i como saídai - Similarmente a ativação do neurônio i como Ai. Há uma função de transferência, FT, a qual deve ser contínua e diferenciável, tal como saídai = FT(Ai ) - O Padrãopi representa o alvo de saída para o i-iésimo neurônio na camada de saída da rede, no p-iésimo par de entrada/saída. saídap, corresponde a saída atual para o neurônio. Inicialmente, saídapi, não e igual a Padrãopi , devido a rede iniciar sem estar treinada. Podemos definir o erro, sobre o padrão p, da i-iésima saída do neurônio, tal como:
Erropi ½ (padrãopi - saídapi)2;
O quadrado assegura que todos os erros serão positivos e o fator 1/2 servirá para simplificações posteriores da matemática. O erro total sobre o padrão p é:
Errop= 1/2 i(padrãopi - saídapi)2
O erro total para todos os padrões corresponde ao somatório dos erros de cada padrão sobre todo o p:
Erro = p Erro;
= 1/2 p i (padrãopi - saídapi)2
Treinando a rede para associar os
padrões de entrada/saída pode ser pensado como um problema
de minimização, onde a quantidade a ser minimizada é
E, o erro total sobre todos os padrões. As variáveis
independentes para serem usadas na minimização são os
Wij. Mesmo em redes pequenas tem centenas de neurônios e centenas
de conexões, estamos falando sobre a minimização de
um campo escalar sobre um espaço vetorial com centenas de dimensões.
1.4 - Gradiente descendente
O mais simples método para determinar um local mínimo é conhecido como gradiente descendente ou declive descendente. Não é um bom algoritmo, computacionalmente, mas é aceitável. Gradiente descendente envolve movimentos de pequenos passos abaixo do gradiente local do campo escalar. É semelhante aos movimentos de um esquiador sempre em direção para baixo da montanha, até atingir a base da mesma. Uma desvantagem deste método é a possibilidade do gradiente descendente achar um local de mínima antes que o mínimo global seja atingido, que é o objetivo em última análise. O algoritmo é então emperrado neste mínimo até que algum ruído é adicionado nos pesos, desta forma movimentando o algoritmo para fora deste falso mínimo. Se a alteração nos pesos Wij sobre o padrão p é denotado PorpWij, então poderemos ter, com o gradiente descendente no erro Epi, o seguinte:
pWij = * - Epi / Wij;
Onde: = alguma constante (taxa de
aprendizado). Note-se que desde que E / Wij = p
Epi / Wij, este algoritmo não implementa
um verdadeiro gradiente descendente em E se os pesos são alterados
depois de cada apresentação padrão. É suficiente
certo que ele trabalhe na grande maioria dos casos.
1.5 - Regra da corrente (cadeia)