Sunteți pe pagina 1din 14

Alunos: Ana Carolina Lins e Rafael Fernandes Gomes

Curso: Sistemas de informao


Universidade Catlica de Santos
Todo cdigo fonte da atividade se encontra disponvel no seguinte
endereo eletrnico: http://code.google.com/p/redesneurais/
Atividade Computacional 01: Neurnio de McCulloch & Pitts
Programar o neurnio de McCulloch & Pitts, tendo como parmetros de
entrada o limiar e de sada o valor de y. Segue uma breve descrio conceitual
sobre este modelo de neurnio. Cada neurnio possui um limiar (threshold) fixo
e recebe algumas entradas. A cada iterao t, o neurnio responde a suas
entradas sinpticas, que refletem o estado do neurnio pr-sinptico. Se
nenhuma sinapse inibitria esta ativa, o neurnio integra (soma) suas entradas,
gerando a entrada lquida (ou entrada interna) u do neurnio e verifica se u e
maior do que o limiar . Caso positivo, o neurnio responde com um sinal de
sada de valor 1. Caso negativo, ele responde com um sinal de sada 0.
Descrio do algoritmo:
O algoritmo recebe um vetor de estmulos de tamanho varivel, o qual
sofre as seguintes operaes:
1. Gerar pesos para cada entrada sinptica de forma aleatria. No
caso do neurnio de MP um vetor de pesos foi
inicializado com 1 ;
2. Ponderar o vetor de entradas multiplicando cada valor do vetor de
estmulos pelo peso (wk) correspondente. Desta operao nascer
um vetor resultante z;
3. O vetor resultante z ter ento, todos seus valores integrados
gerando um valor uk;
4. O valor de uk ser passado a uma funo de ativao DEGRAU
que com base nesse valor retornar 0 ou 1;
Simulao 1:
Vetor de entrada: [1.0, 0.0]
Resultado 1:
Estmulos: [1.0, 0.0]
Pesos das conexes: [1.0, 1.0]
Uk: 1.0
y: 1.0
Limiar: 1.0
Bias: 0.0

Simulao 2:
Vetor de entrada: [1.0, 1.0, 1.0]
Resultado 2:
Estmulos: [1.0, 1.0, 1.0]
Pesos das conexes: [1.0, 1.0, 1.0]
Uk: 3.0
y: 1.0
Limiar: 1.0
Bias: 0.0
Simulao 3:
Vetor de entrada: [1.0, -1.0]
Resultado 3:
Estmulos: [1.0, -1.0]
Pesos das conexes: [1.0, 1.0]
Uk: 0.0
y: 0.0
Limiar: 1.0
Bias: 0.0

Atividade Computacional 02: Principais funes de ativao.


Programar as funes de ativao: linear, degrau, sigmoidal e gaussiana.
Cada funo deve receber o valor da entrada liquida do neurnio uk e fornecer a
sada da funo yk. Segue uma breve descrio conceitual sobre as funes de
ativao.
Descrio do algoritmo:
Simulao:
Resultado:
[LINEAR]
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:
Linear:

uk = 0.0, lm = 1.0, y = 0.0


uk = 1.0, lm = 1.0, y = 1.0
uk = 2.0, lm = 1.0, y = 2.0
uk = 3.0, lm = 1.0, y = 3.0
uk = 4.0, lm = 1.0, y = 4.0
uk = 5.0, lm = 1.0, y = 5.0
uk = 6.0, lm = 1.0, y = 6.0
uk = 7.0, lm = 1.0, y = 7.0
uk = 8.0, lm = 1.0, y = 8.0
uk = 9.0, lm = 1.0, y = 9.0
uk = 10.0, lm = 1.0, y = 10.0
uk = 11.0, lm = 1.0, y = 11.0
uk = 12.0, lm = 1.0, y = 12.0
uk = 13.0, lm = 1.0, y = 13.0
uk = 14.0, lm = 1.0, y = 14.0
uk = 15.0, lm = 1.0, y = 15.0
uk = 16.0, lm = 1.0, y = 16.0
uk = 17.0, lm = 1.0, y = 17.0
uk = 18.0, lm = 1.0, y = 18.0
uk = 19.0, lm = 1.0, y = 19.0

[DEGRAU]
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:
Degrau:

uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk

= 0.0, lm = 4.0, y = 0.0


