Vous êtes sur la page 1sur 24

BIOINFORMATICA

UNIVERCIDAD NACIONAL
APLICACIONES DEL
D E L S A N TA

PERCEPTRON
INGENIERIA DE SISTEMAS
E I N F O R M AT I C A

En
R AelMsiguiente
OS SAM informe
A M E se
JOpresentan
N A T H Alas
N
aplicaciones del perceptron en java
CICLOV
1 BIOINFORMATICA

PERCEPTRON DE 2 ENTRADAS
El Perceptrn es un tipo de red neuronal artificial desarrollado por Frank
Rosenblat, tambin puede entenderse como perceptrn la neurona artificial y
unidad bsica de inferencia en forma de discriminador lineal, que constituye este
modelo de red neuronal artificial, esto debido a que el perceptrn puede usarse
como neurona dentro de un perceptrn ms grande u otro tipo de red neuronal
artificial.

Definicin

El concepto ms bsico que permite comenzar a entender un perceptrn es


asociarlo a un sensor, ya sea de temperatura, humedad, nivel de lquidos, grado
de acidez, coloracin, densidad, etc. Es, en esencia, un dispositivo que, dada la
presencia de uno o varios fenmenos de entrada, permite representarlo(s)
mediante una seal de salida fcilmente reconocible. Ahora bien, si dotamos a
este simple dispositivo de varios canales de entrada (dos o ms), le habremos
agregado una notable mejora ya que podr discriminar o diferenciar entre
distintos fenmenos de entrada variables y entregarnos una salida que
representar el criterio diferenciador o resultado de la interaccin entre las
entradas.

El modelo biolgico ms simple de un perceptrn es una neurona y vice versa. Es


decir, el modelo matemtico ms simple de una neurona es un perceptrn, La
neurona es una clula especializada y caracterizada por poseer una cantidad
indefinida de canales de entrada llamados dendritas y un canal de salida llamado
axn. Las dendritas operan como sensores que recogen informacin de la regin
2 BIOINFORMATICA

donde se hallan y la derivan hacia el cuerpo de la neurona que reacciona


mediante una sinapsis que enva una respuesta hacia el cerebro, esto en el caso
de los seres vivos.

Una neurona sola y aislada carece de razn de ser. Su labor especializada se


torna valiosa en la medida en que se asocia a otras neuronas, formando una red.
Normalmente, el axn de una neurona entrega su informacin como "seal de
entrada" a una dendrita de otra neurona y as sucesivamente. El perceptrn que
capta la seal en adelante se entiende formando una red de neuronas, sean stas
biolgicas o de sustrato semiconductor (compuertas lgicas).

El perceptrn usa una matriz para representar las redes neuronales y es un


discriminador terciario que traza su entrada (un vector binario) a un nico valor
de salida (un solo valor binario) a travs de dicha matriz.

Donde es un vector de pesos reales y es el producto punto (que computa


una suma ponderada). es el 'umbral', el cual representa el grado de inhibicin de
la neurona, es un trmino constante que no depende del valor que tome la
entrada.

El valor de (0 o 1) se usa para clasificar como un caso positivo o un caso


negativo, en el caso de un problema de clasificacin binario. El umbral puede
pensarse de como compensar la funcin de activacin, o dando un nivel bajo de
actividad a la neurona del rendimiento. La suma ponderada de las entradas debe
producir un valor mayor que para cambiar la neurona de estado 0 a 1.

Aprendizaje

En el perceptrn, existen dos tipos de aprendizaje, el primero utiliza una tasa de


aprendizaje mientras que el segundo no la utiliza. Esta tasa de aprendizaje
amortiga el cambio de los valores de los pesos. 1
3 BIOINFORMATICA

El algoritmo de aprendizaje es el mismo para todas las neuronas, todo lo que


sigue se aplica a una sola neurona en el aislamiento. Se definen algunas variables
primero:

el denota el elemento en la posicin en el vector de la entrada

el el elemento en la posicin en el vector de peso

el denota la salida de la neurona

el denota la salida esperada

el es una constante tal que

