You are on page 1of 4

A rede Elman comumente uma rede de duas camadas com o feedback do sada

da primeira camada para a entrada da primeira camada. Esta ligao permite que a
repetio Rede Elman para detectar e gerar padres variveis no tempo. Uma de duas
camadas Elman rede mostrado abaixo.

Figura 1 - Esquema da rede Elman (Fonte: NNtoolbox)

A rede Elman tem neurnios tansig em sua escondido (recorrente) camada, e


purelin neurnios na sua camada de sada. Esta combinao especial em que redes de
duas camadas com estas funes de transferncia pode aproximar qualquer funo (com
um nmero finito de descontinuidades) com preciso arbitrria. O nico requisito que
a camada oculta deve ter suficientes neurnios. Mais neurnios ocultos so necessrios,
como a funo que est sendo montado aumentos de complexidade. Note-se que a rede
de Elman difere de redes de duas camadas convencionais em que a primeira camada tem
uma ligao recorrente. O atraso neste contexto armazena os valores do passo de tempo
anterior, que pode ser usado na actual intervalo de tempo.
Assim, mesmo se duas redes Elman, com os mesmos pesos e desvios, so dadas
entradas idnticas em um determinado intervalo de tempo, seus resultados podem ser
diferentes por causa da diferentes estados feedback.
Uma vez que a rede pode armazenar informao para referncia futura, capaz
de aprender padres temporais, bem como padres espaciais. A rede pode ser Elman
treinados para responder a, e para gerar, ambos os tipos de padres.
Criao de uma rede Elman (newelm)
Voc pode usar o newelm funo para criar uma rede de Elman com dois ou
mais camadas. As camadas ocultas geralmente tm funes de transferncia tansig e
este o padro para newelm. O diagrama mostra que a arquitectura purelin
normalmente a funo de transferncia de sada de camada.
A funo de treinamento backpropagation padro trainbfg. Voc pode usar
trainlm, mas tende a avanar to rapidamente que ele no necessariamente fazer bem na

rede de Elman. A funo peso backpropagation / vis de aprendizado padro


learngdm, ea funo de desempenho padro mse.
Quando a rede criado, os pesos e preconceitos de cada camada so inicializado
com o mtodo camada inicializao Nguyen-Widrow, que implementado no initnw
funo. Por exemplo, considere uma sequncia de vetores de entrada de um nico
elemento no intervalo de 0 a 1 e com potncia na mesma gama. Suponha que voc quer
ter cinco camadas escondidas neurnios tansig e uma camada de sada logsig nico. O
comando a seguir cria esta rede:
net = newelm([0 1],[0 1],5,{'tansig','logsig'});
Simulao
Suponha que voc quer encontrar a resposta desta rede a uma entrada sequncia
de oito dgitos que so ou 0 ou 1:
P = round(rand(1,8))
P=01011000
Recorde-se que uma sequncia que ser apresentado a uma rede ser em forma
de matriz celular. Converso P a esta forma:
Pseq = con2seq(P)
Pseq = [0] [1] [0] [1] [1] [0] [0] [0]
Agora voc pode encontrar a sada da rede com a funo sim:
Y = sim(net,Pseq)
Y=
Columns 1 through 5
[1.9875e-04] [0.1146] [5.0677e-05] [0.0017] [0.9544]
Columns 6 through 8
[0.0014] [5.7241e-05] [3.6413e-05]
Converter esta de volta forma concorrente com
z = seq2con(Y);
z{1,1}
ans =
Columns 1 through 7
0.0002 0.1146 0.0001 0.0017 0.9544 0.0014 0.0001
Column 8
0.0000
Assim, uma vez que a rede ser criada e a entrada especificado, voc s precisa
de chamar a funo sim.

Trainando a rede Elman


Elman redes podem ser treinados com qualquer uma das duas funes, trem ou
adaptar. Quando voc usa a funo de trem para treinar uma rede Elman o seguinte
ocorre:
Em cada poca,
1 A sequncia inteira de entrada apresentada para a rede, e as suas sadas so calculado
e comparado com a sequncia alvo para gerar um erro sequncia.
2 Para cada intervalo de tempo, o erro backpropagated para encontrar gradientes de
erros para cada peso e preconceito. Este gradiente realmente uma aproximao,
porque as contribuies de pesos e preconceitos a erros via adiada conexo recorrente
so ignorados.
3 Este gradiente , ento, utilizado para actualizar os pesos com o Retropropagao
escolhido funo de treinamento. O traingdx funo recomendado. 13 Networks
histrico 13-6 Quando voc usa a funo de adaptar-se a treinar uma rede de Elman, o
seguinte ocorre:
Em cada passo de tempo,
1 vectores de entrada so apresentados rede, e gera um erro.
2 O erro backpropagated para encontrar gradientes de erros para cada peso e vis. Este
gradiente na verdade uma aproximao, porque as contribuies de pesos e desvios
para o erro, atravs da ligao recorrente atrasou, so ignorado.
3 Este gradiente aproximado ento utilizado para actualizar os pesos com o funo de
aprendizagem escolhido. O learngdm funo recomendado. Redes Elman no so to
confiveis como alguns outros tipos de redes, porque treinamento e adaptao acontecer
usando uma aproximao do erro gradiente.
Para uma Elman para ter a melhor chance de aprender um problema, ele precisa de mais
neurnios escondidos em sua camada escondida do que so realmente necessrios para
uma soluo por outro mtodo. Enquanto uma soluo pode estar disponvel com menos
neurnios, o Rede Elman menos capaz de encontrar os pesos mais adequadas para
ocultos neurnios porque o gradiente de erro aproximada. Portanto, ter uma feira
nmero de neurnios para comear torna mais provvel que os neurnios escondidos vai
comear a dividir o espao de entrada em formas teis.
O trem funo treina uma rede Elman para gerar uma seqncia de destino
vectores de quando apresentado com uma dada sequncia de vectores de entrada. A
entrada vetores e vetores alvo so passados para treinar como matrizes P e T. trem leva
estes vectores e os pesos iniciais e preconceitos da rede, treina o rede usando
backpropagation com mpeto e uma aprendizagem adaptativa taxa, e retorna novos
pesos e preconceitos.
Continuar com o exemplo, e suponha que voc quer treinar uma rede com uma
entrada P e alvos T como definido a seguir,
P = round(rand(1,8))

P=10111011
E
T = [0 (P(1:end-1)+P(2:end) == 2)]
T=00011001
Aqui T definido como sendo 0, 1, excepto quando dois de ocorrer em P, caso
em que t 1. Conforme observado anteriormente, a rede tem cinco neurnios
escondidos na primeira camada.
net = newelm(P,T,5,{'tansig','logsig'});
Use trainbfg como a funo de treinamento e treinar para 100 pocas. Aps o
treinamento, simular a rede com a entrada P e calcular a diferena entre o sada de
destino e a sada da rede simulada.
Pseq = con2seq(P);
Tseq = con2seq(T);
net = train(net,Pseq,Tseq);
Y = sim(net,Pseq);
z = seq2con(Y);
z{1,1};
diff1 = T - z{1,1};
Note-se que a diferena entre o alvo e a sada da simulao rede treinada muito
pequena. Assim, a rede treinado para produzir o seqncia de sada desejado na
apresentao do vetor de entrada P. Consulte "Appelm1: Deteco Amplitude" na
pgina 11-11 para uma aplicao do Rede Elman para a deteco da amplitude da onda.

You might also like