= 1.0, lm = 4.0, y = 0.0
= 2.0, lm = 4.0, y = 0.0
= 3.0, lm = 4.0, y = 0.0
= 4.0, lm = 4.0, y = 1.0
= 5.0, lm = 4.0, y = 1.0
= 6.0, lm = 4.0, y = 1.0
= 7.0, lm = 4.0, y = 1.0
= 8.0, lm = 4.0, y = 1.0
= 9.0, lm = 4.0, y = 1.0
= 10.0, lm = 4.0, y = 1.0
= 11.0, lm = 4.0, y = 1.0
= 12.0, lm = 4.0, y = 1.0
= 13.0, lm = 4.0, y = 1.0
= 14.0, lm = 4.0, y = 1.0
= 15.0, lm = 4.0, y = 1.0
= 16.0, lm = 4.0, y = 1.0
= 17.0, lm = 4.0, y = 1.0
= 18.0, lm = 4.0, y = 1.0
= 19.0, lm = 4.0, y = 1.0

[GAUSSIANA]
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:
Gaussiana:

uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk

= -10.0, lm = 10.0, y = 1.928749847963923E-22


= -9.0, lm = 10.0, y = 2.5767571091549864E-18
= -8.0, lm = 10.0, y = 1.2664165549094198E-14
= -7.0, lm = 10.0, y = 2.289734845645556E-11
= -6.0, lm = 10.0, y = 1.5229979744712642E-8
= -5.0, lm = 10.0, y = 3.7266531720786735E-6
= -4.0, lm = 10.0, y = 3.35462627902512E-4
= -3.0, lm = 10.0, y = 0.01110899653824231
= -2.0, lm = 10.0, y = 0.1353352832366127
= -1.0, lm = 10.0, y = 0.6065306597126334
= 0.0, lm = 10.0, y = 1.0
= 1.0, lm = 10.0, y = 0.6065306597126334
= 2.0, lm = 10.0, y = 0.1353352832366127
= 3.0, lm = 10.0, y = 0.01110899653824231
= 4.0, lm = 10.0, y = 3.35462627902512E-4
= 5.0, lm = 10.0, y = 3.7266531720786735E-6
= 6.0, lm = 10.0, y = 1.5229979744712642E-8
= 7.0, lm = 10.0, y = 2.289734845645556E-11
= 8.0, lm = 10.0, y = 1.2664165549094198E-14
= 9.0, lm = 10.0, y = 2.5767571091549864E-18

[SIGMOIDAL]
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:
Sigmoidal:

uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk

= 0.0, lm = 1.0, y = 0.5


= 1.0, lm = 1.0, y = 0.7310585786300049
= 2.0, lm = 1.0, y = 0.8807970779778823
= 3.0, lm = 1.0, y = 0.9525741268224331
= 4.0, lm = 1.0, y = 0.9820137900379085
= 5.0, lm = 1.0, y = 0.9933071490757153
= 6.0, lm = 1.0, y = 0.9975273768433653
= 7.0, lm = 1.0, y = 0.9990889488055994
= 8.0, lm = 1.0, y = 0.9996646498695336
= 9.0, lm = 1.0, y = 0.9998766054240137
= 10.0, lm = 1.0, y = 0.9999546021312976
= 11.0, lm = 1.0, y = 0.999983298578152
= 12.0, lm = 1.0, y = 0.9999938558253978
= 13.0, lm = 1.0, y = 0.999997739675702
= 14.0, lm = 1.0, y = 0.9999991684719722
= 15.0, lm = 1.0, y = 0.999999694097773
= 16.0, lm = 1.0, y = 0.9999998874648379
= 17.0, lm = 1.0, y = 0.9999999586006244
= 18.0, lm = 1.0, y = 0.9999999847700205
= 19.0, lm = 1.0, y = 0.9999999943972036

[SINAL]
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:
Sinal:

uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk
uk

= 0.0, lm = 1.0, y = -1.0


= 1.0, lm = 1.0, y = 1.0
= 2.0, lm = 1.0, y = 1.0
= 3.0, lm = 1.0, y = 1.0
= 4.0, lm = 1.0, y = 1.0
= 5.0, lm = 1.0, y = 1.0
= 6.0, lm = 1.0, y = 1.0
= 7.0, lm = 1.0, y = 1.0
= 8.0, lm = 1.0, y = 1.0
= 9.0, lm = 1.0, y = 1.0
= 10.0, lm = 1.0, y = 1.0
= 11.0, lm = 1.0, y = 1.0
= 12.0, lm = 1.0, y = 1.0
= 13.0, lm = 1.0, y = 1.0
= 14.0, lm = 1.0, y = 1.0
= 15.0, lm = 1.0, y = 1.0
= 16.0, lm = 1.0, y = 1.0
= 17.0, lm = 1.0, y = 1.0
= 18.0, lm = 1.0, y = 1.0
= 19.0, lm = 1.0, y = 1.0

Atividade Computacional 03: Neurnio genrico em RNAs.