Los dos tipos de aprendizaje difieren en este paso. Para el primer tipo de
aprendizaje, utilizando tasa de aprendizaje, utilizaremos la siguiente regla de
actualizacin de los pesos:

Para el segundo tipo de aprendizaje, sin utilizar tasa de aprendizaje, la regla


de actualizacin de los pesos ser la siguiente:

Por lo cual, el aprendizaje es modelado como la actualizacin del vector de


peso despus de cada iteracin, lo cual slo tendr lugar si la salida
difiere de la salida deseada . Para considerar una neurona al interactuar
en mltiples iteraciones debemos definir algunas variables ms:

denota el vector de entrada para la iteracin i

denota el vector de peso para la iteracin i

denota la salida para la iteracin i


4 BIOINFORMATICA

denota un periodo de aprendizaje


de iteraciones

En cada iteracin el vector de peso es actualizado como sigue:

Para cada pareja ordenada


en

Pasar a la regla de
actualizacin

El periodo de aprendizaje se dice que es separable linealmente si


existe un valor positivo y un vector de peso tal
que: para todos los .

Novikoff (1962) probo que el algoritmo de aprendizaje converge despus


de un nmero finito de iteraciones si los datos son separables linealmente y

el nmero de errores esta limitado a: .

Sin embargo si los datos no son separables linealmente, la lnea de


algoritmo anterior no se garantiza que converja.

Perceptron de 2 entradas en java

El mbito de java para comenzar a crear cdigos para que el


perceptron aprenda:

package redneuronal2;

import java.util.*;

