SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
UNIVERSIDAD TECNICA DE ORURO
FACULTAD NACIONAL DE INGENIERIA
INGENIERIA INFORMATICA
PROYECTO DE SEMINARIO DE COMPILADORES
E INTELIGENCIA ARTIFICIAL
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT
APLICANDO REDES NEURONALES ARTIFICIALES
POR:
UNV. SAUL MAMANI MAMANI
DOCENTE: ING. ANDY A. CESPEDES ROJAS
DOCENTE INF 3390 A
Oruro 22 de abril de 2009
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 1
CAPITULO I
INTRODUCCION
1.1. PRESENTACION.
De un tiempo a esta parte los investigadores vienen volcando sus esfuerzos en el
estudio de la Inteligencia Artificial y los Sistemas Paralelos.
La inteligencia artificial inicia en 1950, Norbert Wiener postula que todo comportamiento
inteligente es el resultado de mecanismos de retroalimentación. En 1956 gracias a John
MacCarthy se acuña el término de Inteligencia Artificial
Áreas de la IA:
Los Sistemas Paralelos estudia como una computadora puede ejecutar varias operación
en forma simultánea, o sea, al mismo tiempo, generalmente utiliza más de un
procesador.
Las investigaciones sobre la IA y los Sistemas Paralelos llevan a un nuevo concepto que
son las Redes Neuronales Artificiales.
Resulta irónico pensar que maquinas computacionales capaces de realizar 100 millones
de operaciones en coma flotante por segundo, no sean capaces de interpretar el mundo.
Esto ha hecho que numerosos investigadores desde 1956 centren su atención en
nuevos sistemas de tratamiento de información que permitan solucionar problemas
cotidianos tal y como lo hace el cerebro humano.
Este órgano biológico contiene características deseables para cualquier sistema de
procesamiento digital: Es robusto y tolerante a fallas, es flexible, maneja información
difusa, es altamente paralelo, es pequeño y consume poca energía.
“Basados en la eficiencia de los procesos llevados a cabo por el cerebro e inspirados en
su funcionamiento, varios investigadores han desarrollado las Redes Neuronales
Artificiales, que emulan el comportamiento de la redes neuronales biológicas, además,
estos sistemas no requieren que la tarea a ejecutar se programen, ellos aprenden de la
experiencia. No ejecutan instrucciones, sino, responden en paralelo a las entradas que
se les presenta”1
.
Las Redes Neuronales Artificiales es una teoría que está aún en proceso de estudio, su
verdadera potencialidad no se ha alcanzado todavía pero se han desarrollado
numerosas aplicaciones con gran éxito en diferentes campos.
1. Maria I. Acosta B. - Camilo A. Zuluaga M.
Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 6
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 2
1.2. ANTECEDENTES.
Existen muchos proyectos e investigaciones que se ha realizado utilizando Redes
Neuronales Artificiales enfocándose principalmente en dar alternativas novedosas y
eficientes a problemas complejos en el campo de la economía, medicina, ciencia e
ingeniería, etc. en los cuales los métodos tradiciones no han entregado resultados muy
convincentes.
Las Aplicaciones más exitosas de la RNA son:
- Reconocimiento de patrones
- Procesamiento de imágenes y vos
- Juguetes
- Planeamiento
- Predicción
- Control y Optimización
- Filtrado de señales
- Diagnostico de Enfermedades
- Odontología
- Juegos
1.3. DEFINICION DEL PROBLEMA.
El presente proyecto contiene una investigación (monografía) en el campo de la
Inteligencia Artificial y la Redes Neuronales Arficiales, aplicando estos conocimientos a
un caso específico una aplicación sobre la detección de obstáculos por medio de un
robot.
La realización de este proyecto está orientada a emplear Redes Neuronales Artificiales y
de este modo ofrecer una alternativa novedosa y eficiente con respecto a los métodos
tradicionales poco eficientes.
1.3.1. Objetivos.
Objetivo General.
Implementar y simular el entrenamiento de una Red Neuronal del tipo Perceptron
utilizando el método de aprendizaje supervisado, de tal forma, que sea capaz de
proveer información a un robot para realizar las acciones necesarias ante la
aparición de obstáculos.
Objetivos Específicos.
- Identificar obstáculos y realizar las acciones necesarias utilizando RNA,
bajo un aprendizaje supervisado.
- Implementar un programa para simular el entrenamiento de una Red
Neuronal tipo Perceptron utilizando un algoritmo de aprendizaje
supervisado.
- Comparar el método usando Redes Neuronales Artificiales con los
métodos tradicionales.
- Implementar la red ya entrenada en un simulador o un LEGO.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 3
1.4. HIPOTESIS.
Simular una Red Neuronal Artificial tipo Perceptrón e implementarlo en un robot de
forma que este sea capaz de reconocer cualquier obstáculo que se le presente.
1.5. ALCANCES Y LIMITACIONES.
Alcances.
El presente proyecto permitirá simular el entrenamiento y comportamiento de una Red
Neuronal del tipo Perceptrón a través de una interfaz grafica que permita clasificar los
diferentes patrones de entrada en clases linealmente separables.
Permitirá ver la eficiencia del método frente a métodos tradiciones unas ves
implementadas en un simulador y/o un robot (LEGO).
Limitaciones.
El proyecto se limita a hacer la comparación entre el método del las Redes Neuronales y
los métodos tradicionales a través de un simulador (interfaz gráfica) y no así utilizando
equipos físicos.
Este proyecto se enfoca básicamente en el estudio de una Red Neuronal del tipo
Perceptrón y un algoritmo de aprendizaje supervisado.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 4
CAPITULO II
FUNDAMENTO BIOLOGICO
2.1 ELEMENTOS BÁSICOS.
El cerebro Humano consta aproximadamente de 1011
neuronas y aproximadamente 104
conexiones por elemento, estos elementos son llamados neuronas los cuales tienen tres
componentes importantes:
Las Dendritas. Reciben la información proveniente de otras células.
La Soma. Cuerpo de la célula que recolecta y combina la información.
El Axón. Lleva la señal desde el cuerpo de la célula hacia otras
neuronas.
La Sinapsis. Es la conexión de un axón con la dendrita de otra neurona.
“Toda célula nerviosa posee un aparato de recepción, constituido por el
cuerpo de la célula y las expansiones protoplasmáticas(dendritas), un
aparato de transmisión, el axón y un aparato de emisión la arbolisación
terminal”1
Algunas de las estructuras neuronales son determinadas en el nacimiento, otra parte se
desarrolla a través del aprendizaje, proceso en que nuevas conexiones neuronales son
realizadas y otras se pierden.
1. Testud – A. Catarjet
Anatomía Humana
Figura 2.1.1 Neurona Biológica
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 5
2.2. INTRODUCCIÓN A LA NEUROFISIOLOGÍA.
Las estructuras neuronales continúan cambiando durante toda la vida, estos cambios
consisten en el esfuerzo o debilitamiento de las uniones sinápticas, así el proceso de
recordar el rostro de un amigo consiste en alterar varias sinapsis.
Todas las neuronas conducen información de forma similar, esta viaja a lo largo del axón
en breves impulsos eléctricos denominados potenciales de acción, estas alcanzan una
amplitud máxima de unos 100mv y duran 1ms, son el resultado del desplazamiento a
través de la membrana celular de iones de sodio dotados de carga positiva, que pasan
desde el fluido extra celular hasta el citoplasma intracelular.
La membrana en reposo mantiene un gradiente de potencial eléctrico de -70mv, los
iones de sodio no atraviesan con facilidad la membrana en reposo por lo que la
permeabilidad del sodio aumenta alcanzando un potencial crítico llamado umbral, es
decir, el interior de la célula se torna positivo con respecto al exterior al cabo de 1ms, la
permeabilidad del sodio decae y el potencial de la membrana retorna a -70ms su valor
en reposo.
Los potenciales de acción, son señales de baja frecuencia conducidas en forma muy
lenta (100 metros por segundo la velocidad máxima), estos no pueden saltar de una
célula a otra, necesitan de un transmisor químico (neurotransmisor) que es liberado en la
sinapsis.
Cuando el axón esta cerca de sus células destino, se divide en ramificaciones formando
sinapsis con las dendritas de otras células. Los fenómenos que ocurren en la sinapsis
son de naturales químicos, pero tienen efectos eléctricos laterales que se pueden medir.
Hay dos aspectos similares entre las neuronas biológicas y las artificiales. Primero, los
bloques de construcción de ambas redes son sencillos elementos computacionales
altamente interconectados. Segundo, las conexiones entre neuronas determinan la
función de la red.
2.3. NEURONA CEREBRAL VS NEURONA ARTIFICIAL.
Los primeros en describir al cerebro humano como un elemento computacional fueron
Mc Culloch & Pitts en 1943.
En la figura 2.2.1 se muestra la similitud de una neurona cerebral y una artificial.
Figura 2.2.1 De la neurona biológica a la neurona artificial
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 6
2.3. MODELO Y PARTES DE UNA RED NEURONAL ARTIFICIAL.
P: Son las entradas de la red. (dendritas)
W: Son los pesos de la neurona (sinapsis)
b: Es la ganancia que refuerza salida (umbral)
n: Es la salida neta de la red (potencial de acción)
f: Es la función de trasferencia que puede ser lineal y no lineal
(neurotransmisor)
2.4. FUNCIONES DE TRANSFERENCIA.
2.4.1. Función de transferencia Escalón o Hardlim.
Acerca la salida de la red a cero, si el argumento de la función es menor
que cero y a uno si es mayor o igual a cero, de esta forma clasifica las
salidas en dos categorías, característica que le permite ser empleada en
una red tipo perceptron.
Podemos modificar la función para una mejor convergencia del resultado
un rango de salida de 1 y -1, esta función es llamada también hardlims.
1. Maria I. Acosta B. - Camilo A. Zuluaga M.
Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 21
Σ f
Figura 2.3.1 Neurona de una sola entrada
p
W
b
n a
entrada neurona general
a = f(Wp + b)
Figura 2.4.1 Función de transferencia Escalón (hardlim)1
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 7
2.4.2. Función de transferencia Lineal o Purelim.
La salida es igual a su entrada, utilizadas en las redes tipo adaline.
2.4.1. Función de transferencia Sigmoideal o logsig.
Esta función es usada en redes multicapa, como la red Backpropagation.
1-2-3. Maria I. Acosta B. - Camilo A. Zuluaga M.
Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 22,23
Figura 2.4.2 Función de transferencia Escalón (hardlims)1
Figura 2.4.3 Función de transferencia Lineal2
Figura 2.4.4 Función de transferencia sigmoideal3
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 8
2.5. TOPOLOGÍA DE UNA RED.
Normalmente una neurona tiene más de una entrada (R entradas), los valores de las
entradas p1,p2,...,pR son multiplicadas por su pesos w11,w12,...,w1R pertenecientes a la
matriz de pesos W.
Donde:
La cual es la salida neta de la red, esta expresión se puede escribir en forma matricial de
la siguiente forma.
La Matriz de pesos W para el caso de una sola neurona tiene una sola fila.
La salida total de red viene dada por la siguiente ecuación:
2.6. CONEXIÓN ENTRE CAPAS.
Dentro una red neuronal, los elementos de procesamiento se encuentran agrupadas por
capas, siendo estas una colección de neuronas que de acuerdo a su ubicación dentro de
la red estas reciben diferentes nombres.
Capa de entrada. Recibe las señales de entrada de la red, algunos autores no lo
consideran a esta como una capa.
Capas ocultas. Estas capas son aquellas que no tienen contacto con el medio
exterior, sus elementos pueden tener diferentes conexiones y son estas las que
determinan la topología de la red.
Capa de salida. Transmite la respuesta al mundo exterior.
A continuación mostramos una red de una sola capa con S neuronas, donde cada una
de las R entradas están conectadas a cada una de las neuronas, ahora, nuestra matriz
de pesos W tiene S filas.
n = w11p1 + w12p2 + ... + w1RpR + b
n = Wp + b
a = f(n)
n =
R
i
bpiWji
1
)*(
Σ f
Figura 2.5.1 Neurona con múltiples entradas
p2
.
pR
W12
b
n a
entrada neurona general
a = f(Wp + b)
p1 W11
W1R
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 9
Ahora, si se considera una red con mas de una capa, o red multicapa, cada capa tendrá
su propia matriz de pesos W, su propio vector de ganancias b, un vector de
salidas/entradas netas n y un vector de salidas s, a continuación mostramos una red de
tres capas, con R entradas, las salidas de la 1ra capa es la entrada de la capa 2da y 3ra
respectivamente.
1. Maria I. Acosta B. - Camilo A. Zuluaga M.
Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 29
f
Figura 2.6.1 Capa de S neuronas
p3
.
.
pR
b1
n1 a1
entrada capa de S neuronas
a = f(Wp + b)
p1
p2
W11
WSR
Σ
f
b2
n2 a2
Σ
f
bs
ns as
Σ
Figura 2.6.2 Red Neuronal de tres capas1
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 10
2.7. EL PERCEPTRÓN.
En 1943 Warren McCulloch y Walter Pitts, desarrollaron la primera red neuronal, al
principio se encontró una gran similitud con los sistemas biológicos y se creyó que este
modelo podría computar cualquier función aritmética lógica.
La red del tipo Perceptrón fue inventada por el psicólogo Frank Rosenblatt en el año
1957, el creía que la conectividad existente en las neuronas biológicas tiene un elevado
porcentaje de aleatoriedad. Rosenblatt opinaba que la herramienta más apropiada para
el estudio de las redes neuronales era la teoría de la probabilidad, lo que lo llevó a la
teoría de la separabilidad lineal.
En 1969 Marvin Misky y Seymour Paper publicaron su libro “Perceptrons: An introduction
to Computational Geometry”, para muchos esta publicación significo el final de las redes
neuronales, en esta publicación se presentaron las capacidades y limitaciones del
Perceptrón, donde, la mayor desventaja de este tipo de redes era su incapacidad para
resolver problemas que no sean linealmente separables.
Su idea de Perceptrón aparece en la figura siguiente:
Maria I. Acosta B. - Camilo A. Zuluaga M.
Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 37
Se observa que fue añadida una función umbral o función de transferencia.
A pesar de su limitación, el Perceptrón es hoy en día una red muy importante, ya que en
base e esta red se desarrollaron otros modelos de redes neuronales.
2.7.1. Estructura de la Red.
Θ
Condición Umbral
Figura 2.7.1 Perceptrón según Miscky Paper
Σ
Figura 2.7.1. 1. Perceptron
p2
.
pR
W12
b
n a
entrada salida
p1 W11
W1R
p1
p1
P2
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 11
Esta única neurona realiza la suma ponderada de las entradas multiplicadas por sus
pesos, le suma la función umbral para luego pasar el resultado a una función de
transferencia.
La función de transferencia empleada por el Perceptrón es la función escalón (harlim)
con salidas de 0 y 1, o la función hardlims con salidas de -1 y 1. El uso de estas
funciones dependen del valor esperado de la salida del la red.
Se le presenta al Perceptrón un mapa con las regiones de decisión creadas en un
espacio multidimensional, este, separa esta región por un hiperplano cuya ecuación está
determinada por los pesos de la red y el umbral de la función de activación de la
neurona. Los pesos se fijan utilizando diferentes algoritmos de entrenamiento.
El Perceptrón al contar con una única capa de entrada y otra de salida con una única
neurona, tiene una capacidad de representación bastante limitada. Este modelo solo es
capaz de resolver problemas que sean linealmente separables. La incapacidad del
Perceptrón se puede observar claramente al representar la función lógica XOR.
2.7.2. Regla de Aprendizaje.
El Perceptrón utiliza un aprendizaje Supervisado, es decir, el entrenador del sistema
conoce la respuesta correcta, y el sistema determina los pesos de tal forma que dado un
valor de entrada, pueda producir el valor de salida deseado. Las salida de la red a se
compara con el valor esperado t. Donde:
El funcionamiento de la red es determinada por los valores de los pesos, los cuales se
ajustan utilizando diferentes algoritmos de entrenamiento.
Este tipo de entrenamiento tiene una analogía con un niño que aprende nuevas
lecciones con la ayuda de su maestro.
Como ejemplo, se resolverá el problema de la función OR. Se tiene cuatro patrones de
entrada y se conoce sus valores de salida esperados.
Las entradas a la red son valores binarios, y la salida está determinada por:
P1 P2 a
0 0 0
0 1 1
1 0 1
1 1 1
Figura 2.7.2. 1. Función OR
p1
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 12
Utiliza la función de transferencia Escalón (hardlim), esto quiere decir que, si a es mayor
o igual a O la salida de la red será igual a 1, en caso contrario será igual a O.
Como se puede observar la a función de salida o de transferencia es la expresión de una
recta donde los pesos y son las variables y y son las constantes. En el
proceso de aprendizaje se irán variando los pesos de tal forma que se encuentre una
recta que divida el plano en dos espacios que separe las dos clases de los valores de
entrada.
El Perceptrón y la grafica con la recta que separa las clases de entradas del la función
Or se muestra en la siguiente figura.
Como puede verse la recta separa las dos clases de entradas, lo que hace a la función
OR una función linealmente separable, también podemos observar que las rectas que se
irán formando con el proceso de aprendizaje siempre van a pasar por el origen de
coordenadas. En muchas funciones se requiere que la recta no pase siempre por el
origen, pues no lograría separar las clases (como es el caso de la función AND), por lo
que es necesario introducirle un término independiente que desplace la recta ampliando
el número de soluciones, a este término se le conoce con el nombre de ganancia „b‟,
dando una solución a la función AND y amplía el número de soluciones para la función
OR.
Figura 2.7.2. 2. Perceptrón aplicado a la Función OR
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
Σ
n a
p1 w11
w12
P2
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
Figura 2.7.2. 3. Recta Solución para la Función OR y la función AND
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 13
Entonces, ahora la salida de la neurona será:
2.7.3. Algoritmo de Entrenamiento.
1. Se asigna valores aleatorios a los pesos y a la ganancia .
2. Se le presenta a la red el primer patrón de entrada aún no considerado, junto
con el valor esperado de salida.
3. Se calcula la salida neta de la red.
4. Se aplica la función de transferencia a la salida neta n. el cual puede ser
escalón (hardlim) o hardlims.
5. Se calcula el error correspondiente, que va a ser la diferencia entre la salida
proporcionada por la red a y la salida esperada t.
6. Si el error es distinto de O, entonces debemos modificar los pesos y el valor
de la ganancia.
Y
7. Se vuelve al paso 2, hasta que los errores para cada patrón de entrada sean
iguales a O.
Para ilustrar mejor el algoritmo de aprendizaje del Perceptrón se dará solución al
problema de clasificación de patrones de la función AND
P1 P2 T
0 0 0
0 1 0
1 0 0
1 1 1
Figura 2.7.3.1. Perceptrón, gráfica y tabla de la Función AND
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
Σ
n a
p1 w11
w12
P2
b
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 14
Para saber si este problema puede ser resuelto por una red del tipo Perceptrón, primero
se debe determinar si es linealmente separable. Esto se puede determinar a través de la
figura 2.7.3.1, donde nos muestra en su grafica que existe una línea recta que separa los
valores de la clase 0 y la clase 1, entonces, el problema es linealmente separable.
Iteración 0.
Se asignan valores aleatorios a los pesos y a la ganancia.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
Iteración 1.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Iteración 2.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 15
Iteración 3.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
Iteración 4.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
Iteración 5.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
Iteración 6.
Los pesos y a la ganancia actual es.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 16
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Iteración 7.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
Iteración 8.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Iteración 9.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es distinto de O, se modifican los pesos y la ganancia:
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 17
Iteración 10.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Iteración 11.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Iteración 12.
Los pesos y a la ganancia actual es.
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón:
Se calcula el error.
Como es error es O, no se modifican los pesos ni y la ganancia:
Como podemos observar la red ya ha aprendido. La ganancia y los pesos finales que
clasifiquen correctamente los patrones son:
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 18
Los interceptos con los ejes serán:
En la grafica se muestra que la red ha clasificado correctamente los patrones de
entrenamiento.
2.7.4. Limitaciones del Perceptrón.
La red de tipo Perceptrón solo puede resolver problemas que sean linealmente
separables, problemas cuyas salidas estén en dos categorías diferentes y que su
espacio de entradas pueda estar dividido en estas dos regiones por medio de un
hiperplano.
Las funciones AND y OR son linealmente separables, pero no así la función XOR,
porque no se puede separar por medio de una recta las dos categorías de salidas.
Compuerta lógica XOR
Como se puede ver no hay una recta que separe correctamente los patrones de una
clase de la otra, el problema de la compuerta XOR no es linealmente separable, por lo
tanto, una red de tipo Perceptrón no puede resolverlo1
.
El proceso para determinar si un problema es linealmente separable, se realiza sin
problemas de forma grafica si los patrones de entrada generan un espacio de dos
dimensiones, sin embargo, esta visualización se dificulta si el espacio de patrones de
entrada son tres dimensiones y es imposible observar con dimensiones de entrada
superiores; en este caso se recurre a ecuaciones de desigualdad que permitan
comprobar la separabilidad lineal de los patrones.
1Debido a esta limitación y su amplia publicación en el libro de Minsky y Paper el estudio de las RNA se estancó
durante 20 años.
P1 P2 T
0 0 0
0 1 1
1 0 1
1 1 0
P1(0,0
)
P2(1,0)
P3(0,1
)
P4(1,1
)
p2
p1
Figura 2.7.3.1. Recta Solución para la Función AND
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
Figura 2.7.4.1. Compuerta XOR
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 19
2.7.5. El Perceptrón multicapa.
Estructura del Perceptrón multicapa es la siguiente:
Esta red permite establecer regiones de decisión muchos más complejas que las de dos
semiplanos, como lo hace le Perceptrón de un solo nivel.
La solución para el problema de la compuerta XOR se puede realizar usando un
Perceptrón de dos capas, con dos salidas que nos permitiría descomponer el espacio de
decisión en tres categorías. Para elegir una zona de las otras de las tres se necesita otra
capa con una neurona cuyas entradas serán las salidas de las otras.
b1
Figura 2.7.5.1 Perceptrón Multicapa
p3
.
.
pR
n1 a1
p1
p2
W11
WSR
Σ
b2
n2 a2
Σ
bs
ns as
Σ
n1
a1
p1
p2
W11
Σ
b2
n2
a2
ΣW22
b1
W21
W12
n3 a3
b3
Σ
P1(0,0) P2(1,0)
P3(0,1) P4(1,1)
p2
p1
a = 0
a = 0
a = 1
Figura 2.7.5.2. Perceptrón para la Compuerta XOR
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 20
Las capacidades del Perceptrón multicapa con dos y tres capas y con una única neurona
en la capa de salida se muestra en la siguiente figura.
Hilera J. – Martínez V.
Rede Neuronales, Aplicaciones, Aplicaciones, Addison Wesley, 1995, pag. 115
Figura 2.7.5.2. Distintas formas de las regiones generadas por un Perceptrón multicapa
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 21
CAPITULO III
METODOLOGÍA DEL PROYECTO
3.1 METODOLOGÍA PARA EL DESARROLLO DE REDES NEURONALES.
La metodología representa un conjunto ordenado de guías que permiten inferir la
manera de hacer frente a una situación. Para esto se emplean los modelos, que son una
abstracción del comportamiento de un sistema.
Debido al proceso de investigación de Redes Neuronales Artificiales, se ha definido una
manera particular de enfocar los proyectos de este tipo. Llamada; Forma general de
resolución:
Existen dos fases en toda aplicación de las Redes Neuronales.
- Fase de aprendizaje o entrenamiento
- Fase de pruebas
En la fase de entrenamiento, se usa un conjunto de datos o patrones de entrenamiento
para determinar los pesos que definen el modelo neuronal. Una vez entrenado este
modelo, se usará la llamada fase de pruebas o funcionamiento directo, en la que se
procesan los patrones de prueba que constituyen la entrada habitual de la red,
analizándose de esta manera el funcionamiento definitivo de la red.
3.2. FASES DE LA METODOLOGÍA.
Edgar Tito Espinoza Rodríguez
Simulación de Redes Neuronales para el reconocimiento de caracteres aplicando retroprogramacion.
FASE DE APRENDIZAJE O ENTRENAMIENTO
DEFINICION DEL PROBLEMA
RECOLECCION DE DATOS
DISEÑO DE PRE Y POST PROCESAMIENTO
DISEÑO DE LA RED
ENTRENAMIENTO DE LA RED
FASE DE PRUEBAS
FIN
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 22
CAPITULO IV
INGENIERIA DEL PROYECTO
4.1 FASE DE APRENDIZAJE.
4.1.1. Definición del Problema.
Tenemos un robot que cuenta con cuatro sensores de proximidad ubicados en la parte
de adelante, a los costados y atrás que permanentemente están detectando si hay
obstáculos que se encuentren a una distancia menor o mayor a la preestablecida. Con
esta información se decide si dar marcha adelante o dar marcha atrás en cada uno de
los motores que posee nuestro robot, que además, estos motores están ubicados en
cada una de sus llantas traseras.
De este modo nuestro robot sabrá qué hacer cuando se encuentre frente a un obstáculo.
S1
S2 S3
S4
4.1.2. Recolección de Datos.
Este robot posee cuatro sensores y dos motores, por los tanto, podrían darse 16
posibles combinaciones (24
= 16), para cada combinación los motores deberán dar
marcha adelante o atrás.
Cuando un sensor detecta un obstáculo en una distancia menor a la preestablecida este
se activa en 1 y cuando no lo detecta se pone en -1, dependiendo de estas lecturas los
motores podrían dar marcha adelante 1, o marcha atrás -1.
Ejemplo, si las lecturas de los sensores son:
S1 S2 S3 S4 M1 M2
1 -1 -1 -1 -1 1
Esto quiere decir que el sensor uno S1, ha detectado un obstáculo, entonces, el motor
uno se apaga o da marcha atrás y el motor dos da marcha adelante logando un giro a la
izquierda, de este modo se logra esquivar el obstáculo.
A continuación se muestran dos mundos que servirán de entradas para nuestra Red
Neuronal. El robot deberá recorrer y esquivar los obstáculos que se le presenten a lo
largo de su recorrido hasta salir del mundo.
S3
S4
S2
S1
Figura 4.1.1.1. Robot
M1 M2
Figura 4.1.2.1. Lecturas de los sensores y las acciones de los motores, ante un obstáculo en
frente del robot
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 23
4.1.2.1. Mundo 1:
La tabla que describe el comportamiento del robot para el mundo 1, se muestra en la
siguiente tabla.
No se registraron todas las posibles situaciones en que se encontraría nuestro robot,
sino solo las más importantes, esto, para demostrar el poder de generalización que tiene
una red neuronal ante situaciones nunca antes encontradas.
Nota: La forma en que se determinaron los valores de la tabla se detallan en el anexo A
(ver Anexo A).
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 -1 -1
1 -1 -1 -1 -1 1
-1 -1 1 -1 1 1
1 -1 1 -1 -1 1
-1 -1 1 1 1 1
1 1 -1 -1 1 -1
-1 1 -1 1 1 1
-1 1 -1 -1 1 1
-1 1 1 -1 1 1
Figura 4.1.2.2. Comportamiento del Robot (Mundo 1)
Figura 4.1.2.1.1. Mundo 1
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 24
4.1.2.2. Mundo 2:
La tabla que describe el comportamiento del robot para el mundo 2, se muestra en la
siguiente tabla. (Ver Anexo A).
Nota: Se tomará esta tabla como referencia para el entrenamiento de la red.
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 1 1
1 -1 -1 -1 1 -1
-1 1 1 -1 1 1
-1 1 -1 -1 1 1
1 1 -1 -1 1 -1
-1 1 -1 1 1 1
1 -1 1 -1 -1 1
-1 -1 1 1 1 1
1 1 1 -1 1 -1
-1 -1 1 -1 1 1
1 1 -1 1 1 -1
-1 1 1 1 1 1
Figura 4.1.2.2.1. Mundo 2
Figura 4.1.2.2.2. Comportamiento del Robot (Mundo 2)
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 25
4.1.3. Diseño de Pre y Post Procesamiento.
La red neuronal debe ser diseñada con una única ley de aprendizaje, un solo esquema
de interconexión y una estructura que cubra los requerimientos del problema. .
El tiempo de respuesta y aprendizaje de la red debe ser el mínimo requerido.
4.1.3.1. Justificación del Modelo.
Este tipo de problemas generalmente es resuelto suministrándole al robot una
base de datos (la Tabla del comportamiento del robot), en este caso se
necesitaría almacenar en la memoria del robot las respuestas para ambos
motores ante las 16 posibles combinaciones cuando se lean los sensores.
Este método tiene serios inconvenientes ya que cuando el número de variables
de entrada y el número de salidas es mucho mayor, la cantidad de datos para
especificar cada posible situación crece indefinidamente (2n
), debido a esto se
necesitarán dispositivos con gran capacidad de almacenamiento.
En contraste una red neuronal puede entrenarse con un número representativo
de patrones y aprender el comportamiento del sistema utilizando dispositivos de
menor capacidad de almacenamiento y costo.
Una red neuronal tipo Perceptrón puede ser entrenada con cualquier dimensión
de patrones con datos binarios, por esta razón se eligió este tipo de Red
Neuronal para resolver nuestro problema.
Para que el problema pueda ser resuelto por una red del tipo Perceptrón se debe
comprobar que los patrones de entrenamiento son linealmente separables.
En este caso cada patrón de cuatro dimensiones generará dos desigualdades,
una para cada salida, para que sean linealmente separables estas
desigualdades no deben contradecirse, sino, se deberá buscar otro tipo de
solución.
La salida de la red está dada por la siguiente ecuación.
Aplicando esta ecuación a cada patrón de entrenamiento del Mapa 2 (Figura
4.1.2.2.2) se tiene:
Figura 4.1.3.1.1. Desigualdades que garantizan que el problema es linealmente separable
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 26
Las ecuaciones satisfacen plenamente las desigualdades, de forma que puede
ser resuelta por una red del tipo Perceptrón.
Cabe mencionar que solo se verifica la separabilidad lineal para el Mundo 2, esto
con el fin de mostrar el poder de generalización de una Red Neuronal tipo
Perceptrón ante situaciones nunca antes vistas.
4.1.3.2. Estructura Lógica.
Número de entradas.
Se cuenta con cuatro sensores de proximidad, por lo tanto la red
neuronal tendrá cuatro entradas (S1, S2, S3 y S4).
Número de salidas.
Para cada patrón de entrada se tiene dos salidas que corresponden a
los dos motores de nuestro robot (M1, M2).
Numero de capas.
La red neuronal será diseñada con una capa de entrada, una capa
oculta y una capa de salida.
Número de neuronas.
Se creará una red de cuatro entradas con una neurona tipo Perceptrón
para cada salida, teniendo así una salida bidimensional.
O sea tendremos dos neuronas.
4.1.3.3. Funciones y Elementos Matemáticos.
Función de Transferencia.
Debido a la naturaleza bipolar de la salida y de la entrada de la red se
consideró que la función de transferencia apropiada es la función
Escalón (hardlims).
Figura 4.1.3.3.1. Función de transferencia Escalón (hardlims)
0-b/W
-1
+1
S
M
0
-1
+1
n
M
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 27
4.1.3.4. Grafica del Modelo.
Un diagrama gráfico del diseño de nuestra red neuronal se presenta a
continuación.
4.1.4. Diseño de la Red.
En este punto se muestra la regla y el algoritmo de aprendizaje que va a utilizar nuestra
red, además, de la implementación del simulador para el entrenamiento de la Red
Neuronal Artificial.
4.1.4.1. Algoritmo de Entrenamiento.
El Perceptrón utiliza un aprendizaje Supervisado, es decir, Se conoce la
respuesta correcta antes del entrenamiento, y el sistema determina los pesos de
tal forma que dado un valor de entrada, pueda producir el valor de salida
deseado (ver punto 2.7.2 Regla de Aprendizaje)
El algoritmo de entrenamiento que utiliza nuestra red neuronal tipo Perceptrón
podemos verlo en… (Ver algoritmo Anexo B).
4.1.4.2. Implementación del Simulador.
El simulador fue implementado, siguiendo el algoritmo de entrenamiento
supervisado, con el lenguaje de de programación C# 2.0 bajo la plataforma .NET
(ver código Anexo C).
Básicamente consta de una Clase llamada PercepRobot que tiene los siguientes
eventos:
public void robot(int[,] x): Llenamos la tabla con el mapa 2
public int fscalon(double n): La función de transferencia
public double WP_b(int[,] P, double[,] W, double[] b, int fp,
int fw, int fb): La salida neta de la red (n).
n1
M1
S1
S2
S3
S4
W11
n2 M2
b2
Σ
Σ
b1
W24
Motor 1
Motor 2
Figura 4.1.3.4.1. Red Neuronal Tipo Perceptrón para el robot
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 28
public void newPesos(int[,] P, double[,] W, int error, int fp,
int fw): La modificación de los pesos.
También cuenta con una clase principal llamada frmRobot donde el evento que
nos interesa es: btnPasoPaso_Click() que realiza en entrenamiento de la red
paso a paso (ver código Anexo C).
A continuación mostramos la interfaz del simulador.
Figura 4.1.4.2.1. Interfaz de simulador para el entrenamiento de la Red Neuronal (CD adjunto)
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 29
4.1.5. Entrenamiento de la Red.
Para el entrenamiento de nuestra Red Neuronal, utilizamos el simulador desarrollado en
el punto anterior. (Simulador CD adjunto).
Se le presenta los 12 patrones correspondiente al Mundo 2 (Figura 4.1.2.2.2), los cuales
dependiendo de las lecturas de los sensores se le dirá al robot que hacer
específicamente y luego se probará la red con los casos restantes para comprobar la
capacidad de generalización de una Red Neuronal ante un patrón nunca antes visto. (Se
probará la generalización para el Mundo 1).
Los estados de las lecturas de los sensores y de operación de los motores se
designaron con 1 y -1, puesto que la convergencia del proceso de entrenamiento es más
rápido, que usando 1 y 0.
Entonces, para el entrenamiento: Como tenemos dos neuronas con cuatro entradas,
tendremos la matriz Wij de 2x4 que representa los pesos de la red, y el vector bi de 1x2
que representa las ganancias de cada neurona.
Siguiendo el proceso del algoritmo de entrenamiento de una Red Neuronal del tipo
Perceptrón (Anexo B), realizamos el entrenamiento, utilizando el Simulador.
Entrenamiento.
Se asignan valores aleatorios a los pesos y a la ganancia.
Wij: bi
S1 S2 S3 S4
M1 0.967 0.365 0.445 -0.796
M2 -0.143 -0.601 0.155 -0.179
Se le presenta el primer patrón de entrada y su salida esperada:
Se calcula la salida neta de la red:
Se aplica la función de transferencia escalón (harlims):
Se calcula el error:
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 1 1
1 -1 -1 -1 1 -1
-1 1 1 -1 1 1
-1 1 -1 -1 1 1
1 1 -1 -1 1 -1
-1 1 -1 1 1 1
1 -1 1 -1 -1 1
-1 -1 1 1 1 1
1 1 1 -1 1 -1
-1 -1 1 -1 1 1
1 1 -1 1 1 -1
-1 1 1 1 1 1
b
M1 1
M2 1
Figura 4.1.5.1. Tabla que representa el comportamiento del robot para el Mundo 1, a la izquierda en el simulador.
Figura 4.1.5.2. Pesos y Ganancias Iníciales
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 30
Luego del proceso de entrenamiento, los pesos finales de la red que satisfacen todos los
patrones de entrada y salida son:
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 31
Wij: bi
S1 S2 S3 S4
M1 -3.03 4.36 -3.55 -0.79
M2 -6.14 -2.60 2.15 -2.17
La red fue simulada para la totalidad de combinaciones posibles de entrada para
comprobar que no exista error en el aprendizaje de los patrones de entrenamiento y para
observar su capacidad de generalización en los casos restantes.
La respuesta de la red a todos los patrones de entrenamiento fue exitosa.
La red fue entrenada para las posibles situaciones restantes obteniéndose los siguientes
resultados.
Las combinaciones que no hacían parte del set de entrenamiento, al ser presentadas a
la Red Neuronal, fueron aproximadas al patrón con menor distancia euclidiana.
4.2. FASE DE PRUEBAS.
En este punto se realiza la implementación la Red Neuronal ya entrenada en el robot
“SALI”, creado a nivel software.
4.2.1. Implementación de la Red Neuronal Artificial en un Robot.
Para este fin se utilizó el lenguaje de programación C/C++ bajo Cbuilder 5.0 y el
componente grafico TOpenGL.
El programa consta básicamente de Tres funciones:
void TfrmPrincipal::leer_sensor()
{
//sensor de adelante S1
Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1;
//sensor izquierdo S2
Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1;
//sensor derecho S3
Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1;
//sensor de atraz S4
Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1;
}
Esta función lee los sensores a cada paso que da el robot. Si a una distancia
determinada y pre establecida existe un obstáculo el sensor marca 1, en caso contrario
el sensor marca -1.
b
M1 9
M2 3
S1 S2 S3 S4 M1 M2
1 1 1 1 1 -1
1 -1 1 1 -1 -1
-1 -1 -1 1 1 1
1 -1 1 1 -1 -1
Figura 4.1.5.3. Pesos y Ganancias Finales: Red Neuronal Entrenada
Figura 4.1.5.3. Simulación de la red para las nuevas combinaciones
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 32
void TfrmPrincipal::perceptron()
{
float wp = 0;
float PesoNeto;
//Para el motor_1
wp=W[0][0]*Sensor[0]+W[0][1]*Sensor[1]+W[0][2]*Sensor[2]+W[0][3]*Sensor[3];
PesoNeto = wp + b[0];
//aplicando la funcion escalon
M1 =(PesoNeto >= 0)?1:-1;
//Para el Motor_ 2
wp = 0;
wp=W[1][0]*Sensor[0]+W[1][1]*Sensor[1]+W[1][2]*Sensor[2]+W[1][3]*Sensor[3];
PesoNeto = wp + b[1];
//aplicando la funcion escalon
M2 = (PesoNeto >= 0)?1:-1;
}
Esta función es la que implementa la Red Neuronal Artificial del tipo Perceptrón ya
entrenada en el robot, indicándole a cada instante la acción debe tomar cada uno de
sus motores.
Recordemos que si el motor da marcha hacia adelante se pone en 1, sino se pone en -1.
void TfrmPrincipal::girar()
{
if(M1 == -1 && M2 == -1)
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
else
{
if(M1 == 1 && M2 == -1) //giro a la derecha
{
//rotando los sensores junto con el robot
e++;if(e>3)e = 0;
f++;if(f>3)f = 0;
g++;if(g>3)g = 0;
h++;if(h>3)h = 0;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
else
{
if(M1 == -1 && M2 == 1) //giro a la izquierda
{
//rotando los sensores junto con el robot
e--;if(e<0)e = 3;
f--;if(f<0)f = 3;
g--;if(g<0)g = 3;
h--;if(h<0)h = 3;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
if(M1 == 1 && M2 == 1)
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
}
}
}
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 33
Dependiendo el estado del motor, el robot deberá ir adelante o atrás, girar a la izquierda
o a la derecha, etc. Esta función es la que se encarga de todos estos giros.
La interfaz implementada nos permite elegir entre que mapas o mundos queremos
recorrer, recordemos que se definieron dos tipos de mundos, además nos permite
verificar el estado de los sensores y la acción de los motores.
Figura 4.2.1.1 Interfaz del robot SALI recorriendo el mundo 2 (CD adjunto)
Figura 4.2.1.2 Interfaz del robot SALI recorriendo el mundo 1 (CD adjunto)
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 34
Se pudo observar que el robot recorrió satisfactoriamente ambos mundos, considerando,
que solo se lo entrenó para el mundo 2.
Para realizar el recorrido del mundo 1 la RNA tuvo que generalizar su comportamiento,
demostrando así el poder de generalización de una Red Neuronal Artificial ante
situaciones nunca antes vista.
4.2.2. Análisis del Tiempo de Ejecución.
En este punto realizamos el análisis del tiempo de ejecución de las funciones que
intervienen en la implementación de la Red Neuronal Artificial en el Robot, utilizando el
método de análisis por conteo de instrucciones para el peor de los casos.
Este análisis lo realizamos con el fin de comparar el método de las Redes Neuronales
con otros métodos tradicionales.
void TfrmPrincipal::leer_sensor()
{
//sensor de adelante S1
Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1;
//sensor izquierdo S2
Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1;
//sensor derecho S3
Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1;
//sensor de atraz S4
Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1;
}
void TfrmPrincipal::perceptron()
{
float wp;
float PesoNeto;
//Para el motor_1
wp = 0;
wp=W[0][0]*Sensor[0]+W[0][1]*Sensor[1]+W[0][2]*Sensor[2]+W[0][3]*Sensor[3];
PesoNeto = wp + b[0];
//aplicando la funcion escalon
M1 =(PesoNeto >= 0)?1:-1;
//Para el Motor_ 2
wp = 0;
wp=W[1][0]*Sensor[0]+W[1][1]*Sensor[1]+W[1][2]*Sensor[2]+W[1][3]*Sensor[3];
PesoNeto = wp + b[1];
//aplicando la funcion escalon
M2 = (PesoNeto >= 0)?1:-1;
}
void TfrmPrincipal::girar()
{
if(M1 == -1 && M2 == -1)
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
5
5
5
5
Operaciones
elementales
1
20
3
2
1
20
3
2
Operaciones
elementales
3
1
4
4
4
4
Operaciones
elementales
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 35
else
{
if(M1 == 1 && M2 == -1) //giro a la derecha
{
//rotando los sensores junto con el robot
e++;if(e>3)e = 0;
f++;if(f>3)f = 0;
g++;if(g>3)g = 0;
h++;if(h>3)h = 0;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
else
{
if(M1 == -1 && M2 == 1) //giro a la izquierda
{
//rotando los sensores junto con el robot
e--;if(e<0)e = 3;
f--;if(f<0)f = 3;
g--;if(g<0)g = 3;
h--;if(h<0)h = 3;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
else
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
}
}
}
La función que llama a las anteriores funciones es la siguiente:
void __fastcall TfrmPrincipal::Timer1Timer(TObject *Sender)
{
leer_sensor();
perceptron();
girar();
}
3
4
4
4
4
8
3
4
4
4
4
8
1
4
4
4
4
T1(n)
T2(n)
T3(n)
Figura 4.2.2.1 grafica del comportamiento del tiempo de ejecución de la RNA implementado en el
Robot
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 36
4.3. COMPARACIÓN CON OTROS MÉTODOS.
Ya hemos visto el comportamiento del robot y el tiempo de ejecución que requiere este
para detectar obstáculos utilizando una RNA del tipo Perceptrón, no nos serviría de
mucho si no mostramos la eficiencia de este método frente a otros propuestos.
En este punto vamos a implementar el comportamiento del robot con un método
tradicional.
4.3.1. Implementación con un método tradicional.
Este tipo de problemas generalmente es resulto suministrándole al robot una base de
datos (la Tabla del comportamiento del robot), en este caso se necesitaría almacenar en
la memoria del robot las respuestas para ambos motores ante las 16 posibles
combinaciones cuando se lean los sensores.
Para implementar con este método, necesariamente necesitamos la tabla del
comportamiento del robot almacenada en su memoria.
int MatrizComp[16][6] = {{-1, -1, -1, -1, 1, 1},
{ 1, -1, -1, -1, 1, -1},
{-1, 1, 1, -1, 1, 1},
{-1, 1, -1, -1, 1, 1},
{ 1, 1, -1, -1, 1, -1},
{-1, 1, -1, 1, 1, 1},
{ 1, -1, 1, -1,-1, 1},
{-1, -1, 1, 1, 1, 1},
{ 1, 1, 1, -1, 1, -1},
{-1, -1, 1, -1, 1, 1},
{ 1, 1, -1, 1, 1, -1},
{-1, 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1, -1},
{-1, -1, -1, 1, 1, 1},
{ 1, -1, -1, 1, 1, -1},
{ 1, -1, 1, 1,-1, -1}};
Al igual que le método de la RNA, necesitamos de 3 funciones principales.
void TfrmPrincipal::leer_sensor()
{
//sensor de adelante S1
Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1;
//sensor izquierdo S2
Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1;
//sensor derecho S3
Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1;
//sensor de atraz S4
Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1;
}
Esta función lee los sensores a cada paso que da el robot. Si a una distancia
determinada existe un obstáculo el sensor marca 1, sino marca -1.
void TfrmPrincipal::busqueda()
{
//realizando la busqueda en la matriz de comportamiento del robot
for(int i = 0; i<n; i++)
{
if(Sensor[0] == MatrizComp[i][0] && Sensor[1] == MatrizComp[i][1]
&& Sensor[2] == MatrizComp[i][2]&& Sensor[3] == MatrizComp[i][3])
{
M1 = MatrizComp[i][4];
M2 = MatrizComp[i][5];
}
}
}
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 37
Esta función es la que hace la búsqueda en la base de datos (tabla de comportamiento)
e indicarle a cada instante la acción debe tomar cada uno de sus motores.
Recordemos que si el motor da marcha hacia adelante se pone en 1, sino se pone en -1.
void TfrmPrincipal::girar()
{
if(M1 == -1 && M2 == -1)
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
else
{
if(M1 == 1 && M2 == -1) //giro a la derecha
{
//rotando los sensores junto con el robot
e++;if(e>3)e = 0;
f++;if(f>3)f = 0;
g++;if(g>3)g = 0;
h++;if(h>3)h = 0;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
else
{
if(M1 == -1 && M2 == 1) //giro a la izquierda
{
//rotando los sensores junto con el robot
e--;if(e<0)e = 3;
f--;if(f<0)f = 3;
g--;if(g<0)g = 3;
h--;if(h<0)h = 3;
S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h];
}
if(M1 == 1 && M2 == 1)
{
switch(S1)
{
case 0:zz++;break;
case 1:xx--;;break;
case 2:xx++;break;
case 3:zz--;break;
}
}
}
}
}
Dependiendo el estado del motor, el robot deberá ir adelante o atrás, girar a la izquierda
o a la derecha, etc. Esta función es la que se encarga de todos estos giros. (ver CD
adjunto)
Este método tiene serios inconvenientes ya que cuando el número de variables de
entrada y el número de salidas es mucho mayor, la cantidad de datos para especificar
cada posible situación crece indefinidamente (2n
), debido a esto se necesitarán
dispositivos con gran capacidad de almacenamiento.
4.3.2. Análisis del Tiempo de Ejecución.
Como podemos notar, la única diferencia de este método con el da la RNA, es la función
de búsqueda.
Realizaremos el análisis de Tiempo de Ejecución para esta función, nuevamente, con
conteo de instrucciones.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 38
void TfrmPrincipal::busqueda()
{
//realizando la busqueda en la matriz de comportamiento del robot
for(int i = 0; i<n; i++)
{
if(Sensor[0] == MatrizComp[i][0] && Sensor[1] == MatrizComp[i][1]
&& Sensor[2] == MatrizComp[i][2]&& Sensor[3] == MatrizComp[i][3])
{
M1 = MatrizComp[i][4];
M2 = MatrizComp[i][5];
}
}
}
La función que llama a las anteriores funciones es la siguiente:
void __fastcall TfrmPrincipal::Timer1Timer(TObject *Sender)
{
leer_sensor();
busqueda();
girar();
}
4.3.4. Comparación del método de las RNA con el método tradicional.
Como podemos notar; ambos métodos realizan el mismo trabajo de forma satisfactoria,
sin embargo, uno de ellos es más eficiente que el otro en tiempo de ejecución y espacio
de memoria utilizado.
Esta diferencia lo podemos demostrar con el análisis de tiempo de ejecución para cada
una de las implementaciones de los métodos.
3
18
3
3
Operaciones
elementales
T1(n)
T4(n)
T3(n)
Figura 4.3.2.1 grafica del comportamiento del tiempo de ejecución del método tradicional
implementado en el Robot
Tiempo de Ejecución utilizando RNA Tiempo de Ejecución utilizando Matriz de Búsqueda
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 39
Para comparar los tiempos de ejecución de ambos métodos recurrimos a la notación
asintótica de la algoritmia, utilizando la regla de los límites.
Entonces:
De esta forma queda demostrado que el Tiempo de Ejecución del método de las RNA es
más eficiente que la del método tradicional de la matriz de búsqueda. Podemos verlo
también de forma gráfica.
Tmt(n) crece a medida que lo hace n, lo que lo hace menos eficiente porque a media que
se vayan aumentando el número de sensores y motores, el tiempo de ejecución también
aumentará, no sucede lo mismo con Trna(n), ya que esta siempre se mantiene constante.
Además para el método tradicional de búsqueda tenemos que almacenar la matriz de
comportamiento, esto conlleva a que tengamos que utilizar dispositivos con gran
capacidad de almacenamiento. En contraste, una red neuronal puede ser entrenada con
un número representativo de patrones y aprender el comportamiento del sistema
utilizando dispositivos de menor capacidad de almacenamiento y costo.
Tmt(n)
Trna(n)
Figura 4.3.4.1 grafica del tiempo de ejecución para ambos métodos
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 40
CAPITULO V
CONCLUSIONES
5.1. CONCLUSIONES.
El presente proyecto realizado ha logrado alcanzar los objetivos propuestos, ya que, la
construcción del modelo de simulación ha logrado entrenar la Red Neuronal, tal que este
entrenamiento ha conseguido proveer información a nuestro robot para que sea capaz
de detectar obstáculos, tal como se propuso en el objetivo general.
Una Red Neuronal del tipo Perceptrón de una sola capa es una buena solución a
problemas que sean linealmente separables, si no son linealmente separables se tiene
la alternativa de usar una red del tipo Perceptrón multicapa capaz de solucionar el
problema de la separabilidad lineal caso contrario se debería cambiar definitivamente de
red.
La capacidad de generalización de una Red Neuronal Artificial, es muy importante ya
que nos permite generalizar el comportamiento del sistema, y, de esta forma ahorrar
tiempo de computo en el entrenamiento de la red, ya que solo lo entrenamos con un
número representativo de patrones. En el caso de nuestro robot se pudo constatar que
la red fue entrenada para el mundo 2 y generalizó su comportamiento para el recorrer el
mundo 1.
Las Redes Neuronales Artificiales sin duda son totalmente eficientes, ya que su tiempo
de ejecución constante le hace altamente paralelo otorgándole al robot un grado de
inteligencia impresionante (como la del cerebro de un ser humano), en comparación al
método tradicional de búsqueda cuyo tiempo de ejecución va creciendo indefinidamente.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 41
BIBLIOGRAFIA
[1]. Redes Neuronales, aplicaciones; Hilera J. Martinez V., Addison Wesley, 1995
[2]. Tutorial sobre Redes Neuronales Artificiales aplicadas en ingeniería; Acosta
Buitrago María Isabel, Zuluaga Muñoz Camilo Alfonso, Universidad Tecnológica
de Pereira, 2000
[3]. Universidad Tecnológica de Pereira
http://uhm.utp.edu.co/neuronales
[4] Modelo de Simulación de Redes Neuronales para el reconocimiento de
caracteres aplicando Retroprogramacion; Espinoza Rodríguez Edgar Tito,
TSIS 35, 1998
[4]. Graficas en Computadora por OpenGL; Baker Pauline, 2006
[5]. Lenguaje de Programación C/C++ y C.Net; Cherre A. Rafael Juan, Rafael
Francia Dario, 2001
[6] Fundamentos de la Algoritmia; Brassard G, Brattley, 1997
[7] Anatomía Humana; Testud L. Laarjet, MxGraw Hill, España, 1974
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 42
ANEXOS
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 43
ANEXO A
Recolección de Datos para el Mundo 1 y Mundo 2 en forma detallada.
Mundo 1:
Patrón 1.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 -1 -1
Patrón 2.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
1 -1 -1 -1 -1 1
Patrón 3.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 -1 1 -1 1 1
Patrón 4.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
1 -1 1 -1 -1 1
Patrón 5.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 -1 1 1 1 1
Patrón 6.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
1 1 -1 -1 1 -1
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 44
Patrón 7.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 1 -1 1 1 1
Patrón 8.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 1 -1 -1 1 1
Patrón 9.
S1
S2 S3
S4
S1 S2 S3 S4 M1 M2
-1 1 1 -1 1 1
Mundo 2: Se siguió la misma lógica que el mundo 1
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 -1 -1
1 -1 -1 -1 -1 1
-1 -1 1 -1 1 1
1 -1 1 -1 -1 1
-1 -1 1 1 1 1
1 1 -1 -1 1 -1
-1 1 -1 1 1 1
-1 1 -1 -1 1 1
-1 1 1 -1 1 1
S1 S2 S3 S4 M1 M2
-1 -1 -1 -1 1 1
1 -1 -1 -1 1 -1
-1 1 1 -1 1 1
-1 1 -1 -1 1 1
1 1 -1 -1 1 -1
-1 1 -1 1 1 1
1 -1 1 -1 -1 1
-1 -1 1 1 1 1
1 1 1 -1 1 -1
-1 -1 1 -1 1 1
1 1 -1 1 1 -1
-1 1 1 1 1 1
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 45
ANEXO B
Algoritmo de Entrenamiento de la red tipo Perceptrón: Adecuado a nuestro proyecto
1. Se asigna valores aleatorios a los pesos y a la ganancia .
2. Se le presenta a la red el primer patrón de entrada aún no considerado, junto
con el valor esperado de salida.
3. Se calcula la salida neta de la red.
4. Se aplica la función de transferencia a la salida neta n. el cual puede ser
escalón (hardlim) o hardlims.
5. Se calcula el error correspondiente, que va a ser la diferencia entre la salida
proporcionada por la red M y la salida esperada t.
6. Si el error es distinto de O, entonces debemos modificar los pesos y el valor
de la ganancia.
Y
7. Se vuelve al paso 2, hasta que los errores para cada patrón de entrada sean
iguales a O.
Nota: El entrenamiento de las neuronas se lo realiza de forma individual, una
independientemente de la otra, es decir cada neurona tendrá que seguir el
algoritmo de forma separada.
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 46
ANEXO C
Código Fuente Clase Perceptrón: Realizado con C# 2.0.
using System;
using System.Collections.Generic;
using System.Text;
namespace RNA_2
{
class PercepRobot
{
const int NSEN = 4;
public void robot(int[,] x)
{
x[0, 0] = -1; x[0, 1] = -1; x[0, 2] = -1; x[0, 3] = -1; x[0, 4] = 1; x[0, 5] = 1;
x[1, 0] = 1; x[1, 1] = -1; x[1, 2] = -1; x[1, 3] = -1; x[1, 4] = 1; x[1, 5] = -1;
x[2, 0] = -1; x[2, 1] = 1; x[2, 2] = 1; x[2, 3] = -1; x[2, 4] = 1; x[2, 5] = 1;
x[3, 0] = -1; x[3, 1] = 1; x[3, 2] = -1; x[3, 3] = -1; x[3, 4] = 1; x[3, 5] = 1;
x[4, 0] = 1; x[4, 1] = 1; x[4, 2] = -1; x[4, 3] = -1; x[4, 4] = 1; x[4, 5] = -1;
x[5, 0] = -1; x[5, 1] = 1; x[5, 2] = -1; x[5, 3] = 1; x[5, 4] = 1; x[5, 5] = 1;
x[6, 0] = 1; x[6, 1] = -1; x[6, 2] = 1; x[6, 3] = -1; x[6, 4] = -1; x[6, 5] = 1;
x[7, 0] = -1; x[7, 1] = -1; x[7, 2] = 1; x[7, 3] = 1; x[7, 4] = 1; x[7, 5] = 1;
x[8, 0] = 1; x[8, 1] = 1; x[8, 2] = 1; x[8, 3] = -1; x[8, 4] = 1; x[8, 5] = -1;
x[9, 0] = -1; x[9, 1] = -1; x[9, 2] = 1; x[9, 3] = -1; x[9, 4] = 1; x[9, 5] = 1;
x[10, 0] = 1; x[10, 1] = 1; x[10, 2] =-1; x[10, 3] = 1; x[10, 4] = 1; x[10, 5] =-1;
x[11, 0] =-1; x[11, 1] = 1; x[11, 2] = 1; x[11, 3] = 1; x[11, 4] = 1; x[11, 5] = 1;
}
public int fscalon(double n)
{
int a;
if (n >= 0)
a = 1;
else
a = -1;
return a;
}
public double WP_b(int[,] P, double[,] W, double[] b, int fp, int fw, int fb)
{
double wp = 0;
for (int i = 0; i < NSEN; i++)
{
wp = wp + (W[fw, i] * P[fp, i]);
}
return wp + b[fb];
}
public void newPesos(int[,] P, double[,] W, int error, int fp, int fw)
{
for (int i = 0; i < NSEN; i++)
W[fw, i] = W[fw, i] + (error * P[fp, i]);
}
}
}
INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 47
//evento que realiza el entrenamiento de la red
private void btnPasoPaso_Click(object sender, EventArgs e)
{
//entrenamiento de la red
//-------------------------------------------------------------------
//para la primera neurona;
a1 = p.WP_b(M, W, B, pat, 0, 0);
y1 = p.fscalon(a1);
e1 = M[pat, 4] - y1; //error para la salida deseada del motor 1
if (e1 != 0)
{
estado1 = 0; //controlamos el aprendizaje de la red
p.newPesos(M, W, e1, pat, 0); //nuevos pesos
B[0] = B[0] + e1; //actualizamos la ganancia 1
}
else
{
estado1++;
if (estado1 >= NPAT) //controlando el aprendizaje del la red
estado1++;
}
//para la segunda neurona;
a2 = p.WP_b(M, W, B, pat, 1, 1);
y2 = p.fscalon(a2);
e2 = M[pat, 5] - y2; //error para la salida del motor 2
if (e2 != 0)
{
estado2 = 0;
p.newPesos(M, W, e2, pat, 1);
B[1] = B[1] + e2; //actualizamos la ganancia 2
}
else
{
estado2++;
if (estado2 >= NPAT)
estado2++;
}
//para verificar si la red ya ha aprendido
if (estado1 >= 16 && estado2 >= 16)
MessageBox.Show("LA RED YA HA APRENDIDO");
//--------------------------------------------------------------------
//asignando valores a la interfaz
//---------------------------------------------------------------------
a1_ent.Text = a1.ToString(); a2_ent.Text = a2.ToString();
y1_ent.Text = y1.ToString(); y2_ent.Text = y2.ToString();
Error_ent_1.Text = e1.ToString(); Error_ent_2.Text = e2.ToString();
Pat1.Text = M[pat, 0].ToString(); Pat2.Text = M[pat, 1].ToString(); Pat3.Text =
M[pat, 2].ToString(); Pat4.Text = M[pat, 3].ToString();
b1_ent.Text = B[0].ToString(); b2_ent.Text = B[1].ToString();
w11_ent.Text = W[0, 0].ToString(); w12_ent.Text = W[0, 1].ToString(); w13_ent.Text
= W[0, 2].ToString(); w14_ent.Text = W[0, 3].ToString();
w21_ent.Text = W[1, 0].ToString(); w22_ent.Text = W[1, 1].ToString();
w23_ent.Text = W[1, 2].ToString(); w24_ent.Text = W[1, 3].ToString();
//---------------------------------------------------------------------
pat = pat + 1;
if (pat >= NPAT)
pat = 0;
}

Más contenido relacionado

La actualidad más candente

Generalidades sobre Redes
Generalidades sobre RedesGeneralidades sobre Redes
Generalidades sobre Redesguestb72770b
 
Papper,formato ieee inteligencia artificial
Papper,formato ieee inteligencia artificialPapper,formato ieee inteligencia artificial
Papper,formato ieee inteligencia artificialAngeliTo Salcedo
 
Medios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosMedios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosJennifer Tafur Gutierrez
 
Tipos de Redes y sus Topologias Explicadas con Ejemplos
Tipos de Redes y sus Topologias Explicadas con EjemplosTipos de Redes y sus Topologias Explicadas con Ejemplos
Tipos de Redes y sus Topologias Explicadas con EjemplosjonnyJER
 
Unidades funcionales de la computadora
Unidades funcionales de la computadoraUnidades funcionales de la computadora
Unidades funcionales de la computadoraBrayan_manriq
 
Topologías de redes punto a punto
Topologías de redes  punto a puntoTopologías de redes  punto a punto
Topologías de redes punto a puntodavid andres
 
CAPA DE TRANSPORTE MODELO OSI
CAPA DE TRANSPORTE MODELO OSICAPA DE TRANSPORTE MODELO OSI
CAPA DE TRANSPORTE MODELO OSIAliderek LuMej
 
Factores humanos de IHC
Factores humanos de IHCFactores humanos de IHC
Factores humanos de IHCRafael
 
Topologías y Componentes de una red Inalámbrica
Topologías y Componentes de una red InalámbricaTopologías y Componentes de una red Inalámbrica
Topologías y Componentes de una red InalámbricaEduardo J Onofre
 
Mapa mental conmutacion
Mapa mental conmutacionMapa mental conmutacion
Mapa mental conmutacionSamuel Rivas
 
Acceso a la WAN: 1. Introducción a las redes WAN
Acceso a la WAN: 1. Introducción a las redes WANAcceso a la WAN: 1. Introducción a las redes WAN
Acceso a la WAN: 1. Introducción a las redes WANFrancesc Perez
 
12 no guiados wi fi
12 no guiados wi fi 12 no guiados wi fi
12 no guiados wi fi Taringa!
 
Características de redes de comunicación de datos
Características de redes de comunicación de datosCaracterísticas de redes de comunicación de datos
Características de redes de comunicación de datosLaury Estefanie
 
Requisitos mínimos para instalar una red lan
Requisitos mínimos para instalar una red lanRequisitos mínimos para instalar una red lan
Requisitos mínimos para instalar una red lanLeonard Sanoja
 

La actualidad más candente (20)

Generalidades sobre Redes
Generalidades sobre RedesGeneralidades sobre Redes
Generalidades sobre Redes
 
Papper,formato ieee inteligencia artificial
Papper,formato ieee inteligencia artificialPapper,formato ieee inteligencia artificial
Papper,formato ieee inteligencia artificial
 
Medios de transmision guiados y no guiados
Medios de transmision guiados y no guiadosMedios de transmision guiados y no guiados
Medios de transmision guiados y no guiados
 
Tipos de Redes y sus Topologias Explicadas con Ejemplos
Tipos de Redes y sus Topologias Explicadas con EjemplosTipos de Redes y sus Topologias Explicadas con Ejemplos
Tipos de Redes y sus Topologias Explicadas con Ejemplos
 
Unidades funcionales de la computadora
Unidades funcionales de la computadoraUnidades funcionales de la computadora
Unidades funcionales de la computadora
 
Topologías de redes punto a punto
Topologías de redes  punto a puntoTopologías de redes  punto a punto
Topologías de redes punto a punto
 
CAPA DE TRANSPORTE MODELO OSI
CAPA DE TRANSPORTE MODELO OSICAPA DE TRANSPORTE MODELO OSI
CAPA DE TRANSPORTE MODELO OSI
 
Factores humanos de IHC
Factores humanos de IHCFactores humanos de IHC
Factores humanos de IHC
 
Topologías y Componentes de una red Inalámbrica
Topologías y Componentes de una red InalámbricaTopologías y Componentes de una red Inalámbrica
Topologías y Componentes de una red Inalámbrica
 
Mapa mental conmutacion
Mapa mental conmutacionMapa mental conmutacion
Mapa mental conmutacion
 
Acceso a la WAN: 1. Introducción a las redes WAN
Acceso a la WAN: 1. Introducción a las redes WANAcceso a la WAN: 1. Introducción a las redes WAN
Acceso a la WAN: 1. Introducción a las redes WAN
 
Redes informaticas
Redes informaticasRedes informaticas
Redes informaticas
 
Trabajo bios
Trabajo biosTrabajo bios
Trabajo bios
 
Access point(puntos de acceso)
Access point(puntos de acceso)Access point(puntos de acceso)
Access point(puntos de acceso)
 
Router
RouterRouter
Router
 
12 no guiados wi fi
12 no guiados wi fi 12 no guiados wi fi
12 no guiados wi fi
 
Ethernet
EthernetEthernet
Ethernet
 
Características de redes de comunicación de datos
Características de redes de comunicación de datosCaracterísticas de redes de comunicación de datos
Características de redes de comunicación de datos
 
Transmision inalambrica
Transmision inalambricaTransmision inalambrica
Transmision inalambrica
 
Requisitos mínimos para instalar una red lan
Requisitos mínimos para instalar una red lanRequisitos mínimos para instalar una red lan
Requisitos mínimos para instalar una red lan
 

Similar a Detección de obstáculos usando RNA

IA conexionista-Redes Neuronales Artificiales: introducción
IA conexionista-Redes Neuronales Artificiales: introducciónIA conexionista-Redes Neuronales Artificiales: introducción
IA conexionista-Redes Neuronales Artificiales: introducciónPriscill Orue Esquivel
 
Funciones satlin satlins
Funciones satlin satlinsFunciones satlin satlins
Funciones satlin satlinsChristian Lara
 
Red Neuronal Artificial
Red Neuronal ArtificialRed Neuronal Artificial
Red Neuronal ArtificialJORGE ARMANDO
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALESHB09
 
Investigación redes neuronales
Investigación redes neuronalesInvestigación redes neuronales
Investigación redes neuronalestiburciosam
 
Modelo de una red neuronal artificial
Modelo de una red neuronal artificialModelo de una red neuronal artificial
Modelo de una red neuronal artificialLevy GT
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronalesAngel G
 
redes neuronales y artificales.pdf
redes neuronales y artificales.pdfredes neuronales y artificales.pdf
redes neuronales y artificales.pdfWildrChoquegomez
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALESguestbab2c8
 
Inteligencia Artificial Clase 2
Inteligencia Artificial Clase 2Inteligencia Artificial Clase 2
Inteligencia Artificial Clase 2UNEFA
 
Sistemas Basados en Casos IUT
Sistemas Basados en Casos IUTSistemas Basados en Casos IUT
Sistemas Basados en Casos IUTLuis Álamo
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALESeduardop18
 

Similar a Detección de obstáculos usando RNA (20)

IA conexionista-Redes Neuronales Artificiales: introducción
IA conexionista-Redes Neuronales Artificiales: introducciónIA conexionista-Redes Neuronales Artificiales: introducción
IA conexionista-Redes Neuronales Artificiales: introducción
 
Funciones satlin satlins
Funciones satlin satlinsFunciones satlin satlins
Funciones satlin satlins
 
Red Neuronal Artificial
Red Neuronal ArtificialRed Neuronal Artificial
Red Neuronal Artificial
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALES
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Investigación redes neuronales
Investigación redes neuronalesInvestigación redes neuronales
Investigación redes neuronales
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Modelo de una red neuronal artificial
Modelo de una red neuronal artificialModelo de una red neuronal artificial
Modelo de una red neuronal artificial
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
redes neuronales y artificales.pdf
redes neuronales y artificales.pdfredes neuronales y artificales.pdf
redes neuronales y artificales.pdf
 
Perceptron
PerceptronPerceptron
Perceptron
 
Libro del-curso
Libro del-cursoLibro del-curso
Libro del-curso
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALES
 
Inteligencia Artificial Clase 2
Inteligencia Artificial Clase 2Inteligencia Artificial Clase 2
Inteligencia Artificial Clase 2
 
2º asignacion redes neuronales
2º asignacion redes neuronales2º asignacion redes neuronales
2º asignacion redes neuronales
 
Sistemas Basados en Casos IUT
Sistemas Basados en Casos IUTSistemas Basados en Casos IUT
Sistemas Basados en Casos IUT
 
REDES NEURONALES
REDES NEURONALESREDES NEURONALES
REDES NEURONALES
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
110641.ppt
110641.ppt110641.ppt
110641.ppt
 

Más de Saul Mamani

EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLES
EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLESEL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLES
EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLESSaul Mamani
 
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...Saul Mamani
 
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON S...
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON  S...DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON  S...
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON S...Saul Mamani
 
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...Saul Mamani
 
El lado oscuro de las redes sociales
El lado oscuro de las redes socialesEl lado oscuro de las redes sociales
El lado oscuro de las redes socialesSaul Mamani
 
Propuesta de una arquitectura para reemplazar el sistema informático la empre...
Propuesta de una arquitectura para reemplazar el sistema informático la empre...Propuesta de una arquitectura para reemplazar el sistema informático la empre...
Propuesta de una arquitectura para reemplazar el sistema informático la empre...Saul Mamani
 
Tesis Sistema Informático Integrado para la Administración Académica
Tesis Sistema Informático Integrado para la Administración AcadémicaTesis Sistema Informático Integrado para la Administración Académica
Tesis Sistema Informático Integrado para la Administración AcadémicaSaul Mamani
 
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...Saul Mamani
 
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTAS
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTASAPLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTAS
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTASSaul Mamani
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de usoSaul Mamani
 
FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2Saul Mamani
 
In seguridad de aplicaciones web
In seguridad de aplicaciones webIn seguridad de aplicaciones web
In seguridad de aplicaciones webSaul Mamani
 
CODIGO QR PELIGROSOS
CODIGO QR PELIGROSOSCODIGO QR PELIGROSOS
CODIGO QR PELIGROSOSSaul Mamani
 
Sistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSaul Mamani
 
Seguridad en Servicios Web .Net
Seguridad en Servicios Web .NetSeguridad en Servicios Web .Net
Seguridad en Servicios Web .NetSaul Mamani
 
Herramientas Libres en Ingenieria de Software
Herramientas Libres en Ingenieria de SoftwareHerramientas Libres en Ingenieria de Software
Herramientas Libres en Ingenieria de SoftwareSaul Mamani
 

Más de Saul Mamani (16)

EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLES
EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLESEL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLES
EL ROL DE LA INTELIGENCIA ARTIFICAL EN LAS ENERGIAS RENOVABLES
 
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
APLICACIÓN DE MÉTODOS Y HERRAMIENTAS ÁGILES PARA EL DESARROLLO DE UN SISTEMA ...
 
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON S...
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON  S...DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON  S...
DISEÑO DE UNA ARQUITECTURA PARA LA IMPLEMENTACIÓN DE INTEROPERABILIDAD CON S...
 
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...
APLICACIÓN DE REDES NEURONALES ARTIFICIALES PARA LA DETECCION DE OBSTÁCULOS P...
 
El lado oscuro de las redes sociales
El lado oscuro de las redes socialesEl lado oscuro de las redes sociales
El lado oscuro de las redes sociales
 
Propuesta de una arquitectura para reemplazar el sistema informático la empre...
Propuesta de una arquitectura para reemplazar el sistema informático la empre...Propuesta de una arquitectura para reemplazar el sistema informático la empre...
Propuesta de una arquitectura para reemplazar el sistema informático la empre...
 
Tesis Sistema Informático Integrado para la Administración Académica
Tesis Sistema Informático Integrado para la Administración AcadémicaTesis Sistema Informático Integrado para la Administración Académica
Tesis Sistema Informático Integrado para la Administración Académica
 
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...
DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTI...
 
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTAS
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTASAPLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTAS
APLICACIÓN DE SCRUM Y UML PARA EL DESARROLLO DE UN SISTEMA DE VENTAS
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2FUNDAMENTOS DE UML 2
FUNDAMENTOS DE UML 2
 
In seguridad de aplicaciones web
In seguridad de aplicaciones webIn seguridad de aplicaciones web
In seguridad de aplicaciones web
 
CODIGO QR PELIGROSOS
CODIGO QR PELIGROSOSCODIGO QR PELIGROSOS
CODIGO QR PELIGROSOS
 
Sistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NET
 
Seguridad en Servicios Web .Net
Seguridad en Servicios Web .NetSeguridad en Servicios Web .Net
Seguridad en Servicios Web .Net
 
Herramientas Libres en Ingenieria de Software
Herramientas Libres en Ingenieria de SoftwareHerramientas Libres en Ingenieria de Software
Herramientas Libres en Ingenieria de Software
 

Último

CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Exposicion. del documentos de YPFB corporación
Exposicion. del documentos de YPFB corporaciónExposicion. del documentos de YPFB corporación
Exposicion. del documentos de YPFB corporaciónjas021085
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 

Último (20)

CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Exposicion. del documentos de YPFB corporación
Exposicion. del documentos de YPFB corporaciónExposicion. del documentos de YPFB corporación
Exposicion. del documentos de YPFB corporación
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 

Detección de obstáculos usando RNA

  • 1. UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA INGENIERIA INFORMATICA PROYECTO DE SEMINARIO DE COMPILADORES E INTELIGENCIA ARTIFICIAL DETECCION DE OBSTACULOS POR MEDIO DE UN ROBOT APLICANDO REDES NEURONALES ARTIFICIALES POR: UNV. SAUL MAMANI MAMANI DOCENTE: ING. ANDY A. CESPEDES ROJAS DOCENTE INF 3390 A Oruro 22 de abril de 2009
  • 2. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 1 CAPITULO I INTRODUCCION 1.1. PRESENTACION. De un tiempo a esta parte los investigadores vienen volcando sus esfuerzos en el estudio de la Inteligencia Artificial y los Sistemas Paralelos. La inteligencia artificial inicia en 1950, Norbert Wiener postula que todo comportamiento inteligente es el resultado de mecanismos de retroalimentación. En 1956 gracias a John MacCarthy se acuña el término de Inteligencia Artificial Áreas de la IA: Los Sistemas Paralelos estudia como una computadora puede ejecutar varias operación en forma simultánea, o sea, al mismo tiempo, generalmente utiliza más de un procesador. Las investigaciones sobre la IA y los Sistemas Paralelos llevan a un nuevo concepto que son las Redes Neuronales Artificiales. Resulta irónico pensar que maquinas computacionales capaces de realizar 100 millones de operaciones en coma flotante por segundo, no sean capaces de interpretar el mundo. Esto ha hecho que numerosos investigadores desde 1956 centren su atención en nuevos sistemas de tratamiento de información que permitan solucionar problemas cotidianos tal y como lo hace el cerebro humano. Este órgano biológico contiene características deseables para cualquier sistema de procesamiento digital: Es robusto y tolerante a fallas, es flexible, maneja información difusa, es altamente paralelo, es pequeño y consume poca energía. “Basados en la eficiencia de los procesos llevados a cabo por el cerebro e inspirados en su funcionamiento, varios investigadores han desarrollado las Redes Neuronales Artificiales, que emulan el comportamiento de la redes neuronales biológicas, además, estos sistemas no requieren que la tarea a ejecutar se programen, ellos aprenden de la experiencia. No ejecutan instrucciones, sino, responden en paralelo a las entradas que se les presenta”1 . Las Redes Neuronales Artificiales es una teoría que está aún en proceso de estudio, su verdadera potencialidad no se ha alcanzado todavía pero se han desarrollado numerosas aplicaciones con gran éxito en diferentes campos. 1. Maria I. Acosta B. - Camilo A. Zuluaga M. Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 6
  • 3. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 2 1.2. ANTECEDENTES. Existen muchos proyectos e investigaciones que se ha realizado utilizando Redes Neuronales Artificiales enfocándose principalmente en dar alternativas novedosas y eficientes a problemas complejos en el campo de la economía, medicina, ciencia e ingeniería, etc. en los cuales los métodos tradiciones no han entregado resultados muy convincentes. Las Aplicaciones más exitosas de la RNA son: - Reconocimiento de patrones - Procesamiento de imágenes y vos - Juguetes - Planeamiento - Predicción - Control y Optimización - Filtrado de señales - Diagnostico de Enfermedades - Odontología - Juegos 1.3. DEFINICION DEL PROBLEMA. El presente proyecto contiene una investigación (monografía) en el campo de la Inteligencia Artificial y la Redes Neuronales Arficiales, aplicando estos conocimientos a un caso específico una aplicación sobre la detección de obstáculos por medio de un robot. La realización de este proyecto está orientada a emplear Redes Neuronales Artificiales y de este modo ofrecer una alternativa novedosa y eficiente con respecto a los métodos tradicionales poco eficientes. 1.3.1. Objetivos. Objetivo General. Implementar y simular el entrenamiento de una Red Neuronal del tipo Perceptron utilizando el método de aprendizaje supervisado, de tal forma, que sea capaz de proveer información a un robot para realizar las acciones necesarias ante la aparición de obstáculos. Objetivos Específicos. - Identificar obstáculos y realizar las acciones necesarias utilizando RNA, bajo un aprendizaje supervisado. - Implementar un programa para simular el entrenamiento de una Red Neuronal tipo Perceptron utilizando un algoritmo de aprendizaje supervisado. - Comparar el método usando Redes Neuronales Artificiales con los métodos tradicionales. - Implementar la red ya entrenada en un simulador o un LEGO.
  • 4. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 3 1.4. HIPOTESIS. Simular una Red Neuronal Artificial tipo Perceptrón e implementarlo en un robot de forma que este sea capaz de reconocer cualquier obstáculo que se le presente. 1.5. ALCANCES Y LIMITACIONES. Alcances. El presente proyecto permitirá simular el entrenamiento y comportamiento de una Red Neuronal del tipo Perceptrón a través de una interfaz grafica que permita clasificar los diferentes patrones de entrada en clases linealmente separables. Permitirá ver la eficiencia del método frente a métodos tradiciones unas ves implementadas en un simulador y/o un robot (LEGO). Limitaciones. El proyecto se limita a hacer la comparación entre el método del las Redes Neuronales y los métodos tradicionales a través de un simulador (interfaz gráfica) y no así utilizando equipos físicos. Este proyecto se enfoca básicamente en el estudio de una Red Neuronal del tipo Perceptrón y un algoritmo de aprendizaje supervisado.
  • 5. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 4 CAPITULO II FUNDAMENTO BIOLOGICO 2.1 ELEMENTOS BÁSICOS. El cerebro Humano consta aproximadamente de 1011 neuronas y aproximadamente 104 conexiones por elemento, estos elementos son llamados neuronas los cuales tienen tres componentes importantes: Las Dendritas. Reciben la información proveniente de otras células. La Soma. Cuerpo de la célula que recolecta y combina la información. El Axón. Lleva la señal desde el cuerpo de la célula hacia otras neuronas. La Sinapsis. Es la conexión de un axón con la dendrita de otra neurona. “Toda célula nerviosa posee un aparato de recepción, constituido por el cuerpo de la célula y las expansiones protoplasmáticas(dendritas), un aparato de transmisión, el axón y un aparato de emisión la arbolisación terminal”1 Algunas de las estructuras neuronales son determinadas en el nacimiento, otra parte se desarrolla a través del aprendizaje, proceso en que nuevas conexiones neuronales son realizadas y otras se pierden. 1. Testud – A. Catarjet Anatomía Humana Figura 2.1.1 Neurona Biológica
  • 6. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 5 2.2. INTRODUCCIÓN A LA NEUROFISIOLOGÍA. Las estructuras neuronales continúan cambiando durante toda la vida, estos cambios consisten en el esfuerzo o debilitamiento de las uniones sinápticas, así el proceso de recordar el rostro de un amigo consiste en alterar varias sinapsis. Todas las neuronas conducen información de forma similar, esta viaja a lo largo del axón en breves impulsos eléctricos denominados potenciales de acción, estas alcanzan una amplitud máxima de unos 100mv y duran 1ms, son el resultado del desplazamiento a través de la membrana celular de iones de sodio dotados de carga positiva, que pasan desde el fluido extra celular hasta el citoplasma intracelular. La membrana en reposo mantiene un gradiente de potencial eléctrico de -70mv, los iones de sodio no atraviesan con facilidad la membrana en reposo por lo que la permeabilidad del sodio aumenta alcanzando un potencial crítico llamado umbral, es decir, el interior de la célula se torna positivo con respecto al exterior al cabo de 1ms, la permeabilidad del sodio decae y el potencial de la membrana retorna a -70ms su valor en reposo. Los potenciales de acción, son señales de baja frecuencia conducidas en forma muy lenta (100 metros por segundo la velocidad máxima), estos no pueden saltar de una célula a otra, necesitan de un transmisor químico (neurotransmisor) que es liberado en la sinapsis. Cuando el axón esta cerca de sus células destino, se divide en ramificaciones formando sinapsis con las dendritas de otras células. Los fenómenos que ocurren en la sinapsis son de naturales químicos, pero tienen efectos eléctricos laterales que se pueden medir. Hay dos aspectos similares entre las neuronas biológicas y las artificiales. Primero, los bloques de construcción de ambas redes son sencillos elementos computacionales altamente interconectados. Segundo, las conexiones entre neuronas determinan la función de la red. 2.3. NEURONA CEREBRAL VS NEURONA ARTIFICIAL. Los primeros en describir al cerebro humano como un elemento computacional fueron Mc Culloch & Pitts en 1943. En la figura 2.2.1 se muestra la similitud de una neurona cerebral y una artificial. Figura 2.2.1 De la neurona biológica a la neurona artificial
  • 7. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 6 2.3. MODELO Y PARTES DE UNA RED NEURONAL ARTIFICIAL. P: Son las entradas de la red. (dendritas) W: Son los pesos de la neurona (sinapsis) b: Es la ganancia que refuerza salida (umbral) n: Es la salida neta de la red (potencial de acción) f: Es la función de trasferencia que puede ser lineal y no lineal (neurotransmisor) 2.4. FUNCIONES DE TRANSFERENCIA. 2.4.1. Función de transferencia Escalón o Hardlim. Acerca la salida de la red a cero, si el argumento de la función es menor que cero y a uno si es mayor o igual a cero, de esta forma clasifica las salidas en dos categorías, característica que le permite ser empleada en una red tipo perceptron. Podemos modificar la función para una mejor convergencia del resultado un rango de salida de 1 y -1, esta función es llamada también hardlims. 1. Maria I. Acosta B. - Camilo A. Zuluaga M. Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 21 Σ f Figura 2.3.1 Neurona de una sola entrada p W b n a entrada neurona general a = f(Wp + b) Figura 2.4.1 Función de transferencia Escalón (hardlim)1
  • 8. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 7 2.4.2. Función de transferencia Lineal o Purelim. La salida es igual a su entrada, utilizadas en las redes tipo adaline. 2.4.1. Función de transferencia Sigmoideal o logsig. Esta función es usada en redes multicapa, como la red Backpropagation. 1-2-3. Maria I. Acosta B. - Camilo A. Zuluaga M. Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 22,23 Figura 2.4.2 Función de transferencia Escalón (hardlims)1 Figura 2.4.3 Función de transferencia Lineal2 Figura 2.4.4 Función de transferencia sigmoideal3
  • 9. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 8 2.5. TOPOLOGÍA DE UNA RED. Normalmente una neurona tiene más de una entrada (R entradas), los valores de las entradas p1,p2,...,pR son multiplicadas por su pesos w11,w12,...,w1R pertenecientes a la matriz de pesos W. Donde: La cual es la salida neta de la red, esta expresión se puede escribir en forma matricial de la siguiente forma. La Matriz de pesos W para el caso de una sola neurona tiene una sola fila. La salida total de red viene dada por la siguiente ecuación: 2.6. CONEXIÓN ENTRE CAPAS. Dentro una red neuronal, los elementos de procesamiento se encuentran agrupadas por capas, siendo estas una colección de neuronas que de acuerdo a su ubicación dentro de la red estas reciben diferentes nombres. Capa de entrada. Recibe las señales de entrada de la red, algunos autores no lo consideran a esta como una capa. Capas ocultas. Estas capas son aquellas que no tienen contacto con el medio exterior, sus elementos pueden tener diferentes conexiones y son estas las que determinan la topología de la red. Capa de salida. Transmite la respuesta al mundo exterior. A continuación mostramos una red de una sola capa con S neuronas, donde cada una de las R entradas están conectadas a cada una de las neuronas, ahora, nuestra matriz de pesos W tiene S filas. n = w11p1 + w12p2 + ... + w1RpR + b n = Wp + b a = f(n) n = R i bpiWji 1 )*( Σ f Figura 2.5.1 Neurona con múltiples entradas p2 . pR W12 b n a entrada neurona general a = f(Wp + b) p1 W11 W1R
  • 10. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 9 Ahora, si se considera una red con mas de una capa, o red multicapa, cada capa tendrá su propia matriz de pesos W, su propio vector de ganancias b, un vector de salidas/entradas netas n y un vector de salidas s, a continuación mostramos una red de tres capas, con R entradas, las salidas de la 1ra capa es la entrada de la capa 2da y 3ra respectivamente. 1. Maria I. Acosta B. - Camilo A. Zuluaga M. Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 29 f Figura 2.6.1 Capa de S neuronas p3 . . pR b1 n1 a1 entrada capa de S neuronas a = f(Wp + b) p1 p2 W11 WSR Σ f b2 n2 a2 Σ f bs ns as Σ Figura 2.6.2 Red Neuronal de tres capas1
  • 11. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 10 2.7. EL PERCEPTRÓN. En 1943 Warren McCulloch y Walter Pitts, desarrollaron la primera red neuronal, al principio se encontró una gran similitud con los sistemas biológicos y se creyó que este modelo podría computar cualquier función aritmética lógica. La red del tipo Perceptrón fue inventada por el psicólogo Frank Rosenblatt en el año 1957, el creía que la conectividad existente en las neuronas biológicas tiene un elevado porcentaje de aleatoriedad. Rosenblatt opinaba que la herramienta más apropiada para el estudio de las redes neuronales era la teoría de la probabilidad, lo que lo llevó a la teoría de la separabilidad lineal. En 1969 Marvin Misky y Seymour Paper publicaron su libro “Perceptrons: An introduction to Computational Geometry”, para muchos esta publicación significo el final de las redes neuronales, en esta publicación se presentaron las capacidades y limitaciones del Perceptrón, donde, la mayor desventaja de este tipo de redes era su incapacidad para resolver problemas que no sean linealmente separables. Su idea de Perceptrón aparece en la figura siguiente: Maria I. Acosta B. - Camilo A. Zuluaga M. Tutorial Sobre RNA aplicadas a la ingeniería - Pag. 37 Se observa que fue añadida una función umbral o función de transferencia. A pesar de su limitación, el Perceptrón es hoy en día una red muy importante, ya que en base e esta red se desarrollaron otros modelos de redes neuronales. 2.7.1. Estructura de la Red. Θ Condición Umbral Figura 2.7.1 Perceptrón según Miscky Paper Σ Figura 2.7.1. 1. Perceptron p2 . pR W12 b n a entrada salida p1 W11 W1R p1 p1 P2
  • 12. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 11 Esta única neurona realiza la suma ponderada de las entradas multiplicadas por sus pesos, le suma la función umbral para luego pasar el resultado a una función de transferencia. La función de transferencia empleada por el Perceptrón es la función escalón (harlim) con salidas de 0 y 1, o la función hardlims con salidas de -1 y 1. El uso de estas funciones dependen del valor esperado de la salida del la red. Se le presenta al Perceptrón un mapa con las regiones de decisión creadas en un espacio multidimensional, este, separa esta región por un hiperplano cuya ecuación está determinada por los pesos de la red y el umbral de la función de activación de la neurona. Los pesos se fijan utilizando diferentes algoritmos de entrenamiento. El Perceptrón al contar con una única capa de entrada y otra de salida con una única neurona, tiene una capacidad de representación bastante limitada. Este modelo solo es capaz de resolver problemas que sean linealmente separables. La incapacidad del Perceptrón se puede observar claramente al representar la función lógica XOR. 2.7.2. Regla de Aprendizaje. El Perceptrón utiliza un aprendizaje Supervisado, es decir, el entrenador del sistema conoce la respuesta correcta, y el sistema determina los pesos de tal forma que dado un valor de entrada, pueda producir el valor de salida deseado. Las salida de la red a se compara con el valor esperado t. Donde: El funcionamiento de la red es determinada por los valores de los pesos, los cuales se ajustan utilizando diferentes algoritmos de entrenamiento. Este tipo de entrenamiento tiene una analogía con un niño que aprende nuevas lecciones con la ayuda de su maestro. Como ejemplo, se resolverá el problema de la función OR. Se tiene cuatro patrones de entrada y se conoce sus valores de salida esperados. Las entradas a la red son valores binarios, y la salida está determinada por: P1 P2 a 0 0 0 0 1 1 1 0 1 1 1 1 Figura 2.7.2. 1. Función OR p1 P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2
  • 13. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 12 Utiliza la función de transferencia Escalón (hardlim), esto quiere decir que, si a es mayor o igual a O la salida de la red será igual a 1, en caso contrario será igual a O. Como se puede observar la a función de salida o de transferencia es la expresión de una recta donde los pesos y son las variables y y son las constantes. En el proceso de aprendizaje se irán variando los pesos de tal forma que se encuentre una recta que divida el plano en dos espacios que separe las dos clases de los valores de entrada. El Perceptrón y la grafica con la recta que separa las clases de entradas del la función Or se muestra en la siguiente figura. Como puede verse la recta separa las dos clases de entradas, lo que hace a la función OR una función linealmente separable, también podemos observar que las rectas que se irán formando con el proceso de aprendizaje siempre van a pasar por el origen de coordenadas. En muchas funciones se requiere que la recta no pase siempre por el origen, pues no lograría separar las clases (como es el caso de la función AND), por lo que es necesario introducirle un término independiente que desplace la recta ampliando el número de soluciones, a este término se le conoce con el nombre de ganancia „b‟, dando una solución a la función AND y amplía el número de soluciones para la función OR. Figura 2.7.2. 2. Perceptrón aplicado a la Función OR P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 Σ n a p1 w11 w12 P2 P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 Figura 2.7.2. 3. Recta Solución para la Función OR y la función AND
  • 14. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 13 Entonces, ahora la salida de la neurona será: 2.7.3. Algoritmo de Entrenamiento. 1. Se asigna valores aleatorios a los pesos y a la ganancia . 2. Se le presenta a la red el primer patrón de entrada aún no considerado, junto con el valor esperado de salida. 3. Se calcula la salida neta de la red. 4. Se aplica la función de transferencia a la salida neta n. el cual puede ser escalón (hardlim) o hardlims. 5. Se calcula el error correspondiente, que va a ser la diferencia entre la salida proporcionada por la red a y la salida esperada t. 6. Si el error es distinto de O, entonces debemos modificar los pesos y el valor de la ganancia. Y 7. Se vuelve al paso 2, hasta que los errores para cada patrón de entrada sean iguales a O. Para ilustrar mejor el algoritmo de aprendizaje del Perceptrón se dará solución al problema de clasificación de patrones de la función AND P1 P2 T 0 0 0 0 1 0 1 0 0 1 1 1 Figura 2.7.3.1. Perceptrón, gráfica y tabla de la Función AND P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 Σ n a p1 w11 w12 P2 b
  • 15. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 14 Para saber si este problema puede ser resuelto por una red del tipo Perceptrón, primero se debe determinar si es linealmente separable. Esto se puede determinar a través de la figura 2.7.3.1, donde nos muestra en su grafica que existe una línea recta que separa los valores de la clase 0 y la clase 1, entonces, el problema es linealmente separable. Iteración 0. Se asignan valores aleatorios a los pesos y a la ganancia. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia: Iteración 1. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Iteración 2. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia:
  • 16. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 15 Iteración 3. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia: Iteración 4. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia: Iteración 5. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia: Iteración 6. Los pesos y a la ganancia actual es.
  • 17. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 16 Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Iteración 7. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia: Iteración 8. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Iteración 9. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es distinto de O, se modifican los pesos y la ganancia:
  • 18. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 17 Iteración 10. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Iteración 11. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Iteración 12. Los pesos y a la ganancia actual es. Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón: Se calcula el error. Como es error es O, no se modifican los pesos ni y la ganancia: Como podemos observar la red ya ha aprendido. La ganancia y los pesos finales que clasifiquen correctamente los patrones son:
  • 19. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 18 Los interceptos con los ejes serán: En la grafica se muestra que la red ha clasificado correctamente los patrones de entrenamiento. 2.7.4. Limitaciones del Perceptrón. La red de tipo Perceptrón solo puede resolver problemas que sean linealmente separables, problemas cuyas salidas estén en dos categorías diferentes y que su espacio de entradas pueda estar dividido en estas dos regiones por medio de un hiperplano. Las funciones AND y OR son linealmente separables, pero no así la función XOR, porque no se puede separar por medio de una recta las dos categorías de salidas. Compuerta lógica XOR Como se puede ver no hay una recta que separe correctamente los patrones de una clase de la otra, el problema de la compuerta XOR no es linealmente separable, por lo tanto, una red de tipo Perceptrón no puede resolverlo1 . El proceso para determinar si un problema es linealmente separable, se realiza sin problemas de forma grafica si los patrones de entrada generan un espacio de dos dimensiones, sin embargo, esta visualización se dificulta si el espacio de patrones de entrada son tres dimensiones y es imposible observar con dimensiones de entrada superiores; en este caso se recurre a ecuaciones de desigualdad que permitan comprobar la separabilidad lineal de los patrones. 1Debido a esta limitación y su amplia publicación en el libro de Minsky y Paper el estudio de las RNA se estancó durante 20 años. P1 P2 T 0 0 0 0 1 1 1 0 1 1 1 0 P1(0,0 ) P2(1,0) P3(0,1 ) P4(1,1 ) p2 p1 Figura 2.7.3.1. Recta Solución para la Función AND P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 Figura 2.7.4.1. Compuerta XOR
  • 20. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 19 2.7.5. El Perceptrón multicapa. Estructura del Perceptrón multicapa es la siguiente: Esta red permite establecer regiones de decisión muchos más complejas que las de dos semiplanos, como lo hace le Perceptrón de un solo nivel. La solución para el problema de la compuerta XOR se puede realizar usando un Perceptrón de dos capas, con dos salidas que nos permitiría descomponer el espacio de decisión en tres categorías. Para elegir una zona de las otras de las tres se necesita otra capa con una neurona cuyas entradas serán las salidas de las otras. b1 Figura 2.7.5.1 Perceptrón Multicapa p3 . . pR n1 a1 p1 p2 W11 WSR Σ b2 n2 a2 Σ bs ns as Σ n1 a1 p1 p2 W11 Σ b2 n2 a2 ΣW22 b1 W21 W12 n3 a3 b3 Σ P1(0,0) P2(1,0) P3(0,1) P4(1,1) p2 p1 a = 0 a = 0 a = 1 Figura 2.7.5.2. Perceptrón para la Compuerta XOR
  • 21. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 20 Las capacidades del Perceptrón multicapa con dos y tres capas y con una única neurona en la capa de salida se muestra en la siguiente figura. Hilera J. – Martínez V. Rede Neuronales, Aplicaciones, Aplicaciones, Addison Wesley, 1995, pag. 115 Figura 2.7.5.2. Distintas formas de las regiones generadas por un Perceptrón multicapa
  • 22. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 21 CAPITULO III METODOLOGÍA DEL PROYECTO 3.1 METODOLOGÍA PARA EL DESARROLLO DE REDES NEURONALES. La metodología representa un conjunto ordenado de guías que permiten inferir la manera de hacer frente a una situación. Para esto se emplean los modelos, que son una abstracción del comportamiento de un sistema. Debido al proceso de investigación de Redes Neuronales Artificiales, se ha definido una manera particular de enfocar los proyectos de este tipo. Llamada; Forma general de resolución: Existen dos fases en toda aplicación de las Redes Neuronales. - Fase de aprendizaje o entrenamiento - Fase de pruebas En la fase de entrenamiento, se usa un conjunto de datos o patrones de entrenamiento para determinar los pesos que definen el modelo neuronal. Una vez entrenado este modelo, se usará la llamada fase de pruebas o funcionamiento directo, en la que se procesan los patrones de prueba que constituyen la entrada habitual de la red, analizándose de esta manera el funcionamiento definitivo de la red. 3.2. FASES DE LA METODOLOGÍA. Edgar Tito Espinoza Rodríguez Simulación de Redes Neuronales para el reconocimiento de caracteres aplicando retroprogramacion. FASE DE APRENDIZAJE O ENTRENAMIENTO DEFINICION DEL PROBLEMA RECOLECCION DE DATOS DISEÑO DE PRE Y POST PROCESAMIENTO DISEÑO DE LA RED ENTRENAMIENTO DE LA RED FASE DE PRUEBAS FIN
  • 23. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 22 CAPITULO IV INGENIERIA DEL PROYECTO 4.1 FASE DE APRENDIZAJE. 4.1.1. Definición del Problema. Tenemos un robot que cuenta con cuatro sensores de proximidad ubicados en la parte de adelante, a los costados y atrás que permanentemente están detectando si hay obstáculos que se encuentren a una distancia menor o mayor a la preestablecida. Con esta información se decide si dar marcha adelante o dar marcha atrás en cada uno de los motores que posee nuestro robot, que además, estos motores están ubicados en cada una de sus llantas traseras. De este modo nuestro robot sabrá qué hacer cuando se encuentre frente a un obstáculo. S1 S2 S3 S4 4.1.2. Recolección de Datos. Este robot posee cuatro sensores y dos motores, por los tanto, podrían darse 16 posibles combinaciones (24 = 16), para cada combinación los motores deberán dar marcha adelante o atrás. Cuando un sensor detecta un obstáculo en una distancia menor a la preestablecida este se activa en 1 y cuando no lo detecta se pone en -1, dependiendo de estas lecturas los motores podrían dar marcha adelante 1, o marcha atrás -1. Ejemplo, si las lecturas de los sensores son: S1 S2 S3 S4 M1 M2 1 -1 -1 -1 -1 1 Esto quiere decir que el sensor uno S1, ha detectado un obstáculo, entonces, el motor uno se apaga o da marcha atrás y el motor dos da marcha adelante logando un giro a la izquierda, de este modo se logra esquivar el obstáculo. A continuación se muestran dos mundos que servirán de entradas para nuestra Red Neuronal. El robot deberá recorrer y esquivar los obstáculos que se le presenten a lo largo de su recorrido hasta salir del mundo. S3 S4 S2 S1 Figura 4.1.1.1. Robot M1 M2 Figura 4.1.2.1. Lecturas de los sensores y las acciones de los motores, ante un obstáculo en frente del robot
  • 24. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 23 4.1.2.1. Mundo 1: La tabla que describe el comportamiento del robot para el mundo 1, se muestra en la siguiente tabla. No se registraron todas las posibles situaciones en que se encontraría nuestro robot, sino solo las más importantes, esto, para demostrar el poder de generalización que tiene una red neuronal ante situaciones nunca antes encontradas. Nota: La forma en que se determinaron los valores de la tabla se detallan en el anexo A (ver Anexo A). S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 Figura 4.1.2.2. Comportamiento del Robot (Mundo 1) Figura 4.1.2.1.1. Mundo 1
  • 25. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 24 4.1.2.2. Mundo 2: La tabla que describe el comportamiento del robot para el mundo 2, se muestra en la siguiente tabla. (Ver Anexo A). Nota: Se tomará esta tabla como referencia para el entrenamiento de la red. S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 Figura 4.1.2.2.1. Mundo 2 Figura 4.1.2.2.2. Comportamiento del Robot (Mundo 2)
  • 26. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 25 4.1.3. Diseño de Pre y Post Procesamiento. La red neuronal debe ser diseñada con una única ley de aprendizaje, un solo esquema de interconexión y una estructura que cubra los requerimientos del problema. . El tiempo de respuesta y aprendizaje de la red debe ser el mínimo requerido. 4.1.3.1. Justificación del Modelo. Este tipo de problemas generalmente es resuelto suministrándole al robot una base de datos (la Tabla del comportamiento del robot), en este caso se necesitaría almacenar en la memoria del robot las respuestas para ambos motores ante las 16 posibles combinaciones cuando se lean los sensores. Este método tiene serios inconvenientes ya que cuando el número de variables de entrada y el número de salidas es mucho mayor, la cantidad de datos para especificar cada posible situación crece indefinidamente (2n ), debido a esto se necesitarán dispositivos con gran capacidad de almacenamiento. En contraste una red neuronal puede entrenarse con un número representativo de patrones y aprender el comportamiento del sistema utilizando dispositivos de menor capacidad de almacenamiento y costo. Una red neuronal tipo Perceptrón puede ser entrenada con cualquier dimensión de patrones con datos binarios, por esta razón se eligió este tipo de Red Neuronal para resolver nuestro problema. Para que el problema pueda ser resuelto por una red del tipo Perceptrón se debe comprobar que los patrones de entrenamiento son linealmente separables. En este caso cada patrón de cuatro dimensiones generará dos desigualdades, una para cada salida, para que sean linealmente separables estas desigualdades no deben contradecirse, sino, se deberá buscar otro tipo de solución. La salida de la red está dada por la siguiente ecuación. Aplicando esta ecuación a cada patrón de entrenamiento del Mapa 2 (Figura 4.1.2.2.2) se tiene: Figura 4.1.3.1.1. Desigualdades que garantizan que el problema es linealmente separable
  • 27. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 26 Las ecuaciones satisfacen plenamente las desigualdades, de forma que puede ser resuelta por una red del tipo Perceptrón. Cabe mencionar que solo se verifica la separabilidad lineal para el Mundo 2, esto con el fin de mostrar el poder de generalización de una Red Neuronal tipo Perceptrón ante situaciones nunca antes vistas. 4.1.3.2. Estructura Lógica. Número de entradas. Se cuenta con cuatro sensores de proximidad, por lo tanto la red neuronal tendrá cuatro entradas (S1, S2, S3 y S4). Número de salidas. Para cada patrón de entrada se tiene dos salidas que corresponden a los dos motores de nuestro robot (M1, M2). Numero de capas. La red neuronal será diseñada con una capa de entrada, una capa oculta y una capa de salida. Número de neuronas. Se creará una red de cuatro entradas con una neurona tipo Perceptrón para cada salida, teniendo así una salida bidimensional. O sea tendremos dos neuronas. 4.1.3.3. Funciones y Elementos Matemáticos. Función de Transferencia. Debido a la naturaleza bipolar de la salida y de la entrada de la red se consideró que la función de transferencia apropiada es la función Escalón (hardlims). Figura 4.1.3.3.1. Función de transferencia Escalón (hardlims) 0-b/W -1 +1 S M 0 -1 +1 n M
  • 28. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 27 4.1.3.4. Grafica del Modelo. Un diagrama gráfico del diseño de nuestra red neuronal se presenta a continuación. 4.1.4. Diseño de la Red. En este punto se muestra la regla y el algoritmo de aprendizaje que va a utilizar nuestra red, además, de la implementación del simulador para el entrenamiento de la Red Neuronal Artificial. 4.1.4.1. Algoritmo de Entrenamiento. El Perceptrón utiliza un aprendizaje Supervisado, es decir, Se conoce la respuesta correcta antes del entrenamiento, y el sistema determina los pesos de tal forma que dado un valor de entrada, pueda producir el valor de salida deseado (ver punto 2.7.2 Regla de Aprendizaje) El algoritmo de entrenamiento que utiliza nuestra red neuronal tipo Perceptrón podemos verlo en… (Ver algoritmo Anexo B). 4.1.4.2. Implementación del Simulador. El simulador fue implementado, siguiendo el algoritmo de entrenamiento supervisado, con el lenguaje de de programación C# 2.0 bajo la plataforma .NET (ver código Anexo C). Básicamente consta de una Clase llamada PercepRobot que tiene los siguientes eventos: public void robot(int[,] x): Llenamos la tabla con el mapa 2 public int fscalon(double n): La función de transferencia public double WP_b(int[,] P, double[,] W, double[] b, int fp, int fw, int fb): La salida neta de la red (n). n1 M1 S1 S2 S3 S4 W11 n2 M2 b2 Σ Σ b1 W24 Motor 1 Motor 2 Figura 4.1.3.4.1. Red Neuronal Tipo Perceptrón para el robot
  • 29. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 28 public void newPesos(int[,] P, double[,] W, int error, int fp, int fw): La modificación de los pesos. También cuenta con una clase principal llamada frmRobot donde el evento que nos interesa es: btnPasoPaso_Click() que realiza en entrenamiento de la red paso a paso (ver código Anexo C). A continuación mostramos la interfaz del simulador. Figura 4.1.4.2.1. Interfaz de simulador para el entrenamiento de la Red Neuronal (CD adjunto)
  • 30. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 29 4.1.5. Entrenamiento de la Red. Para el entrenamiento de nuestra Red Neuronal, utilizamos el simulador desarrollado en el punto anterior. (Simulador CD adjunto). Se le presenta los 12 patrones correspondiente al Mundo 2 (Figura 4.1.2.2.2), los cuales dependiendo de las lecturas de los sensores se le dirá al robot que hacer específicamente y luego se probará la red con los casos restantes para comprobar la capacidad de generalización de una Red Neuronal ante un patrón nunca antes visto. (Se probará la generalización para el Mundo 1). Los estados de las lecturas de los sensores y de operación de los motores se designaron con 1 y -1, puesto que la convergencia del proceso de entrenamiento es más rápido, que usando 1 y 0. Entonces, para el entrenamiento: Como tenemos dos neuronas con cuatro entradas, tendremos la matriz Wij de 2x4 que representa los pesos de la red, y el vector bi de 1x2 que representa las ganancias de cada neurona. Siguiendo el proceso del algoritmo de entrenamiento de una Red Neuronal del tipo Perceptrón (Anexo B), realizamos el entrenamiento, utilizando el Simulador. Entrenamiento. Se asignan valores aleatorios a los pesos y a la ganancia. Wij: bi S1 S2 S3 S4 M1 0.967 0.365 0.445 -0.796 M2 -0.143 -0.601 0.155 -0.179 Se le presenta el primer patrón de entrada y su salida esperada: Se calcula la salida neta de la red: Se aplica la función de transferencia escalón (harlims): Se calcula el error: S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 b M1 1 M2 1 Figura 4.1.5.1. Tabla que representa el comportamiento del robot para el Mundo 1, a la izquierda en el simulador. Figura 4.1.5.2. Pesos y Ganancias Iníciales
  • 31. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 30 Luego del proceso de entrenamiento, los pesos finales de la red que satisfacen todos los patrones de entrada y salida son:
  • 32. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 31 Wij: bi S1 S2 S3 S4 M1 -3.03 4.36 -3.55 -0.79 M2 -6.14 -2.60 2.15 -2.17 La red fue simulada para la totalidad de combinaciones posibles de entrada para comprobar que no exista error en el aprendizaje de los patrones de entrenamiento y para observar su capacidad de generalización en los casos restantes. La respuesta de la red a todos los patrones de entrenamiento fue exitosa. La red fue entrenada para las posibles situaciones restantes obteniéndose los siguientes resultados. Las combinaciones que no hacían parte del set de entrenamiento, al ser presentadas a la Red Neuronal, fueron aproximadas al patrón con menor distancia euclidiana. 4.2. FASE DE PRUEBAS. En este punto se realiza la implementación la Red Neuronal ya entrenada en el robot “SALI”, creado a nivel software. 4.2.1. Implementación de la Red Neuronal Artificial en un Robot. Para este fin se utilizó el lenguaje de programación C/C++ bajo Cbuilder 5.0 y el componente grafico TOpenGL. El programa consta básicamente de Tres funciones: void TfrmPrincipal::leer_sensor() { //sensor de adelante S1 Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1; //sensor izquierdo S2 Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1; //sensor derecho S3 Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1; //sensor de atraz S4 Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1; } Esta función lee los sensores a cada paso que da el robot. Si a una distancia determinada y pre establecida existe un obstáculo el sensor marca 1, en caso contrario el sensor marca -1. b M1 9 M2 3 S1 S2 S3 S4 M1 M2 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 Figura 4.1.5.3. Pesos y Ganancias Finales: Red Neuronal Entrenada Figura 4.1.5.3. Simulación de la red para las nuevas combinaciones
  • 33. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 32 void TfrmPrincipal::perceptron() { float wp = 0; float PesoNeto; //Para el motor_1 wp=W[0][0]*Sensor[0]+W[0][1]*Sensor[1]+W[0][2]*Sensor[2]+W[0][3]*Sensor[3]; PesoNeto = wp + b[0]; //aplicando la funcion escalon M1 =(PesoNeto >= 0)?1:-1; //Para el Motor_ 2 wp = 0; wp=W[1][0]*Sensor[0]+W[1][1]*Sensor[1]+W[1][2]*Sensor[2]+W[1][3]*Sensor[3]; PesoNeto = wp + b[1]; //aplicando la funcion escalon M2 = (PesoNeto >= 0)?1:-1; } Esta función es la que implementa la Red Neuronal Artificial del tipo Perceptrón ya entrenada en el robot, indicándole a cada instante la acción debe tomar cada uno de sus motores. Recordemos que si el motor da marcha hacia adelante se pone en 1, sino se pone en -1. void TfrmPrincipal::girar() { if(M1 == -1 && M2 == -1) { switch(S1) { case 0:zz++;break; case 1:xx--;break; case 2:xx++;break; case 3:zz--;break; } } else { if(M1 == 1 && M2 == -1) //giro a la derecha { //rotando los sensores junto con el robot e++;if(e>3)e = 0; f++;if(f>3)f = 0; g++;if(g>3)g = 0; h++;if(h>3)h = 0; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } else { if(M1 == -1 && M2 == 1) //giro a la izquierda { //rotando los sensores junto con el robot e--;if(e<0)e = 3; f--;if(f<0)f = 3; g--;if(g<0)g = 3; h--;if(h<0)h = 3; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } if(M1 == 1 && M2 == 1) { switch(S1) { case 0:zz++;break; case 1:xx--;;break; case 2:xx++;break; case 3:zz--;break; } } } } }
  • 34. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 33 Dependiendo el estado del motor, el robot deberá ir adelante o atrás, girar a la izquierda o a la derecha, etc. Esta función es la que se encarga de todos estos giros. La interfaz implementada nos permite elegir entre que mapas o mundos queremos recorrer, recordemos que se definieron dos tipos de mundos, además nos permite verificar el estado de los sensores y la acción de los motores. Figura 4.2.1.1 Interfaz del robot SALI recorriendo el mundo 2 (CD adjunto) Figura 4.2.1.2 Interfaz del robot SALI recorriendo el mundo 1 (CD adjunto)
  • 35. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 34 Se pudo observar que el robot recorrió satisfactoriamente ambos mundos, considerando, que solo se lo entrenó para el mundo 2. Para realizar el recorrido del mundo 1 la RNA tuvo que generalizar su comportamiento, demostrando así el poder de generalización de una Red Neuronal Artificial ante situaciones nunca antes vista. 4.2.2. Análisis del Tiempo de Ejecución. En este punto realizamos el análisis del tiempo de ejecución de las funciones que intervienen en la implementación de la Red Neuronal Artificial en el Robot, utilizando el método de análisis por conteo de instrucciones para el peor de los casos. Este análisis lo realizamos con el fin de comparar el método de las Redes Neuronales con otros métodos tradicionales. void TfrmPrincipal::leer_sensor() { //sensor de adelante S1 Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1; //sensor izquierdo S2 Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1; //sensor derecho S3 Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1; //sensor de atraz S4 Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1; } void TfrmPrincipal::perceptron() { float wp; float PesoNeto; //Para el motor_1 wp = 0; wp=W[0][0]*Sensor[0]+W[0][1]*Sensor[1]+W[0][2]*Sensor[2]+W[0][3]*Sensor[3]; PesoNeto = wp + b[0]; //aplicando la funcion escalon M1 =(PesoNeto >= 0)?1:-1; //Para el Motor_ 2 wp = 0; wp=W[1][0]*Sensor[0]+W[1][1]*Sensor[1]+W[1][2]*Sensor[2]+W[1][3]*Sensor[3]; PesoNeto = wp + b[1]; //aplicando la funcion escalon M2 = (PesoNeto >= 0)?1:-1; } void TfrmPrincipal::girar() { if(M1 == -1 && M2 == -1) { switch(S1) { case 0:zz++;break; case 1:xx--;break; case 2:xx++;break; case 3:zz--;break; } } 5 5 5 5 Operaciones elementales 1 20 3 2 1 20 3 2 Operaciones elementales 3 1 4 4 4 4 Operaciones elementales
  • 36. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 35 else { if(M1 == 1 && M2 == -1) //giro a la derecha { //rotando los sensores junto con el robot e++;if(e>3)e = 0; f++;if(f>3)f = 0; g++;if(g>3)g = 0; h++;if(h>3)h = 0; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } else { if(M1 == -1 && M2 == 1) //giro a la izquierda { //rotando los sensores junto con el robot e--;if(e<0)e = 3; f--;if(f<0)f = 3; g--;if(g<0)g = 3; h--;if(h<0)h = 3; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } else { switch(S1) { case 0:zz++;break; case 1:xx--;break; case 2:xx++;break; case 3:zz--;break; } } } } } La función que llama a las anteriores funciones es la siguiente: void __fastcall TfrmPrincipal::Timer1Timer(TObject *Sender) { leer_sensor(); perceptron(); girar(); } 3 4 4 4 4 8 3 4 4 4 4 8 1 4 4 4 4 T1(n) T2(n) T3(n) Figura 4.2.2.1 grafica del comportamiento del tiempo de ejecución de la RNA implementado en el Robot
  • 37. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 36 4.3. COMPARACIÓN CON OTROS MÉTODOS. Ya hemos visto el comportamiento del robot y el tiempo de ejecución que requiere este para detectar obstáculos utilizando una RNA del tipo Perceptrón, no nos serviría de mucho si no mostramos la eficiencia de este método frente a otros propuestos. En este punto vamos a implementar el comportamiento del robot con un método tradicional. 4.3.1. Implementación con un método tradicional. Este tipo de problemas generalmente es resulto suministrándole al robot una base de datos (la Tabla del comportamiento del robot), en este caso se necesitaría almacenar en la memoria del robot las respuestas para ambos motores ante las 16 posibles combinaciones cuando se lean los sensores. Para implementar con este método, necesariamente necesitamos la tabla del comportamiento del robot almacenada en su memoria. int MatrizComp[16][6] = {{-1, -1, -1, -1, 1, 1}, { 1, -1, -1, -1, 1, -1}, {-1, 1, 1, -1, 1, 1}, {-1, 1, -1, -1, 1, 1}, { 1, 1, -1, -1, 1, -1}, {-1, 1, -1, 1, 1, 1}, { 1, -1, 1, -1,-1, 1}, {-1, -1, 1, 1, 1, 1}, { 1, 1, 1, -1, 1, -1}, {-1, -1, 1, -1, 1, 1}, { 1, 1, -1, 1, 1, -1}, {-1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, -1}, {-1, -1, -1, 1, 1, 1}, { 1, -1, -1, 1, 1, -1}, { 1, -1, 1, 1,-1, -1}}; Al igual que le método de la RNA, necesitamos de 3 funciones principales. void TfrmPrincipal::leer_sensor() { //sensor de adelante S1 Sensor[S1] = (MapaAct[zz+2][xx] == 1)?1:-1; //sensor izquierdo S2 Sensor[S2] = (MapaAct[zz][xx+2] == 1)?1:-1; //sensor derecho S3 Sensor[S3] = (MapaAct[zz][xx-2] == 1)?1:-1; //sensor de atraz S4 Sensor[S4] = (MapaAct[zz-2][xx] == 1)?1:-1; } Esta función lee los sensores a cada paso que da el robot. Si a una distancia determinada existe un obstáculo el sensor marca 1, sino marca -1. void TfrmPrincipal::busqueda() { //realizando la busqueda en la matriz de comportamiento del robot for(int i = 0; i<n; i++) { if(Sensor[0] == MatrizComp[i][0] && Sensor[1] == MatrizComp[i][1] && Sensor[2] == MatrizComp[i][2]&& Sensor[3] == MatrizComp[i][3]) { M1 = MatrizComp[i][4]; M2 = MatrizComp[i][5]; } } }
  • 38. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 37 Esta función es la que hace la búsqueda en la base de datos (tabla de comportamiento) e indicarle a cada instante la acción debe tomar cada uno de sus motores. Recordemos que si el motor da marcha hacia adelante se pone en 1, sino se pone en -1. void TfrmPrincipal::girar() { if(M1 == -1 && M2 == -1) { switch(S1) { case 0:zz++;break; case 1:xx--;break; case 2:xx++;break; case 3:zz--;break; } } else { if(M1 == 1 && M2 == -1) //giro a la derecha { //rotando los sensores junto con el robot e++;if(e>3)e = 0; f++;if(f>3)f = 0; g++;if(g>3)g = 0; h++;if(h>3)h = 0; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } else { if(M1 == -1 && M2 == 1) //giro a la izquierda { //rotando los sensores junto con el robot e--;if(e<0)e = 3; f--;if(f<0)f = 3; g--;if(g<0)g = 3; h--;if(h<0)h = 3; S1 = MS[e];S2 = MS[f];S3 = MS[g];S4 = MS[h]; } if(M1 == 1 && M2 == 1) { switch(S1) { case 0:zz++;break; case 1:xx--;;break; case 2:xx++;break; case 3:zz--;break; } } } } } Dependiendo el estado del motor, el robot deberá ir adelante o atrás, girar a la izquierda o a la derecha, etc. Esta función es la que se encarga de todos estos giros. (ver CD adjunto) Este método tiene serios inconvenientes ya que cuando el número de variables de entrada y el número de salidas es mucho mayor, la cantidad de datos para especificar cada posible situación crece indefinidamente (2n ), debido a esto se necesitarán dispositivos con gran capacidad de almacenamiento. 4.3.2. Análisis del Tiempo de Ejecución. Como podemos notar, la única diferencia de este método con el da la RNA, es la función de búsqueda. Realizaremos el análisis de Tiempo de Ejecución para esta función, nuevamente, con conteo de instrucciones.
  • 39. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 38 void TfrmPrincipal::busqueda() { //realizando la busqueda en la matriz de comportamiento del robot for(int i = 0; i<n; i++) { if(Sensor[0] == MatrizComp[i][0] && Sensor[1] == MatrizComp[i][1] && Sensor[2] == MatrizComp[i][2]&& Sensor[3] == MatrizComp[i][3]) { M1 = MatrizComp[i][4]; M2 = MatrizComp[i][5]; } } } La función que llama a las anteriores funciones es la siguiente: void __fastcall TfrmPrincipal::Timer1Timer(TObject *Sender) { leer_sensor(); busqueda(); girar(); } 4.3.4. Comparación del método de las RNA con el método tradicional. Como podemos notar; ambos métodos realizan el mismo trabajo de forma satisfactoria, sin embargo, uno de ellos es más eficiente que el otro en tiempo de ejecución y espacio de memoria utilizado. Esta diferencia lo podemos demostrar con el análisis de tiempo de ejecución para cada una de las implementaciones de los métodos. 3 18 3 3 Operaciones elementales T1(n) T4(n) T3(n) Figura 4.3.2.1 grafica del comportamiento del tiempo de ejecución del método tradicional implementado en el Robot Tiempo de Ejecución utilizando RNA Tiempo de Ejecución utilizando Matriz de Búsqueda
  • 40. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 39 Para comparar los tiempos de ejecución de ambos métodos recurrimos a la notación asintótica de la algoritmia, utilizando la regla de los límites. Entonces: De esta forma queda demostrado que el Tiempo de Ejecución del método de las RNA es más eficiente que la del método tradicional de la matriz de búsqueda. Podemos verlo también de forma gráfica. Tmt(n) crece a medida que lo hace n, lo que lo hace menos eficiente porque a media que se vayan aumentando el número de sensores y motores, el tiempo de ejecución también aumentará, no sucede lo mismo con Trna(n), ya que esta siempre se mantiene constante. Además para el método tradicional de búsqueda tenemos que almacenar la matriz de comportamiento, esto conlleva a que tengamos que utilizar dispositivos con gran capacidad de almacenamiento. En contraste, una red neuronal puede ser entrenada con un número representativo de patrones y aprender el comportamiento del sistema utilizando dispositivos de menor capacidad de almacenamiento y costo. Tmt(n) Trna(n) Figura 4.3.4.1 grafica del tiempo de ejecución para ambos métodos
  • 41. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 40 CAPITULO V CONCLUSIONES 5.1. CONCLUSIONES. El presente proyecto realizado ha logrado alcanzar los objetivos propuestos, ya que, la construcción del modelo de simulación ha logrado entrenar la Red Neuronal, tal que este entrenamiento ha conseguido proveer información a nuestro robot para que sea capaz de detectar obstáculos, tal como se propuso en el objetivo general. Una Red Neuronal del tipo Perceptrón de una sola capa es una buena solución a problemas que sean linealmente separables, si no son linealmente separables se tiene la alternativa de usar una red del tipo Perceptrón multicapa capaz de solucionar el problema de la separabilidad lineal caso contrario se debería cambiar definitivamente de red. La capacidad de generalización de una Red Neuronal Artificial, es muy importante ya que nos permite generalizar el comportamiento del sistema, y, de esta forma ahorrar tiempo de computo en el entrenamiento de la red, ya que solo lo entrenamos con un número representativo de patrones. En el caso de nuestro robot se pudo constatar que la red fue entrenada para el mundo 2 y generalizó su comportamiento para el recorrer el mundo 1. Las Redes Neuronales Artificiales sin duda son totalmente eficientes, ya que su tiempo de ejecución constante le hace altamente paralelo otorgándole al robot un grado de inteligencia impresionante (como la del cerebro de un ser humano), en comparación al método tradicional de búsqueda cuyo tiempo de ejecución va creciendo indefinidamente.
  • 42. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 41 BIBLIOGRAFIA [1]. Redes Neuronales, aplicaciones; Hilera J. Martinez V., Addison Wesley, 1995 [2]. Tutorial sobre Redes Neuronales Artificiales aplicadas en ingeniería; Acosta Buitrago María Isabel, Zuluaga Muñoz Camilo Alfonso, Universidad Tecnológica de Pereira, 2000 [3]. Universidad Tecnológica de Pereira http://uhm.utp.edu.co/neuronales [4] Modelo de Simulación de Redes Neuronales para el reconocimiento de caracteres aplicando Retroprogramacion; Espinoza Rodríguez Edgar Tito, TSIS 35, 1998 [4]. Graficas en Computadora por OpenGL; Baker Pauline, 2006 [5]. Lenguaje de Programación C/C++ y C.Net; Cherre A. Rafael Juan, Rafael Francia Dario, 2001 [6] Fundamentos de la Algoritmia; Brassard G, Brattley, 1997 [7] Anatomía Humana; Testud L. Laarjet, MxGraw Hill, España, 1974
  • 43. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 42 ANEXOS
  • 44. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 43 ANEXO A Recolección de Datos para el Mundo 1 y Mundo 2 en forma detallada. Mundo 1: Patrón 1. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 -1 -1 Patrón 2. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 1 -1 -1 -1 -1 1 Patrón 3. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 -1 1 -1 1 1 Patrón 4. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 1 -1 1 -1 -1 1 Patrón 5. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 -1 1 1 1 1 Patrón 6. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 1 1 -1 -1 1 -1
  • 45. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 44 Patrón 7. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 1 -1 1 1 1 Patrón 8. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 1 -1 -1 1 1 Patrón 9. S1 S2 S3 S4 S1 S2 S3 S4 M1 M2 -1 1 1 -1 1 1 Mundo 2: Se siguió la misma lógica que el mundo 1 S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 S1 S2 S3 S4 M1 M2 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1
  • 46. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 45 ANEXO B Algoritmo de Entrenamiento de la red tipo Perceptrón: Adecuado a nuestro proyecto 1. Se asigna valores aleatorios a los pesos y a la ganancia . 2. Se le presenta a la red el primer patrón de entrada aún no considerado, junto con el valor esperado de salida. 3. Se calcula la salida neta de la red. 4. Se aplica la función de transferencia a la salida neta n. el cual puede ser escalón (hardlim) o hardlims. 5. Se calcula el error correspondiente, que va a ser la diferencia entre la salida proporcionada por la red M y la salida esperada t. 6. Si el error es distinto de O, entonces debemos modificar los pesos y el valor de la ganancia. Y 7. Se vuelve al paso 2, hasta que los errores para cada patrón de entrada sean iguales a O. Nota: El entrenamiento de las neuronas se lo realiza de forma individual, una independientemente de la otra, es decir cada neurona tendrá que seguir el algoritmo de forma separada.
  • 47. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 46 ANEXO C Código Fuente Clase Perceptrón: Realizado con C# 2.0. using System; using System.Collections.Generic; using System.Text; namespace RNA_2 { class PercepRobot { const int NSEN = 4; public void robot(int[,] x) { x[0, 0] = -1; x[0, 1] = -1; x[0, 2] = -1; x[0, 3] = -1; x[0, 4] = 1; x[0, 5] = 1; x[1, 0] = 1; x[1, 1] = -1; x[1, 2] = -1; x[1, 3] = -1; x[1, 4] = 1; x[1, 5] = -1; x[2, 0] = -1; x[2, 1] = 1; x[2, 2] = 1; x[2, 3] = -1; x[2, 4] = 1; x[2, 5] = 1; x[3, 0] = -1; x[3, 1] = 1; x[3, 2] = -1; x[3, 3] = -1; x[3, 4] = 1; x[3, 5] = 1; x[4, 0] = 1; x[4, 1] = 1; x[4, 2] = -1; x[4, 3] = -1; x[4, 4] = 1; x[4, 5] = -1; x[5, 0] = -1; x[5, 1] = 1; x[5, 2] = -1; x[5, 3] = 1; x[5, 4] = 1; x[5, 5] = 1; x[6, 0] = 1; x[6, 1] = -1; x[6, 2] = 1; x[6, 3] = -1; x[6, 4] = -1; x[6, 5] = 1; x[7, 0] = -1; x[7, 1] = -1; x[7, 2] = 1; x[7, 3] = 1; x[7, 4] = 1; x[7, 5] = 1; x[8, 0] = 1; x[8, 1] = 1; x[8, 2] = 1; x[8, 3] = -1; x[8, 4] = 1; x[8, 5] = -1; x[9, 0] = -1; x[9, 1] = -1; x[9, 2] = 1; x[9, 3] = -1; x[9, 4] = 1; x[9, 5] = 1; x[10, 0] = 1; x[10, 1] = 1; x[10, 2] =-1; x[10, 3] = 1; x[10, 4] = 1; x[10, 5] =-1; x[11, 0] =-1; x[11, 1] = 1; x[11, 2] = 1; x[11, 3] = 1; x[11, 4] = 1; x[11, 5] = 1; } public int fscalon(double n) { int a; if (n >= 0) a = 1; else a = -1; return a; } public double WP_b(int[,] P, double[,] W, double[] b, int fp, int fw, int fb) { double wp = 0; for (int i = 0; i < NSEN; i++) { wp = wp + (W[fw, i] * P[fp, i]); } return wp + b[fb]; } public void newPesos(int[,] P, double[,] W, int error, int fp, int fw) { for (int i = 0; i < NSEN; i++) W[fw, i] = W[fw, i] + (error * P[fp, i]); } } }
  • 48. INF 3390 ‘A’ SEMINARIO DE IA Y COMPILADORES 47 //evento que realiza el entrenamiento de la red private void btnPasoPaso_Click(object sender, EventArgs e) { //entrenamiento de la red //------------------------------------------------------------------- //para la primera neurona; a1 = p.WP_b(M, W, B, pat, 0, 0); y1 = p.fscalon(a1); e1 = M[pat, 4] - y1; //error para la salida deseada del motor 1 if (e1 != 0) { estado1 = 0; //controlamos el aprendizaje de la red p.newPesos(M, W, e1, pat, 0); //nuevos pesos B[0] = B[0] + e1; //actualizamos la ganancia 1 } else { estado1++; if (estado1 >= NPAT) //controlando el aprendizaje del la red estado1++; } //para la segunda neurona; a2 = p.WP_b(M, W, B, pat, 1, 1); y2 = p.fscalon(a2); e2 = M[pat, 5] - y2; //error para la salida del motor 2 if (e2 != 0) { estado2 = 0; p.newPesos(M, W, e2, pat, 1); B[1] = B[1] + e2; //actualizamos la ganancia 2 } else { estado2++; if (estado2 >= NPAT) estado2++; } //para verificar si la red ya ha aprendido if (estado1 >= 16 && estado2 >= 16) MessageBox.Show("LA RED YA HA APRENDIDO"); //-------------------------------------------------------------------- //asignando valores a la interfaz //--------------------------------------------------------------------- a1_ent.Text = a1.ToString(); a2_ent.Text = a2.ToString(); y1_ent.Text = y1.ToString(); y2_ent.Text = y2.ToString(); Error_ent_1.Text = e1.ToString(); Error_ent_2.Text = e2.ToString(); Pat1.Text = M[pat, 0].ToString(); Pat2.Text = M[pat, 1].ToString(); Pat3.Text = M[pat, 2].ToString(); Pat4.Text = M[pat, 3].ToString(); b1_ent.Text = B[0].ToString(); b2_ent.Text = B[1].ToString(); w11_ent.Text = W[0, 0].ToString(); w12_ent.Text = W[0, 1].ToString(); w13_ent.Text = W[0, 2].ToString(); w14_ent.Text = W[0, 3].ToString(); w21_ent.Text = W[1, 0].ToString(); w22_ent.Text = W[1, 1].ToString(); w23_ent.Text = W[1, 2].ToString(); w24_ent.Text = W[1, 3].ToString(); //--------------------------------------------------------------------- pat = pat + 1; if (pat >= NPAT) pat = 0; }