Programar o neurnio genrico em RNAs tendo como entradas o vetor x, o
tipo de funo de ativao f; e como sada a sada do neurnio yk.
O algoritmo recebe um vetor de estmulos de tamanho varivel, o qual
sofre as seguintes operaes:
1. Gerar pesos para cada entrada sinptica de forma aleatria;
2. Ponderar o vetor de entradas multiplicando cada valor do vetor de
estmulos pelo peso (wk) correspondente. Desta operao nascer
um vetor resultante z;
3. O vetor resultante z ter ento, todos seus valores integrados
gerando um valor uk;
4. O valor de uk ser passado a uma funo de ativao que com
base nesse valor retornar 0 ou 1;
Simulao 1:
Vetor de entrada: [1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0]
Resultado 1:
Estmulos: [1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0]
Pesos das conexes: [-0.9457184068615797,
-0.682221790449891,
0.44370844656613506,
0.17369200049183575,
-0.2659832135085144,
-0.7172477918394782,
-0.1668396760548555]
Uk: -1.7202314103281493
y: 0.0
Limiar: 1.0
Bias: 0.0

Atividade
camada.

Computacional

04:

Rede

feedforward

de

uma

nica

Programar uma rede feedforward de uma nica camada, tendo como


entradas o numero de neurnios na rede o, o vetor de entradas x, o tipo de
funo de ativao (assumida a mesma para todos os neurnios); e como sada o
vetor y, que conte a sada de cada neurnio da rede para o vetor de entradas x.
Segue uma breve descrio conceitual sobre a rede feedforward de uma nica
camada. Este caso mais simples de rede em camadas consiste em uma camada
de entrada e uma camada de sada. Geralmente os neurnios de entrada so
lineares, ou seja, eles simplesmente propagam o sinal de entrada para a prxima
camada. So tambm denominados de neurnios sensoriais.
Descrio do algoritmo:
O algoritmo da atividade 04 funciona de forma semelhante ao da
atividade 03, excetuando-se as seguintes caractersticas:
1. O estimulo recebido por uma camada, a qual propaga os sinais
para todos os neurnios da mesma;
2. Caso haja mais de uma camada, o resultado da camada y-1 ser o
estimulo da camada y;
3. O algoritmo encerrado quando todas as camadas so percorridas
e estimuladas;
Simulao:
Camadas: 2
Estmulos = [1, 0, 1, -1, 0];
Quantidade de Neurnios = [5,5];
Tipo por camada = {ATIVACAO_DEGRAU, ATIVACAO_DEGRAU};
Limiares = [1, 1, 1, 1, 1];
Resultado:
[Camada 1]
[Neurnio 1]
Estmulos: [1.0, 0.0, 1.0, -1.0, 0.0]
Pesos das conexes: [-0.5140230930588524, -0.6651694989067924,
0.9944876058530419, 0.2927937631455997, 0.9523318732600335]
Uk: 0.18767074964858976
y: 1.0
Limiar: 0.0
Bias: 0.0
[Neurnio 2]

Estmulos: [1.0, 0.0, 1.0, -1.0, 0.0]


Pesos das conexes: [-0.7008627392351738, 0.5459171930692702,
-0.08564373340655596, 0.9906025231565917, -0.103750710355904]
Uk: -1.7771089957983215
y: 0.0
Limiar: 0.0
Bias: 0.0
[Neurnio 3]
Estmulos: [1.0, 0.0, 1.0, -1.0, 0.0]
Pesos das conexes: [0.503518628099867, -0.9760906586093142,
0.04063862810776586, -0.7446205909512301, -0.5435874074032252]
Uk: 1.2887778471588631
y: 1.0
Limiar: 0.0
Bias: 0.0
[Neurnio 4]
Estmulos: [1.0, 0.0, 1.0, -1.0, 0.0]
Pesos das conexes: [0.9957680672792361, -0.9613664966218451,
-0.4118269479671375, -0.7631504891949425, -0.6002309195042694]
Uk: 1.347091608507041
y: 1.0
Limiar: 0.0
Bias: 0.0
[Neurnio 5]
Estmulos: [1.0, 0.0, 1.0, -1.0, 0.0]
Pesos das conexes: [-0.9194483343463987, -0.11276065706418381,
-0.5064897849879659, -0.16121475800618834, -0.4654589720267053]
Uk: -1.2647233613281763
y: 0.0
Limiar: 0.0
Bias: 0.0
[Camada 2]
[Neurnio 1]
Estmulos: [1.0, 0.0, 1.0, 1.0, 0.0]
Pesos das conexes: [-0.05382391636069428, -0.08969963168285355,
0.6785020395729958, 0.06912112967370387, -0.6619382215968903]
Uk: 0.6937992528860054
y: 1.0