public class Main {

public static void main(String[] args) {


5 BIOINFORMATICA

Scanner R = new Scanner (System.in);

System.out.println(" PERCEPTRON DE 2 ENTRADAS ");

int n,filas,i,j,aux,cont,cont2,grupo;

n=2;

1.- GENERAMOS LA TABLA AND PARA 2 PESOS

Aqu generamos la tabla and para 2 pesos en el cual tenemos


que tener en cuenta las filas y columnas de la tabla AND:

filas=(int)Math.pow(2,n);

int[][]TablaAnd= new int [filas][n+1];

aux=filas;

for(j=0;j<=n;j++){

aux=aux/2;

cont=0;

cont2=0;

grupo=1;

for(i=0;i<=filas-1;i++){

if(j!=n){
6 BIOINFORMATICA

if(cont==aux){

cont=0;

grupo++;

if(grupo%2!=0){

TablaAnd[i][j]=1;

cont++;

}else{

TablaAnd[i][j]=-1;

cont++;

}else{

for(int h=0;h<n;h++){

if(TablaAnd[i][h]==-1){

cont2++;

if(cont2==0){

TablaAnd[i][j]=1;

}else{

TablaAnd[i][j]=-1;

}}
7 BIOINFORMATICA

System.out.println(" TABLA AND");

System.out.println(" Para "+n+" pesos");

for(j=0;j<=filas-1;j++){

for(i=0;i<=n;i++){

if(TablaAnd[j][i]==1){

System.out.print(" "+TablaAnd[j][i]+" ");

}else{

System.out.print(TablaAnd[j][i]+" ");

System.out.println();

2.-INGRASANDO LOS DATOS

Ingresamos los datos como son los pesos, el factor de


aprendizaje y el umbral

System.out.println();

double[]peso=new double[n+1];

int Xo=-1;

double Wo=0,e=0;
8 BIOINFORMATICA

for(i=1;i<=n;i++){

System.out.println("\nIngresa el peso "+i);

peso[i]=R.nextDouble();

System.out.println("Ingresa el valor del umbral");

Wo=R.nextDouble();

System.out.println("Ingresa el Factor de
Aprendizaje");

e=R.nextDouble();

3.- INCIA EL BUCLE PARA HALLAR LOS PESOS IDEALES

Aqu se inicia el bucle para hallar los pesos ideales y si no


sucede se usa el factor de aprendizaje para que la neurona
aprenda

double []salida=new double[filas+1];

int[]y=new int[filas+1];

double SubSalida;

int aux2=1,z,it=0;

String salidas="";

while(aux2!=0){

aux2=0;
9 BIOINFORMATICA

z = 0;

salidas="";

4.-GENERAMOS LAS SALIDAS DE ACUERDO A LA


TABLA AND

System.out.println("\nCalculando las salidas...\n");

for(j=1;j<=filas;j++){

SubSalida=0;

for(i=1;i<=n;i++){

SubSalida=SubSalida+TablaAnd[j-1][i-1]*peso[i];

salida[j]=SubSalida+Wo*Xo;

salida[j]=salida[j]*100;salida[j]=Math.round(salida[j]);salida[j]
=salida[j]/100;

if(salida[j]>=0){

y[j]=1;

}else{

y[j]=-1;

System.out.println("Salida "+j+": "+salida[j]


+"\ty="+y[j]);

if(y[j]!=TablaAnd[j-1][n]){

aux2=aux2+1;
10 BIOINFORMATICA

salidas=j+", "+salidas;

if(aux2==1){

z=j-1;

}}

5.- HACEMOS EL AJUSTE DE LOS PESOS, SI ALGUNA


SALIDA NO COINCIDE CON LA TABLA

if(aux2!=0){

if(aux2==1){

System.out.println("\nLa salida "+salidas+" no


coincide con la tabla\n");

}else{

System.out.println("\nLas salidas "+salidas+" no


coinciden con la tabla\n");

System.out.println(" ITERACIN "+(it+1));

System.out.println("Ajustando los pesos...\n");

for(i=1;i<=n;i++){

peso[i]=peso[i]+(2*e*TablaAnd[z][n]*TablaAnd[z]
[i-1]);
11 BIOINFORMATICA

peso[i]=peso[i]*100;peso[i]=Math.round(peso[i]);peso[i]=pes
o[i]/100;

System.out.println("El nuevo valor del peso "+i+"


es: "+peso[i]);

Wo=Wo+(2*e*TablaAnd[z][n]*Xo);

Wo=Wo*100;Wo=Math.round(Wo);Wo=Wo/100;

System.out.println("El nuevo valor del Umbral es:


"+Wo);

it++;

}else{

System.out.println();

System.out.println("\nLAS SALIDAS COINCIDEN CON


LA TABLA, los valores finales son: \n");

for(i=1;i<=n;i++){

System.out.println("*** PESO "+i+" : "+peso[i]);

System.out.println("*** UMBRAL(Wo): "+Wo);

System.out.println("\n** El Numero de iteraciones


fue: "+it);

System.out.println("\n");

}
12 BIOINFORMATICA

Aplicacin de perceptron en java

Aplicacin de las salidas del perceptron


13 BIOINFORMATICA

PERCEPTRON DE N ENTRADAS
14 BIOINFORMATICA

El mbito de java para comenzar a crear cdigos para que el


perceptron aprenda:

package redneuronal2;

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner R = new Scanner (System.in);

System.out.println(" PERCEPTRON DE N ENTRADAS ");

int n,filas,i,j,aux,cont,cont2,grupo;

n=2;

1.- GENERAMOS LA TABLA AND PARA N PESOS

Aqu generamos la tabla and para N pesos en el cual tenemos


que tener en cuenta las filas y columnas de la tabla :

filas=(int)Math.pow(2,n);

int[][]TablaAnd= new int [filas][n+1];

aux=filas;

for(j=0;j<=n;j++){

aux=aux/2;

cont=0;
15 BIOINFORMATICA

cont2=0;

grupo=1;

for(i=0;i<=filas-1;i++){

if(j!=n){

if(cont==aux){

cont=0;

grupo++;

if(grupo%2!=0){

TablaAnd[i][j]=1;

cont++;

}else{

TablaAnd[i][j]=-1;

cont++;

}else{

for(int h=0;h<n;h++){

if(TablaAnd[i][h]==-1){

cont2++;

if(cont2==0){

TablaAnd[i][j]=1;
16 BIOINFORMATICA

}else{

TablaAnd[i][j]=-1;

}}

System.out.println(" TABLA AND");

System.out.println(" Para "+n+" pesos");

for(j=0;j<=filas-1;j++){

for(i=0;i<=n;i++){

if(TablaAnd[j][i]==1){

System.out.print(" "+TablaAnd[j][i]+" ");

}else{

System.out.print(TablaAnd[j][i]+" ");

System.out.println();

2.-INGRASANDO LOS DATOS

Ingresamos los datos como son los pesos, el factor de


aprendizaje y el umbral
17 BIOINFORMATICA

System.out.println();

double[]peso=new double[n+1];

int Xo=-1;

double Wo=0,e=0;

for(i=1;i<=n;i++){

System.out.println("\nIngresa el peso "+i);

peso[i]=R.nextDouble();

System.out.println("Ingresa el valor del umbral");

Wo=R.nextDouble();

System.out.println("Ingresa el Factor de
Aprendizaje");

e=R.nextDouble();

3.- INCIA EL BUCLE PARA HALLAR LOS PESOS IDEALES

Aqu se inicia el bucle para hallar los pesos ideales y si no


sucede se usa el factor de aprendizaje para que la neurona
aprenda

double []salida=new double[filas+1];

int[]y=new int[filas+1];

double SubSalida;

int aux2=1,z,it=0;

String salidas="";
18 BIOINFORMATICA

while(aux2!=0){

aux2=0;

z = 0;

salidas="";

4.-GENERAMOS LAS SALIDAS DE ACUERDO A LA


TABLA

System.out.println("\nCalculando las salidas...\n");

for(j=1;j<=filas;j++){

SubSalida=0;

for(i=1;i<=n;i++){

SubSalida=SubSalida+TablaAnd[j-1][i-1]*peso[i];

salida[j]=SubSalida+Wo*Xo;

salida[j]=salida[j]*100;salida[j]=Math.round(salida[j]);salida[j]
=salida[j]/100;

if(salida[j]>=0){

y[j]=1;

}else{

y[j]=-1;

}
19 BIOINFORMATICA

System.out.println("Salida "+j+": "+salida[j]


+"\ty="+y[j]);

if(y[j]!=TablaAnd[j-1][n]){

aux2=aux2+1;

salidas=j+", "+salidas;

if(aux2==1){

z=j-1;

}}

5.- HACEMOS EL AJUSTE DE LOS PESOS, SI ALGUNA


SALIDA NO COINCIDE CON LA TABLA

if(aux2!=0){

if(aux2==1){

System.out.println("\nLa salida "+salidas+" no


coincide con la tabla\n");

}else{

System.out.println("\nLas salidas "+salidas+" no


coinciden con la tabla\n");

System.out.println(" ITERACIN "+(it+1));

System.out.println("Ajustando los pesos...\n");


20 BIOINFORMATICA

for(i=1;i<=n;i++){

peso[i]=peso[i]+(2*e*TablaAnd[z][n]*TablaAnd[z]
[i-1]);

peso[i]=peso[i]*100;peso[i]=Math.round(peso[i]);peso[i]=pes
o[i]/100;

System.out.println("El nuevo valor del peso "+i+"


es: "+peso[i]);

Wo=Wo+(2*e*TablaAnd[z][n]*Xo);

Wo=Wo*100;Wo=Math.round(Wo);Wo=Wo/100;

System.out.println("El nuevo valor del Umbral es:


"+Wo);

it++;

}else{

System.out.println();

System.out.println("\nLAS SALIDAS COINCIDEN CON


LA TABLA, los valores finales son: \n");

for(i=1;i<=n;i++){

System.out.println("*** PESO "+i+" : "+peso[i]);

System.out.println("*** UMBRAL(Wo): "+Wo);

System.out.println("\n** El Numero de iteraciones


fue: "+it);

System.out.println("\n");
21 BIOINFORMATICA

INGRESAMOS LA CANTIDAD DE PESOS DEL


PERCEPTRON
22 BIOINFORMATICA

INGRESAMOS LOS DATOS:


23 BIOINFORMATICA

OBTENEMOS LA SALIDAS:

Vous aimerez peut-être aussi