Documente Academic
Documente Profesional
Documente Cultură
Neurocomputación,
Programación Neuronal y otras
hierbas
Por David Díaz (editor)
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
¿Qué es la IA?
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
La Inteligencia Artificial tiene dos aspectos, uno como ciencia cognitiva y otro
como tecnología informática, y sus características esenciales son:
Nacimiento de la IA
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
6
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
El periodo que abarca 1956 a 1968 se caracterizó, en este campo, por los
intentos dirigidos a la búsqueda y modelización de determinados principios
generales de la inteligencia (aplicaciones como la traducción automática, la
percepción visual, etc.). A finales de la década de los años 60, los trabajos se
encaminaron hacia el desarrollo de sistemas inteligentes de aplicación en la
robótica (visión artificial, manipulación de objetos, navegación automática,
etc.) en los que era necesario incorporar una gran cantidad de conocimientos
específicos referidos a los problemas que se pretendía resolver con dichas
técnicas. Este proceso marcó el inicio del estudio de los llamados sistemas
expertos.
7
/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Aplicaciones de la IA:
Tareas formales:
o Juegos: damas, ajedrez, go, ...
o Matemáticas: cálculo simbólico, demostración de teoremas.
o Computación: verificación de programas, aprendizaje automático.
Tareas de expertos:
o Ingeniería: diseño, detección de fallos, planificación de
manufacturación.
o Análisis científico.
o Diagnóstico y tratamiento médico.
o Análisis financiero.
10
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Robótica
11
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
El nombre de robot procede del término checo robota (trabajador, siervo) con
el que el escritor Karel Capek designó, primero en su novela y tres años más
tarde en su obra teatral RUR (Los robots universales de Rossum, 1920) a los
androides, producidos en grandes cantidades y vendidos como mano de obra
de bajo costo, que el sabio Rossum crea para liberar a la humanidad del
trabajo. En la actualidad, el término se aplica a todos los ingenios mecánicos,
accionados y controlados electrónicamente, capaces de llevar a cabo
secuencias simples que permiten realizar operaciones tales como carga y
descarga, accionamiento de máquinas herramienta, operaciones de
ensamblaje y soldadura, etc. Hoy en día el desarrollo en este campo se dirige
hacia la consecución de máquinas que sepan interactuar con el medio en el
cual desarrollan su actividad (reconocimientos de formas, toma de decisiones,
etc.).
13
/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
La IA en la robótica:
15
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Sistemas Expertos
16
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
17
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Base de conocimientos
Base de hechos
Motor de inferencia
Niveles de conocimiento
23
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Neurocomputación
24
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Por todos estos motivos, las redes neuronales artificiales tratan de imitar los
principios de organización, que se cree rigen el cerebro humano. La unidad
funcional de estas redes es, por tanto, la neurona artificial. Una neurona
artificial no es otra cosa que un procesador muy simple capaz de realizar
instrucciones muy primitivas, pero a gran velocidad, y que guarda la
información aprendida en las conexiones con otras neuronas..
Pero antes de profundizar en el estudio de la neurona artificial, es conveniente
echar una mirada a la neurona biológica y lo que se puede aprender de ella.
La neurona biológica
Nuestro sistema nervioso y, en especial, nuestro cerebro, está compuesto por
un conjunto de células nerviosas, también llamadas neuronas.
27
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
29
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Figura 2. A) Respuesta de una neurona biológica. B) Distintas funciones de respuesta de una neurona artificial.
30
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
mensajes, que oscila entre unos pocos y algunos cientos de hertzios. Por ello,
el tiempo de respuesta se ve limitado al orden de milisegundos, mucho más
lenta que un circuito electrónico.
31
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
32
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
[1]
33
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
numerosas analogías con las neuronas biológicas: los cables o conexiones son
análogos a dendritas y axones, los pesos de ponderación de las conexiones
equivalen a las sinapsis y el umbral de activación representa la actividad del
soma.
[2]
ella la del producto escalar de dos vectores. Por tanto, basta considerar el
conjunto de n entradas de una neurona como un vector X de dimensión n+1
(recuérdese que se arrastra la entrada x0=1), y el conjunto de pesos de la
neurona como otro vector W de la misma dimensión, para que la expresión de
la función de proceso de la neurona de McCulloch y Pitts quede reducida a
[3]
35
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
La más empleada de todas es esta última, que Listado 1. Neurona Artificial "tonta"
corresponde a la expresión: g(x)=1/[1+exp(-bx)], donde b class neurona_t {
es el parámetro que define la pendiente de la curva. private:
El Listado 1 define en C++ todo el código necesario para vector_t __pesos;
una neurona artificial como la expuesta. Obsérvese que float __umbral_activacion;
las expresiones son tan simples porque tanto los pesos public:
como las entradas se expresan en forma de vector. En el neurona_t(void):
ejemplo, con fines didácticos, no se ha empleado el __pesos(NUM_ENTRADAS) {
"truco" de la entrada número 0 y se indica explícitamente __umbral_activacion=0:
el valor de umbral. Como ilustración de la simplicidad del }
concepto, el Listado 1 es adecuado. Sin embargo, la int salida(vector_t entrada {
neurona artificial del mismo es "tonta", ya que no es return(__pesos * entrada >
capaz de aprender. Su comportamiento dependerá de la __umbral_activacion) ? 1 : 0;
forma en que se inicialice el vector de pesos. Por tanto, }
para que sea de utilidad, será necesario dotarla de la }; //class neurona
capacidad de aprender y generalizar
36
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Aprendiendo y generalizando
¿Cómo se enseña a un niño a reconocer lo que es un osito? Se le enseñan
ejemplos de osito y se le dice "esto es un osito". Cuando el niño ve un "patito" y
dice "osito", se le corrige y se le dice "esto es un osito". Durante esta etapa del
aprendizaje del niño, se puede esperar que si se vuelven a presentar algunos
de los ejemplos que ya han aparecido y se le pregunta "¿es esto un osito?", el
niño responderá correctamente. Pero no sólo eso. A partir de cierto momento,
si se le enseña al niño nuevos objetos, que no haya visto jamás antes, se podrá
esperar que sea también capaz de identificar cuáles de ellos son ositos y
cuáles no. Por supuesto, para que el aprendizaje sea efectivo, será necesario
que el niño haya tenido un número suficiente de ejemplos y que estos hayan
sido suficientemente representativos. No basta con enseñarle sólo un osito, ni
un conjunto de ositos "picassianos". Por otra parte siempre habrá casos en los
que no estará muy claro si determinado peluche es un osito o cualquier otro
animal y es que, como diría Platón, intuimos la idea (el eidos) de "el osito" a
partir de realizaciones concretas de osito, que no son sino la sombra de éste en
la caverna.
37
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
38
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
class neurona_t {
private: (__tasa_aprendizaje * entrada);
vector_t __pesos; __umbral_activacion +=
float __umbral_activacion; __tasa_aprendizaje;
float __tasa_aprendizaje; }else{
public: __pesos=__pesos +
neurona_t(void): __pesos(NUM_ENTRADAS) (__tasa_aprendizaje * entrada);
{ __umbral_activacion -=
__umbral_activacion=0; __tasa_aprendizaje;
__tasa_aprendizaje=0.1; }
} return 1;
int salida(vector_t entrada) { }else{
return (__pesos * entrada > return 0;
__umbral_activacion) ? 1: 0; }
} }
int entrenamiento_supervisado(vector_t float getUmbralActivacion (void) const {
entrada, int salidaOK) { return __umbral_activacion; }
int resultado=salida(entrada); float getTasaAprendizaje (void) const {
if (resultado != salidaOK) { return __tasa_aprendizaje; }
if (resultado > salidaOK) { vector_t getPesos (void) const {
__pesos=__pesos - return __pesos; }
}; //class neurona_t
39
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
El perceptrón de Rossenblatt
El primero al que se le ocurrió una aplicación práctica para la neurona de
McCulloch y Pitts, y aplicando las ideas de aprendizaje de Hebb, fue Frank
Rossenblat que a finales de los años 50 le iba dando vueltas a la idea de
construir una máquina capaz de reconocer objetos de forma visual. De esta
forma, en 1958 nació el Perceptrón, la primera red neuronal de la historia,
compuesta por la astronómica cantidad de ¡1 neurona! El diseño del perceptrón
consistía en una capa de elementos sensores, cuyas salidas se conectaban a
las entradas de una neurona de McCulloch-Pitts (como se puede observar en la
Figura 4) a través de detectores de umbral. El número de detectores de umbral
era inferior al de elementos sensores, por lo que un detector podía conectarse
a más de un sensor. La distribución de estas conexiones era aleatoria.
40
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
42
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
wi = wi + n*(d-y)*xi
44
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
y la ecuación de la línea límite entre las dos regiones, con salida 0 y con salida
1, será, precisamente,
w1*y1 + w2*y2 - u = 0
46
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Esta condición nos dice que, para que un perceptrón pueda distinguir entre dos
categorías, éstas deben ser separables linealmente o de lo contrario el
47
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
48
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
49
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Sin embargo, a principios de los 80, esta disciplina resurgió de sus cenizas.
Apareció el algoritmo de retropropagación, capaz de entrenar perceptrones
multicapa, y con él una pléyade de nuevas arquitecturas y algoritmos de
entrenamiento basadas en diversas ideas, desde la original de Rossenblatt,
hasta la mecánica estadística. Y en este nuevo período de esplendor de la
neurocomputación, se ha encontrado en otra disciplina de soft-computing, una
50
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
51
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Algoritmos genéticos
52
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
53
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
54
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Una vez llegados a este punto (con una nueva población con el mismo número
de individuos), a un determinado porcentaje de la población se le aplica un
operador de mutación.
Representación de Hipótesis
Primero veamos como usar una cadena de bits para representar los posibles
valores de un atributo. Si un atributo puede tomar tres valores posibles (A,B y
C), una manera de representarlo es mediante tres bits de forma que:
56
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Cabe destacar que una regla del tipo 111 10 11 no tiene demasiado sentido,
puesto que no impone restricciones en la postcondición. Para solucionar esto,
una alternativa es codificar la postcondición con un único bit (1 = Cierto y 0 =
Falso). Otra opción es condicionar los operadores genéticos para que no
produzcan este tipo de cadenas o conseguir que estas hipótesis tengan una
adecuación muy baja (según la función de evaluación) para que no logren
pasar a la próxima generación de hipótesis.
Operadores Genéticos
11101001000 11101010101
57
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
11111000000
00001010101 00001001000
Cruce Doble:
11101001000 11001011000
00111110000
00001010101 00101000101
58
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
pueda tomar el valor representado por dicho bit. El segundo pone todos los bits
de un atributo a 1, con lo que elimina la restricción impuesta por el atributo.
59
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
61
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Programación Genética
Representación de Programas
62
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
63
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
64
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Evolución Lamarckiana
65
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
El efecto Baldwin
66
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
- Grano Grueso
Se subdivide la población en una serie de grupos distintos
(siguiendo algún criterio), llamados “demes”. Cada uno de estos
grupos se asigna a un nodo de computación distinto, y a
continuación se aplica un AG en cada nodo. Los operadores de
cruce se aplicaran generalmente entre individuos del mismo
grupo, y en menor porcentaje, entre individuos de distintos
grupos. En este entorno surge un nuevo concepto, denominado
migración, que se produce cuando un individuo de un grupo se
copia o se traslada a otro/s. Un beneficio del modelo de grano
grueso es que se reduce el efecto “crowding” que aparecía en los
AG no paralelizados.
- Grano Fino
Se asigna un procesador a cada individuo de la población. La
recombinación se efectúa entre individuos vecinos en la red de
67
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Ejercicio
68
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Por lo tanto, para la cadena de bits de las hipótesis usaremos tres bits para
“Tiempo”, dos para “Humedad”, dos para “Viento” y uno para “JugarTenis”. Así,
por ejemplo:
Para elegir las hipótesis que pasarán a la siguiente generación, o que serán
elegidas para sufrir las operaciones de cruce, usaremos una selección
probabilística tal que: ver Figura 1
69
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
70
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
A B C
x x x x x x x x x x x x x x x x x x x x x x x x
z z z
Entrenamiento
x x x x x x x x
Data (7 bits) R
Si R=1 entonces
Si ( (Entrenamiento AND A) = Entrenamiento)
devolver SI
Sino devolver NO
Si R=0 entonces
Si ( (Data AND A) = Data)
Si R=Z devolver SI
Sino devolver NO
Sino devolver NO
72
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
Función AG (Fitness,Umbral,p,r,m)
{
Inicializar población P. Para
cada hipótesis en P, calcular Fitness.
Mientras que max(Fitness) < Umbral hacer
Seleccionar (1-r)p individuos de P que
pasan a Ps.
Elegir (r*p)/2 parejas de P y aplicarles
operadores de cruce. Añadir los hijos a
Ps.
Elegir m porciento sobre Ps y aplicar
73
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
mutación.
P <- Ps
Para cada hipótesis en P, calcular
Fitness.
Fin mientras
Devolver la hipótesis con mayor fitness.
}
En nuestro caso el Umbral será 1 (100% de clasificaciones correctas) ya que
disponemos en la base de entrenamiento de todas las combinaciones posibles
(algo que no ocurrirá en problemas reales y no de juguete, como es éste)
Nota: Se trata de un ejemplo sencillo en el que una determinada persona juega
al tenis siempre y cuando se cumplan unas determindas condiciones
atmosféricas.
74
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/
Inteligencia Artificial, programación neuronal y otras hierbas por David Díaz (editor)
76
www.ciberpunk.com
Publicado originalmente en http://cinefantastico.com/nexus7/