Limiar: 0.0
Bias: 0.0
[Neurnio 2]
Estmulos: [1.0, 0.0, 1.0, 1.0, 0.0]
Pesos das conexes: [-0.4755728286402966, 0.5364109340786096,
0.7040806713338894, 0.37198533837966097, -0.010378226167076843]
Uk: 0.6004931810732538
y: 1.0
Limiar: 0.0
Bias: 0.0
[Neurnio 3]
Estmulos: [1.0, 0.0, 1.0, 1.0, 0.0]
Pesos das conexes: [-0.2591982323777221, -0.9917157201514759,
-0.9896734015454114, -0.24800790611514145, -0.42645149456424325]
Uk: -1.4968795400382748
y: 0.0
Limiar: 0.0
Bias: 0.0
[Neurnio 4]
Estmulos: [1.0, 0.0, 1.0, 1.0, 0.0]
Pesos das conexes: [0.37780391763181853, -0.3424900966364357,
-0.25090238877017157, 0.9805890906514702, 0.4717647094921128]
Uk: 1.1074906195131171
y: 1.0
Limiar: 0.0
Bias: 0.0
[Neurnio 5]
Estmulos: [1.0, 0.0, 1.0, 1.0, 0.0]
Pesos das conexes: [-0.8435372565466441, 0.45176198095421716,
-0.17698210704074058, 0.04379872267879503, 0.7690330632909731]
Uk: -0.9767206409085898
y: 0.0
Limiar: 0.0
Bias: 0.0

Atividade Computacional 05:


Perceptron Simples para Funes Booleanas.
Programe o perceptron com um nico neurnio para representar as
funes lgicas AND, OR e XOR. Utilize a explicao terica apresentada no
arquivo RNA_parcial.pdf e gere um algoritmo com os mesmos parmetros de
entrada e sada.
Descrio do algoritmo:
1. O perceptron inicializado de forma aleatria;
2. apresentado ao algoritmo N padres de entrada e um de sada
desejada;
3. Para cada padro de entrada, o perceptron estimulado e devolve
uma sada yk;
4. feito o calculo do erro entre yk e a sada desejada;
5. Os pesos so ajustados com base no erro encontrado;
6. O bias bk ajustado com base no erro encontrado;
7. O algoritmo continua ate que o erro seja zero ou at que se
atinjam cem iteraes;
Simulao:
Padres de entrada = {{0,0}, {0,1}, {1,0}, {1,1}};
/* Sada esperada utilizando o operador lgico AND */
saida_and = {0,0,0,1};
/* Sada esperada utilizando o operador lgico OR */
Saida_or = {0, 1, 1,1};
/* Sada esperada utilizando o operador lgico NAND */
Saida_nand = {1, 1, 1,0};
/* Sada esperada utilizando o operador lgico NOR */
Saida_nor = {1, 0, 0,0};
Resultado:
[Porta AND]
Estmulos: [1.0, 1.0]
Pesos das conexes: [1.757368282475539, 1.060780269718821]
Uk: 0.7363046326459735
y: 1.0
Limiar: 0.0
Bias: -2.0818439195483864

Teste
Teste
Teste
Teste

0,0: 0.0
0,1: 0.0
1,0: 0.0
1,1: 1.0

[Porta OR]
Estmulos: [1.0, 1.0]
Pesos das conexes: [0.11969228694721157, 0.49342560774352806]
Uk: 0.6062281840031658
y: 1.0
Limiar: 0.0
Bias: -0.0068897106875738245
Teste
Teste
Teste
Teste

0,0: 0.0
0,1: 1.0
1,0: 1.0
1,1: 1.0

[Porta NAND]
Estmulos: [1.0, 1.0]
Pesos das conexes: [-2.0475881721088482, -0.9351635993345728]
Uk: -0.6107913218498493
y: 0.0
Limiar: 0.0
Bias: 2.3719604495935718
Teste
Teste
Teste
Teste

0,0: 1.0
0,1: 1.0
1,0: 1.0
1,1: 0.0

[Porta NOR]
Estmulos: [1.0, 1.0]
Pesos das conexes: [-0.5872434158083897, -0.5961084020964295]
Uk: -1.1443285545095252
y: 0.0
Limiar: 0.0
Bias: 0.03902326339529383
Teste
Teste
Teste
Teste

0,0: 1.0
0,1: 0.0
1,0: 0.0
1,1: 0.0

Atividade Computacional 06:


Perceptron Simples para reconhecimento de Caracteres.
Implemente o perceptron com mltiplos neurnios para classificar os
caracteres apresentados no material da disciplina e disponibilizados no APEP.
Utilize a explicao terica apresentada no arquivo RNA_parcial.pdf e gere um
algoritmo com os mesmos parmetros de entrada e sada.
Descrio do algoritmo:
Simulao:
Resultado:

S-ar putea să vă placă și