trabajo fin de carreraoa.upm.es/44682/1/pfc_carmen_tarrat.pdf2.1. introducciÓn 6 2.2....
TRANSCRIPT
FACULTAD DE INFORMÁTICA
UNIVERSIDAD POLITÉCNICA DE MADRID
Trabajo Fin de carrera
ANÁL ISIS Y DESARROLLO DE UN SISTEMA DE
APRENDIZAJE EN REDES PARALELAS
Alumna: Mª del Carmen Tarrat Alcalde
Tutor: Gabriel Cristóbal Pérez
Septiembre, 1987
ÍNDICE
l. INTRODUCCIÓN 1
2. ARQUITECTURAS PARALELAS. EL CONEXIONISMO
2.1 . INTRODUCCIÓN 6
2.2. CLASIFICACIÓN DE LOS SISTEMAS CONEXIONISTAS 10
2.3. REPRESENTACIONES DISTRIBUIDAS 13
2 .4 . EL SISTEMA NETL 1 5
2.5. REDES D E TRANSMISIÓN D E VALORES 2 1
2.6. APRENDIZAJE D E REPRESENTACIONES 2 5
2.6.1 . RETROPROPAGACIÓN DEL GRADIENTE 2 6
2.6.2. PROCEDIMIENTO AR-P 28
2 .7 . SATISFACCIÓN DE RESTRICCIONES EN REDES PARALELAS 29
2 .8 . APLICACIONES DE LOS SISTEMAS CONEXIONISTAS 30
3. LA MÁQUINA DE BOLTZMANN
3 .1 . INTRODUCCIÓN 32
3 .2 . ESTRUCTURA Y COMPORTAMIENTO DE LA MÁQUINA
DE BOLTZMANN
3.3. REPRESENTACIÓN DEL CONOCIMIENTO EN LA MÁQUINA
DE BOLTZMANN
33
45
4. APRENDIZAJE
4.1. INTRODUCCIÓN 46
4.2. APRENDIZAJE EN LA MÁQUINA DE BOLTZMANN 47
4.3. ALGORITMO DE APRENDIZAJE 54
4.4. CRÍTICA DE LOS PROCEDIMIENTOS DE APRENDIZAJE 58
5. EJEMPLO DE APRENDIZAJE EN UNA MÁQUINA DE BOLTZMANN
5.1. EL PROBLEMA DEL CODIFICADOR 60
5.2. COMUNICACIÓN DE INFORMACIÓN ENTRE MÓDULOS 64
6. COMPORTAMIENTO DE LOS SISTEMAS CONEXIONISTAS
6.1. INTRODUCCIÓN
6.2. INTERSECCIÓN DE CONJUNTOS
6.3. CIERRE TRANSITIVO
6.4. CONTEXTOS Y PARTICIONES
6.5. RECONOCIMIENTO POR MEJOR APROXIMACIÓN
6.6. RECONOCIMIENTO GESTALT
7. SIMULACIÓN DE LA MÁQUINA DE BOLTZMANN EN UN COMPUTADOR
LISP
7.1. INTRODUCCIÓN
7.2. ESTRUCTURA DE LA RED
7 .3. ALGORITMO DE APRENDIZAJE
7.4. INTERFACE DE CREACIÓN DE LA RED
67
68
69
70
71
72
74
76
79
84
8. BIBLIOGRAFÍA 88
9. APÉNDICES 91
l. INTRODUCCIÓN
El cerebro humano tiene una estructura muy diferente a la de los
computadores digitales convencionales. Está compuesto por un gran número de
pequeñas unidades, las neuronas, capaces de actuar en paralelo, en lugar de tener un
único procesador muy rápido y potente pero poco flexible. También es diferente en el
modo de almacenar el conocimiento, ya que el cerebro lo hace modificando la
interacción entre sus elementos de proceso, mientras que los computadores lo hacen
mediante la asignación de bits en una memoria de propósito muy general, pero pasiva.
También hay que considerar la resistencia del cerebro ante pequeños daños físicos, y
su capacidad para aprender de la experiencia en lugar de ser programado
explícitamente.
A pesar de los numerosos estudios realizados sobre el comportamiento del
cerebro todavía no se ha conseguido averiguar cuál es la que utilizan las neuronas
para representar las estructuras del conocimiento, a menudo muy complejas. También
es un misterio para nosostros, quizás aún mayor, cómo el sistema de percepción
(vista, oído, tacto, etc.) es capaz de transformar el cúmulo de señales que recibe en
representaciones internas útiles y consistentes; sin mencionar la rapidez con que
realiza dicha transformación. Por supuesto, tampoco sabemos cómo aprende nuevos
esquemas sin utilización aparente de un procedimiento explícito y general. Recientes
-1-
investigaciones han presentado un gran número de teorías diversas sobre el
funcionamiento del cerebro, aunque ninguna de ellas haya sido demostrada
suficientemente para ser admitida como cierta. Para muchos investigadores, el
cerebro utiliza mecanismos de cálculo que pueden aplicarse a las arquitecturas
masivamente paralelas desarrolladas en los últimos años en el campo de la
Inteligencia Artificial. La única dificultad consiste en descubrir cuáles son estos
mecanismos.
Un objetivo muy importante de la Inteligencia Artificial ha sido, desde sus
primeros tiempos, la búsqueda de esquemas de aprendizaje aplicables a los
computadores. El aprendizaje se puede considerar como una de las capacidades más
relevantes del comportamiento inteligente, y por ello, cualquier sistema que pretenda
simular dicho comportamiento ha de ser capaz de realizar algún tipo de aprendizaje.
Las primeras investigaciones se realizaron sobre mecanismos como el Perceptron y
otros tipos de redes asociativas. Estos sistemas mostraron la posibilidad de asignar
pesos a las conexiones entre las unidades de entrada y salida, de forma que la
presentación de un vector de entrada causara la activación de las unidades de salida
adecuadas. Sin embargo, la investigación sobre las redes asociativas simples no tiene
mucho interés, ya que la mayoría de los problemas que se presentan en la realidad son
demasiado complejos para poder ser abordados por estos sistemas. Es preciso
modificar las redes asociativas, añadiéndoles niveles internos de unidades
"escondidas" (hidden units). El aprendizaje, entonces, se convierte en la tarea de
decidir cómo se deben utilizar estas unidades escondidas. Encontrar un algoritmo de
aprendizaje adecuado es un problema de enorme dificultad, porque lo que se pretende
es que la red encuentre su propio esquema de representación, y el espacio de
esquemas posibles en el que ha de buscar es demasiado grande para que pueda ser
explorado de forma exhaustiva.
-2 -
Las investigaciones sobre algoritmos de aprendizaje han venido
desarrollándose desde hace muchos años, obteniéndose pocos progresos. Sin embargo,
en los últimos años se han propuesto nuevos algoritmos de aprendizaje, la mayoría de
ellos de gran interés. Algunos de ellos utilizan un mecanismo de aprendizaje basado
en la disminución del gradiente en el espacio de pesos de la red. Es decir, ajustan los
pesos de las conexiones de forma que se reduzca el error producido en el
funcionamiento global de la red. La Máquina de Boltzmann y el procedimiento de
Retropropagación del gradiente utilizan este mecanismo, y han demostrado su
utilidad en un gran número de problemas. Estos dos sistemas utilizan representación
del conocimiento distribuida, es decir, el conocimiento en lugar de estar localizado en
unidades individuales de la red, se encuentra en los diferentes patrones de activación
del conjunto de las unidades que la componen. El problema más importante de estos
sistemas es su enorme lentitud, que se ve incrementada con el aumento del número de
unidades de la red. También hay que mencionar en su contra la diferencia que parece
existir entre el verdadero funcionamiento del cerebro y el proceso de disminución
progresiva del gradiente.
Los objetivos que se plantean actualmente los investigadores en este área
se fijan en la obtención de métodos que aceleren el procedimiento de disminución del
gradiente y en encontrar la forma de organizar las redes multinivel para que sus
unidades consigan minimizar el error global mediante la consecución de objetivos
locales.
Las redes masivamente paralelas están alcanzando un gran éxito en la
resolución de problemas de reconocimiento y en las denominadas búsquedas de
relajación en las que han de satisfacerse múltiples restricciones simultáneamente. Sin
embargo, existen muchas objecciones que plantear a los esquemas masivamente
paralelos, y han de resolverse algunos problemas graves antes de que puedan ser
- 3 -
efectivamente aceptados como un nuevo estilo de computación. Entre las cuestiones
más importantes se encuentran las siguientes:
- ¿La red llegará a estabilizarse o permanecerá en una oscilación
indefinida sin ningún objetivo?.
- Admitiendo que la red llegue a estabilizarse deteniendo su
funcionamiento en algún momento, ¿cuál es el significado de tal proceso?, ¿qué
calcula la red con ello?. Es necesario poder determinar qué es lo que la red debe
calcular y comprobar que efectivamente lo hace.
- ¿Cuánto tiempo necesita la red para detenerse en una solución?. En caso
de necesitar miles de iteraciones hasta alcanzar el equilibrio difícilmente puede
admitirse el sistema como un modelo de la forma en la que el cerebro humano
resuelve los problemas de satisfacción de restricciones, ya que éste lo hace
muchísimo más rápido.
- ¿Qué cantidad de información necesita cada unidad para poder
transmitirla a las unidades de su entorno?. En muchos de los esquemas de relajación
las unidades comunican a las demás valores muy afinados en cada una de las
iteraciones del proceso. Este comportamiento no se corresponde con el que se supone
que existe entre las neuronas del cerebro, por lo que es necesario buscar uno más
adecuado.
- ¿Cómo han de ser los pesos que codifican el conocimiento adquirido por
el sistema?. Algunas tareas de bajo nivel permiten que estos pesos sean ajustados por
el programador, pero en problemas de más alto nivel es necesaria la utilización de
algún procedimiento de aprendizaje que se encargue de ajustar los pesos
automáticamente.
-4-
Todas estas objecciones van resolviéndose poco a poco, encontrándose
arquitecturas paralelas y procedimientos de aprendizaje cada vez más interesantes y
efectivos.
Este trabajo presenta una visión general de las arquitecturas conexionistas
más interesantes estudiadas hasta el momento, especificando sus características
principales, así como sus ventajas y sus inconvenientes. Todas ellas poseen
características similares, pero sus prestaciones son muy diferentes para cada una de
las tareas que se les proponen. Se hace especial mención de una de estas
arquitecturas, la Máquina de Boltzmann, cuya estructura y algoritmo de aprendizaje
se estudian en detalle.
La Máquina de Boltzmann puede considerarse como un tipo particular de
red paralela que es capaz de aprender las restricciones que caracterizan a un dominio
concreto mediante presentación de ejemplos extraidos del mismo. La red modifica los
pesos de sus conexiones para construir un modelo interno que produzca ejemplos con
la misma distribución de probabilidad que los que le han sido mostrados. Una vez
terminado el proceso de aprendizaje, la red es capaz de interpretar correctamente
cualquier entrada que se le presenta, obteniendo la salida correspondiente. Cuando se
le presenta un ejemplo de entrada parcial, la red puede completarlo encontrando los
valores de las variables internas que han generado el ejemplo parcial, y utilizándolos
para generar el resto del ejemplo.
Asimismo, en este trabajo se presentan los fundamentos matemáticos que
justifican el funcionamiento del sistema, así como sus posibilidades de aprendizaje.
-5-
2. ARQUITECTURAS PARALELAS. EL CONEXIONISMO
2.1. INTRODUCCIÓN
La tecnología desarrollada hasta ahora en el campo de la Inteligencia
Artificial es capaz de simular algunas de las funciones mentales de alto nivel que los
seres humanos realizan con bastante facilidad. Sin embargo, todavía un computador
no ha sido capaz de incorporar a su funcionamiento ciertos aspectos fundamentales de
lo que comúnmente se considera el "comportamiento inteligente". Entre estos
destacan especialmente el sentido común y casi todas las capacidades sensoriales
(visión y reconocimiento de lenguaje principalmente). El error parece encontrarse en
el planteamiento original, es decir, en el empeño de simular el comportamiento del
cerebro humano, una máquina de proceso paralelo, con los computadores de los que se
dispone en la actualidad, cuyo funcionamiento es eminentemente secuencial.
Algunos de los elementos que parecen faltar a la actual tecnología
utilizada en Inteligencia Artificial, y que el cerebro humano posee, son los siguientes:
- La memoria humana es capaz de almacenar una gran cantidad de
conocimiento de tipos muy diversos, y además también puede recuperarlos de forma
muy rápida y sin esfuerzo aparente. El fenómeno denominado sentido común, que
-6-
poseen todos los seres humanos, parece estar estrechamente relacionado con la
disponibilidad de una gran cantidad de conocimiento, pero no aislado y disperso, sino
fuertemente ligado y relacionado. Los computadores son capaces de almacenar gran
cantidad de información, pero hasta el momento no se ha descubierto la forma en que
dicha información pueda convertirse en conocimiento que se incorpore a las
actividades de la máquina de una forma efectiva.
- Las habilidades en el campo del reconocimiento que exhiben los seres
humanos superan a las de los computadores en la mayoría de los dominios. En todas
las actividades relacionadas con el reconocimiento, ya sea visión, entendimiento del
lenguaje hablado o cualquier otro tipo de tarea de alto nivel, la operación clave es la
capacidad de localizar, entre muchos candidatos, el que mejor se ajusta al elemento
que debe ser identificado. Los humanos tenemos esa capacidad, e incluso podemos
utilizarla adecuadamente con datos de entrada distorsionados o fuertemente
contaminados con ruido. Los computadores, por el contrario, todavía no son capaces
de realizar localizaciones tan rápidas como las que cualquier persona puede hacer,
aparentemente de la forma más sencilla y natural.
- Tradicionalmente la Inteligencia Artificial ha centrado sus esfuerzos en
la búsqueda de una forma de razonamiento basada en el tratamiento simbólico de la
información, que es el que se creía fundamento básico de la inteligencia humana. Sin
embargo, si bien este tipo de razonamiento es utilizado en ocasiones por el hombre,
también es cierto que en muchos casos la información es tratada de una forma mucho
más sencilla, que todavía no ha podido ser realmente identificada.
Hasta ahora, la Inteligencia Artificial ha venido utilizando estrategias
cada vez más complejas para conseguir reducir la extensión del espacio de búsqueda
en problemas complejos, disminuyendo el tiempo de computación empleado. Existe,
sin embargo, una alternativa a este planteamiento, que consiste en resolver los
problemas con métodos menos complicados, de tipo cíclico, utilizando enormes
-7-
cantidades (del orden de millones) de procesadores sumamente simples para conseguir
la resolución de tareas en un tiempo razonable. Este planteamiento está claramente
orientado a tratar de reproducir los esquemas cerebrales, incluyendo para ello la
utilización de estructuras parecidas a la organización del cerebro.
Algunos investigadores han comenzado a explorar la utilidad del uso de
arquitecturas masivamente paralelas para superar las limitaciones del proceso
simbólico convencional utilizado hasta ahora. Muchas de estas arquitecturas paralelas
se denominan "conexionistas", ya que el conocimiento permanente que posee el
sistema se encuentra almacenado en forma de patrones de conexión, normalmente
denominados fuerzas de conexión, entre los elementos de proceso. De esta forma, el
mismo conocimiento es el que determina de modo directo cómo deben interactuar
entre sí los elementos simples de proceso, en lugar de permanecer almacenado de
forma pasiva en una memoria esperando que la CPU acceda a consultarlo. Existen
diferentes sistemas que pueden ser denominados conexionistas, algunos utilizan
representaciones simbólicas y formales y otros, por el contrario, se basan en
aproximaciones más analógicas y simples.
El término "conexionismo" fue utilizado por primera vez por Jerry
Feldman, refiriéndose al estudio de un cierto tipo de arquitecturas masivamente
paralelas que empezaban a aparecer en las investigaciones dentro de la Inteligencia
Artificial. Los diferentes sistemas conexionistas tienen en común su estructura. Ésta
se compone de un gran número de elementos simples, denominados "unidades",
conectadas unas a otras de diferentes formas, componiendo un sistema en red con
topologías diversas. Cada una de las unidades almacena internamente muy poca
cantidad de información, normalmente unos pocos "bits de marca" o un valor
numérico o "nivel de activación". Esta información de los elementos simples es
utilizada como memoria de trabajo a corto plazo. El almacenamiento de información
a largo plazo se consigue alterando el patrón de interconexiones entre las unidades, o
-8-
modificando una cantidad asociada con cada conexión, que se conoce como su "peso"
o "fuerza". La utilización de las conexiones para almacenar la información en lugar
de las convencionales celdas de memoria, es el motivo del nombre dado en general a
todas las arquitecturas de este tipo.
Las unidades de proceso en estos sistemas no se rigen por programas
individuales. Sólo pueden realizar un pequeño conjunto de acciones, como aceptar
señales de entrada, realizar determinadas operaciones booleanas o aritméticas
simples sobre los datos, o enviar señales a las unidades del sistema a las que estén
conectadas. Estas operaciones pueden ser totalmente autónomas, incorporándose
como parte del comportamiento interno de cada unidad; o pueden controlarse
mediante el uso de comandos por parte de un controlador externo que puede ser
incluso un computador convencional.
Una arquitectura de este tipo es capaz de tener en cuenta gran cantidad
de conocimiento de forma simultánea cuando ha de tomar una decisión, y puede
también valorar muchas opciones a la vez. Esta capacidad se debe al hecho de que las
conexiones pueden llevar varias señales simultáneamente, y las unidades elementales
pueden funcionar en paralelo integrando todos los datos de entrada que reciben de
otras unidades.
En algunos sistemas conexionistas el paralelismo se utiliza para realizar
cierto tipo de búsqueda "bruta" entre todas las unidades que componen la red,
considerando cada una de ellas como un componente elemental dentro de la base de
conocimiento. Otros sistemas hacen uso del paralelismo para permitir
representaciones más ricas y menos "convencionales". Este tipo de esquemas
representan cada elemento de conocimiento mediante un patrón de actividad sobre un
determinado número (siempre una cantidad grande) de unidades elementales. Este
mismo grupo de unidades puede representar un elemento diferente sólo modificando
el patrón de actividad (los valores de las unidades o los pesos de las conexiones). La
-9-
existencia de muchas conexiones representando muchas porciones pequeñas de
conocimiento hace que éstas jueguen un importante papel en la determinación de las
mejores alternativas a la hora de tomar una decisión.
Sea cual sea la estrategia de representación del conocimiento que se
utilice dentro de la arquitectura conexionista, el interés de estas arquitecturas es
evidente. Este interés se basa en su capacidad para tener en cuenta a la vez gran
cantidad de conocimiento, cuestión bastante difícil de conseguir con las arquitecturas
secuenciales que se utilizan actualmente.
2.2. CLASIFICACIÓN DE LOS SISTEMAS CONEXIONIST AS
Una característica importante de los esquemas conexionistas es el tipo de
señal que se transmite entre los diferentes elementos de proceso. Fahlman propone
una clasificación de los sistemas en base a este concepto. La división contiene tres
clases:
- Sistemas que transmiten mensajes.
- Sistemas que transmiten marcadores.
- Sistemas que transmiten valores.
Los sistemas que transmiten mensajes son los más complejos y a la vez los
más potentes. A veces su excesiva complejidad hace que no se consideren verdaderos
sistemas conexionistas, ya que las unidades de proceso han de ser bastante complejas
y tener una capacidad de almacenamiento grande para poder conservar los mensajes
recibidos y no procesados. Estos sistemas transmiten mensajes simbólicos entre las
-10-
unidades que los componen. Esta arquitectura no parece ser un modelo muy acertado
del comportamiento interno del cerebro, por lo que su estudio no ha suscitado mucho
interés.
Los sistemas que transmiten marcadores son los más simples y también los
más limitados. La comunicación entre las unidades de proceso se realiza en forma de
marcadores de un bit. Cada unidad tiene capacidad para almacenar unos cuantos
marcadores distintos (normalmente 16) y para realizar algún tipo de operación
booleana (típicamente la operación OR) sobre los bits de marca que recibe de otras
unidades. En un sistema de este tipo las unidades están conectadas mediante uniones
hardware que son las encargadas de transmitir los marcadores. Estas uniones actúan
de hecho como líneas dedicadas, por lo que puede existir un gran tráfico de
marcadores en paralelo.
En el tercer tipo de sistemas lo que se transmite entre las unidades son
valores continuos o cantidades numéricas. Las unidades en estos casos realizan
operaciones aritméticas sobre los valores que reciben de otras unidades de la red. Una
ventaja de estas arquitecturas es que nunca llegan a colapsarse, ya que si una unidad
recibe diferentes valores por varias conexiones, los combina aritméticamente
obteniendo un solo valor, que es el que la unidad adopta como realmente recibido.
Una diferencia importante entre el planteamiento conexionista y otro tipo
de arquitecturas paralelas desarrolladas en investigaciones al respecto, denominadas
"modestamente paralelas", es la capacidad que tienen los esquemas conexionistas de
asignar un elemento de proceso a cada pequeña subtarea extraída de la tarea original,
suponiendo siempre que existen suficientes unidades de proceso simples para poder
manejar el problema propuesto. En una arquitectura paralela convencional se utiliza
un número fijo de grandes y potentes procesadores, y se intenta fragmentar el
problema en un número de piezas igual al número de procesadores para que cada una
de ellas pueda ser ejecutada concurrentemente.
-1 1 -
En un sistema secuencial el tiempo necesario para realizar tareas como
extraer un conjunto finito de elementos de la memoria o considerar un conjunto finito
de hipótesis, es directamente proporcional al tamaño del conjunto, es decir, crece
linealmente con el número de elementos del conjunto (elementos de memoria,
hipótesis consideradas, etc.). El planteamiento que se ha llamado modestamente
paralelo intenta conseguir un incremento de la velocidad de proceso con la utilización
de N procesadores funcionando en paralelo. El planteamiento conexionista se basa en
la realización de estas tareas en tiempo constante, pero sin embargo, en estos
sistemas es el hardware utilizado el que crece linealmente con el número de
elementos de memoria considerados o el número de hipótesis. Este hecho, que puede
parecer un enorme obstáculo para el desarrollo de estos sistemas, no se ve tan grave
si en lugar de considerar cada una de las unidades de proceso como una CPU
completa, se interpreta como una clase especial de celda de memoria capaz de
almacenar la información en sus conexiones, es decir, en el peso de sus conexiones
con otras unidades. De esta forma se ve bastante clara la necesidad de disponer de un
número suficiente de celdas de este tipo para poder representar el conocimiento que
se tiene sobre una tarea en particular.
Hasta el momento no hay muchos investigadores ocupados en este campo,
aunque poco a poco el interés va aumentando a medida que se obtienen resultados
prometedores. Pese a este escaso número de investigadores, son muchos los tipos
diferentes de arquitecturas conexionistas que se han estudiado y con las que se han
realizado experiencias muy interesantes.
-12-
2.3. REPRESENTACIONES DISTRIBUIDAS
La forma más simple de representar el conocimiento en una red
masivamente paralela es utilizar "representaciones locales", en las que cada concepto
se representa por una parte específica de la estructura interna de la red. Por ejemplo,
si el sistema tiene que trabajar con el concepto "elefante", le bastaría con activar la
unidad que lo representa para poder hacer uso de él. Este tipo de representación es
muy sencilla de realizar y también es fácil de entender. El problema más grave de un
sistema que represente el conocimiento de esta forma es su falta de seguridad. Si por
cualquier causa la unidad que representa un concepto resulta estropeada o deja de
funcionar, el sistema pierde todo el conocimiento que ella contenía, y, por supuesto,
todas sus conexiones dejan de tener sentido. Este hecho es la causa de muchos
problemas, especialmente de fiabilidad, ya que obviamente en un sistema con
millones de unidades, no es sencillo conseguir que todas funcionen correctamente en
todo momento. Además, con este esquema de representación, la mayoría de las
unidades estarán inactivas la mayor parte del tiempo, a no ser que se esté utilizando
continuamente la parcela de conocimiento que representan.
Muchos de los neurólogos y estudiosos del cerebro humano están en contra
de esta teoría. Consideran que el cerebro no utiliza este esquema de representación
local, sino que mantiene el conocimiento distribuido a lo largo del conjunto de las
neuronas que lo componen. El mismo concepto de elefante anteriormente descrito se
representaría de forma distribuida como un determinado patrón de activación sobre
un número bastante grande de neuronas o unidades. A menudo se utiliza la analogía de
esta interpretación del conocimiento con los hologramas, en los que, como es sabido,
cada punto de la imagen se construye tomando información sobre el resto de los
- 1 3-
puntos que la componen. La representación distribuida del conocimiento, al igual que
el holograma, posee una alta fiabilidad, de forma que si se destruye parte de la
información la imagen aparece ligeramente degradada, pero no se pierde totalmente.
Sobre una red paralela el efecto en cuanto a fiabilidad es el mismo, si se estropean
una o varias unidades (o su funcionamiento no es el correcto), el patrón representado
es imperfecto, pero puede ser utilizado porque esencialmente continúa siendo el
mismo. Cada uno de los comportamientos macroscópicos (globales) de la red se
consigue mediante la integración del funcionamiento de un gran número de unidades
microscópicas. Por ello, cualquier subconjunto pequeño de estas unidades
elementales, incluso elegido de forma aleatoria, puede desaparecer o funcionar
incorrectamente sin que se registre ningún cambio sustancial en el comportamiento
macroscópico del sistema. Esta propiedad, que hace que estas arquitecturas sean
inherentemente tolerantes a fallos, resulta muy interesante para la construcción de
redes de alto grado de paralelismo, es decir, compuestas por millones de unidades.
Este tipo de representación distribuida tiene también sus problemas. El
más importante de ellos es su falta de claridad. La dispersión del conocimiento hace
que la estructura sea difícil o incluso imposible de entender por una persona que no
haya intervenido en su construcción. Por el mismo motivo, resulta prácticamente
imposible que cualquier persona sea capaz de modificar el conocimiento contenido en
el sistema, incluso aquellas personas que lo conocen bien han de tener cuidado, ya que
la alta integración e interrelación de los conceptos puede resultar alterada
fácilmente, destruyendo el significado que se le quería dar al conjunto del sistema.
Añadir una pequeña cantidad de conocimiento a nivel macroscópico en el sistema
requiere modificar las interacciones entre un gran número de unidades microscópicas,
de forma que el efecto global represente el nuevo conocimiento adquirido. Este
proceso de modificación es, por su complejidad, prácticamente imposible de realizar
"a mano" incluso para un problema sencillo y una red simple con un número pequeño
de unidades. Por ello es evidente la necesidad de conseguir algún tipo de esquema de
-14-
aprendizaje automático que evite el enorme trabajo que supone la modificación
manual de la estructura. La importancia del problema es tan grande que, de no existir
tal esquema automático, las representaciones distribuidas serían casi imposibles de
manejar y su estudio no merecería la pena, ya que su valor sería escaso.
2.4:. EL SISTEMA NETL
El sistema NETL es un ejemplo de arquitectura paralela que utiliza
representación local del conocimiento. Fue diseñado para permitir el almacenamiento
y posterior recuperación de un gran número de aserciones o hechos simbólicos.
Además se pretendía que el sistema pudiera realizar algunas búsquedas y deducciones
poco complejas sobre el conocimiento que había acumulado. Un sistema NETL puede
considerarse como una realización hardware de una red semántica. Una red semántica
es una estructura en forma de grafo en la que los nodos representan conceptos y los
arcos entre ellos representan las relaciones existentes entre los conceptos. Ambos,
nodos y arcos de la red, pueden estar etiquetados con identificativos de los conceptos
y relaciones que representan. La figura l(a) representa un ejemplo de red semántica
que contiene cierto conocimiento relativo a elefantes, y la figura l(b) el sistema
hardware que constituye la representación NETL de una parte de la misma red
semántica.
En un sistema NETL cada nodo de la red semántica se representa por una
unidad de proceso simple. Estas unidades tienen capacidad para almacenar algunos
marcadores de un bit y realizar operaciones booleanas sencillas sobre ellos. Los arcos
de la red semántica también se representan por unidades de proceso simples, que
están conectadas a dos o más unidades que representan nodos. Las unidades que
representan a los arcos también pueden realizar operaciones booleanas sencillas sobre
- 1 5-
Ser vivo
Necesita
Planta Oxígeno
Mamífero
Gris
Sam
Figura l(a). Parte de una red semántica sobre elefantes.
------•unidad-nodo "Elefante" 1---------1- ',
,.
\ 1
I / /
.,-' ------1 unidad-arco
"es un"
...________ unidad-nodo
1---------t - - -
"Sam" ,__ _____ ..,_
Bus compartido
Computador de
control
Red de conmutación
' ' '
/ .,"'
\ 1 I
I
Figura l(b). Hardware NETL correspondiente a "Sam es un elefante"
- 1 6-
los marcadores, pero normalmente su actividad suele limitarse a pasar o transmitir
marcadores entre las unidades que representan nodos (unidades-nodo) a las que están
conectadas. Todas las unidades del sistema NETL (unidades que representan nodos y
unidades que representan arcos) pueden funcionar simultáneamente como respuesta a
comandos enviados por un sistema controlador externo, normalmente un computador
secuencial como los que estamos acostumbrados a utilizar.
Cada vez que se añade un hecho nuevo al sistema, éste debe ser
aumentado añadiéndole nuevas unidades-nodo y nuevas unidades-arco que representen
el nuevo hecho introducido. La capacidad que tienen las conexiones entre las
unidades-nodo y las unidades-arco de transportar señales de forma simultánea obligan
a representarlas en el sistema físico como verdaderas líneas dedicadas. Estas
conexiones no pueden representarse, por ejemplo, como direcciones transmitidas por
medio de un bus compartido, porque no sería posible la transmisión de varias señales
al mismo tiempo entre distintas conexiones. En los sistemas NETL físicos construidos
hasta el momento las conexiones no son verdaderas líneas dedicadas, es decir, no
existe un cable conectando cada par de unidades que lo necesitan porque resultaría
excesivamente caro. La solución adoptada es la utilización de un sistema interno de
conmutación que sea el encargado de conectar de forma directa las unidades cuando
sea necesario para la transmisión de comandos o marcadores. Este subterfugio hace
que el sistema físico carezca de la capacidad de paralelismo total que posee el
modelo teórico, pero sin embargo posibilita su realización práctica.
Una red NETL es capaz de realizar búsquedas e inferencias simples, pero
que van más allá de las acciones que puede realizar una memoria asociativa simple.
Un ejemplo de ello puede ser la operación "herencia" comúnmente utilizada en la
mayor parte de los sistemas de Inteligencia Artificial. El mecanismo de la herencia
permite que cualquier hecho conocido sobre un elemento de la red pueda ser aplicado
a todas las subclases e individuos que se encuentran por debajo de él en la jerarquía
- 1 7-
de sus arcos de tipo "es un" (estos arcos son utilizados en las redes semánticas para
representar la pertenencia de un elemento a una clase determinada de individuos). La
herencia puede extenderse y aplicarse a cualquier nivel de la red, por lo que su
utilización requiere un mecanismo que permita explorar de forma rápida y eficiente
cualquier parte de la red.
En una red NETL la herencia se consigue mediante la propagación de
marcadores entre las unidades de proceso simples. Por ejemplo, si se desea encontrar
el valor de una determinada característica de una unidad, el controlador se encargará
de asignar el valor 1 al marcador de esa unidad, ordenando a continuación que
cualquier unidad que represente un arco del tipo "es un" y tenga un nodo situado
debajo de él en la jerarquía con el marcador a 1, pase este valor al nodo que está
conectado con él por el otro lado (el situado por encima del anterior en la jerarquía).
Cuando la red haya terminado el proceso de transmisión de marcadores y quede
estabilizada, todas aquellas unidades que la componen que tengan el marcador con
valor 1 son aquellas de las que la unidad original puede heredar alguna propiedad. En
este momento el controlador debe ordenar a todas las unidades que representan la
conexión con la característica que se busca, que aumenten el marcador de sus
conexiones en una unidad, con lo que todas las unidades de la red NETL cuyo valor del
marcador sea igual a 2 son las que representan la característica buscada. En este
proceso pueden obtenerse bastantes unidades que verifiquen las condiciones en el caso
más general, o puede obtenerse una única unidad como solución o incluso ninguna. El
procedimiento seguido para obtener este valor constituye una secuencia de inferencia
de carácter completamente general. Es decir, se puede obtener cualquier información
presente en la red sin más que seguir el procedimiento descrito con asignaciones
concretas de los identificadores de las unidades-nodo y las unidades-arco.
La capacidad de los sistemas NETL para realizar en paralelo y de forma
muy eficiente intersección de conjuntos, los hace muy adecuados para ciertas tareas
- 1 8-
de reconocimiento altamente específicas (aunque no excesivamente frecuentes en
problemas reales). Supóngase que se desea obtener toda la información que posee la
red sobre un elemento del que se conocen tres características determinadas. Esto es,
se buscan aquellos elementos de la red que poseen la intersección de las
características especificadas. Mediante propagación de marcadores se pueden
identificar todos los elementos con la primera característica y de igual forma otros
dos marcadores diferentes pueden identificar los elementos que poseen las
características segunda y tercera. Una vez realizada esta tarea de "marcado", el
controlador sólo ha de enviar a la red el comando adecuado para que se identifiquen
todas aquellas unidades de la red que posean los tres marcadores. De esta forma tan
simple y rápida pueden obtenerse todos los miembros de una intersección de
características. Una propiedad muy interesante de este proceso es que el tiempo
empleado en la realización de la tarea es siempre constante y resulta independiente
del número de elementos de los conjuntos de los que se desea obtener la intersección.
Esta forma de intersección puede interpretarse como una clase especial de
reconocimiento.
Si se considera el proceso anteriormente descrito como reconocimiento,
puede observarse que resulta muy sólido en algunos aspectos, pero a la vez se muestra
bastante débil en otros. En el lado positivo hay que tener en cuenta que la red NETL
puede examinar a la vez todas las descripciones que conoce, sin necesidad de utilizar
ningún tipo de criterio heurístico que pudiera desechar de antemano la respuesta
correcta. También cabe destacar en el lado positivo que la red no necesita conocer
como entrada todas las características que identifican al o a los elementos buscados,
es suficiente con un subconjunto de estos datos, con tal que se realice la
identificación concreta. Pero incluso si no se conocen las características suficientes,
la red es capaz de obtener un conjunto de posibilidades tan reducido como le sea
posible, simplificando en ocasiones tareas de identificación de características. Esta
propiedad resulta de gran ayuda en determinados tipos de problemas. En el lado
- 1 9-
positivo hay que incluir además la propiedad de poder incorporar de forma inmediata
cualquier conocimiento nuevo como parte efectiva del proceso de reconocimiento que
se describió anteriormente. Por último, hay que añadir la gran sencillez de este tipo
de representación, perfectamentre inteligible para cualquier persona mínimamente
introducida en el uso de sistemas de estas características.
Como partes débiles de los sistemas NETL hay que señalar el tratamiento
atómico que confiere a cada dato, representándolo por una sola unidad sea cual sea la
complejidad inherente que éste tenga. Además sólo puede notar la existencia o
ausencia de cada dato individual, siendo incapaz de reflejar ningún tipo de situación
intermedia. En este aspecto, las redes NETL se comportan de forma similar a los
sistemas simbólicos tradicionalmente utilizados en Inteligencia Artificial, obteniendo
buenos resultados en dominios "limpios" en los que no se registre ninguna distorsión o
alteración de los datos. Por ejemplo, no son sistemas adecuados para la resolución de
problemas de percepción en los que se necesitan datos obtenidos de sensores que
captan señales de bajo nivel, a menudo muy contaminadas por el ruido.
La arquitectura de un sistema NETL ha sido hasta el momento solamente
simulada, nunca realizada físicamente. Sin embargo, no es una arquitectura
conexionista excesivamente compleja. Sus unidades, tanto las que representan nodos
como las que representan arcos, son tan simples que no resultaría muy difícil integrar
varios miles de ellas en un solo chip. La causa principal que dificulta su realización
práctica es la estructura de conmutación de conexiones anteriormente descrita. El
diseño y posterior construcción de un sistema de conmutación adecuado a esta
arquitectura parece demasiado complejo para intentar acometerlo con el estado
actual de la tecnología. No hay que olvidar, sin embrago, que un estudio realizado por
Fahlman demostró que la construcción de una máquina con estructura NETL costaría
sólo unas cuantas veces lo que cuesta la construcción de una memoria convencional
con capacidad para almacenar la misma cantidad de información. De cualquier forma,
-20-
el problema parece ser solamente económico, por lo que cabe esperar que pueda ser
superado en un margen de tiempo pequeño.
Los sistemas NETL son casi los más utilizados en sistemas reales, aunque
sólo son simulaciones la mayor parte de ellos. La "Máquina Conexionista", construida
por Thinking Machines, por ejemplo, fue diseñada en parte como realización de una
base de conocimiento al modo NETL, aunque el diseño hardware es todavía lo
suficientemente general como para permitir la realización de muy diversos tipos de
tareas. La versión actual de esta máquina está compuesta por 64000 unidades de
proceso elementales, lo que le confiere suficiente capacidad para manejar una
considerable cantidad de conocimiento. El proyecto de realización de una máquina
conexionista con un millón de unidades de proceso resulta una perspectiva excitante,
ya que con tal número de unidades sería posible manejar la cantidad de conocimiento
suficiente para poder dotar al sistema de un cierto grado de sentido común. En este
sentido cabe señalar que en el proyecto Esprit 11 sobre modelos conexionistas de la
Comunidad Europea se pretende construir una máquina conexionista compuesta por un
millón de elementos de proceso.
2.5. REDES DE TRANSMISIÓN DE VALORES
La arquitectura de las redes NETL no era la adecuada para el
planteamiento de algunos problemas de reconocimiento verdaderamente complejos
que se presentan frecuentemente en el mundo real. La mayor parte de estos
problemas, ya sean visión, entendimiento del lenguaje hablado o diagnóstico médico,
se enfrentan con datos a menudo poco precisos, inciertos y fuertemente
distorsionados por ruido, además de no ser posible un ajuste perfecto entre la
estructura real y la obtenida como solución. Es también frecuente encontrar en la
-2 1 -
realidad problemas en los que algunos de los datos apoyan de forma evidente una
determinada hipótesis, mientras que otros datos sólo sugieren una posibilidad. En
otros problemas, por el contrario, existen datos cuya presencia es imprescindible y
otros cuya aparición es importante sólo en un cierto grado. Los problemas reales
presentan tal variedad y complejidad, que no pueden ser adecuadamente resueltos por
un sistema que presenta las restricciones de las redes NETL.
Otro tipo de arquitectura conexionista, los denominados sistemas de
transmisión de valores, parecen adaptarse mejor a las exigencias que imponen los
problemas extraidos de la realidad. Como ya ha sido comentado, en estos sistemas las
conexiones entre unidades poseen un valor numérico que se denomina "peso" de la
conexión. Cada unidad de proceso del sistema calcula la suma de los pesos que recibe
y somete el valor obtenido a la acción de una función no lineal cuyo resultado se
convierte en el valor que la unidad pasará o transmitirá a otras unidades conectadas
con ella. Este tipo de arquitectura puede realizarse sobre hardware analógico o
digital, pero a efectos de cálculo, puede considerarse como un tipo de computador
analógico.
Mediante la utilización de unidades como las descritas puede construirse
un sistema de reconocimiento estructurado en niveles y capaz de manejar
observaciones no totalmente ciertas, variando su grado de evidencia. En este sistema
pueden distinguirse dos tipos de unidades: unidades de entrada y unidades de salida.
Cada unidad de entrada representa un dato observable, y su valor puede interpretarse
de diversas formas: puede ser la probabilidad de que el dato representado esté
presente, la magnitud de una determinada cantidad continua, o la probabilidad de que
una cantidad se encuentre dentro de un intervalo fijado. La interpretación del valor
de las unidades depende de cada problema particular. Las unidades de salida
representan las hipótesis que se desea evaluar con el sistema.
-22 -
La red más simple de este tipo contendría sólo unidades de entrada
conectadas directamente a las unidades de salida mediante un conjunto de conexiones
cuyos pesos son susceptibles de modificación. Con esta configuración no es necesario
asignar los pesos de las conexiones "a mano", esta estructura es muy semejante a una
propuesta por Rosenblatt a la que se denominó Perceptron. Como ya se demostró,
existe un algoritmo aplicable a esta red y tal que, dado un conjunto de vectores de
entrada con sus correspondientes vectores de salida, calcula de forma iterativa el
conjunto de pesos de las conexiones que hace posible que la red ajuste adecuadamente
la entrada y la salida. El algoritmo del Perceptron es siempre capaz de encontrar
dicho conjunto de pesos, si es que existe. El problema principal es que, para la
mayoría de las tareas que resultan de interés no existe un conjunto de pesos adecuado
en una red de dos niveles como la descrita.
En la mayoría de los casos el problema que se desea abordar no admite el
tratamiento que una red de dos niveles aplica a los datos de más bajo nivel,
considerando cada uno de ellos como una fuente de evidencia completamente
independiente del resto. Es necesario, para poder resolver estos problemas incorporar
a la red uno o más niveles intermedios de unidades, que suelen denominarse unidades
no visibles o escondidas. Estas unidades no visibles son las que realizan la
combinación de las observaciones primarias (los vectores de entrada) en datos de un
orden superior de correlación que contribuyan de forma más eficiente a la
determinación de los vectores de salida correctos. Una simple muestra de la
necesidad de este tipo de unidades es la resolución de un problema tan sencillo como
el reconocimiento de vectores desplazados un bit, ya sea hacia la derecha o hacia la
izquierda. Este problema no puede ser resuelto por una red de dos niveles porque cada
bit de entrada, considerado independientemente de los demás no proporciona ninguna
información útil para la determinación del desplazamiento. La información relevante
para la resolución del problema está contenida en el comportamiento conjunto de las
-23-
combinaciones de todos los bits de entrada. Para poder manejar convenientemente
esta información hay que utilizar uno o más niveles de unidades escondidas, que
puedan extraer las combinaciones de información que conducirán al sistema a la
obtención de la salida adecuada.
Una vez justificada la necesidad de la existencia de las unidades
escondidas, se presenta el problema de averiguar cuál de las muchas combinaciones
posibles de estas unidades (de orden exponencial) es la más adecuada para poder
predecir correctamente las salidas. El algoritmo de aprendizaje del Perceptron no es
aplicable a este tipo de redes, por lo que se han ideado otro tipo de procedimientos y
técnicas que sí pueden aplicarse a redes con más de dos niveles.
Minsky y Papert [Minsky, 1969] realizaron diferentes estudios en esta
línea, tratando de descubrir un método para conseguir averiguar cuáles eran las
tareas que necesitaban el uso de unidades escondidas para su realización y cuáles no.
Sus trabajos les llevaron a demostrar que un buen criterio de clasificación de tareas
consiste en tomar como medida el número de unidades de entrada que deben
conectarse a cada una de las unidades escondidas. Esta medida, según fue demostrado
por ellos, determina el orden de los resultados estadísticos que pueden ser extraidos
del sistema. Sin embargo, sus descubrimientos se detuvieron aquí, sin haber
encontrado un procedimiento para que la red aprendiera la configuración adecuada de
los pesos de las unidades, e incluso sugiriendo la posible inexistencia de un
procedimiento general y simple capaz de realizarlo.
Las redes paralelas y sus derivaciones fueron ampliamente criticadas en
los años que siguieron a las publicaciones de Minsky y Papert. Principalmente se
argumentaba la escasa efectividad de las redes para las que sí existía algoritmo de
aprendizaje, lo que limitaba mucho el alcance de las arquitecturas neuronales. Sin
embargo, actualmente, con los avances alcanzados en el entendimiento de la
naturaleza del paralelismo y la sustancial mejora de los computadores utilizados
-24-
como herramientas de trabajo, se ha despertado de nuevo el interés por este tipo de
arquitecturas, principalmente por su especial aplicación a tareas de percepción.
2.6. APRENDIZAJE DE REPRESENTACIONES
Las redes con estructura en tres niveles estudiadas por Minsky y Papert no
tienen libertad para elegir las representaciones internas porque los pesos entre las
conexiones de las unidades de entrada y las unidades escondidas del nivel intermedio
están predeterminados y el sistema no puede aprender. Si se permite que estos pesos
"aprendan", la red podrá determinar por sí misma lo que deben representar las
unidades escondidas. Si se extiende este esquema puede conseguirse un tipo de
aprendizaje muy interesante y bastante potente. La parte negativa de este sistema de
aprendizaje sería la dificultad para encontrar un procedimiento que sea capaz de
encontrar por sí mismo las representaciones internas adecuadas. Por otra parte, el
espacio de representaciones posibles es tan grande (depende exponencialmente del
número de unidades), que el procedimiento ha de ser necesariamente muy lento,
incluso si sólo explorase aleatoriamente el espacio de representaciones.
Sin embargo, diferentes invest igadores han propuesto varios
procedimientos que se presentan brevemente a continuación, de los cuales los más
interesantes son:
- Retropropagación del gradiente (Back-propagation)
-25-
2.6.1. RETROPROPAGACIÓN DEL GRADIENTE
Este procedimiento fue descubierto de forma independiente por tres
investigadores, David Rumelhart, David Parker y Yann Le Cun. El procedimiento
realiza dos pasadas para cada vector de entrada presentado a la red. El paso hacia
adelante consiste en presentar el vector correspondiente en las unidades de entrada,
dejando que la actividad discurra desde las unidades de entrada a través de los
diferentes niveles de la red hasta producir un vector de salida. En el paso hacia atrás
se propaga hacia atrás el valor de la derivada del error (se considera como error la
diferencia entre el vector de salida obtenido y el vector de salida que se debía haber
obtenido realmente). Este procedimiento permite que la red calcule, para cada uno de
sus pesos, el gradiente del error respecto a dicho peso, y modifique los valores en la
dirección adecuada para producir una disminución del valor del error. De esta forma
el aprendizaje funciona mediante la realización del gradiente descendente a lo largo
de la superficie del error sobre el espacio de pesos configurado por la red.
El procedimiento de Retropropagación del gradiente ha mostrado ser
capaz de aprender un gran número de representaciones interesantes en las unidades
no visibles. Ha sido utilizado con éxito para problemas como el paso de información a
través de canales con ancho de banda muy pequeño o la obtención de filtros óptimos
para discriminar entre señales muy similares contaminadas por ruido.
Los autores Sejnowski y Rosenberg [Sejnowski, 1986] realizaron un trabajo
muy interesante en el que se mostró cómo se podía realizar el proceso de
entrenamiento de una red que trabaja con Retropropagación del gradiente para
transformar adecuadamente los vectores de su entrada, que representan una
-26-
secuencia de letras, en vectores de salida representando su esquema fonético. Los
vectores de salida pueden utilizarse para alimentar un dispositivo de síntesis de voz,
obteniendo la secuencia hablada correspondiente al texto presentado en la entrada.
Los ejemplos utilizados en las pruebas de este sistema demostraron que la red era
capaz de extraer tanto las regularidades presentadas en los patrones de entrada,
como determinadas excepciones específicas que se encuentran en la pronunciación de
algunas palabras inglesas.
La Retropropagación del gradiente puede utilizarse también para obtener
las restricciones semánticas presentes en un conjunto de hechos. Este aspecto ha sido
estudiado por Geoffrey Hinton. Él trabajó con una red compuesta por cinco niveles de
unidades, a la que entrenó en el reconocimiento de 100 triadas relativos al
conocimiento sobre los miembros de dos familias de diferentes nacionalidades. Las
triadas eran del tipo (Victoria tiene-padre Christopher) o (Christopher tiene-esposa
Penélope), etc. Los vectores de entrada presentados al sistema representaban los dos
primeros términos de la triada, y los de salida el tercero de ellos. En las primeras
fases del entrenamiento los vectores de entrada no tenían excesivo sentido para la
red, puede decirse que los consideraba como símbolos arbitrarios. Sin embargo, tras
un cierto tiempo de entrenamiento, las triadas comenzaban a tener sentido para el
sistema, e incluso era capaz de generalizar el conocimiento adquirido para tratar
adecuadamente triadas en las que no había sido entrenado. Hinton observó también
mediante recopilación del conjunto de triadas que activaban cada una de las unidades
escondidas que éstas habían aprendido a representar ciertas propiedades que no se
habían utilizado en ningún patrón de entrada o salida, como "italiano" o "viejo".
El proceso de aprendizaje mediante Retropropagación del gradiente puede
verse, considerado localmente, como un simple proceso de ajuste de los pesos de las
conexiones. Pero, atendiendo al comportamiento global de la red, puede decirse que
ésta realiza aprendizaje estructural, creando términos nuevos para poder representar
-27-
regularidades en el dominio del problema. Este ejemplo puede servir también para
ilustrar el tipo de representación distribuida que se utiliza en el sistema, ya que la
representación interna de la red sobre cada una de las personas reflejadas en los
vectores se plasma como un diferente patrón de activación de las unidades
escondidas.
El método de Retropropagación del gradiente presenta muchas similitudes
con el algoritmo de Baum-Welch, diseñado para realizar ajuste de parámetros en
autómatas de estado finito con funcionamiento estocástico. Estos autómatas se
utilizan ampliamente como modelos generativos en sistemas de reconocimiento del
lenguaje hablado. La semejanza de los dos procedimientos ha causado una gran
extensión del uso de redes conexionistas con procedimiento de aprendizaje de
Propagación Hacia Atrás para este tipo de problemas de reconocimiento. Las
posibilidades de las redes conexionistas han suscitado gran interés, ya que pueden
resolver muchas de las limitaciones que presentaban los autómatas de estado finito.
El problema más grave lo constituía el gran número de nodos que se necesitan para
poder representar en un autómata la información sobre los diferentes sonidos (2n,
siendo n el número de bits necesarios para codificar la información). Los sistemas
conexionistas resuelven perfectamente este problema, ya que permiten la activación
de varias unidades a la vez.
2.6.2. PROC:RDIMIENTO AR-P
El procedimiento de aprendizaje AR-P fue descrito por Andy Barto
[Barto,1985]. Con él mostró la forma en la que redes compuestas por unidades
sencillas con funcionamiento estocástico son capaces de aprender a cooperar con
objeto de maximizar una señal crítica que depende del vector de salida y es, a su vez,
-28-
recibida por cada una de las unidades que componen la red. El método resulta mucho
más lento que el de propagación hacia atrás, principalmente por no utilizar
directamente el cálculo del gradiente para la modificación de los pesos. En lugar de
realizar este cálculo, trata de descubrir cuál es el efecto de la modificación de cada
peso de la red mediante experimentación con diferentes valores obtenidos variando el
peso original aleatoriamente. Sin embargo tiene la ventaja de no necesitar dos
pasadas diferentes para realizar el aprendizaje, por lo que parece acercarse más al
comportamiento real del cerebro humano.
2.7. SATISFACCIÓN DE RESTRICCIONES EN REDES PARALELAS
La consideración asumida hasta el momento de que la interpretación
perceptual (lo que se denomina en general reconocimiento) consiste en la
transformación de un cierto vector de entrada a través de sucesivos niveles de
unidades hasta obtener su adecuada clasificación es bastante restrictiva si se
consideran las tareas que se presentan con ejemplos reales. La mayoría de los
problemas de reconocimiento requieren la asimilación simultánea de varios niveles de
datos, y un resultado estructurado, en lugar de la obtención de una única categoría de
clasificación.
Para estas tareas es necesaria un red de tipo conexionista, pero que sea
capaz de almacenar la maraña de restricciones existentes en sus diferentes niveles,
tomándolas como condiciones límite del entorno y evolucionando hasta encontrar la
mejor solución que las cumpla. Se puede permitir que el sistema no cumpla la
totalidad de las restricciones para que pueda explorar todas las posibilidades
encontrando la verdadera solución óptima. Una buena forma de garantizar que la red,
una vez puesta en funcionamiento, llegará a un estado de reposo, consiste en
-29-
demostrar que existe una determinada función de costo cuyo valor disminuye con
cada modificación de los pesos de las conexiones. Hummel y Zucker [Hummel, 1983]
demostraron la existencia de tal función para el caso de redes que transmiten valores
y cuyas conexiones son simétricas, es decir, el peso es el mismo sea cual sea la
dirección considerada. Aproximadamente al mismo tiempo, Hopfield [Hopfield, 1982]
descubrió una función de coste, que denominó energía, aplicable a redes con unidades
binarias con un valor umbral y conexiones simétricas. Este planteamiento es el
utilizado en el sistema conexionista denominado Máquina de Boltzmann, que es el
objeto principal de este trabajo y será presentada ampliamente en sucesivos
capítulos.
2.8. APLICACIONES DE LOS SISTEMAS CONEXIONISTAS
Las redes conexionistas han sido aplicadas a muchos tipos de problemas
diferentes, que van desde el área del cálculo numérico hasta las más complejas tareas
de reconocimiento de formas. En este último campo han sido utilizadas especialmente
en labores de visión computacional, campo para el que parecen especialmente
adecuadas.
Hopfield, por ejemplo, demostró el poder computacional de la red que él
mismo diseñó utilizándola para resolver el conocido "Problema del Viajante". Algunos
autores han utilizado las redes paralelas de este tipo para resolver problemas
puramente simbólicos como el aprendizaje de relaciones, mientras que otros han
resuelto problemas tan complejos como el "Problema de Hitchcock" o tan comunes
como la resolución de sistemas de ecuaciones.
-30-
En definitiva, las arquitecturas conexionistas han demostrado su eficacia
en dominios muy diferentes, en los que son necesarias diferentes características. Este
hecho ha provocado la enorme popularidad que han adquirido estos sistemas en los
últimos años.
-3 1 -
3. LA MÁQUINA DH BOLTZMANN
3.1. INTRODUCCIÓN
La investigación sobre las redes basadas en componentes neuronales fue
abandonada por sus escasos resultados a finales de los años sesenta. La publicación
del libro de Minsky y Papert [Minsky, 1969] sobre el Perceptron fue la última
registrada sobre este tema. Sin embargo, no se han abandonado los estudios de la
estructura del cerebro humano, con los que se intenta descubrir cuál es el mecanismo
que hace de él un perfecto reconocedor de patrones.
Siguiendo las ideas primitivas de las redes neuronales, y teniendo en
cuenta los avances realizados tanto en el campo de la neurofisiología como en el de la
microelectrónica, se ha "resucitado" de nuevo la investigación sobre redes de estas
características. En la universidad estadounidense Carnegie-Mellon, un equipo de
investigadores, con Geoffrey Hinton a la cabeza, ha desarrollado un sistema basado
en los principios de las redes conexionistas, pero cuya eficiencia supera grandemente
la de otros sistemas del mismo tipo presentados hasta el momento. Ellos han llamado
a su sistema Máquina de Boltzmann, en honor de Ludwing Boltzmann, fundador de la
-32-
mecánica estadística. Más tarde podrá comprobarse que el nombre elegido se debe a
la fundamentación probabilística del funcionamiento del sistema.
La Máquina de Boltzmann trata de modelizar el funcionamiento del
cerebro humano, si bien es necesario tener en cuenta que algunas de sus
características difieren sustancialmente de la estructura real del mismo. Sin
embargo, el comportamiento global puede considerarse bastante semejante, ya que se
trata de una red neuronal capaz de realizar aprendizaje tras una fase de
entrenamiento.
Los autores definen el sistema como "una organización computacional
paralela, adecuada para la realización de tareas en las que es necesaria la
satisfacción de restricciones, interviniendo un gran núm ero de restricciones
denominadas "débiles'' (cuya satisfacción contribuye al éxito en la realización de la
tarea, y cuyo fallo no es excesivamente importante)".
3.2. ESTRUCTURA Y COMPORTAMIENTO DE LA MÁQUINA
DE BOLTZMANN
La Máquina de Boltzmann se compone de elementos de computación
primitivos denominados "unidades". Éstas se encuentran conectadas entre sí sin reglas
específicas mediante "uniones" bidireccionales. Todas las unidades de una red son
exactamente iguales, y el funcionamiento también es idéntico para todas ellas. Las
unidades se comportan como elementos binarios en cuanto a su estado. Es decir, en
cada instante, una unidad puede encontrarse en uno de sus dos posibles estados,
"activa" (on) o "inactiva" (off). El estado de una unidad cualquiera dentro de la red se
-33-
determina en función de los estados de las otras unidades conectadas a ella y del
"peso" de las respectivas uniones.
Cada unión tiene asociado un valor numérico, que es llamado su "peso".
Este valor es el mismo en las dos direcciones de la conexión, es decir, las uniones
entre las unidades de la red son simétricas (esta restricción, no cumplida por las
conexiones neuronales del cerebro humano, es bastante fuerte). Los pesos de las
uniones pueden tomar valores numéricos de cualquier signo.
Figura 2. Representación de una posible topología de una Máquina de
Boltzmann.
Según esta descripción, la Máquina de Boltzmann puede clasificarse como
un sistema conexionista que transmite valores, ya que las conexiones entre las
uniones no transmiten ni marcadores que puedan ser almacenados en las unidades, ni,
por supuesto ningún tipo de mensajes, ya sean simples o complejos. Las unidades que
componen una Máquina de Boltzmann sólo son capaces de realizar la suma aritmética
-34-
de los valores que reciben de otras unidades por medio de las conexiones, por lo que
se pueden considerar unidades de proceso muy simples.
Una red cuya topología se ajusta a la descrita para la Máquina de
Boltzmann puede ser la que muestra la figura 2. Como puede apreciarse en la figura,
no existe ningún t ipo de restricción en cuanto al número o configuración de las
uniones entre las distintas unidades.
El cálculo del estado de una unidad dentro de la red se realiza mediante el
procedimiento que se expone a continuación. Se considera que cada unidad posee un
valor umbral para pasar del estado inactivo al estado activo. Es decir, la unidad
estará en estado activo si la suma de los pesos de sus uniones con otras unidades
activas supera el valor umbral. En caso de que la suma no supere dicho valor, la
unidad se encontrará inactiva. Sin embargo, el comportamiento no es tan simple, ya
que los resultados obtenidos de esta forma no eran excesivamente satisfactorios. En
realidad, las unidades se comportan de forma probabilística. Este comportamiento
produce el mismo efecto que produciría un umbral no fijo, sino oscilante. La
oscilación del umbral vendría dada por el valor de la suma de los pesos; cuanto mayor
es el valor, mayor es la probabilidad de que la unidad pase al estado activo, que es lo
mismo que decir que ha disminuido el valor del umbral. De esta forma no puede
asegurarse que la misma entrada (los mismos pesos y las mismas unidades vecinas
activas) produzca la misma respuesta de forma determinista. Aunque no se conoce
con certeza el comportamiento de las neuronas del cerebro humano, sí parece estar
comprobado que no es determinista, por lo que cualquier mecanismo que pretenda
reproducir los patrones de funcionamiento del cerebro ha de tratar de evitar el
determinismo en la medida de lo posible.
Para modelizar el mundo real con este sistema, el significado que toma
cada uno de sus componentes es el siguiente:
-35-
- Una unidad en estado activo o inactivo significa que el sistema
acepta o rechaza, respectivamente, una hipótesis elemental (representada
por la unidad) sobre el conjunto del sistema.
- El peso de la unión entre dos unidades representa una restricción
débil entre dos hipótesis. Si el valor del peso es positivo significa que las
dos hipótesis representadas por las unidades conectadas "tienden a
soportar" o a reforzar alguna otra hipótesis. Es decir, que si las dos
hipótesis son aceptadas (las dos unidades están activas), la probabilidad de
que la tercera sea aceptada aumenta. Por el contrario, si el valor del peso
es negativo, significa que las dos hipótesis no deben ser aceptadas
simultáneamente.
Normalmente en el tratamiento de este tipo de redes se utiliza la
convención de considerar los estados de las unidades como cifras binarias. Es decir, el
estado activo se representa con el valor 1, y el estado inactivo con el valor O. De esta
forma, las combinaciones de los estados de las unidades de la red pueden codificarse
como números binarios o incluso como vectores del mismo tipo, permitiendo un
manejo más sencillo de las configuraciones globales de la red en cada instante.
En cuanto al tratamiento de la red como entidad global, algunos autores la
consideran incluida en el grupo de mecanismos de "caja negra" [Forsyth, 1986]. Estos
mecanismos presentan una pequeña parte visible, pero su estructura interna
permanece oculta, de forma que sólo es posible apreciar su comportamiento en
cuanto a los resultados obtenidos, pero no muestra cómo llega a obtenerlos. La
Máquina de Boltzmann se ajusta a esta estructura considerando parte de sus unidades
como unidades de entrada, otras como unidades de salida, y manteniendo el resto
como unidades escondidas, pertenecientes a la "caja negra". Todas esta unidades, sin
embargo, son del mismo tipo y se comportan de la misma forma. Con este
-36-
planteamiento la máquina se parece más a un mecanismo con el que se puede trabajar
y realizar modelizaciones mediante asignación explícita de los valores adecuados a
las unidades de entrada y salida.
La estructura de la Máquina de Boltzmann está muy relacionada con un
sistema descrito en el año 1982 por J.J. Hopfield [Hopfield, 1 982]. En este sistema
Hopfield asignaba a cada estado global de la red un valor numérico único, al que
denominó su "energía". La semejanza entre el sistema descrito por Hopfield y la red
ideada por Hinton, permite también asignar a los estados globales de la Máquina de
Boltzmann un valor de energía. Este valor depende de los estados de las unidades y de
los pesos de las uniones de acuerdo con la siguiente fórmula:
E = - "'""' w . . s . s . + "'""' 8 . s L_. IJ I J L_. ¡ ¡ i i
siendo:
Wij : peso de la unión entre las unidades i y j.
s¡ : valor binario correspondiente al estado de la unidad i; 1 si es
activa, O si es inactiva.
0¡ : umbral de la unidad i.
El significado de este valor global de una configuración de la red dada es
la medida en la que esa asignación de hipótesis (representadas por las unidades) no
cumple las restricciones implícitas en el dominio del problema (las restricciones están
representadas por la topología de la red y los pesos de las uniones que se hayan
establecido).
- 37-
Así pues, el funcionamiento de la red ante una determinada asignación de
valores a las unidades consideradas de entrada, ha de ir encaminado a modificar su
estructura interna (estados de las unidades y pesos de las conexiones), de forma que la
energía global de la red se minimice. Para ello, cada unidad elemental debe ser capaz
de comportarse de forma que contribuya a la minimización de la energía global de la
red.
Hopfield demostró en su trabajo que si se cumplen determinadas
condiciones, el sistema siempre evoluciona hasta alcanzar una situación de reposo en
la que el valor de la energía de la red es mínimo. Este mínimo no tiene por qué ser
necesariamente el mínimo global de la red, de hecho en la mayoría de los casos es
simplemente un mínimo local. Hopfield propuso un sencillo procedimiento para
encontrar una combinación de valores que constituyan un mínimo local del valor de la
energía. El procedimiento consiste en asignar a cada hipótesis (cada unidad), de sus
dos estados posibles, aquél que produzca el menor valor de la energía global, dado el
valor del resto de las hipótesis (el resto de las unidades de la red) en ese momento. Si
este proceso de decisión de estado es realizado por las unidades de la red de forma
asíncrona y se considera despreciable el tiempo de transmisión de los estados a través
de las conexiones, se alcanza un mínimo local de energía con toda seguridad.
Dado que las conexiones entre las unidades son simétricas, puede decirse
que la diferencia de energía global del sistema aceptando la hipótesis k (unidad k
activa) y rechazándola (unidad k inactiva), viene determinada de forma local por la
unidad k, independientemente del resto de las unidades de la red. El valor de esta
diferencia, denominado "hueco de energía" de la unidad k, se expresa mediante la
siguiente relación:
/::. Ek = 2 wki 8i - 8k i
-38-
donde los símbolos tienen el mismo significado que en la fórmula de la
energía escrita anteriormente.
Así pues, del estudio de esta expresión puede concluirse la sencilla regla
de funcionamiento para las unidades que ya se había presentado. Además queda
también demostrado que el uso de esta regla consigue minimizar la energía global de
la red. La regla de decisión es, pues, la siguiente: para minimizar la contribución de
una unidad a la energía global, ésta debe adoptar el estado activo si la entrada que
recibe del resto de las unidades (suma de los pesos de sus uniones con otras unidades
activas) supera el valor de su umbral; de lo contrario, debe adoptar el estado inactivo.
En este momento puede hacerse una consideración sobre los valores 8¡,
correspondientes a los umbrales de las unidades, que han aparecido en las ecuaciones
anteriores. Estos valores pueden ser eliminados debido al hecho de que el efecto
producido por 8¡ en la enegía global del sistema es idéntico y de sentido contrario al
efecto de una unión con peso -8¡ entre la unidad i y una unidad especial que, por
definición, se encuentre siempre en estado activo. Esta unidad especial, que puede
denominarse "unidad cierta", no es necesario que exista de forma real en la
composición de la red, sin embargo, es conveniente suponer su existencia a efectos de
simplificación de los cálculos. Esta simplificación se deriva del hecho de que la
existencia de la "unidad cierta" permite tratar el umbral de una unidad de la misma
forma que se tratan las uniones entre nodos, evitando así añadir un término al
sumatorio en las fórmulas. El valor -8¡ que se introduce como el peso de la unión
entre la unidad i y la unidad cierta se denomina "sesgo" de la unidad i.
Si se supone la existencia de la unidad cierta en cualquier Máquina de
Boltzmann, las ecuaciones que rigen la energía global de la red y el hueco de energía
de una unidad pueden expresarse de la siguiente forma:
-39-
E = - "" W . . S . S . L IJ 1 J i
Sin embargo, la seguridad de que el sistema alcanza siempre un mínimo
local no es suficiente para conseguir un mecanismo que pueda considerarse
modelizador del cerebro humano, y capaz de cierto tipo de aprendizaje. Las tareas en
las que es necesario satisfacer restricciones (aunque éstas sean en su mayoría débiles)
necesitan escapar de alguna manera de los mínimos locales, que significan soluciones
parciale, para poder encontrar la configuración que es el verdadero mínimo global,
es decir, la solución total.
Una forma de conseguir que el funcionamiento del sistema no lo conduzca
a detenerse en un mínimo local, permitiéndole encontrar diferentes estados de
equilibrio que constituyen mínimos locales hasta encontrar el mínimo global, es hacer
posible que la red pueda modificar su estado hacia una configuración de mayor
energía que la de partida. Con la regla de activación de las unidades que se ha
presentado anteriormente, la red pasaba siempre de estados de mayor energía a
estados de menor energía, pero nunca podía ocurrir lo contrario. De esta forma, si se
llega a un estado que es un mínimo local, la red no es capaz de salir de él porque para
ello necesitaría poder aumentar su energía en lugar de disminuirla.
Para conseguir este comportamiento se han revisado conceptos de los
sistemas termodinámicos, cuyo comportamiento en algunos aspectos es semejante al
de este tipo de redes. El algoritmo elegido se basa en el presentado por N. Metropolis
[Metropolis, 1953] concebido para estudiar las propiedades de los sistemas
termodinámicos. Según este algoritmo, puede asegurarse que la probabilidad de que el
estado de la unidad k sea activo, independientemente de su estado anterior es:
-40-
1 pk = ____ !:i._E_k_
( 1 + e -r)
siendo:
ó.Ek : hueco de energía correspondiente a la unidad k.
T : parámetro que en los sistemas termodinámicos es la temperatura.
En este caso es un parámetro que se comporta de la misma forma
que la temperatura en un sistema físico.
/ (\J
_/
\ ( 1 ( f\ I ···
j V
Figura 3. Representación de una superficie ondulada con mínimos locales
y un único mínimo global.
Por lo tanto, para mejorar el funcionamiento del sistema se disminuye su
determinismo haciendo que las unidades se comporten de forma probabilística. Para
entender el por qué de este comportamiento, puede utilizarse una analogía con un
sistema físico muy sencillo. Supóngase una bola, por ejemplo metálica, situada sobre
-4 1 -
una superficie ondulada como la de la figura 3. En ella existen diferentes lugares con
altura pequeña (mínimos), pero sólo uno de ellos es el que se encuentra más bajo que
los demás, es el mínimo global del sistema.
Si se deja caer la bola desde uno de los extremos, ésta recorrerá la
superficie cayendo en un mínimo local si éste se encuentra antes en su camino que el
mínimo global. Una vez situada en este punto, la bola no puede salir de él por sí
misma, por lo que nunca será capaz de alcanzar el mínimo global. Sin embargo, si se
agita fuertemente el conjunto, la bola comenzará a moverse aleatoriamente y tendrá
más probabilidad de conseguir saltar las barreras que se interponen entre su posición
y la del mínimo global. Si este proceso de agitación del sistema se realiza
convenientemente y con continuidad, el sistema alcanzará una situación denominada
"equilibrio térmico", en la cual la bola continuará desplazándose de un lugar a otro,
pero la probabilidad de que se encuentre en un lugar determinado de la superficie se
mantiene estable y sólo depende de la altura de la superficie en ese punto.
Además, en el equilibrio térmico también se cu mple que el logarit mo de la
probabilidad de encontrar la bola en dos posiciones diferentes de la superficie es
proporcional a la diferencia entre la energía de las dos posiciones. Esta propiedad fue
utilizada por Scott Kirpatrick [Kirpatrick, 1983] de IBM, con el nombre de "ruido
térmico" para conseguir evitar los mínimos locales en redes del tipo de las que se está
tratando.
Para introducir esta idea del "ruido térmico" en la Máquina de Boltzmann
sólo es necesario modificar la regla de decisión del estado de las unidades. Éstas
deben calcular la suma de los pesos de sus conexiones con otras unidades activas de la
misma forma que antes, pero en vez de activarse siempre que este valor es mayor que
su umbral y desactivarse si es menor, deben utilizar la regla probabilística presentada
anteriormente. Esta regla de decisión es aplicable a una partícula con dos estados de
energía posibles. Si se tuviera un sistema compuesto por este tipo de partículas
-42-
conectadas entre sí y se so metiera a alta te mperatura dej ándolo enfr iar
progresivamente, llegaría a alcanzar el equilibrio térmico y durante el proceso de
enfriado, la probabilidad de que el sistema se encontrase en un determinado estado
seguiría la distribución de Boltzmann. Aplicando de nuevo esta analogía física a la red
conexionista presentada, se puede suponer que si las unidades individuales funcionan
de acuerdo con la fórmula de probabilidad vista, partiendo de un estado global
arbitrario de alta energía, la red llegará a alcanzar el estado de "equilibrio térmico",
y la probabilidad relativa de dos estados seguirá la distribución de Boltzmann, cuya
expresión es:
siendo:
P0 : probabilidad de que el sistema se encuentre en el estado global
a.
E0 : energía del estado global a de la red.
La utilización de esta fórmula en el desarrollo del sistema es la causa del
nombre de Máquina de Boltzmann asignado a la red.
La distribución de Bolt z m ann posee c iertas propiedades bastante
interesantes como las siguientes:
- Es una relación muy sencilla y fácil de manejar.
-43-
- La diferencia de los logaritmos de las probabilidades de dos
estados es igual a la diferencia entre las energías de dichos estados
(fijada la temperatura al valor 1).
- La distribución de equilibrio es independiente del camino seguido
hasta alcanzar el estado de equilibrio.
- Está íntimamente relacionada con la Teoría de la Información.
A bajas temperaturas el sistema tiene una fuerte tendencia a situarse en
estados de baja energía, mientras que con valores de T altos la tendencia es bastante
más pequeña. Sin embargo, si la temperatura es alta, el equilibrio se alcanza con
mayor rapidez que si es baja, situación en la que se puede tardar mucho tiempo en
llegar a la situación de equilibrio. Para aprovechar esta circunstancia, se comienza
con un valor de temperatura alto, y se reduce progresivamente, observando los
diferentes estados por los que va pasando la red hasta estabilizarse. Este proceso se
corresponde con el templado de un sistema físico real (si mulated annealing).
A altas temperaturas la red tiende a ignorar las diferencias de energía
pequeñas y alcanza rápidamente la situación de equilibrio. La situación obtenida
puede considerarse un buen míni mo para el nivel más general y tosco de la estructura
global del sistema. Es decir, en este primer momento la configuración de la red
refleja la estructura del entorno, pero de forma muy general y poco afinada. A
medida que disminuye la temperatura, la red se hace más sensible a las diferencias de
energía y evolucionará hasta encontrar un mínimo mejor dentro de la escala de
afinado que había conseguido con el mínimo anteriormente encontrado. Este
procedimiento de búsqueda de la estructura tosca antes de depurar el resultado para
conseguir una mayor aproxi mación a la estructura real es muy útil en problemas en
los que han de satisfacerse una gran cantidad de restricciones débiles. Sin e mbargo, el
-44-
procedimiento fracasa en los casos en los que la solución se encuentra en un mínimo
muy profundo y aislado.
3.3. REPRESENTACIÓN DEL CONOCIMIENTO EN LA MÁQUNA
DE BOLTZMANN
Hasta el momento se ha hablado de la Máquina de Boltzmann en cuanto a
su estructura y funcionamiento, pero no hay que olvidar que es un mecanismo que se
ha de utilizar para resolver problemas. Este hecho plantea una importante cuestión
¿cómo se representan en una Máquina de Boltzmann los conceptos para los que
usualmente utilizamos palabras?. Ya se han estudiado en capítulos anteriores las dos
principales formas de representación, local o distribuida. Ambas presentan ventajas e
inconvenientes, y ambas son válidas para cualquier arquitectura conexionista como la
Máquina de Boltzmann.
En una Máquina de Boltzmann una representación distribuida corresponde
a un mínimo de la energía de la red. Por ello, el problema de crear un conjunto de
representaciones distribuidas es equivalente al problema de crear una "arquitectura
de energías". El algoritmo de aprendizaje que se ha diseñado para esta arquitectura es
capaz de resolver este proble ma, por lo que se considera más adecuada la
representación distribuida para la Máquina de Boltzmann. El carácter difuso que
confiere a cada pieza de conocimiento este tipo de representación no es un problema
serio, ya que la simplicidad matemática de la distribución de probabilidad sobre la
que se fundamenta el algoritmo hace posible manej ar todos los pesos de las
conexiones distribuidos a lo largo de la red de forma coherente, basándose sólo en
información puramente local.
-45-
4. APRENDIZAJE
4.1. INTRODUCCIÓN
La capacidad de aprender las consecuencias de las propias acciones es
fundamental para el comportamiento adapatativo de todos los organismos. La mayor
parte del estudio del comportamiento inteligente puede ser caracterizado como el
estudio de la capacidad para aprender acerca de las contingencias del mundo.
Hay poca distinción formal entre aprendizaje y memoria. Los estudios del
aprendizaje tienden a subrayar primariamente la adquisición de conocim iento.
Claramente ambos están tan interrelacionados que el estudio de uno debe estar ligado
necesariamente al estudio del otro. Es necesario analizar cómo se adquiere el
conocimiento en el interior del sistema de la me moria, es decir, cómo se establecen
las relaciones existentes entre las situaciones del entorno, las acciones del ser
humano y los efectos resultantes.
Algunos estudios han demostrado que cuando una persona aprende algo se
establecen nuevas vías en la red nerviosa del cerebro. Entre las ramificaciones
adyacentes de las células nerviosas se produce la sinapsis, que transm ite la
información. Es decir, en principio existen pocas conexiones dendríticas, pero a
-46-
medida que se aprenden cosas se forman otras conexiones, permitiendo la sinapsis y
creando así vías para la transmisión de información. Por lo tanto, puede decirse que
el aprendizaje transforma la configuración y estructura del cerebro.
Las arquitecturas conexionistas pretenden simular este comportamiento
del cerebro, realizando aprendizaje mediante modificación de su estructura. La
mayoría de estas arquitecturas hacen uso de algorit mos que conducen la red a
situaciones en las que su estructura modeliza la del entorno que se les presenta.
4.2. APRENDIZAJE EN LA MÁQUINA DE BOLTZMANN
Uno de los principales aspectos de la Máquina de Boltzmann es que su
formulación permite la construcción de un algorit mo de aprendizaje independiente del
dominio de aplicación. Si se retoma la idea de la máquina como una caja negra entre
unas unidades externas de entrada y salida, es fácil imaginar cómo este mecanismo
puede utilizarse en tareas como las que se denominan de "aprendizaje" en máquinas
convencionales.
Las unidades de entrada se fijan con valores determinados, a la vez que se
fijan también los correspondientes valores de las unidades de salida. Una vez hecho
esto se deja que el sistema evolucione hasta llegar a la situación de equilibrio. Si se
repite este proceso con diferentes patrones de entrada y sus respectivos valores de
salida, finalmente la máquina habrá modificado sus valores internos capturando las
regularidades existentes en los sucesivos patrones presentados. De esta forma, si se le
presenta un nuevo patrón en las unidades de entrada y se deja que se estabilice, las
unidades de salida quedarán con los valores correspondientes. Es decir, la red es
-47-
"entrenada" para "aprender" a obtener las salidas adecuadas para los patrones que se
le presentan en las unidades de entrada.
Este aprendizaje es realizado por la red mediante la modificación de los
valores de los pesos que tienen asignadas las uniones entre unidades. La dificultad se
reduce a la búsqueda de un algoritmo que consiga realizar tales modificaciones
automáticamente, haciendo posible la adaptación del sistema a la estructura del
entorno que le es presentado.
La búsqueda de algoritmos de este tipo comenzó con el estudio de las
redes conexionistas, y no puede decirse que tuviera mucho éxito. En la literatura
aparecen varios de ellos, pero su eficacia como verdaderos algoritmos de aprendizaje
es bastante cuestionable. Normalmente consistían en meras generalizaciones de
algorit mos de éxito probado con redes simples. El argumento más utilizado en contra
de esta generalización de algortimos de aprendizaje para estructuras simples a redes
más complejas es precisamente esta complej idad. Es decir, se argumenta que para
que una red sea capaz de realizar tareas interesantes debe contener ele mentos no
lineales y cuyo comportamiento no esté directamente determinado por la entrada. El
proble ma principal entonces en este t ipo de redes es que cuando funcionan
incorrectamente, es prácticamente imposible encontrar cuál de los pesos de las
conexiones es el que no es correcto. Este problema fue llamado de "asignación de
confianza", y causó duras críticas hacia las arquitecturas conexionistas.
El problema de asignación de confianza fue la causa de la desacreditación
del Perceptron, ya que, pese a la sólida fundamentación matemática de su teorema de
convergencia, tampoco pudo ser generalizado para redes en las que la tarea no
especificase directamente la forma en la que deben ser utilizadas cada una de las
unidades.
-48-
La formulación de la Máquina de Boltzmann resuelve el problema de
asignación de confianza. Utilizando la regla de decisión probabilística que ya se ha
presentado, y dejando que la red evolucione hasta alcanzar el equilibrio térmico a una
determinada temperatura, se obtiene, como ya se ha visto, una relación muy simple
entre la probabilidad de un estado y su energía. Si se supone una red que evoluciona
libremente sin ningún valor fijado en sus unidades de entrada y salida, la relación
puede expresarse de la siguiente forma:
donde:
S L n Pª
= .!.. [sª Sª - p' l s W . . T ! J !J j !J
S¡ª : estado de la unidad i en el estado global a de la red.
p iJ : probabilidad de que las unidades y j estén activas cuando el
sistema se encuentre en equilibrio.
Esta fórmula permite manejar los logaritmos de las probabilidades de los
estados globales de la red. Por lo tanto, si se especifican directamente las
probabilidades Pa requeridas para cada estado global a, existe un modo directo de que
el sistema converja a un conjunto de pesos de sus uniones que consiga esas
probabilidades. Si bien es cierto que existe este método, también es cierto que no es
posible asegurar que tal conjunto de pesos exista, contrariedad que es necesario tener
en cuenta. Sin embargo, esta forma de aprendizaje no es excesivamente interesante,
ya que han de darse de antemano las probabilidades necesarias para los estados
globales completos. Es decir, que el entorno exterior al sistema es el que decide qué
representación interna debe ser utilizada. Evidentemente, los proble mas interesantes
no aparecen en estos casos sino en los casos en los que el entorno contiene
-49-
restricciones i mplícitas de alto nivel. En tales casos, la red ha de elegir las
representaciones internas adecuadas para poder expresar las restricciones del entorno
de forma eficiente. Este es el tipo de aprendizaje que resulta verdaderamente
interesante.
Una vez constatada la posibilidad de que un sistema como la Máquina de
Boltzmann aprenda, es necesario encontrar la forma de representar la estructura
externa que se desea modelizar, cuestión no trivial en una red conexionista. Ya se ha
presentado la división de las unidades de la máquina en tipos según su situación,
entrada, salida o intermedias. La división puede expresarse también en dos tipos de
unidades, un conjunto no vacío de unidades visibles, y un conjunto, que puede estar
vacío, de unidades "escondidas" o no visibles. Las unidades visibles son las que actúan
como interface entre el sistema y su entorno; por ejemplo, durante la fase de
entrenamiento, los estados de estas unidades son fijados desde el exterior. Las
unidades no visibles no son accesibles desde el exterior. Su existencia se justifica para
representar o modelizar restricciones inherentes a los patrones de entrada que no
pueden representarse directamente conectando las unidades de entrada y las de
salida. Es decir, si existen restricciones de alto nivel en la estructura del entorno que
se quiere modelizar, la utilización de unidades no visibles para representar estas
hipótesis reduce el nivel de complejidad de todo el conjunto de unidades del sistema,
simplificando su funcionamiento y, sobre todo su inteligibilidad.
Considerando los dos posibles estados de cada unidad con los valores
binarios O y 1, se puede denominar "vector" a la recopilación de los estados de cada
una de las unidades de entrada o salida. Esta notación es la que se va a utilizar a
partir de este momento.
Durante el proceso de aprendizaje de la máquina se asume que cada uno
de los vectores de entrada que se asigna desde el exterior se mantiene fijo por el
tiempo necesario para permitir que la red alcance la situación de equilibrio térmico.
- 50-
Además, cualquier estructura que exista en las secuencia de vectores de entrada que
se presentan sucesivamente al sistema será ignorada por éste. De esta forma, la
estructura de un entorno concreto puede especificarse mediante la distribución de
probabilidad sobre los 2n posibles estados diferentes de las n unidades visibles de la
red. Si la red consigue ajustar su estructura interna de manera que consiga la misma
distribución de probabilidad sobre los 2n estados posibles cuando se la deja
evolucionar libremente hasta la situación de equilibrio térmico con todas las unidades
visibles no fijadas (sin vector de entrada del exterior), entonces puede decirse que la
red ha conseguido modelizar perfectamente el entorno, que es un modelo perfecto de
su estructura.
La obtención de un modelo perfecto que se comporte exactamente igual
que el entorno en el que ha sido entrenado es prácticamente imposible. Esto es debido
a la insuficiencia del número de pesos y de sesgos entre las unidades visibles y las no
visibles para poder representar las 2n probabilidades de los estados de las unidades
visibles. Sin embargo, aunque no se alcance la perfección, si las unidades no visibles
de la red son capaces de capturar las regularidades que existen en el entorno, puede
conseguirse una buena aproxi mación del sistema a las probabilidades reales del
entorno.
Para poder cuantificar la diferencia existente entre el modelo interno
conseguido por la red y el modelo real presentado, puede utilizarse la siguiente
fórmula, basada en conceptos de la Teoría de la Información:
donde:
P (V ) G = ) P(V ) Ln --ª - ª P' (V )
a a
- 5 1 -
P(V 0) : probabilidad de que las unidades visibles de la red se
encuentren configurando el estado a de la red, cuando sus estados
están determinados por el entorno.
P ' (V 0) : probabilidad de que las unidades visibles de la red se
encuentren configurando el estado a de la red, cuando ésta
evoluciona libremente sin entrada fijada por el entorno.
Esta medida G, suele denominarse en algunas ocasiones divergencia
asimétrica de la ganancia de información. G mide en realidad la distancia existente
entre la distribución dada por P' (V 0) y la dada por P(V 0) . G vale cero cuando las
distribuciones son idénticas. Si no los son, su valor es un número real positivo.
Estudiando un poco la expresión de G se puede observar que el término
P '(V 0) depende de los pesos de las uniones entre las unidades, por lo tanto, el valor de
G puede variarse modificando los valores de los pesos dentro de la red. Para obtener
el valor del gradiente descendente en G, es necesario conocer la expresión de la
derivada parcial de G respecto a cada uno de los pesos. Esta expresión, que es muy
complicada en la mayoría de las redes de este tipo, resulta muy sencilla de calcular
en una Máquina de Boltzmann. La sencillez se debe principalmente a la simplicidad de
las relaciones existentes entre los pesos y las probabilidades de los estados en la
situación de equilibrio térmico. Como las probabilidades de los estados globales
vienen determinadas por las energías de los estados, y ést as a su vez vienen
determinadas por los pesos de las uniones, se puede obtener fácilmente la expresión
de la derivada parcial de G respecto a los pesos. Ésta es:
oG -- = -ow . . IJ
-52-
donde:
PiJ : probabilidad media de que las unidades i y j estén activas cuando
las unidades visibles están fijadas por el entorno.
p 'iJ : probabilidad media de que las unidades i y j estén activas
cuando la red evoluciona libremente sin asignación de estados del
entorno.
Ambos valores de probabilidad han de ser medidos en estado de equilibrio
de la red. Es interesante apreciar la semejanza entre esta ecuación y la ecuación que
representa la derivada parcial del logaritmo de la probabilidad de un estado global de
la red.
De la observación de esta ecuación es fácil deducir lo que hay que hacer
para minimizar G. Como puede verse, G depende de los valores PiJ y P iJ cuando la red
está en equilibrio. Para conseguir disminuir el valor de G es suficiente con modificar
cada peso en una cantidad proporcional a la diferencia entre los valores de las dos
probabilidades. Es decir, de la forma que se indica en la siguiente expresión:
6.wiJ = B ( P¡J - p'iJ )
donde B es un factor de escala.
Esta es, pues, la modificación que debe realizarse en los pesos de las
uniones para conseguir minimizar el valor de G, es decir, para reducir al mínimo la
diferencia entre el modelo conseguido por la red y el modelo real del entorno. Pese a
lo que pueda pensarse, hay que observar que la modificación de los pesos, según esta
expresión, depende exclusivamente de información local de cada unión, no de
información global de la red. El peso de una unión se modifica dependiendo sólo de los
- 53 -
valores de las dos unidades que conecta, y sin embargo, la modificación produce una
mejora en la medida global de adecuación, G.
Incluso con esta regla, sigue estando presente el problema de los mínimos
locales. Si la red estuviera compuesta solamente por unidades visibles conectadas
directamente entre sí (sin unidades no visibles), el espacio de valores de G sería
cóncavo, por lo que el gradiente no podría verse atrapado en mínimos locales. Si la
red contiene unidades escondidas, las diferentes formas de utilizar estas unidades
para representar las restricciones de alto nivel implícitas en la distribución de
probabilidad de los vectores del entorno pueden producir mínimos locales, con lo que
no se ha resuelto el proble ma.
El significado del proceso de minimización de G es el siguiente. Cuando se
haya conseguido el valor mínimo de G, la red habrá captado, tanto como le haya sido
posible, las regularidades presentes en el entorno. Sin embargo, también puede
interpretarse de otra forma; minimizando G, la red consigue encontrar el conjunto de
pesos de las uniones que puede ser capaz de generar el conjunto de vectores del
entorno. Se ha demostrado la equivalencia matemática entre la maxi mización de esta
relación de pesos y la minimización del valor de G .
4.3. ALGORITMO DE APRENDIZAJE
El presente proceso constituye la justificación matemática del algortimo
de aprendizaje utilizado en la Máquina de Boltzmann, cuya expresión es la siguiente:
Fase 1
- 54-
la. Asignar el patrón de entrenamiento a las unidades de
entrada, y el patrón de la respuesta a las unidades de salida.
lb. Dejar que la red evolucione hasta alcanzar la situación
de equilibrio.
le. Aumentar en una cantidad pequeña, o, el peso de la
conexión entre todos los pares de unidades que se encuentren
simultáneamente activas en la situación de equilibrio.
Fase 2
2a. Quitar el patrón de las unidades de salida, es decir,
liberarlas, pero dejar el patrón en las unidades de entrada.
2b. Dejar que la red funcione y llegue al equilibrio de nuevo.
2c. Decrementar en la misma pequeña cantidad o el peso de
la conexión entre todos los pares de unidades que se
encuentren simultáneamente activas.
Estas dos fases deben repetirse tantas veces como sea necesario hasta que
se consiga que la red obtenga los valores adecuados de las unidades de salida en la
fase 2. Es decir, las fases se repiten hasta que la red es capaz de dar la respuesta
correcta cuando funciona con las salidas libres.
Este algoritmo de aprendizaje tiene una clara relación con un proceso
estudiado por los invest igadores Crick y Mitchison [Crick, 1983] sobre el
funcionamiento del cerebro de los mamíferos. Su teoría presenta lo que ellos
denominan "desaprendizaje", un proceso de aprendizaje inverso que se produce en la
fase REM del sueño de los mamíferos. En esta fase se registra un estado de
-55-
excitación aleatoria en el cerebro, que le per mite funcionar l i br e m ente ,
produciéndose modificaciones en las sinapsis que disminuyen la probabilidad de los
estados ilegítimos. Cada fase del algortimo de aprendizaje simula un procedimiento
diferente, la fase 1 sería el procedi miento de aprendizaje , y la fase 2 el
procedi miento de "desaprendizaje" anteriormente descrito.
El comportamiento y la eficacia del algorit mo están determinadas por los
valores de los parámetros que intervienen en su formulación. Entre ellos hay que
destacar la importancia de 8 , que determina el tamaño de cada paso seguido en la
minimización de G. También tiene gran importancia el valor de los tiempos en los que
se esti man los valores de las probabilidades Pij y p 'ij· La elección adecuada de estos
valores no es fácil de realizar, y no existen prácticamente bases matemáticas que
permitan determinarlos. Por este motivo, los valores son elegidos en base a resultados
experimentales obtenidos mediante ensayo de diferentes valores concretos.
También existen problemas relacionados con la estimación de los valores
de Pij y p ii, ya que puede introducirse algún tipo de ruido en estas estimaciones,
llevando a pasos erróneos en la minimización del valor de G. Este efecto causado por
el ruido puede, sin embargo, disminuirse utilizando un valor pequeño de 8 o también
obteniendo las estimaciones de Pij y p ij mediante la recopilación de datos estadísticos
durante un tiempo suficientemente grande.
Una forma de asegurar que la red se acerque sie mpre al estado de
equilibrio consiste en mantener los pesos de las uniones en valores pequeños.
Pearlmutter ha demostrado que el aprendizaje funciona mucho mejor si se hacen
disminuir constantemente los pesos, además de modificarlos mediante el algorit mo de
aprendizaje. Debe hacerse disminuir cada peso de forma continua hacia cero con una
velocidad proporcional al valor absoluto del peso. Este proceso hace que los pesos
tengan valores pequef\os y conduce a la red a una situación relativamente estable en
la que la velocidad de decrecimiento del valor de los pesos se equilibra con el valor de
-56-
la derivada parcial de G respecto a los pesos. De esta forma, el valor absoluto de cada
peso mide la i mportancia de éste en la modelización de la estructura del entorno.
Sin embargo, el procedimiento de decrecimiento de pesos presenta ciertas
características no deseables. La obligación de mantener los pesos en valores pequeños
imposibilita a la red para conseguir mínimos de energía muy profundos. Esto significa
que la red comete una gran cantidad de errores graves en los casos en los que el·
entorno consta de vectores bastante parecidos, pero con probabilidades de aparición
muy diferentes. Además, en tales casos los errores son imposibles de evitar. Si no se
desea eliminar este proceso de disminución de los pesos, puede conseguirse que la red
funcione con un rendimiento mejor dejándola evolucionar con valores de temperatura
(T) más bajos. Si bien con ello se consiguen menos errores en la modelización, el
aprendizaje empeora significativamente debido a la dificultad para alcanzar el
equilibrio con valores pequeños del parámetro T.
En la experimentación con la Máquina de Boltzmann se encontró además
otro problema; el caso en que sólo son válidas cierto nú mero de combinaciones de las
unidades visibles, no teniendo vector de salida correspondiente el resto de ellas. En
este caso hay que suponer que los vectores que no se van a presentar tienen
probabilidad de ocurrencia cero. Con la formulación dada para la M áquina de
Boltzmann es fácil comprobar que la única forma de que se asegure que ciertos
estados nunca van a darse, es que dichos estados tengan una energía infinitamente
grande. También es fácil darse cuenta de que para que un estado tenga energía
infinitamente grande, necesita que los valores de los pesos de las uniones sean
también infinitamente grandes.
La utilización de valores infinitamente grandes plant ea bast antes
problemas, por lo que hay que tratar de evitar que aparezcan. Esto se ha conseguido
con los denominados vectores de entrada "ruidosos". Estos vectores de entrada se
obtienen sometiendo los vectores correctos a un proceso en el que se modifica el
-57-
valor de alguno de sus elementos, pero la probabilidad de que esto ocurra es pequeña.
Si se mantiene el ruido en ciertos límites, los vectores serán los correctos la mayoría
de las veces, pero sin embargo, es posible que aparezca cualquier combinación de
estados de las unidades de entrada, con lo que no es necesario el uso de valores
infinitamente grandes de los pesos de las uniones. Este método se ha utilizado en la
mayor parte de los ejemplos realizados por el equipo de Carnegie-Mellon, dando
buenos resultados. Sin embargo, parecen no estar totalmente satisfechos con su
funcionamiento, y continúan buscando otros métodos más adecuados.
4.4. CRÍTICA DE LOS PROCEDIMIENTOS DE APRENDIZAJE
El problema principal de todos los procedimientos de aprendizaj e
utilizados hasta el momento para redes multinivel, incluido el que se ha presentado
para la Máquina de Boltzmann, es su extrema lentitud. Esta lentitud no se produce
sólo en problemas complejos, sino que ya existe con problemas sumamente sencillos.
El inconveniente de tender a estacionarse en un mínimo local que presentan todos los
procedimientos de disminución del gradiente, es en la práctica un problema menor,
comparado con el de la velocidad de proceso. La lentitud se debe a que en cada
momento sólo se tiene información sobre un punto concreto, y no puede averiguarse
en qué forma se curvará la superficie de error para poder adelantar el cálculo. En
espacios multidimensionales la superficie de error contiene gargantas con una gran
curvatura. Cada pequeño paso del algoritmo hace interminable la llegada al mínimo
situado en una garganta, pero si se utilizan pasos muy grandes la divergencia con la
superficie real es demasiado grande para que el proceso pueda considerarse válido.
Sólo cabe esperar una sustancial mejora en la tecnología hardware que
permita aumentar la velocidad del aprendizaje. Sin embargo, parece que sólo una
- 58-
mejora no sería suficiente, siendo necesario modificar de alguna forma los algoritmos
en sí mismos. Una solución puede ser la obtención de procedi m ientos que se
encarguen de dividir las redes conexionistas en módulos de tamaño reducido que
puedan aprender de forma independiente. Con ello, cada módulo resultaría más rápido
en su aprendizaje debido a la reducción de tamaño, y el conjunto funcionaría con
mayor velocidad, resolviéndose en parte el problema y permitiendo la aplicación de
estos sistemas a tareas hasta el momento inasequibles por su gran tamaño.
-59-
5. EJEMPLO DE APRENDIZAJE EN UNA MÁQUINA DE BOLTZMANN
5.1. EL PROBLEMA DEL CODIFICADOR
El problema del codificador fue presentado por pri mera vez por el
investigador Sanjaya Addanki. Constituye una simple abstracción de la tarea
recursiva de comunicación de información entre los componentes de una red paralela.
Los creadores de la Máquina de Boltzmann consideraron útil e interesante probar la
eficacia de su algoritmo de aprendizaje con este problema, ya que se conoce cuál es
la solución, pero no es un trabajo trivial encontrarla.
La formulación explícita del proble ma es la que se m u estra a
continuación. Dos grupos de unidades visibles representan dos sistemas separados que
desean comunicarse sus estados. Llamemos a los dos conjuntos V1 y V2. Cada uno de
los conjuntos contiene v unidades. Los conjuntos no están conectados directamente,
sino por medio de un conjunto de h unidades no visibles, este conjuto se llamará H. Se
da la circunstancia de que el número de unidades no visibles, h, es menor que el
número de unidades de los conjuntos Vi. De esta forma, las unidades no visibles
pueden representar un cuello de botella a través del cual ha de transmitirse la
información.
-60-
Para simplificar el proble ma se considera que en cada instante sólo puede
estar activa una de las unidades de las v de cada grupo. Con esta restricción se
reduce el número de estados posibles para cada conjunto, de 2v a v. Esta reducción es
conveniente dada la limitación en la velocidad del algoritmo debido al uso de una
máquina secuencial (un computador convencional) para modelizar el comportamiento
de una máquina de proceso paralelo en la que los cambios se producen de forma
asíncrona y simultánea.
Para permitir la comunicación entre los dos grupos de unidades visibles,
debe cumplirse la relación h 2!: log2 v (relación evidente según la Teoría de la
Información). El grupo de trabajo realizó simulaciones para el caso extremo (h =
log2v) y para otros casos en los que la relación se satisfacía. En todos ellos se utilizó
como entorno para la máquina un conjunto de v vectores de longitud 2 v cuya
aparición era equiprobable. Cada uno de los vectores especificaba un estado en el que
estaban activas una unidad de V1 y la correspondiente de V2, manteniéndose todas las
demás inactivas.
La topología interna de la red se realizó de forma que todas las unidades
visibles estuvieran completamente conectadas entre sí y con las unidades de H, pero
las unidades no visibles no estaban completamente conectadas entre ellas.
Para comenzar las simulaciones se utilizaron pequeños ejemplos del
codificador, como el 4-2-4 (esta notación ha de entenderse de la siguiente forma: el
primer número identifica el número de unidades visibles de uno de los grupos, es
decir, v; el segundo número identifica el número de unidades no visibles, es decir, h.
El tercer número es reiterativo, ya que los dos grupos de unidades visibles tienen el
mismo nú mero de unidades por definición del problema, pero se incluye por la
simetría que confiere a la expresión). Posteriormente, tras la experiencia con estos
-6 1 -
casos se simularon codificadores de mayor magnitud, hasta el codificador de 40-10-
40.
La estructura de la red para el codificador 4-2-4 podría ser la que se
muestra en la figura 4.
Figura 4. Posible estructura de la red para el codificador 4-2-4.
Para la simulación del codificador 4-2-4 se utilizó el siguiente ciclo de
funcionamiento:
l. Estimación de Pii : cada uno de los vectores patrón se asigna a las
unidades visibles. Se dejaba funcionar la red hasta llegar a la
situación de equilibrio dos veces. Una vez alcanzada esta situación
se tomaban datos estadísticos sobre la frecuencia en la que los pares
de unidades se activaban al mismo tiempo. Se utilizó la técnica de
los vectores "ruidosos" para evitar valores muy grandes de los pesos,
ya que no se utilizan los 2 v posibles estados de entrada. Los
resultados de las estadísticas fueron: cada bit activo de un vector
asignado era convertido en un bit inactivo con una probabilidad de
-62-
0 . 1 5 , y cada bit inactivo era convertido en activo con una
probabilidad de 0.05.
2. Estimación de p ij : la red se dejó funcionar sin asignación de
vectores de entrada a un valor del parámetro T igual a 1 O hasta que
alcanzó la situación de equilibrio. El proceso se repitió varias veces,
obteniéndose al final estimaciones de la misma forma que se hizo
con Pij•
3. Actualización de los pesos: todos los pesos de las uniones se
incre ment aron o decre mentaron en una cant idad fij a de 2 ,
determinándose el signo del incremento utilizando el signo de la
diferencia (pii - p ij ).
Para cada proceso de evolución de la red hacia el estado de equilibrio
todas las unidades no visibles tomaban sus estados de forma aleatoria con igual
probabilidad para el estado activo e inactivo. Esta situación se corresponde con la
subida de temperatura del sistema (puede considerarse análogo a au mentar la
temperatura hasta el valor infinito). Después se dejó evolucionar el sistema dos veces
con T=20, dos veces con T=1 5, dos veces con T= 12 y cuatro veces con T=lO. Tras este
proceso de "enfriado", se consideró que el sistema había alcanzado el equilibrio, y se
tomaron valores estadísticos durante 10 unidades de tiempo con T=l O.
En el comportamiento del codificador se observaron tres fases diferentes
en la búsqueda del mínimo global de G. La ocurrencia de estas fases se mostró
relativamente insensible a los valores de los parámetros utilizados. La primera fase
comienza con todos los valores de los pesos iguales a cero (situación inicial de la red),
y se caracteriza por el desarrollo de pesos negativos en la mayor parte de las uniones
de la red. En la segunda fase, las unidades no visibles comienzan a tomar valores
positivos en los pesos de sus conexiones con algunas de las unidades visibles,
-63-
observándose una clara tendencia a mantener simetría entre los signos y las
magnitudes de una conexión con una unidad de V1 y con la correspondiente de V2.
Esta fase termina cuando todas las unidades no visibles tienen pesos significativos en
sus conexiones con cada una de las unidades de V1, y pesos análogos en cada una de
sus conexiones con las unidades de V2.
La tercera fase es la más larga de todas. En ella el algoritmo de
aprendizaje resuelve los conflictos planteados y consigue llegar al valor del mínimo
global.
En los diferentes ejemplos de codificadores utilizados después, el
comportamiento del sistema era exactamente el mismo, variando sólo la velocidad
con la que se alcanzaba la solución y el número de iteraciones necesarias para ello.
5.2. COMUNICACIÓN DE INFORMACIÓN ENTRE MÓDULOS
El problema del codificador y su resolución mediante una Máquina de
Boltzmann sugiere un método para realizar la comunicación de símbolos entre los
componentes de una red computacional paralela. En 1 982 Feldman y Ballard
[Feldman, 1982] se ocuparon de este problema y propusieron dos métodos posibles
para la realización de esta tarea. Ellos trabajaban sobre un sistema de percepción
compuesto por dos módulos principales, el sistema de percepción de imágenes y el
sistema de generación de lenguaje hablado. Para describir los métodos utilizaron el
ejemplo de la transmisión del concepto "manzana agusanada" desde el lugar en el que
es reconocido en el sistema de percepción hasta el lugar en el que puede ser generada
la frase en el sistema de habla.
-64-
El primer método de comunicación parte de la codificación de la
información perceptual en un conjunto de símbolos. Luego estos símbolos son enviados
en forma de mensajes al sistema de habla, que se encarga de decodificarlos de una
forma adecuada para obtener la pronunciación de las palabras que componen la frase.
Para poder utilizar este método la red debe disponer de un conjunto de líneas de
comunicación de propósito general, análogas al bus de un computador convencional,
que sirvan de medio de transmisión de los mensajes desde el sistema de visión al
sistema de habla. Este método presenta los siguientes problemas, que fueron descritos
también por Feldman y Ballard:
- Los mensajes complejos no pueden ser transmitidos de una vez,
sino que deben transmitirse de forma secuencial por medio de las
líneas de comunicación.
- Cada vez que se introduce un concepto nuevo en el sistema global,
los sistemas de visión y habla deben aprender un nuevo código común
que lo represente.
- El método no par e c e plausible c o m o m odel izac ión d e l
funcionamiento real del cerebro.
El segundo método utiliza un camino hardware individual y dedicado para
cada uno de los conceptos que han de ser comunicados entre los dos sistemas. El
método se basa en la idea de que la activación simultánea de "manzana" y
"agusanada" en el sistema de visión puede transmitirse a los lugares correspondientes
del sistema de habla por medio de conexiones únicas y dedicadas para estos
conceptos. En este caso, el proble ma principal reside en tener las conexiones
necesarias entre los conceptos y poder establecer nuevas conexiones a medida que se
adquieren nuevos conceptos. Estas conexiones no necesitan ser muy complejas, ya que
-65-
sólo han de transportar información muy simple de carácter no simbólico, como por
ejemplo un nivel de activación.
El comportamiento de la Máquina de Boltzmann con el problema del
codificador muestra un método de comunicación de conceptos que posee lo mejor de
los dos métodos anteriores. Sus unidades de proceso son pequeñas y sus conexiones
transmiten un valor numérico, como en el segundo método. Además su proceso de
aprendizaje bien puede ser el utilizado por el cerebro hu mano. También permite, sin
embargo, que se transm itan distintos conceptos por las m is m as l íneas de
comunicación como requiere el primer método. Puede decirse incluso que la Máquina
de Boltzmann supera a estos dos métodos, ya que el aprendizaje de nuevos códigos
surge automáticamente como un proceso cooperativo a partir del algorit mo de
aprendizaje que minimiza el valor de G.
-66-
6. COMPORTAMIENTO DE LOS SISTEMAS CONEXIONISTAS
6.1. INTRODUCCIÓN
Tras largos años de esfuerzos tratando de modelizar el comportamiento
inteligente sobre las mismas arquitecturas de computadores utilizadas para realizar
cálculo numérico, se comenzó a pensar en la conveniencia del uso de arquitecturas
diferentes, más cercanas a la estructura del cerebro humano. Así es como se llegó al
estudio de los sistemas masivamente paralelos. Estos sistemas, con su gran potencia
computacional per mit irían abordar c iertos proble mas que en las m áquinas
convencionales resultaban terriblemente lentos y pesados. La mayor parte de ellos
están fuertemente relacionados con el reconocimiento y la búsqueda en un espacio de
descripciones de gran tamaño. En general estos problemas deben su importancia a su
relación con procesos como la planificación y la inferencia, básicos en los sistemas de
Inteligencia Artificial. A continuación se detallan algunos de estos problemas,
analizando el comportamiento de los diferentes sistemas conexionistas en cada uno de
ellos.
-67-
6.2. INTERSECCIÓN DE CONJUNTOS
El reconocimiento puede considerarse como un proble ma de intersección
de conjuntos, ya que consiste en encontrar, dentro de un conjunto de descripciones, la
que se ajusta de forma más adecuada a la descripción de la observación realizada.
Esta operación de intersección de conjuntos aparece con mucha frecuencia en las
bases de conocimiento de los sistemas de Inteligencia Artificial. En una máquina
secuencial la realización de una intersección de conjuntos requiere un tie mpo
proporcional al número de elementos que componen el más pequeño de los conjuntos
considerados. Normalmente estos conjuntos son bastante grandes y el costo de la
operación resulta muy elevado, principalmente en tiempo.
En las redes paralelas que transmiten marcadores, como las redes NETL,
las intersecciones de conjuntos se realizan en una sola operación de identificación,
una vez que se han identificado con marcadores diferentes los miembros de cada
conjunto. En las redes que transmiten valores la operación es también muy simple y
rápida. En estos sistemas se marcan los elementos de cada conjunto con una unidad de
activación y luego se buscan todas aquellas unidades cuyo valor de activación se
encuentre por encima del u mbral determinado por la suma de las activaciones
correspondientes a cada conjunto.
En una Máquina de Boltzmann la mayoría de los casos de intersección de
conjuntos pueden realizarse con un único proceso de funcionamiento de la red hasta
alcanzar la situación de equilibrio. En este sistema cada conjunto se representa por
una combinación de unidades activas, y la intersección resulta ser la unión de todas
esas combinaciones. La unión de la unidades activas funciona c o m o u n a
representación en términos d e intensidad de la intersección d e los conjuntos.
-68-
6.3. CIERRE TRANSITIVO
En los sistemas basados en el conocimiento es frecuente el cálculo del
cierre de las relaciones transitivas que contienen. Este es el caso, por ejemplo, de las
relaciones del tipo "es un" de las redes semánticas, que son relaciones transitivas y
cuyo cierre es necesario a menudo para el mecanismo de la herencia.
Las máquinas secuenciales invierten en el cálculo de un cierre transitivo
un tiempo proporcional al tamaño del conjunto resultante. Cuanto mayor es el
resultado del cierre mayor es el tiempo que se tarda en calcularlo. En las redes que
transmiten marcadores, sin embargo, el tiempo es proporcional a la longitud de la
cadena más larga de relaciones que sea necesario seguir. Es decir, el tiempo es el
mismo que en un sistema secuencial si las relaciones forman una única y larga
cadena. En el caso en que las relaciones estén organizadas en forma de árbol con
muchas ramas, pero cortas, el tiempo invertido por la red paralela es mucho menor.
Las redes que transmiten valores obtienen un rendimiento similar al de las redes de
transmisión de marcadores.
La arquitectura de la Máquina de Boltzmann resulta menos adecuada para
esta operación, y la realiza de una forma bastante oscura. El cierre de la relación "es
un", por ejemplo, puede realizarse haciendo que el patrón de actividad de un elemento
incluya los patrones de todos los elementos situados por encima de él en la jerarquía.
Si se pone en funcionamiento la red con una parte de ese patrón y se deja que lo
complete por sí misma llegando a la situación de equilibrio, el estado resultante será
el cierre transitivo. Desgraciadamente, no se puede asegurar todavía que este
esquema funcione adecuadamente en bases de datos con gran cant idad de
-69-
conocimiento altamente interrelacionado. Además, el procedim iento descrito no
puede extenderse directamente a otras relaciones transitivas como "parte de" o
"mayor que".
6.4. CONTEXTOS Y PARTICIONES
Las bases de conocimiento almacenan cierta información que puede
considerarse de carácter universal, pero la mayor parte de su contenido se refiere a
conocimiento válido sólo en determinados contextos. La información sobre lugares,
intervalos de tiempo, etc. puede variar su sentido según el contexto en el que se
utilice. El sistema que maneja la base de conocimiento ha de ser capaz de acceder a
la información de cada contexto en el momento y circunstancia adecuados, evitando
mezclar los datos correspondientes a diferentes contextos. De la misma forma ha de
distinguir los datos contextuales de la información universal, que puede utilizar en
cualquier momento. En este esquema de funcionamiento cada contexto actúa como un
añadido al conocimiento universal de la base, incorporando nuevos conocimientos de
carácter particular.
Así, la base de conocimiento puede considerarse constituida por diferentes
particiones de conocimiento de las cuales una o varias pueden ser activas en un
momento determinado. Una máquina secuencial que utilice una base de conocimiento
de este tipo debe contrastar la pertenencia de cada hecho con todas las particiones
activas antes de poder considerarlo válido y utilizarlo. El proceso de búsqueda en
cada una de las particiones consume una gran cantidad de tiempo, siendo proporcional
al tamaño de las mismas. Los sistemas que transmiten marcadores facilitan este
trabajo de forma considerable, ya que pueden identificar el árbol de contextos activos
rápidamente mediante la utilización de la operación de cierre transitivo. De esta
-70-
forma todas las aserciones asociadas con tales contextos se encuentran activas,
evitándose la utilización errónea de aserciones pertenecientes a otros contextos no
activos. Este comportamiento es prácticamente idéntico en la redes de transmisión
de valores y en las Máquinas de Boltzmann, siendo posible, además, activar contextos
de forma gradual.
6.5. RECONOCIMIENTO POR MEJOR APROXIMACIÓN
Algunos problemas de reconocimiento pueden ser resueltos mediante la
intersección de conjuntos, como ya se ha mencionado. Esta operación es muy útil para
problemas en los que los datos son discretos, no presentan distorsión causada por el
ruido y todos los miembros de una clase poseen todas las características necesarias
para su identificación. Estos problemas pueden considerarse prácticamente ideales,
ya que no se presentan en la realidad. A menudo es suficiente con encontrar la
descripción que mejor se ajusta al conjunto de características observadas, sin
pretender que este ajuste sea perfecto. Tampoco todas las características observadas
son de la misma naturaleza, algunas tienen un alto nivel de confianza, mientras que
otras son bastante débiles.
Las redes que transmiten marcadores funcionan bastante mal en ajustes
imperfectos de este tipo, al contrario que las que transmiten valores, que resultan
ideales para esta tarea. Su buena disposición se debe a la posibilidad de que cada
observación transmita una cierta cantidad de "activación" a un número no fijado de
hipótesis. La intensidad o fuerza de cada activación depende del grado de confianza
atribuido a la observación y del peso de la conexión entre característica e hipótesis.
El elemento de la red que mejor se ajusta a las características deseadas es el que
posee el valor de activación mayor entre todos los que componen la red.
-7 1 -
Evidentemente, que su valor sea el mayor no asegura que sea el que se ajusta
perfectamente, pero sí que es el que reúne más semejanzas de todos los de la red. La
Máquina de Boltzmann tiene un comportamiento parecido, siendo también un
mecanismo muy adecuado para este tipo de tareas.
6.6. RECONOCIMIENTO GESTALT
Hasta el momento se ha presentado un tipo de procesos de reconocimiento
que discurrían desde abajo hacia arriba; se tomaban los datos y se trataba de
identificar mediante búsqueda el elemento que los posee todos o al menos una buena
parte de ellos. En el reconocimiento real, como el que realizamos los seres humanos,
el esque ma no es tan sencillo. Un objeto puede identificarse en base a sus
características, pero éstas, a su vez, sólo pueden determinarse en relación a otras y
en relación a la imagen perceptual obtenida hasta el momento. Es decir, cada
característica debe ser considerada dentro de su contexto, ya que de no hacerse así
resultará ambigua. Para conseguir este tipo de integración y a la vez distinción de
cada característica es necesario utilizar un conjunto de identidades para la totalidad
y para cada una de ellas. Ni el enfoque de arriba-abajo ni el de abajo-arriba
aisladamente pueden conseguirlo. Son necesarios varios niveles diferentes de
características y subcaracterísticas combinados en una compleja red de restricciones
relativas entre los niveles.
Esta descripción se ajusta casi perfectamente a la de la Máquina de
Boltzmann, por lo que ésta parece ser el mecanismo más adecuado para tareas de
reconoci miento de carácter complejo. Sin e mbargo, para que una M áquina de
Boltz mann pueda utilizarse en problemas reales, todavía es necesario probar
exhaustivamente su funcionamiento con sistemas verdaderamente grandes.
-72-
La lista de tareas computacionales esenci ales para u n s ist e m a
"inteligente" es todavía más larga, pero las presentadas son las más relevantes de
ellas. Como se ha mostrado, ninguna de las arquitecturas mencionadas es la adecuada
para la totalidad de las tareas, pero cada una por separado funciona muy bien en
alguna de ellas. Del análisis realizado es posible deducir algunos de los objetivos que
han de alcanzarse en un futuro más o menos inmediato. Uno de ellos concierne
directamente a la Máquina de Boltzmann, cuyas propiedades han de ser exploradas
más profundamente, ya que parece la organización más prom etedora para el
tratamiento de problemas reales. En segundo lugar ha de intentarse combinar en un
solo sistema las característ icas más relevantes de cada una de las redes
individualmente.
-73-
7. SIMULACIÓN DE LA MÁQUINA DE BOLTZMANN EN UN COMPUTADOR LISP
7 .l. INTRODUCCIÓN
El proyecto ha consistido en la construcción de un programa que simula el
comportamiento de una red neuronal con las características conexionistas. Se ha
elegido como ejemplo el de la Máquina de Boltzmann, aunque el prototipo construido
no contiene la totalidad de las características de este mecanismo. La idea principal
es la de construir una herramienta que permita experimentar con sistemas del tipo
conexionista, facilitando la construcción de la estructura de la red mediante un
interface adecuado y permitiendo seguir la evolución de los valores del conjunto
mediante marcadores en pantalla que se actualizan automáticamente.
Entre todas las aproximaciones conexionistas que ya se han presentado en
este trabajo, se eligió la Máquina de Bolt zmann por ser la arquitectura más
prometedora de todas ellas. Las investigaciones sobre su funcionamiento son muy
recientes, pero los resultados obtenidos en su faceta de mecanismo de aprendizaje
han sido excepcionalmente esperanzadores, lo que ha motivado la realización de este
trabajo. El programa recoge la mayor parte de las características de un Máquina de
Boltzmann, especialmente todas las referentes a su arqu itectura, pero su
-74-
funcionamiento probabilístico no ha sido programado. Sin embargo, el programa es lo
suficientemente flexible para permitir modificar este comportamiento de forma muy
sencilla.
Debido a que las arquitecturas conexionistas han nacido dentro de la
Inteligencia Artificial, y por su especial importancia en la labor de aprendizaje, se ha
tratado de dar al programa un enfoque en esta línea. Por ello se ha utilizado, tanto en
las labores de documentación como de construcción, material de este área de la
Informática. Así pues se ha usado para la construcción del programa una máquina de
Inteligencia Artificial (máquina Lisp) y una de las herramientas de las que se dispone.
Estas herramientas se utilizan para la construcción de sistemas expertos, y aunque no
se pretendía exactamente construir un sistema experto, la estructura que se puede
desarrollar con estas herramientas resultaba bastante adecuada para la realización
del programa.
Ante el problema de la herramienta que debía ser utilizada para la
programación, la elegida fue el sistema de construcción de sistemas expertos KEE, de
la e mpresa IntelliCorp. Esta herra m ienta es de t ipo híbrido, y se basa
fundamentalmente en la utilización de marcos, reglas y métodos como representación
del conocimiento y utilización del mismo. A medida que se detalle la estructura del
programa se presentará parte de la composición de la herramienta. KEE funciona
sobre la mayor parte de las máquinas Lisp construidas hasta el momento. Este trabajo
en particular se ha realizado sobre un Explorer de Sperry.
-75-
'l.2. ESTRUCTURA DE LA RED
La herramienta KEE permite realizar representación del conocimiento en
forma de marcos, que reciben el nombre de "unidades", con campos denominados
"slots", que poseen características propias llamadas "facetas". La estructura de la red
conexionista se ha realizado haciendo uso de estos componentes, aprovechando,
además el mecanismo de herencia que también proporciona la herramienta.
Una Máquina de Boltzmann está formada básicamente por unidades y
conexiones entre ellas. En el programa se han representado ambos mediante unidades
dentro de una base de conocimiento de KEE. Es decir, los elementos principales son
dos tipos de unidades: la unidad denominada NODOS representa la estructura de las
unidades de proceso de la red, y la unidad denominada UNIONES representa la
estructura de las conexiones entre las unidades de proceso. Los elementos principales
de cada una de estas unidades son los siguientes:
NODOS
- ESTADO: Contiene el valor del estado en que se encuentra la
unidad en cada momento. Tiene dos valores posibles, ACTIVO e
INACTIVO. No tiene un valor por omisión.
- IDENTIFICACIÓN: Contiene el tipo de unidad de que se trata. Su
valor puede ser ENTRADA, SALIDA o I NTE R M E D I O . El valor
INTERMEDIO corresponde a las unidades escondidas de la red. Este valor
es i mportante a la hora de la ejecución del algoritmo, ya que las unidades
-76-
intermedias no pueden ser modificadas más que por el funcionamiento
interno de la red. No tiene valor por omisión.
- CONEXIONES: Contiene las unidades del tipo UNIONES que tienen
como uno de sus componentes ese nodo. No tiene valor por omisión.
- UMBRAL: Es el valor real del umbral de activación de la unidad.
Su valor por omisión es O.
- VALOR: Representa el valor que almacena la unidad, es decir, el
obtenido tras la suma de los valores de las unidades activas a las que está
conectada. Es un numero real. Su valor por omisión es -0 . 1 .
UNIONES
- PESO: Contiene el valor del peso de la conexión representada por
la unidad. Es un número real cuyo valor por omisión es O.
- PUNTOl: Representa una de las unidades que intervienen en la
conexión.
- PUNT02: Representa la segunda unidad que interviene en la
conexión.
Ade más exist e una unidad deno m i n ada RED, que cont iene las
características generales de la red, y de la cual dependen jerárquicamente los NODOS
y las UNIONES. Esta unidad contiene un slot básico, que se denomina DELTA y
contiene el valor corrector utilizado en el algoritmo de aprendizaje. Su valor es un
número real con valor 0.1 por omisión. El resto de los slots que componen la unidad
RED se utilizan para diferentes misiones dentro del sistema, y serán presentados más
adelante.
-77-
RED< NODOS
UNIONES
Figura 5. Estructura jerárquica de las clases
principales.
Estas unidades básicas se organizan de forma jerárquica según el esquema
de la figura 5, en el que cada unidad se comporta a la vez como un clase en KEE.
A partir de esta estructura han de crearse los diferentes elementos de
cada red concreta. Es decir, las unidades que compongan la red se instalan como
miembros de la unidad NODOS, que está definida como una clase KEE. De la misma
forma se instalan como miembros de la clase UNIONES las que existan entre cada par
de unidades de la red. Esta tarea se puede realizar de una forma muy si mple mediante
la utilización de los menús que se han programado en el interface que se presentará
más adelante.
Existe otra unidad dentro de la base de conocimiento que no se encuentra
incluida en la estructura jerárquica. Esta unidad se llama CORRECCION y contiene
un valor activo. Se utiliza para resolver un problema de redondeo en las sumas que
presenta la aritmética de KEE. Este problema causaba pequeños errores en los slots
VALOR de los nodos, por lo que se incluyó dentro de la base de conocimiento. Es un
método que se encarga de obtener la cifra correcta cada vez que se actualiza el valor
de cualquiera de los nodos de la red.
Además de la estructura ya mencionada, cada una de las unidades posee
otros slots cuyo contenido tiene que ver con la ejecución del algorit mo o con el
interface de creación de la red. La mayor parte de estos slots son métodos, y algunos
de ellos se verán a lo largo de la presentación del trabajo. El resto puede ser
entendido fácilmente a partir de la documentación propia del programa.
-78-
7 .3. ALGORITMO DB APRBNDIZAJB
El algoritmo de aprendizaje que se utiliza en el programa se corresponde
exactamente con el descrito en el apartado 3.1 . ALGORITMO DE APRENDIZAJE.
Como ya se ha explicado es un algoritmo iterativo que consta de dos fases distintas
que se repiten tantas veces como sea necesario hasta que la red consigue por sí
misma los vectores deseados.
Para la realización del algoritmo se utilizó el mecanismo de reglas que
proporciona KEE. Esta herramienta posee su propio lenguaje de reglas con el que se
puede hacer referencia a cualquier unidad, y dentro de ella al valor de cualquiera de
sus slots o de sus facetas. Con este lenguaje, que se llama TellAndAsk pueden
expresarse cualquier tipo de relaciones o condiciones entre los componentes de una
base de conocimiento de KEE. Las reglas tienen la estructura típica, con una parte
izquierda y una parte derecha, con la particularidad de que KEE distingue dos tipos de
partes derechas de las reglas. Uno de ellos está encabezado por la partícula THEN, y
debe contener una expresión del lenguaje TellAndAsk; el segundo tipo va encabezado
por la partícula DO y puede contener cualquier expresión de Lisp o de las funciones
que utiliza KEE para manejar sus estructuras. El primer tipo de parte derecha,
encabezado por THEN, se utiliza para realizar aserciones sobre hechos de la base de
conocimiento. El segundo tipo se utiliza para realizar acciones más complejas, que
normalmente involucran métodos escritos al efecto.
Una de las reglas que se utilizan en el programa puede servir de ejemplo
para ver la estructura general de las reglas:
( IF (( THE ESTADO OF ?NODO IS ACTIVO ) AND
-79-
( THE CONEXIONES OF ?NODO IS ? CON ) ANO
( THE ACTUALIZACION OF ?CON IS NO ) ANO
( THE PUNT02 0F ?CON IS ?NODO ) ANO
( THE ESTADO OF ( THE PUNTOl OF ? CON ) IS ACTIVO )
THEN (THE ACTUALIZACION OF ?CON IS SI )
DO ( PUT.VALUE ?CON 'PESO ( + ( GET.VALUE ?CON 'PESO )
( GET.VALUE 'RED 'DELTA ))))
Como puede verse las reglas presentan un formato muy similar al lenguaje
natural inglés. En este ejemplo puede verse cómo se pueden utilizar variables no
asignadas dentro de las reglas. Todas las palabras que comienzan por "?" son variables
que no tienen ningún valor cuando se empieza a ejecutar la regla. El sistema busca en
la base de conocimiento los valores que hacen cierta la expresión y ejecuta la regla
para todos ellos.
Las reglas pueden organizarse en forma jerárquica igual que las unidades,
lo que confiere al sistema una gran facilidad para estructurar el conocimiento que
posee. La estructura que se ha utilizado para organizar las reglas correspondientes al
algorit mo de aprendizaje de la red es la que se muestra en la figura 6.
Además de las reglas utilizadas, el algoritmo es guiado por un método de
nombre ALGORITMO contenido en un slot de la unidad RED. Este método se encarga
de disparar el razonamiento sobre las reglas adecuadas para la realización de cada
una de las fases del algoritmo. La secuencialidad inherente al algorit mo hace que su
realización mediante reglas no sea excesivamente elegante. El método realiza las
-80-
-/Rf:QLAS.coNTROL 11&!'.0l.AJ"UARJWJDA.PATllDN - - - - -R.l'IJAR.sALIDA.PATllDN
I Aflil..Al,ASIONAOIJN.PA TRON - -- - -R.AllONMllJN.PA TRON
/ lll:ILA.cALCl.a.O -- - - -R..cM CI• O I RfOLA.t:AlllBOJIOOJ'df: t ' - - - -R.cMBDJIESO.FASE 1 . 1
RfOLAS.ALOORITMO \ • "' · ·RJWlllOJIESO.FASE1.2 \ /Ar:ILAS.l'AR 1 llEOLA.fSTADO • : _ _ -A.ACTIVO
\ / -• ·R.INAOTIVO
\ RfOLAJNICIOJ'ASf t . llEQLAS.f ASES ( REGLA.VAlllA8l.E.FAE,1 - - - - -R.VARIAa..E.FASE 1
AfQl..AjJlAIQEN , : - ' -R.PUOS \., llEGLA.CAM8IOJJEIO.FAa2. - - .RJlAllMllQJIESO.f ASf.2• 1 • • ·R.VALCIAES \ / ,
-• ·RJ:AlmlOJIDOJ'AKZ.2
\ ·AEGLAS.f'ASE2 Rf:QLAJNEIOJ'AKZ • : - - .>ftJWTUALIZMllON
• • •1..-:ID.f'ASH ''·AEGLA.VARIAllLE.FASE2 - - - - -A.VAaL\8LE.FASE2
Figura 6. Estructura jerárquica de las reglas.
siguientes aserciones, que como podrá comprobarse es una ejecución de las diferentes
partes del algorit mo:
( ASSERT NIL REGLA.INICIO.FASEI )
( ASSERT NIL REGLA.ESTADO )
( ASSERT NIL REGLA.VARIABLE.FASE! )
( ASSERT NIL REGLA.CALCULO )
( ASSERT NIL REGLA.CAMBIO.PESO.F ASEl )
( ASSERT NIL REGLA.INICIO.FASE2 )
( ASSERT NIL REGLA.VARIABLE.FASE2 )
( ASSERT NIL REGLA.CALCULO )
( ASSERT NIL REGLA.CAMBIO. PESO.FASE ! )
Como se ve, el método sólo realiza un recorrido sobre las dos fases del
algorit mo, pero no se ocupa de tratar los resultados obtenidos y comprobar si es
-8 1 -
necesario volver a ejecutar las dos fases de nuevo porque el vector de salida no era el
deseado. Para hacer esto es neceario un método que, esque máticamente, debe hacer:
MIENTRAS NO FIN DE PATRONES HACER:
- Asignar patrón de entrada
- Ejecutar las dos fases del algorit mo
- Comprobar la salida y decidir.
El método que realiza estas operaciones es el que se llama ITERACION
dentro de RED. Utiliza tres reglas para realizar su función:
- REGLA.ASIGNACION.PATRON: Pide que se escriban en la
pantalla los valores de los nodos que componen el patrón de entrada.
También los instala como los verdaderos valores de las unidades del
tipo NODOS correspondientes (las que no tienen ident ificación
INTERMEDIO).
- REGLA.ALGORITMO: Dispara la ejecución de las dos fases del
algorit mo sobre la red con los valores asignados anteriormente.
- REGLA.COMPROBAR.SALIDA: Dispara un método que actúa
sobre todos los nodos de la red cuya identificación es SALIDA. Este
método comprueba si el estado obtenido es igual al esperado y actúa
en consecuencia según sea el resultado de la comprobación.
Mediante estos métodos se puede entrenar a la red para que aprenda a
obtener las salidas adecuadas. El comportamiento de las unidades y los pesos de las
conexiones de la red puede verse en cada momento, ya que se ha incorporado a la
base de conoci miento un panel de imágenes. Este panel contiene los estados de todos
los elementos de la red representados en pequeñas ventanas, una para cada elemento,
-82-
ya sea peso o unidad. Cada una de estas pequeñas ventanas se actualiza de forma
automática cuando se modifica el valor del elemento que representa. De esta forma
se puede seguir fácilmente la evolución de la estructura de la red.
El panel y los marcadores son elementos integrantes de la herramienta
KEE, y se incorporan a cualquier base de conocimiento de forma muy sencilla,
realizando selecciones sobre diferentes menús que también proporciona el sistema.
También se han incorporado actuadores para disparar los métodos de
forma inmediata. Estos son pequeñas ventanas situadas en la pantalla, que fuerzan la
ejecución del método asociado a ellas cuando son seleccionadas mediante el botón
izquierdo del ratón. Se utilizan para evitar la tediosa labor de escribir en el ejecutivo
de Lisp el comando necesario para que se produzca la ejecución de un método. Los
actuadores que se han utilizado son tres; el pri mero dispara la ejecución del algoritmo
de aprendizaje, el segundo fuerza la ejecución de un método denominado ORIGEN que
se encuentra en uno de los slots de la unidad RED y sirve para inicializar todos los
elementos de la red. Este método es necesario para poder regresar al estado inicial de
forma sencilla y rápida, sin tener que modificar los valores de las unidades y de los
pesos de las conexiones uno por uno. El tercero de los actuadores se utiliza para
comenzar la ejecución del interface que facilita la creación de los elementos de una
red concreta.
La herramienta KEE permite una programación totalmente interactiva,
por lo que es posible modificar la estructura de cada una de las imágenes que
aparecen en la pantalla mediante los botones del ratón y los menús que para ello
proporciona el sistema. Puede accederse además a la definición y edición de cada una
de las partes que componen el programa siguiendo el mismo método.
No se realiza la descripción exhaustiva y detallada de cada una de las
partes, unidades, slots, métodos, reglas y de más componentes del programa por
-83-
considerar que se encuentra suficientemente documentado (facilidad que está
incorporada en la herramienta), y su exposición exhaustiva podría resultar demasiado
tediosa para el lector.
1.4. INTERFACE DE CREACIÓN DE LA RED
Hasta el momento se ha descrito la estructura y funcionamiento del
programa en cuanto a la modelización de la red y del algoritmo de aprendizaje de la
misma. Ya se ha mencionado anteriormente que las arquitecturas conexionistas han
de contener gran cantidad de unidades de proceso para que puedan ser utilizadas en
problemas verdaderamente útiles e interesantes. Por lo tanto, con el program a
realizado, la tarea de realizar ejemplos puede resultar bastante pesada, y a que es
necesario crear uno a uno todos los elementos de la red (nodos y uniones) y asignarles
los valores que han de tener (pesos, umbrales, estados, etc.). Si se desea construir una
red con gran cantidad de unidades de proceso, el trabajo de creación de la red puede
ser muy largo y tedioso. Aunque la herramienta utilizada para la realización del
programa es altamente interactiva y sencilla de utilizar, sería necesario conocer
bastante más a fondo el funcionamiento del sistema y la estructura del programa para
poder crear la red a partir de los menús de uso de las bases de conoci miento de KEE.
Por este motivo se ha pensado en la gran utilidad que puede tener la
realización de un módulo del programa que pudiera evitar a un potencial usuario la
necesidad de aprender a fondo las característ icas del programa y las de la
herramienta de construcción de sistemas expertos KEE. Este módulo no puede
considerarse como tal estrictamente hablando, ya que, al igual que el resto de las
partes integrantes del programa, está incluido en la estructura global, sin que pueda
-84-
ser extraido como una porción independiente. Su función es la de permitir la creación
de los componentes de la red de forma sencilla y rápida.
Para crear una red con la estructura de la Máquina de Boltzmann, hay que
especificar todas las unidades que van a formar parte de ella, y para éstas los valores
concretos de sus slots principales. De igual forma hay que hacer con las uniones entre
las diferentes unidades, que también necesitan que se especifiquen algunos de los
valores de sus slots. El interface se llama mediante un actuador, como ya se ha
explicado anteriormente. Cuando se pulsa el botón izquierdo del ratón sobre la
ventana que ocupa el actuador comienza la ejecución del interface. En principio
aparece un menú de operaciones que pueden realizarse. Las operaciones posibles son
las siguientes:
- CREAR NODOS
- CREAR UNIONES
- SUPRIMIR NODOS
- SUPRIMIR UNIONES
El menú posee una tercera opción, FIN, que se utiliza para terminar la
sesión con el interface. Abandonar el intef ace no significa necesariamente que se
haya completado la red, puede abandonarse en cualquier momento y volver a
utilizarse posteriormente, volviendo a trabajar sobre lo ya realizado. Cuando se ha
abandonado el interface y se desea volver a utilizarlo sólo es necesario volver a
pulsar el botón izquierdo del ratón sobre la ventana del actuador.
Una vez hecha una selección en el menú general de operaciones el
programa solicita información sobre los valores de los slots principales de las
unidades que se desee crear, o pide el nombre de la unidad que se desea suprimir de la
base de conocimiento. Algunos de estos valores se solicitan mediante la aparición de
un menú en la pantalla. Otros, por el contrario, deben ser escritos por el usuario por
-85-
medio del teclado. El programa está construido de tal forma que si se crea una
unidad, ya sea nodo o unión, sus slots principales toman valores por omisión, que son
los que tienen dichos slots en la estructura general de la clase, es decir, en las
unidades NODOS y UNIONES. Cuando se pide que se escriba el valor de un slot, se
proporciona la posibilidad de escoger el valor por omisión (llamado valor por defecto
en el interface) mediante la escritura de la letra "D" en lugar de un valor concreto
para el slot.
No es necesario seguir ningún orden en la creación de las diferentes
unidades, pero hay que tener en cuenta que si el valor de alguno de los slots de una
unidad depende de otra u otras unidades, como es el caso de los slots PUNTO! y
PUNT02 de las unidades UNIONES, que son de tipo NODOS, es necesario que los
nodos que vayan a escribirse como sus valores hayan sido creados con anterioridad.
Esto sucede por la propia construcción de la herramienta KEE, que realiza la
verificación de cada valor que se instala en los slots de una unidad, y no permite que
se haga referencia a unidades que no pertenezcan real mente a la base de
conocimiento. Esta característica ha facilitado mucho la labor de construcción del
interface, ya que no es necesario realizar comprobaciones exhaustivas sobre cada
dato que se escribe, es el propio sistema KEE el que se encarga de hacerlo.
Las funciones que gobiernan el interface se encuentran distribuidas entre
las tres unidades principales que componen el programa: RED, NODOS y UNIONES.
La función principal es la que se denomina OPERACIONES y se encuentra en un slot
de la unidad RED. Esta función es un método que se encarga de hacer aparecer el
menú principal y llamar a los métodos correspondientes a cada opción elegida. Los
métodos que crean o suprimen unidades de la base de conocimiento se encuentran
situados cada uno en la unidad sobre la que actúa, es decir, el método que crea nodos
se encuentra en un slot de la unidad NODOS, y el que crea uniones en un slot de la
unidad UNIONES. Esta organizacipón permite que se puedan realizar muy fácilmente
-86-
modificaciones de cualquiera de los elementos que componen el interface. Los menús
que aparecen durante la ejecución del interface también están dentro de cada una de
las unidades en forma de slots de un tipo especial, y no constituyen una parte
independiente del programa.
-87-
8. BIBLIOGRAFÍA
- Ackley, D.H., Hinton, G.E. y Sejnowski, T.J. : "A Learning Algorithm for
Boltzmann Machines", Cognitive Science 9, 147-169, 1985.
- Barto, A.G. : "Learning by Statistical Cooperation of Self-Interested
Neuron-Like Computing Elements", Hu man Neurobiology Vol. 4, NQ 4, Springer
Verlag, Nueva York, 1985
- Carpenter, G.A. y Grossberg, S. : "A Massively Parallel Architecture for
a Self-Organizing Neural Pattern Recognition Machine", Computer Vision, Graphics
and Image Processing 37, 54-1 1 5, 1986.
- Crick, F. y Mitchison, G. : "The Function of Dream Sleep", Nature, 304,
1 1 1-1 14, 1 983.
- Fahlman, S.E., Hinton, G.E. y Sejnowski, T.J. : "Massively Parallel
Architectures for A.I.: NETL, Thistle and Boltzmann Machines", Proceedings de la
AAAI Conference of Artificial lntelligence, Washington DC. 1 09-1 13, Kaufmann, Los
Altos, 1 983.
- Fahlman, S.E. y Hinton, G.E. : "Connectionist Architectures for
Artificial Intelligence", Computer, 100-109, Enero 1987.
-88-
- Feldman, J.A. y Ballard, D.H. : "Connectionist Models and their
Properties", Cognitive Science, 6, 1982.
- Feldman, J.A. : "Conectionist Models and Parallelism in High Level
Vision", Computer Vision, Graphics and Image Processing 3 1 , 178-200, 1 985.
- Forsyth, R. y Rada, R. : "Machine Learning: Applications in E:rpert
Systems and Information Retrieval", Ellis Horwood, 1 986.
- Hinton, G.E. : "Learning in Massively Parallel Nets".
- Hinton, G.E. : "Parallel Models of Associative Memory", Erlbaum,
Hillsdale, N.J., 1981.
- Hinton, G.E., Sejnowski, T.J. y Ackley, D.H. : "Boltzmann Machine:
Constraint Satisfaction Networks that Learn", Technical Report CMU-CS-84- 1 1 9,
Carnegie-Mellon University, 1984.
- Hinton, G.E. y Sejnowski, T.J. : "Learning and Relearning in Boltzmann
Machines", de "Parallel Distributed Processing: E:rplorations in the Structure of
Cognition", Bradford Books, CAmbridge, MA, Vol 1, 1986.
- Hinton, G.E. : "Learning in Parallel Networks. Simulating Learning in a
Probabilistic System", Byte, Abril 1985.
- Hopfield, J.J. : "Neural Networks and Physical Systems with Emergent
Collective Computational Abilities", Proc. National Academy of Sciences USA, Vol.
79, NQ 8, Abril 1 982.
- Hummel, R.A. y Zucker, S. W. : "On the Foundations of Rela:ration
Labeling Processes", IEEE Trans. Pattern Analysis and Machine Intelligence, Vol.
P AMI-5, NQ 3, Mayo 1983.
-89-
- K ienker, P.K., Sejnowski, T.J., Hinton, G.E. y Schumacher, L.E. :
"Separating Figure from Ground with a Parallel Network", Perception Vol. 1 5 NQ 2 ,
1 986.
- K irpatrick, S., Gelatt, C.D. y Vecchi, M.P. : "Optimization by Simulated
Annealing", Science 220, 1983.
- Metropolis, N., Rosenbluth, A., Rosenbluth, M., Teller, A. y Teller, E. :
"Equation of State Calculations for Fast Compu.ting Machines", Journal of Chemical
Physics 6, 1087, 1953.
- Minsky, M. y Papert, S. : "Perceptrons", MIT Press, Cambridge, 1 969.
- Rosenblatt, F. : "Principles of Neurodynamics: Perceptrons and the
Theory of Brain Mechanisms'', Spartan, Washington, D.C., 1961 .
- Rumelhart, D.E., Hinton, G.E. y Williams, R.J. : "Learning
Rpresentations by Back-propagating Errors", Nature Vol. 323, Octubre 1986.
- Sejnowski, T.J. y Rosenberg, C.R. : "NETTalk: A Parallel Network that
Learns to Read Aloud", Technical Report, JHU/EECS-86, John Hopkins University,
1986.
- Takeda, M. y Goodman, J. : "Neural Networks far Compu.tation: Number
Representations and Programming Complexity", Applied Optics Vol. 2 5 NQ 18,
Septiembre 1 986.
-90-
9. APÉNDICES
-9 1 -
APÉNDICE 1
llED _..--NODOSUNIONES 1REOLAS.CONTROL _.,../:au.l'l.IAIUALDA:;-----R.FIJAR..PATAON
-......_ REGLAS.ASIGNACION.PA TRON---- -R.ASIGNAOION.PA TRON 1ReOLA.cALCULO-----R CAICll O I / .,. -= - - -A.CAMBIO.PESO..FASE 1 . 1 AEOLAS.ALOOAITMO\\ /REOLASJ'ASE 1
P.EOLA.PESOJ' 1 < . ' - -R.GAMBIO.PESO.F ASE 1 .2 REQLA.ESTADO · - - - -A.ACTIVO
• - • ·H.wACTf\IO llEOLA.l\IEICl.FASE 1 . f!EOU\S .F ASES/ AEGLA.VAllWR.E..F ,..1 - -- - -A.VARWILE..FASE 1
REfllASllAIBEN • :: - - -A.PESOS
\ AEGl.A.cAMlllO.PESO..Fk2 • - - JR.oMBO.PESO.F ASE2. 1
• • ·A.VALORES \ - • -R.cAlllmlO..PDOJ'ASl!Z.Z
·AEGLAS.l'ASE2REOLAJNCIOJ'ASEZ • :: - - ->R.ACTUAl..IZAOIO - • R.ftlaO.FASEZ AEGL\. VAAIABLE.FASE2 - - - - -R. VAAIABLE.FASE2
APÉNDICE 2
; ; ; - *- Mode : LISP ; P ackage : KEE ; Ba s e : l O . -*-
( BOLTZMANN ( " pr oyectos " " 1 4-Nov- 1 986 1 3 : 30 : 3 1 " "PROYECTOS " " 26-Aug- 1 987 1 0 : 58 : 58 " ) NIL ( KNOWLEDGEBASES ) NIL ( ) ( ( KBCOPY NIL METHOD METHOD NIL N I L )
( KBDELETE NIL METHOD METHOD NIL N I L ) ( KBLOAD NIL METHOD METHOD NIL NIL ) ( KBMETHODFILE ( BOLTZMANN ) ) ( KBSAVE NIL METHOD METHOD N I L NIL ) ( KBSI ZE 37 ) ( KEE. DEVELOPMENT . VERSION . NUMBER O ) ( KEE . MAJOR . VERSION . NUMBER 2 ) ( KEE . MINOB . VERSION . NUMBER 1 ) KEE . PATCH . VERSION . NUMBER 64 . 1 ) ( KEEVERSION KEE 2 . l ) ) )
( CORRECC ION ( " PROYECTOS " " 1 -Dec- 1 986 1 8 : 00 : 08 " " PROYECTOS " " 1 1 -Dec- 1 986 1 5 : 35 : 38 " ) NIL ( ( ACTIVEVALUE ACT IVEVALUES ) ) "Valor act ivo que expresa l o s numeras obtenidos para los valores d e l o s nodos y para los pesos
de las conex iones de forma cori:-ec.ta " ( ) ( ( AVPUT ( GLOBAL : LAMBDA ( SELF SLOT NUEVO VIEJO UNI DAD TIP O )
( PROG NIL ( RETURN L I ST ( GLOBAL : / ( FI XR (* 10 ( CAR NUEVO ) ) ) 1 0 . 0 ) ) ) ) ) ) ) )
( NODOS ( " pr oyect o s " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " P ROYECTOS " " 26-ArJg- 1 98 7 9 : 2 2 : 53 " ) ( RE D ) ( ( CLASSES GENERICUNITS ) ) " Unidades < "
( ( COMPROBAI,,. SALIDA
( GLOBAL : LAMBDA ( SELF) ( CONO ( ( EQUAL ( GET . VALUE SELF ESTADO ) ( GE T . VALUE SELF sALIDA . PATRON ) )
( PUT . VALUE / RED / CORRECTO / SI ) ) ( T ( PUT . VALUE / RED / CORRECTO NO ) ) ) )
METHOD ( METHOD ) NIL ( ( COMMENT
"Comprueba si el estado del nodo des pues de la segunda fa se del a l gor i tmo es i gual al que :;_ r,di caba e l pat r on de entrnarn i e.n i: o ' ' '1 ) i
1 ;:,:JHEXIONES NIL N IL NIL N IL ( ( COMMENT ( " L i st a de las conexiones en las que i nt er vi ene el nodo " ) ) ) )
( ESTADO ( INACTI VO ) NIL ( ( ONE . OF ACTIVO I NACTIVO ) ) I U L ( ( COMMENT ( 11 E . t a d c a : "t 7--: " .::- ]_ r! 0 d o 11 \ i ::;.,Bf.. I .I.. IiY . i,iA ( l ) )
( I f'E:N'!' I F I CP.C I ON
( ( OHE . CF ENTaADA SLIDA i TERMED I O ) ) N IL
( ( COMMENT ( " Funcion del nodo en la Led , ya sea e l emento de ENTRADA , I NTERMEDIO , o de SALIDA " ) )
( CARDINAL I TY . MAX ( 1 ) ) ) ) Sl>.LIDA . P ATRON
NIL NIL ( ( ONE . OF ACTIVO INACTIVO ) ) NIL ( ( CARDINALITY . MAX ( 1 ) )
( COMMENT " Contiene el estado del nodo para el patron de entrada . So l o es relevante si la identi f i cac
ion del nodo es SALIDA " ) ) ) ( UMBR.6.L
( 0 ) NI L ' ( REAL ) NIL ( ( COMMENT ( " Valor umbra l para calcular e l estado de act i vacion o inact i vacion del nodo" ) )
( CARDINAL ITY . MAX ( 1 ) ) ) ) ( VALOR
( -0 . l ) NIL ( REAL ) NIL ( ( AVUNITS ( #Unit ( CORRECCION BOLTZMANN ) ) )
( COMMENT ( " Va lor numer ico que t i ene el nodo , a part ir del cual se determina su e st ado de act i vacion
o inact i vaci on " ) ) ( CARDINALITY . MAX ( 1 ) ) ) )
( VARIABLE T ) NIL ( ( ONE . OF T N IL ) ) NIL ( COMMENT
( " Var iable bool eana ( T , NI L ) que ind i ca si el estado d e l nodo puede s er cambiado por el fun ci onamiento i nt erno
. de la r-ed . Su val or es NIL cuando el nodo es de ENTRADA o de SALIDA" ) )
( CARDINALITY . MAX ( 1 ) ) ) ) ( VER . SI . ACTIVA . A
( GLOBAL : LAMBDA ( SELF CONEX I ON ) ( P ROG ( ( NODO ( CONO ( ( EQUAL SELF ( GET . VALUE CONEXI ON ' PUNTO ! ) )
( GET . VALUE CONEXI ON 'PUNT0 2 ) ) ( T ( GET . VALUE CONEXION ' PUNTO l ) ) ) )
( P ESO . ARCO ( GET . VALUE CONEXION ' PESO ) ) ) ( CONO ( ( GET . VALUE NODO ' VARIABLE )
METHOD ( METHOD ) NIL ( ( COMMENT
( P UT . VALUE NODO ' VALOR ( + ( 6ET . VALUE NODO ' VALOR ) P ESO . ARCO ) ) ( COND ( ( >= ( 6ET . VALUE NODO ' VALOR ) ( GET . VALUE NODO ... UMBRAL ) )
( P UT . VALUE NODO 'ESTADO " ACTIVO ) ) ( T ( P UT .. V.LUE NODO ··· EST.DO ·· IHACTIUG ) :i ! )
(1 N I L ) ) ) )
( " Metodo que calcula e l estado de los nodos conectados con e l nodo propietar i o del met odo . Toma como at'gumentos el nndo pI'opietar io y una tm idad de UNIONES" \ l \ ) )
\ ¡11,s:=i E B T N I L METHOD ( METHOD ) NIL ( ( COMMENT
E\ LA .. CAl_.CULü ) ,1
( ' ' Metodo que d i spar-a e l funci onam iento i nt er-no de la red a par t i r- de una determ i nada s it ua cion ut i l i zando REGLA . CALCULO " ) ) ) )
( CREAR . NODOS ( GLOBAL : LAMBDA ( SELF ) ( PROG ( DATO )
( TERP R I )
METHOD ( METHOD ) NIL .
( PRINTOUT T " NOMBRE DEL NUEVO NODO : 11 ) ( SETQ DATO ( CREATE . UN I T ( READ ) NIL N I L ' ( NODOS ) ) ) ( TERP R I ) ( P UT . VALUE DATO
' ESTADO ( M ENU ( GET . SLOT . MENU ' NODOS ' MENUESTADO 'OWN ) ) -· owN >
( P UT . VALUE DATO ' I DENTIFICACION ( MENU ( GET . SLOT . MENU ' NODOS ' MENU IDENTIF 'OWN ) ) ··· owN ) ¡ ¡
( ( CCMMENT " Cont iene la funcion que crea nuevo s n odo s " ) ) ) ( MENUESTADO
( ( " ACTIVO" ' ACTIVO ) ( " I NACT I VO " ' I NACTIVO ) ) NIL ( MENUITEM ) NIL ( ( TITLE ( " ESTADO DESEADO " ) )
( COMMENT " Menu para e l e g i r el estao de un nodo en el momento de. su creac ion'' ) ) ) ( MENUIDENTI F
( ( " ENTARDA " ·' ENTRADA ) ( " SALI DA " ·' SALIDA ) ( " INTERMEDIO " ' I NTERMEDIO ) ) NIL ( MENUITEM ) NIL ( ( TITLE ( " IDENTIFICACION DEL NODO " ) )
( COMMENT "Menu para e l eg ', r la ident i f i cacion del nodo en el momento de s u creaci o n " ) ) ) ( SUPRIMIR . NODOS ( GLOBAL : LF>, 1BDA ( SEU )
( TERPRI )
( E • . 6.CTIVO
( PlUNTOUT T " NOMBRE DEL NODO : " ) ( UN ITDELETE C READ ) ) )
METHOD ( METHO D ) N I L ( \ COMMENT " Cont i ene el rnet odo que s upt ime u n nodo d e la r-e•i " ) ) ) ) )
\ u proyect o s tl 1 1 -No·v- 1 986 l 2. : 33 : 24 u º P HOYECOS !I •: : c:.-c\- l S"2:6 1 0 : 57 : 55 ª ) NIL ( REGLA . ESTADO ) NH • .
( ) ( ( .SSERTION ( l/W f f AN ESTADO OF ?NODO IS ACTIVO ) ) )
( EXTERNAL . FORM ( !F ( ( TP.E V.to.LOR OF ?NODO IS ? X ) AND
( TR! UMBRAL OF ?NODO IS ?Y )
- .- - • -. ,. .-. ,..., .... l" .·- - -.:-_ = .L ,-·. .: '--·' :_: :.: : · .i" ; ._';_). _ _:
; 2 J:c:rasz ( /i W f f ( ,6, V.6, LOR OF ' ! WDO IS n i # W f f ( A UMBR.6.L OF ? HODO IS ' Y ) /FW -: i ( > = '; X ' Y ) ) ) ) )
( R . ACTUALI ZACION ( " PROYECTOS " " 2 7 -Nov- 1 986 1 5 : 46 : 26 " " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 1 4 : 00 " ) NIL
( REGLA . INICI O . FASE ! REGLA . IHICI O . FASE2 ) NIL - -- -· . - -( ) ( ( ASSERT IOH ( #W f f ( AH ACTUALI ZACION OF ?CON IS NO ) ) )
( EXTERNAL . FORM ( IF ( ?CON IS IN UNIONES ) THEN ( THE ACTUALI Z AC ION OF ?CON IS NO ) ) ) ( P REMISE ( #W f f ( ?CON IS I N CLASS UNIONES ) ) ) ) )
( R . ASIGNACION . PATRON ( " PROYECTOS " " l l -0ec- 1 986 1 6 : 2 7 : 5 2 " "PROYECTOS " " 1 2 -Dec- 1 986 1 1 : 56 : 08 " ) NIL ( REGLAS . ASIGNACION . PATRON ) " P i de al u s uar i o los va lores cor respondient e s para l o s nodos de un patron " ( ( ( ACT ION ( ( P R I NTOUT T ( UN I T . NAME ?NODO ) " • • • • " ) ( PU T . VALUE ? NODO ·' VALOR ( GLOBAL : READ ) ) ) )
( EXTERNAL . FORM
( I F ( ( ? NODO IS IN NODOS ) AND ( ( THE IDENTIFICACION OF ? NODO I S ENTRADA ) OR
( TH E I DENTIFICACI ON OF
DO ( PRINTOUT T ( UN I T . NAME ?NODO ) " • • • • " ) ( PUT . VALUE ? NODO / VALOR ( GLOBAL : READ ) ) ) )
( P REMISE ( #Wff ( ? NODO IS IN CLASS NODOS )
?NODO IS SALIDA ) ) )
#W ff ( ( A N IDENTIFICACIOH OF ?NODO IS ENTRADA ) OR ( AN IDENTIFICACION OF ?NODO IS SALIDA ) ) ) ) )
( R . CALCULO ( " proyecto s " " 1 4-Nov- 1 986 1 3 : 34 : 32 " "PROYECTOS " " l l -Dec- 1 986 1 5 : 44 : 1 6 " ) NIL ( REGLA .CALCULO ) NIL
( ) ( ( f>.CT ION ( ( PRINT ? NODO ) ( PRINT ?DESTINO ) ( UNITMSG ?NODO / VE R . S I . ACTIVA . A ? DESTINO ) ) )
( A:3SERT ION )
( EXTERNAL . FORM ( IF ( AND ( THE ESTADO OF ?NODO IS ACTIVO ) ( THE CONEXIONES OF ?NODO IS ?DESTINO ) )
DO
PRINT ?NODO ) ( PH INT ?DESTINO) ( UHITMSG ?NODO ' VER . SI . ACTIVA . A ?DESTI NO ) ) )
( P REMISE ( #Wff ( AN ESTADO OF ?HODO IS ACTIVO ) ##Wff .< A CONEXIONES OF ?NODO I S ? DESTINO ) ) ) ) )
( R . CAMBIO . PESO . FASE l . l
, . ! .! • .L.
( REGLA . CAMB I O . P ESO . FASE i )
NIL
( ) ( ( ACTION ( ( P UT . VALUE ?CON ' PESO ( + ( GET . VALUE ?CON ' P ESO ) ( GET . VALUE ' RED ' DELTA ) ) ) ) )
( ASSERTION ( #Wff C AN ACTUAL I ZACION OF ?CON IS SI ) ) ) ( EXTERNAL . FORM ( IF ( ( THE ESTADO OF ?NODO IS ACT IVO ) AND
TREN ( THE ACTUAL I ZACION OF ?CON IS SI ) DO ( P UT . VALUE ?CON
·· P ESO
( THE CONEXIONES OF ?NODO IS ?CON ) AND ( THE ACTUAL I Z ACION OF ?CON I S NO ) AND ( THE PUNTO ! OF ?CON IS ?NODO ) ANO ( THE ESTADO
OF ( THE PUNT0 2 OF ?CON ) IS
-
ACtr VO ) )
( + ( GET . VALUE ?CON ,. P ESO ) ( GET . VALUE ' RED ,. DELTA ) ) ) ) ) ( P REMISE ( l/Wff ( AN E!::TADO OF ?NODO IS ACTIVO ) #Wff ( A CONEXI ONES OF ?NODO I S ? CON )
#Wff ( AN ACTUAL I ZACION OF ?CON IS NO ) #Wff ( A PUNTO l OF ? CON IS ?NODO ) #Wf f ( A PUNT02 OF ?CON IS ?VAR2 ) #Wff C AN ESTADO OF ? VAR2 IS ACT I VO ) ) )
( WEIGHT ( 2 ) ) ) )
( R . CAMBI O . PESO . FASE I . 2 ( " PROYECTOS" " 2 7-Nov- 1 986 1 5 : 09 : 53 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 6 : 40 " ) NIL ( REGLA . CAMB I O . P ESO . FASE ! ) NIL ( ) ( ( ACTION ( ( P UT . VALUE ?CON ' P ESO ( + ( GET . VALUE ?CON ' PÉSO ) ( GET . VALUE ' RED ' DELTA ) ) ) ) )
( ASSERTION ( #Wff ( AN ACTUALI ZACION OF ? CON IS S I ) ) ) ( EXTERNAL . FORM ( IF ( ( THE ESTADO OF ?NODO IS ACT IVO ) AND l \
THEN ( THE ACTUALI ZACION OF ?CON IS SI ) DO ( PU T . VALUE ?CON
,. P ESO
( THE CONEXIONES OF ?NODO IS ?CON ) ANO ( THE ACTUALI Z ACION OF ?CON IS NO ) ANO ( THE PUNT02 OF ?CON IS ? NODO ) ANO ( THE EST.o.Do
OF
( THE PUNTO l OF ?CON ) IS
(+ ( GET . VALUE ?CON ,. P ESO ) ( GET . VALUE ''P.ED .. DELTA ) ) ) ) ) ( PHEM I SE ( #Wff ( AN ESTADO OF ? !.fODC" I 3 .:..c'i'IVO ) tl W f f ( f.. CONEXI.JHES •:;; · · • ; I S o;COH )
# W f f ( A P UNTO ! OF ? GQH IS ?VAR3 ) #Wff ( AN ESTADO OF ? V AB3 IS ACT IVO ) ) ) ) )
( R . CAMB IO . PESO . FASE2 . l ( " PROYECTOS " " 2 7-Nov- 1 986 1 6 : 1 6 : 45 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 8 : 2 6 " ) NIL ( REGLA . CAMB I O . P ESO . FASE 2 ) NIL ( ) ( ( ACTION ( ( P UT . VALUE ?CON -' P ESO ( - ( GET . VALUE ?CON -' P ESO ) ( GET . VALUE '' RED ·' DELTA ) ) ) ) )
( ASSERT I ON l #Wff ( AN ACTUAL IZACION OF ?CON IS S I ) ) ) ( EXTERNAL . FORM ( I F ( ( THE ESTADO OF ?NODO IS ACTIVO ) AND
( !HE CONEXIONES OF ?NODO IS ?CON ) ANO
' ( THE ACTUALI ZACIO.H OF ?·:OH IS NO ) ..,.
THEN ( THE ACTUAL I ZACION OF ?CON IS S I ) DO ( P UT . VALUE ?CON
,. P ESO
ANO . ( THE PUNTO l OF ?CON IS ?NODO ) AFD ( THE ESTADO
OF ( THE PUNT02 OF ?CON )
IS ACTIVO ) )
( - ( GET . VALUE ?CON -' PESO ) ( GET . VALUE -' RE D -' DELTA ) ) ) ) ) ( P REMISE ( #W f f ( AH ESTADO OF ?NODO IS ACTIVO ) #Wff ( A CONEXIONES OF ?NODO I S ?CON )
#W f f ( ti.N ACTUALI ZACION OF ?CON IS NO ) #Wff ( A P :;NTOl OF ?CON IS ?NODO ) #W f f ( A PUNT02 OF ?CON IS ? VAR4 ) #Wff ( AH ESTADO OF ?VAR4 IS ACTIVO ) ) ) ) )
( R . CAMBI O . P ESO . FASE2 . 2 ( " PROYECTOS " " 2 7-Nov- ;_ 986 1 6 : 1 6 : 50 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 8 : 23 " ) NIL t i ( REGLA . CAMB I O . P ESO . FASE2 ) NIL ( ) ( ( ACTION ( ( P UT . VALUE ?CON -' P ESO ( - ( GET . VALUE ?CON -' P ESO ) ( GET . VALUE -' RE D -' DELTA ) ) ) ) )
( ASSERTION ( #Wff ( AN ACTUALIZACION OF ?CON IS SI ) ) ) ( EXTERNAL . FORM ( IF ( ( !HE ESTADO OF ?NODO IS ACTI VO ) AND
THEN
( THE CONEXIONES OF ?NODO IS ?CON ) AND ( THE ACTUALI Z ACION OF ?CON I S NO ) AND
-•TT"Y.,... ,... , t' U f 1 V 1 OF ?CON I S ?NODO )
AND ( THE ESTADO
OF ( THE PUNT02 OF ?CON ) I S ACTIVO ) )
DO ( P UT . V.LUE ? CON
,. PESO ( - ( GET . VALUE ?CON ... P ESO ) ( GET . VALUE ·' 1'ED ... DELTA ) ) ) ) )
( PREMISE ( #Wff ( AN ESTADO OF ?NODO IS ACT IVO ) #Wff ( A CONEXIONES OF ?NODO IS ?CON ) #Wff \ AN ACTUALI ZACION OF ?CON IS NO ) #Wff ( A P UNTO l OF ? CON IS ?NODO ) #W f f ( A PUNT02 OF ?CON IS ? VAR5 ) #Wff ( AN ESTADO OF ?VAR5 IS ACTIVO ) ) ) ) )
( R . COMPROBAR . SAL IDA ( " P ROYECTOS " " l l -Dec.- 1 986 ! 7 : 56 : 36 " "PROYECTOS " " l l -Dec.- 1 986 1 7 : 58 : 38 " ) NIL ( REGLA . COMPROBAR . SALIDA ) NIL ( ) ( ( ACi JON ( ( UNI TMSG ? NODO ... COMP ROBAR . SALIDA ) ) )
( EXTERNAL . FORM ( I F ( ( ?NODO IS IN NODOS ) AND ( THE I DENTIFICACION OF ?NODO IS SALIDA ) ) DO ( UN I TMSG ?NODO ' COMP ROBAR . SALIDA ) ) )
( P BEMISE ( #Wff ( ? NODO IS IN CLASS NODOS ) #Wff ( AN I DENTIFICACION OF ? NODO IS SAL I DA ) ) ) ) )
( R . FIJAR . SALIDA . PATRON ( " PROYECTOS " " l l -Dec.- 1 986 1 7 : 45 : 25 " "PROYECTOS" " 1 1 -Dec.- 1 986 1 7 : 48 : 09 " ) NIL ( REGLA . F IJAR . SALI DA . PATRON ) NIL
- -···- ---- .. . . . ·· - - -- ---·
( ) ( ( ACTION ( ( P UT . VALUE ?NODO ... SALIDA . PATRON ( GET . VALUE ?NODO ... ESTADO ) ) ) )
( E, :ERNAL . FORM ( I F ( ( ?NODO IS I N NODOS ) ANO ( THE I DENTIFICACION OF ?NODO I S SALIDA ) ) DO ( P UT . VALUE ?NODO ... SALIDA . PATRON ( GET . VALUE ?NODO ... ESTADO ) ) ) )
( PREMISE ( #Wff ( ?NODO IS I N CLASS NODOS ) #Wff ( AH I DENTIFICACION OF ?NODO I S SALI DA ) ) ) ) )
( R . INACTIVO ( " p oyect os " " 1 4-Nov- 1 986 1 3 : 33 : 24 " " PROYECTOS " " 1 9-Nov- 1 986 1 0 : 58 : 1 7 " ) NIL ( REGLA . ESTADO ) NIL ( ) ( ( ASSERTION ( #Wff ( AN ESTADO OF ?NODO IS INACTIVO ) ) )
( EXTERNAL . FORM ( IF ( ( THE VALOR OF ?NODO IS ? X ) AHD ( THE UMBRAL OF ?NODO IS ?Y ) ANO ( < ?X ?Y ) )
1 7E E3TADO OF ?NODO I S I MA C T I VO I J ) ( P REM I SE ( #Wff ( A VALOR OF ?NODO IS ? X ) #Wff ( A UMBRAL OF ? NODO IS ? Y ) #Wff ( < ?X ?Y ) J ) ) )
( R . IHICI O . FASE2 ( " PROYECTOS " " 1 9-Nov- 1 986 1 1 : 09 : 05 " "PROYECTOS" " l l -Dec.- 1 986 1 5 : 25 : 44 " ) NIL ( REGLA . INICI O . FASE 2 ) NIL
( ( P UT . VALUE ?NODO ' VALOR ( - ( GET . VALUE ?NODO ' UMBRAL ) ( GET . V ALUE ' RED ' DELTA ) ) )
( ASSEBT NIL ' REGLA . ESTADO ) ) ) ( ASSERTION N I L ) ( EXTERNAL . FORM ( IF ( THE IDENTIFICAC ION O F ?NODO I S SALIDA )
DO ( PUT . VALUE ?NODO
' VALOR ( - ( GET . VALUE ?NODO ' UMBRAL ) ( GET . VALUE -'RED -' DELTA ) ) )
( ASSERT NIL ' REGLA . ESTADO ) ) ) ( P REMISE ( llWff ( .N I DENT I FICACION OF ?NODO IS SALI DA ) ) ) ( WEIGHT ( 0 ) ) ) )
( R . PESOS ( " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 32 : 4 1 " " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 32 : 4 1 " ) NIL ( REGLAS . ORIGEN ) NIL ( ) ( ( ASSERTION ( #Wff ( A P ESO O F ?CON I S 0 . 1 ) ) )
( EXTERM.L . FORM ( IF ( ? CON IS IN UNIONES ) THEN ( THE P ESO OF ? CON I S 0 . 1 ) ) ) ( P REMISE ( l/Wff ( ?CON IS IN CLASS UNIONES ) ) ) ) )
( R . VALORES ( " PROYECTOS" " 1 0-Dec-1 986 1 5 : 32 : 39 " " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 32 : 39 " ) NIL ( REGLAS . ORIGEN ) NIL ( ) ( ( ASSERT ION ( #Wff ( A VALOR O F ?NODO IS -0 . 1 ) ) )
( EXTERNAL . FORM ( IF ( ?NODO IS IN NODOS ) THEN ( THE VALOR OF ? NODO I S -0 . 1 ) ) ) ( P REMISE ( #Wff ( ?NODO I S I N CLASS NODOS ) ) ) ) )
( R . VARIABLE . FASE l ( " proyectos " " 1 4-Nov- 1 986 1 3 : 35 : 20 " " P ROYECTOS " " 26-Nov- 1 986 1 5 : 25 : 33 " ) NIL ( REGLA . VARI ABLE . FASE ! ) NIL ( ) ( ( ASSERTION ( #Wff ( A VARI ABLE OF ?NODO IS N I L ) ) )
( EXTERNAL . FORM ( IF ( OR ( THE I DENTIFICACION OF ?NODO IS ENTRADA ) ( THE IDENTIFICAC ION OF ?NODO IS SALI DA ) )
THEN ( THE VARIABLE OF ?NODO IS NIL ) ) )
( P REMISE ( #Wff ( ( AN IDENT I F ICAC ION OF ?NODO IS ENTRADA ) OR ( AN IDENTIFICACION OF ?NODO IS SAL IDA ) ) ) )
( WEIGHT ( l ) ) ) )
( R . VARIABLE . FASE2 ( " PROYECTOS " " 1 7-Nov- 1 986 1 6 : 30 : 00 " " P ROYECTOS" " 26-Nov- 1 986 1 5 : 3 1 : 55 " ) NIL ( REGLA . VARIABLE . FASE2 ( CLASSES GENERICUN I TS ) ) NIL ( ) ( ( ASSERT ION ( #W f f ( A VAR IABLE OF ?NODO IS NIL )
( EXTERNAt . FOUM r r r f THE I CET I F I CACION OF ? NODO IS ENTRADA l
_j n c. .h ( THE VARI ABLE OF ? NODO I S N I L ) ) )
( P REM I SE ( #W f f ( AN I DENT I F I CAC ION OF ?NODO IS ENTRADA ) ) ) ) )
( RED ( " PROYECTOS " " 25-Nov- 1 986 1 7 : 00 : 24 " "PROYECTOS " " 26-Aug- 1 98 7 1 0 : 5 2 : 2 2 " ) NIL ( ( CLASSES GENERICUN ITS ) ) "Estructura ba s i ca de la r ed compuesta por NODOS y UN I ONES " ( ) ( ( ALGORITMO ( GLOBAL : LAMBDA ( SELF )
( ASSERT NIL ,. REGLA . INICIO . FASE l ) ( ASSERT NIL ' REGLA . ESTADO ) ( ASSERT NIL ·' REGLA . VARI/>.BLE . FASE l ) ( A SSERT NIL ,.REGLA . CALCULO ) ( ASSERT NIL ,. REGLA . CAMBIO . PESO . FASE;_.i ( ASSERT N I L ,. REGLA . INICI O . FASE 2 ) ( ASSERT NIL ·' REGLA . VARIABLE . FASE2 ) ( ASSERT NIL ,. REGLA . CALCULO ) ( ASSERT NIL ' REGLA . CAMBIO . PESO . FASE2 ) )
METHOD ( METHOD) NIL , ( ( COMMENT ( " Algo1 itmo que r ea l i za el apren•:Hzaj e ut i l i zando REGLAS . ALGOR I TMO " ) ) )
( ASIGNAR . PATRON ( GLOBAL : LAMBDA ( SELF )
( PRINTOUT T " ESCRI BA LOS VALORES CORRESPONDIENTES A CADA NODO : " ) ( ASSERT NIL ,. REGLAS . AS IGNACION . P ATRON ) )
METHOD ( METHOD ) NIL ( ( COMMENT .
"P ide al usuar i o los valores de los nodos de l a r ed ( un patron de entrenamient o ) " ) ) ) ( COMPROBACION
( GLOBAL : LAMBDA ( SELF ) ( ASSERT NIL ,. REGLA . COMPROBAR . SALIDA ) )
METHOD ( METHOD ) NIL ( ( COMMENT
¡ 1
''I:anza_ e_l
_r".azonamient o que compri..teba l a s sal idas despues •ie una ej ecuc i on del a l go r i t mo co n un patron" ) ) )
( CORRECTO ( NO ) NIL ( ( ONE . OF SI NO ) ) NIL ( ( CARDINALITY . MAX ( l ) )
( COMMENT 11 Val or· 'b o:-l ear.i.O ! C T J.Jn \
, ....... ..... .. .... " - ; t od o s l o s patr ones de ent raa la sal ida adecuada t r as la s egunda fa se del a l gor i t mo de aprendizaj e ª ) ) )
( DELTA ( 0 . 1 ) NIL ( REAL ) NIL ( ( COMMENT
( " Valor corrector de l o s p e s o s de las conexiones en : : i tmo de apendizaj e '' ) )
( CARDINALITY . MAX f l ) ) l l
1 - · • . .1. f O L J
- . - . · . . , ...._ .... .i:....'-·, :.., "'- '._.,; .. "
( GLOBAL : LAMBDA I SELF ) ( UNI TMSG ' RED ' ASI GNAR . PATRON ) ( U NITMSG ' RED ' ALGORITMO ) ( UNITMSG ' RED ' COMPROBACION ) )
METHOD ( METHOD) NIL ( ( COMMENT " Metodo que real i za una iteracion comp l eta con t odos l o s patrones de entrada " ) ) )
( MENUOPERACIONES ( ( "CREAR NODOS " ,. N ) ( " CREAR UNIONES " ' U )
( " SUP RIMIR NODOS " ' SN) ( " SUPRIMIR UN I ONES " ·' SU )
NIL ( MENU ITEM ) NIL ;.,1
( " F I N " ' F ) )
( ( TITLE ( " OPERACIONES BASI CAS " ) ) ( FONT ( KE E . T ITLE . FONT ) )
( OP ERiCIONES ( GLOBAL : LAMBDA ( SELF )
( P ROG ( ( OPERAC I ON NIL ) ) ( DO NIL
( ( EQ OP,!':RAC ION ' F ) )
( COMMENT " Menu pr incipal de c r eacion de la red" ) ) )
( SETQ OPERACION ( MENU ( GET . SLOT . MENO ·' RED ,. MENUOPERACIONES ... OWN ) ) ) ( COND ( ( EQ O PERAC I ON ' N )
METHOD ( METHOD ) NIL
( UN ITMSG ' NODOS ' CREAR . NODOS ) ) ( ( EQ OP ERACION ' U )
( UNITMSG ' UN IONES ,. CREAR . UNIONES ) ) ( ( EQ OPERACION 'SN )
( UN ITMSG ' NODOS 'SUPRIMIR . NODOS ) ) ( ( EQ OPERACIO ' S U )
( UNI TMSG ' UN IONES 'SUPRIM . UN I ONES ) ) ) ) ) )
( ( COMMENT " Cont i ene l a funcion que se ocupa del menu pr incipal d e operac iones " ) ) ) ( ORI GEN ( GLOBAL : LAMBDA ( SELF )
( ASSERT NIL ' R EGLAS ,ORIGEN ) ) METHOD ( M ETHOD ) NIL
t i
( ( COMMENT " In i c i a l i za l a red" ) ) ) ( \\IMAGE . P ANEL H IL ) ) )
( REGLA . C.l\LCULO ( " pr·oyeet o s " 11 1 4-ficv- 1 986 1 3 : 34 : 32 " " P ROYECTOS " " 5-Dec-1 986 1 3 : 44 : 52 " ) ( REGLAS . FASE2 REGLF.S . FASE l ( RULES RULESYSTEM2 i ) ( ( RULE . CLASSES RULESY57EM 2 ) )
( ( ,6,SSERTION ( PREMISE ) )
( ( AHD . TRACE ) ( FC . TRACE ) ( IMMEDIATE . RULE . APPLICATION . MODE ( ON ) C OR . TRACE ) ( PANEL . TRACE ) ( STEPPER . MODE )
( BEGLA . CAMB I O . P ESO . FASEl
( " P ROYECTOS " " 26-Nov- 1 986 1 5 : 23 : 38 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 7 : 1 9 " ) ( REGLAS . FASE l ) ( ( CLASSES GENERICUNITS ) ( RULE . CL.6.SSES RULESYSTEM2 ) ) "Clase de i:·eglas que s e oc.upan de la mod i fieae ion •ie los pesos de las eonexiones s egun l a pr- im
er a fase del al gor itmo de aprendizaj e " ( ( ASSERTION )
( PREMISE ) ) ( ( AND . TRACE)
( FC . TRACE ) ( IMMEDIAT E . RULE . APPLICATION . MODE ( ON ) ) C OR . TRACE ( OFF ) ) ( PANEL . TRACE ) ( STEP PER . MODE) ( TEXT . TRACE ) ) )
( REGLA . Cl>.! ·1BIO . P ESO . F.6.SE2 ( " PB.OYECTOS" " 26-Nov- 1 986 1 5 : 28 : 26 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 8 : 45 " ) ( REGLAS . FASE2 ) ( ( CU:SSE:S GENERICUNI TS ) ( RULE . CLASSES RULESYSTEM2 ) ) " Cl ase de r eglas que se oc.upan de la modificacion de los pesos de las conexiones s egun la s egu
nda fase del algor itmo de aprendizaj e " ( ( ASSERTION )
( PREMISE ) ) ( ( AND . TRACE )
( FC . TRACE ) ( I MMEDIAT E . RULE . APPLICATION . MODE ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEPP ER . MODE) ( TEXT . TRACE ) ) )
( REGLA . COMPROBAR . SALI DA ( " P ROYECTO S " " l l -Dec-1 986 1 7 : 56 : 1 2 " " PROYECTOS " " 1 2-Dc- 1 986 1 1 : 45 : 47 " ) ( REGLAS . CONTROL ( RULES RULESYSTEM 2 ) ) ( ( RULE . C[ ASSES RULESYSTEM2 ) ) NIL ( ( ASSERT . MODE ( REPLACE ) )
( ASSERTION ) ( P REM ISE ) )
( ( ANO. TRAC E ) ( FC . TRACE ) ( I MMEDIATE . RULE . APPLICATION . MODE ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEP PER . MODE) ( TEXT . TRACE ) ) )
( REGLA . ESTADO -( " proyect o s " " 1 4-Nov- 1 986 1 3 : 33 : 24 " " PROYECTO S " " 5-Dec-1 986 1 3 : 44 : 1 3 " ) ( REGLAS . FASE2 REGLAS . FASE! ( RULES RULESYSTEM 2 ) ) RULE . CLASSES RULESYSTEM 2 ) ) "Regla comun a las dos fa ses . Determina l o s estados de todos los nodos de la red a part ir- de 1
e s valores de cada uno de e l l o s " ( ( ..SSERT . MODE ( REPL.6.CE ) )
( ASSERT I OH )
( P REMISE ) ) ( ( ANO . TRACE)
( FC . TRACE ) ( I MMEDIATE . RULE . APPLICAT I ON . MODE ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE) ( TEXT . TRACE ) ) )
( REGLA . FIJAR . SALIDA . PATRON ( "P ROYECTOS " " l l -Dec-1 986 1 7 : 44 : 50 " " PROYECTOS" " 1 2 -Dec- 1 986 1 1 : 45 : 52 " ) ( REGLAS . CONTROL ( RULES RULESYSTEM2 ) ) ( ( RULE . CLASSES RULESYSTEM 2 ) ) "Una vez leido el patron
valores correspondiente s " ( ( ASSERT . MODE ( REPLACE ) )
( ASSERTION ) ( P REMISE ) )
( ( AND . TRACE)
de entrada , as igna a l s l ot SALIDA . FA 10N de las 1mi d.ades de s a l i •ia los ...
( FC . TR:!'.CE ) ( IMMEDIATE . RULE . APPLICAT I ON . MOD E ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE ) ( T EXT . TRACE ) ) )
( REGLA . I NICIO . FASE! ( " PROYECTOS" " 2 7-Nov- 1 986 1 5 : 47 : 1 5 " " PROYECTOS" " 5-Dec- 1 986 1 3 : 46 : 49 " ) ( REGLAS . FASE ! ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNI TS ) ) " Regla que se ut i l iza para preparar todos l o s nodos para l a pr imera fase del a l gor i tmo . Cont ie
ne una unica regla R . ACTUALI Z ACION , que tambien es ut i l i zada en la segunda fase del a l goritmo de aprendizaj e "
( ) ( ) )
( REGLA . INICI O . FASE2 ( " PROYECTOS " " 26-Nov- 1 986 1 5 : 28 : 2 7 " " PROYECTOS" " 5- Dec- 1 986 1 3 : 50 : 46 " ) ( REGLAS . FASE2 ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNITS ) ) " Regla que s e ut i l i za para preparar todos l o s nodos para l a s eg unda fase del a l gor itmo " ( ) ( ) )
( REGLA . VARIABLE . FASE l
( REGLAS . FASE ! ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNITS ) ) " Regla que a s i gna los valores del s l ot VARIABLE de tÓdos los nodos de la r ed en funci on de su
ident i ficacion y de las r e s t r icciones de la pr imera fase" ( ) ( ) )
( REGL.<\S . FP.SE2 )
( ( BULE . CLASSES BULESYSTEM2 ) ( CLASSES GENEBICUNITS ) )
" Regla que a s igna l o s valores del s l ot VARIABLE de t odos l o s nodos de l a r ed en func ion de su
ident i ficacion y de l a s r e s t r icciones de la segunda fas e "
( )
( ) )
( REGLAS . ALGORITMO ( " PROYECTOS " " 26-Nov- 1 986 1 4 : 43 : 1 8 " " P ROYECTOS " " 5-Dec- 1 986 1 3 : 38 : 46 " ) ( ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES RULESYSTEM 2 ) ) "Clase de reglas que cont iene t oda s las reglas necesar i a s en e l a lgor i t mo de aprendizaj e de l a
red"
( ( ASSERT[ · 10DE ( REPLACE ) ) ) ( ( RESOLVPr CONFLICT LEAST . PREMISE . COMPLEXITY)
( RETRACT N I L NIL N I L N I L N IL ) ) )
( REGLAS . ASIGNACION . P ATRON ( " PROYECTOS" " l l -Dec- 1 986 1 6 : 26 : 1 8 " " P ROYECTO S " " 1 2-Dec:- l c¡,:,6 1 1 : 56 : 33 " )
( REGLAS . CONTROL ( RULES RULESYSTEM2 ) ) ( ( RUL E . CLASSES RULESYSTEM2 ) ) "P ide al us uar i o l o s va l or e s cor re spondientes para l o s nodos de un patron "
( ( ASSERT . MODE ( REPLACE ) ) ( ASSERTION ) ( PREM I SE ) )
( ( AND . TRACE ) ( FC . TRACE ) ( I MMEDIAT E . RULE . APPLICATION . MODE ) ( OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE) ( TEXT . TRACE ) ) )
( REGLAS . CONTROL ( ''PROYECTOS" " 1 2 -Dec- 1 9
'6 1 1 : 43 : 36 " "PROYECTOS " " 1 2-Dec- 1 986 1 1 : 45 : 1 7 " )
( REGLAS . ALGORITMO ) t 1 ( ( RULE . CLASSES RULESYST EM 2 ) ( CLASSES GENERICUNITS ) ) NIL ( ( ASSERT . MODE ( REPLACE ) ) ) ( ) )
( REGLAS . FASE l ( " PROYECTOS " " 26-Nov- 1 986 1 4 : 44 : 09 " " PROYECTOS " " 1 2-Dec- 1 986 1 1 : 42 : 56 " )
( REGLAS . FASES ) ( ( RULE . CLA33i<:S iWLESYSTEM2 ) ( CLASSES GENERICUIHTS ) ) " C lase e e ¿ l a s que cont i ene todas l a c e g l a s c e fer idas a l a pc i meca fase del a l goc i t mo de ap
l:'endizaj e "
( ( WEIGHT ( O ) ) ) ( ( RESOLVE . CONFL ICT LEAST . PREMISE . COMPLEXI TY ) ) )
( REGLAS . FASE2 ( " PROYECTOS" " 2 .:', -- . . : ·.- - : 36 1 4 : 44 : 1 0 " " P ROYECTOS " " 1 2-Dec-1 986 1 1 : 43 : 1 0 " )
( REGLAS . F..SES )
"l. -.... - 1 -. . -..i.. ·::.. :;::¡
r-Ecndizaj e " ( ( WEIGHT ( l ) ) ) ( ( RESOLVE . CONFLICT LEAST . PREMISE . COMPLEXITY ) ) )
( REGLAS . FASES ( "P ROYECTOS" " 1 2-Dec-1 986 1 1 : 39 : 20 " " P ROYECTOS" " 1 2-Dec- 1 986 1 1 : 4 1 : 46 " ) ( REGLAS . ALGORITMO ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES RULESYSTEM 2 ) ) " Reglas que ej ecutan las dos fases del a l gor itmo" ( ) ( ) )
( REGLA S . ORIGEN ( " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 28 : 5 1 " " P ROYECTOS " " l l -Dec- 1 986 17 : 04 : 50 " ) ( ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES BULESYSTEM 2 ) ) "Coloca los va lores de t odos los nodos y los de todas las conexiones " ( ( ASSERT . MODE ( REP LACE ) )
( ASSERTION ) ( PRElü:SE ) )
( ( ANO . TRACE ) ( FC . THACE ) ( I MMEDIATE . RULE . APPLICATION . MODE ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE) ( T EXT . TRACE ) ) )
( UNIONES ( "pt'oyectos " " 1 4-Nov- 1 986 1 3 : 30 : 4 1 " " P ROYECTOS " " 26-Aug- 1 98 7 9 : 48 : 1 2 " ) ( RED ) ( ( CLASSES GENERICUNITS ) ) "Conexiones o arcos entr e los nodos de la red" ( ( ACTUALI ZACION
( NO ) NIL ( ( ONE . OF SI NO ) ) NIL ( ( COMMENT
( " Valor booleano ( SI , NO ) que determina s i el peso de la conexion ha s ido actual izado en la fase corres pondiente del algori tmo de aprendizaj e ( s umandole o r e s t andole DELTA ) " ) )
( CARDINALITY . MAX ( 1 ) ) ) ) ( P ESO
( 0 ) NIL ( :CAL ) :-: !L ( ( Cüi'lMEiH · ( " Va l or numet' ico a s i gnado a l :i cone:: i on entr· e dos :iodo s " ) )
( AVUNITS ( llUnit ( CORRECCION BOLTZ MANJ:O ) ) ) ) ( P UNTO l NIL
N IL ( NODOS ) NIL ( ( COMMENT ( " Uno de l os dos nodos asoci ados a l a conexi on " ) ) ( CARDINALITY . MAX ( 1 ) ) ) )
( PUNT02 HIL F I L
( NODOS ) NIL ( ( COMMENT ( " Uno d e los dos nodos a s ociados a l a conexion " ) ) .::ARD I NALITY . MAX ( l ) )
( ( CREAR . UNIONES ( GLOBAL : LAMBDA ( SELF ) •
( PROG ( DATO VALOR N ) ( TE RPRI ) ( P RINTOUT T " NOMBRE DE LA NUEVA UNI ON : " ) ( SETQ DATO ( CREATE . UNIT ( READ ) NIL NIL ' ( UNI ONES ) ) ) ( TERPRI ( P R INTOUT T " P ESO ( D para e l valor por de fect o ) : " ) ( SETQ VALOR ( READ ) ) ( P UT . VALUE DATO
C TERPRI )
'PESO ( CONO ( ( EQ VALOR ' D ) 0 )
( T VALOR ) )
( P RI NTOUT T "PRIMER NODO CONECTADO : " ) ( SETQ N C READ ) ) ( P UT . VALUE DATO ' PUNTO! N ) ( PUT . VALUE N
' CONEXIONES ( CAR ( AP PEND ( GET . VALUE N 'CONEXIONES ) ( LIST DATO ) ) ) )
( TERPRI ) ( P RINTOUT T "SEGUNDO NOD CONECTADO : " ) ( SETQ N ( READ ) ) ( P UT . VALUE DATO ' PUNT02 N ) ( PUT . VALUE N
' CONEXIONES
i l
( CAR ( AP P END ( GET . VALUE N 'CONEXIONES ) ( LIST DATO ) ) ) ) ) ) METHOD ( METHOD ) NIL ( ( COMMENT " Cont i ene la func.ion que c.r· ea 1.m i ones entr·e ne-do s " ) ) )
( SUPRIMIR . UNIONES ( GLOBAL : LAMBDA ( SELF )
KBEnd
( 'T'l<'lH>T \ ' ... - - · - -· - I
( PR!ATOUT T " NOMPF DE LA UP I 0f : " l ( UNITDELE7E
METHOD ( METHOD ) NIL ( ( COMMENT " Cont iene la funcion que s upr ime uniones " ) ) ) ) )
APÉNDICE 3
"' • I 1! .. • -- - r - - - - - ----------------·-- ---- __ _ --
, .
: ' ' : ; ; ; • i L -i i
! • ¡ ! ! ; i • ª i i i 1
1 i ¡ ; ! •
\
.. .. .---·-· "·\·1. - ..--- .. - - - ... -- ...... f: ........ -': HL.t::L .. .. : P.t:. L E::::---- HEGl. .. j
¡:··,. i':f:ETHUO .. CTU.;S;. TOH U 3 g Z 7
/:<:,, .ETHDD ,AGTüA TüR u 4 4 :3 9 .. . . . · - - - · - .. . ..... ..... ... - - · - . · - · . ....... - ...... - - -
__ __ _ __ .. : _· -L ·_YJ;t=JJ_-L!!_ .ll"l!..r t.;--=t! !_ü :O:: _____ -·--. . • .:· .· .:;::.,:;:·: ..... ::, VET;AL =!HA: =:H :: B 1 .. .. .. r . VE . . T.LlAL . . RA. f n..; .uuH 1 U ,:j L 9
!·.!:·;.·:.· > ..... ·¡"·. VFHT!f':AI _ TRAFFi:-: _ ! !fHT f: :-:t ::; fi :=t . . . .
·' .. .. - -- - - - - - -- - - - - - -- .. - - --- --- - - - - - - -
,.-:
:;:::,:¡;:>:·:·.: :
:= : ::::: ::
:
:: : ... ;:.·: .. :.·:.·:./.:.
f: .. :·::·
··:·_:_'.::: ..... ·:;.::· ..... > ·:. ,; : ;; ; o;G;;\:=:.:TUA TUR (: 3 2 : 4 . . . .. . .. •.·· .-·
.. ::::::·.o:·:.-.. f ·: .. _... - .- OiGifi:iETEH O 3 2 9 7
i:.·..:-.:'.• ::- ··" .. .-.
/ J1:i:iiuii:"Tü ii: .::: i"'1 ..¡ ):,:.· ·:> -· ......... .. . -· .... ...· -- !!..J" !l'l..-l! !! !! "!' l!: !L- 11 L-.11 I!: 'U' "!..!' "-!' ._,. 11
-,.-.::·-.
·::.:.:_ .. : __ .
_ .. -· -· .
..
:-::r-=:..:c:::: n '":J: "':2= :: a -:::;: .-
. -
- -- -- -· :-.--:::=::... • - · . - u ...: • .......... . .. . -- - -- -- -o/.-:_.':- :- -- -_ _ - ni:1iMFTFP. f: :i :i fi 7 ;AGES ] ;; -:: :: : : - -
=:=:·=_:_==:= 1lltii" .-... -- -- - -- - - _ 1 ne .. 1nn 1 a- 1-t 1 1 - _-; -, 1 1
-"--.-
-
..;.:.:'_ ·-._ '· - .: -- -- - ;;:·; : :
v.-'' . . - - . -
- . !!..J' !' '!...-!! li!l'Pll- 1 !- ! "!..P ,_. 'U' !' 'U'
;.·-:··: ... :_--. . :· .... .... ·-. -- LliGif".iETEH U 3 3 6 6 -.-.-;;,.:: ... ·"' . ... ·-. . . _ , ,_' •. '· . . .... · ... ... u;u;'!'ETER o 3 3 6 8
'.;.::::_.>.·,.-·· .. :---... :
· ·-'· - · - · · · - - - - -
· .. ..·LJ!t::!r?:"!!:. ! !:.H U i:! ! U i/:':: .. : ·.> .. : .. \ .... ··.. ..._
,. · ,_ ·· · .. · ... · .. Ll§LliETEH O 3 3 7 2 ;f :··:·:::.::··ü!füMETER 0 3 3 7 4
· . , ·, \ .. , \ . .-. a .r- a a. J1 .- • .-n .n. .,.,, .r¡, -:P r-\¡:• . . ,\•\'· ... \ .. ' L•!t!m!:. ! t.• -a u E u
··- !\"· .. \.' -.. '-: LliGif'iETEH U 3 3 7 8 \··:· .. :·-.. · .. x .... ·· OU]!:'!'ETEH03380 · ., \ ''·. · ,, '•.
\ '· \ \ <: fJiGfi:1ETER 0 3 3 8 2 •,_ \ \ \ ' !. • • :-.. ;."'-:. ¡ ¡¡¡_ -- · · ·· .-. .. -. --· ...... .:;
• · . '· • : :n :umr 1 r tt 1 1 .,"'1; .'1i: n !.l-1, '• ",
- - - - - - · - - - - - - - - - - -
\'• ..:', [fü::iiriETHs u 3 3 B f,; ··,; ·. ;MALlE =PAf-EL [E 3 2 5
·-.... _
·-----..... _._
HEGLP. .. . ·-.;
¡ <
Ntll lllt'" t- ., , .,f lf l ; - - ; t-¡_. ; . . . • •
Nnnn7 '<. rsri>nn L -r-:7!:;:: I - - -- - - - -• r··•:n¡ _ ACT I VO _
Nnnn · rsr 1-nn --------... ' - - - .. - . ¡ • · · - ! • n ' •
J\IUUU!>'::; t.:; l !,LJU
¡ - -· . . .. . . .
NilrITT G> rsTM1fl
1_:-·
F RCTIUO
r""!'!
p·;':Ef'*''''] r"''!w:· r·lr!r"i'!'"
11.1""" ('01ª'ª"!it:11
r·M'ee;1:!1 f "lf"PPt!,,
1 ;1 1r·J , ;., ·-. f't- "º _
.. 10_._1 __ .. 1 10 . 3
r·MMitJ''I
1'""'1' .
r't!M'fl !!l:t1L/\S ./\Lblt1tt 1 Mlt ':- !ti: 1 l!P.t: 1 Ht-1 1 '-. l lHlht-N - - - --- - - - - - -- - -- - - - - -- - --- -- -- - ---- - - --
1
COl.t=:l""'lhod
Ht- 1 1 "•: -'I hllHl l Mf l - - - - - -- - - - - -- -
APÉNDICE 4
(Outpu1:) The REO Uni1:. in· BOl.,;"ZM.,.NN Knowledge Ba.se : . . ·.
. .. . ' , ' . . - - ----- - - - - --- --- - ""'- ' ___ __ __........._ ___ - --- -- ----"-'-"'---"- --"'-"-'-.,__-
Unit: RED in lmowled.ge ba.se BOL TZMANN Crea.ted by PROYECTOS on 2.5- Nov- 1 9 3 6 1 7 : 0 0 : 2.4 Ivlodified by PROYECTOS on 2.6 - Aug- 1 9 8 '7 9 : 3 3 : 0 5
S1..i.bcl.::..sses: NODOS, UNIONES Iv!ember Of. (GLASSES in tb OENEP.IGUl'JITS) Estructura basica. de la red compuesta por N"ODC•S y UNIONES
OT,im slc-t: ALGORITMO from RED Inherit.a.nce: METHOD ValueClass: (METHOD in kb KEEDATATYPES) "" Comment,: " Algoritni.o que rea.liza el .:i.prendiza.je ut.iliza.ndo REGLAS.ALGO
IRITMO" "\l a.lues: 1 BOLTZivIANN> RE:D:: .6.U::7C)RITMO!methoc.l.I
10\.Tli. slot: ASIGfvAR.PATRmv froiY1 RED Ir1herita11ce: METHOD Va.lueCla.ss: (METHO!J in l:b KEE!JATATYPES) Comment: " Pide al u.su.ario los valores de los nodos de la red ( un patron de
entrenamiento)" Values: ! BOL TZMANN> RED:: ASIGNAR. P ATRON!n1ethodl
Own slot: COMPROBACION from RED Inheritance: METHOD V alueClass: (METHOD in kb KEEDAT A TYPES) Comment: " La.nz.:i. el ra.zona.miento que comprueba la.s sa.lidas despu.es d.e u.
na ejecucion del algoritmo con un p.;:,.tron" Val u.es: ! BOL TZivIANN> RED: : COMPROBACION! methodl
Ovm slot.: CORRECTO from RED Inheritance: OVERRIDE. VALUES ValueClass: ( ONE.OF SI NO) Cardinality.Iviax: 1 , ·
Comment: " Valor boolea.no ( SI,NO) que sirve para ci.veriguar si todos los pa.t rones de entrada han da.do la sa.lida adecuada tras la segunda fase del algori tr!Lo de a.prendizaje"
Values: NO
Own slot: DEGOMPOSiTiON.GOMPLETE from CLASSES Inherita.nce: UNION ValueClass: ( LIST. oF· (GLASSES in kb GENERICUNITS) ) Comment: " A c:oiúplete dec0Inpoz.it.ii:1r1 is - h.:51 .-:i1 ..
subclasses of this clas.:; which jcdnt.ly
-DJnpu+;TtiEncUniwDl.c;'fM -;Knowled!WdJase+r-.,-, -----";p:r-.-.:-=-:ri''' -. ' · - · - - - - . - - - - - - - - -- - ---- --- --= ---
O'wn slot: OECOMPOSITION .DISJOINT from CLASSES Inherita.nce: IJN!ON VaiueC1a.ss: (Lif::T.OF' (CLASSES íri kb GENERiCUNITS)) Conuúent: " A disjoint decomposition is a list of
subcla.sses of' this class which sha.re no
members. More th.3.n one disjoint
decorúposition n1ay be specifie•:i.
Ovn-1 slot.: DELTA f'ron.1 REO Inheritance: OVE.RR!DE. VALUES \la.luec1.:i.ss: (REAL in kb !<.EEOATATYPES) Comment: "Valor corrector de los pesos de 1-:i.s conexiones en el .:i.lg·c·rit;·no de
aprendizaje"
Ca.rdinality. Ivíax:
Va.lues: O . 1
Own slot: ITERAGION from REO Inheríta.nce: METHOD \l.3.lu.eClass: (METHOD in kb KEEOATATYPES) Comment: "l'-.-ietodo que rea.liza. u.na iteracion completa con todos los pa.trone
s de entracla"
Values: IBOLTZMANN"> RED: : ITERACIOr:r ' ·aethodl
Ü»\l'n slot: MEMBERS.DAT ATYPE from GLASSES Inheritance: OVERRIDE ValueCla.ss: (OATATYPE in, kb KEEOATATYPES) Va.lues: (UNIT in kb KEEOATATYPES)
Own slot: MEMBERSHlr> f'rom CL ,SSES Inheritance: METHOO
'
Valu.eCla.ss: (METHOD in kb KEEOATATYPES) Cardinality.Max: 1
Ca.rdinality. 1vI:in: 1
Va.l u.es: IvIEivIBER- DISJOINTP! IvIETHOD
Own slot: MENUOPERACIONES from REO
1 1:;r!i::;: ; LEEEOAT ATYPES) i 'T1tle º ()PE::FC_i!..,.(:ICJrre::f::: E:.:.t. ... )IC..i.S11 ; ; F";::n.t: KE:E:. Trr:;-_.:. F"CJI-JT .
Cüff1i11ent; " I,!eriu. principal el.e crea.cion el.e la red"
. . - ------------ - - - - - - - • - __:'. - - - ---- - "-- - - - - -- - - - - '_ - - d' -
Own slot: OPERACIOl'JES ftom REO Inherita.nce: METHOO V al ueClass: (METHOO in l:b KEEDA TA TYPES) Comment: " i:::;ontiene la f1J.ncion que se ocupa. del rüenu principa.l ele opera.ci
or1es11
Va-11_i.es: I BOLTZivii·.NN"> RED: : OPER.l!..CIClI··l"E;';! methodl
(o·wn slot: ORIGEl',J from RED 1 Inheritance: METHOD
11 \l.:i.lueCla.ss: (METHOD in l:b KEEDATATYPES) Comi·nent: " Inicializa. la_ recl"
I Va.lues: I BOLTZivIANN> RED:: ORIGEN! n1ethodl
¡
J 1
0-wn slc.t: SUBGLASSP f'rorn GLASSES Inherit.:i.nce: METHOD Val ueCla.ss: (METHOD in kb KEEIJA TA TYPES ) Cardinality. Ivlin: 1
c.:i.rd.ina.lity. Ma.x: 1
Va.lu.es: SUBCLASS-DISJOIHTP!J'./IETHOD
Own slot: \!MAGE.PANEL from P.ED Inherita.nce: OVERRIOE. VALUES Values: lMAGE.PANEl 03254
1 L_
Unit: UNIONES in knowledge ba.se BOL TZMANl"J Gre.:J.tetJ. by proyecos on 1 4- Nov- 1 986 1 3: 3 0 : 4 1
1Iviodified b y PROYECTOS on 2.6 - Aug- i % ·/ 9 :43 : i 2.
Su.percla.sses: RED Ivlember Of: (CLASSES in lfü GEl".!ERICUNITS ) Members: CON 67, CON 57, GON 5 6 , GON 4 6 , CON 4 5 , GON 3 6 , GON 35,
GON 26, GON 2 5, GON 1 6, GON 1 5
Conexiones o arcos entre los nodos de la red
I\·1ember slot: ACTUAUZACION from UNIONES Inheritance: OVERRIOE. VALUES Va.lueCla.ss: ( OI'.JE. O:::)F· SI NCi) Cormnent: "Va.lor boolea.no ( SI, NO) que determina. si el peso de la. conexion
1ha. sido .:i.ct.ualiz.:'.\d.o en ia. fo.se correspondiente del algoritmo de a.prendiza.je ( s l . . ... · 1· -' - 1 - - rP.e;t • 1· -' - ' - ¡·,-¡:¡·T ,\ ., H 1 U.H.l•::I. !l.J.U t. U -· .-·:t. 1l_1Ul -· -·L- 1 .......... 1 Ca.rdinality. Ivlax: 1
Valu.es: NO
1
Member slot: PESO from UNIONES Inheritance: OVERRIDE . VALUES Va.lueClass: (REAL in kb KEEDATATVPES) Comment: " Va.lor numerico a.signado a la conexion e ntre d.os nodos" A vunits: CORRECCtor,¡ Values: O.O
Ivlember slot: PUNTO 1 from UNIONES Inheritance: OVERRIOE. VALUES Valu.eClass: NODOS Con:unent.: " Uno de los dos nodos asociados a. la. conexion" Cardina.lity.Ivia.x: 1
Va.lues: Unknown
Ivlember slot: PUNT02 from UNIONES Inheritance: OVERRIOE. VALUES V' a.l ueClass: NODOS Comment: " Uno de los dos nodos asociados a la conexion" Ca.rd.inality. 1' .. 1ax: 1 \7a.11J.es: Unknown
i Ovn. slo: CP.EAP- ... ::NES from Uf'Jiüf'JES
f 1 r1 n F". ·r 1 r.,=i r1 1""":P.. riin- 1 nf\il l \; .;:- l i_i e'-' i .:<. 5 :::: ( fri!:: T HO!Jl.=-1 !r1-,_,_1:·1·1'!<1'_=.:1t:.•ü/l.! PL: .. r! ;et_ v.. 1--1-_1.:s1:1)1· ,_-, r· ·1.:,·" C1:1:rilr.üe11t: 11 CorJ.tie11e .J. .. ....... ¿ "'l. ._. ._. ._..... e:r1tre r1od.os11
Ovm slot: OECOMPOSITION.COMPLETE from CLASSES Inherita.nce: UNION Va.lueCla.ss: ( LIST.OF (CLASSES in kb GENERICUNITS )) CoJ.mYtent: 11
A complete decomposition is a list of subcla.sses of this cla.ss which jointly subsume all the members of this cla.ss. l"ti:ore t.ba.n one complete decomposition may be specified.
Vaiues: Unknown
O•,Jm slot: DECOMPOSITION .OIS.JOll"JT from CLASSES Inherit.ance: UNION Va.llJ.eCla.ss: ( LIST. C)F' (CLASSES in kb GENERICUNíTS)) Comment: 11
A disjoint decon:q:iosition is a list of ;:;ubcla.sses of t,his cla.ss '>'<hich sha.re no mern.bers. Ivlore than one disjoint decomposition ma.y be specified.
·r...1a.11_1.es: Unkno ... 11n
Own slot: MEMBERS.DATATVPE from CLASSES Inheritance: OVERRIOE '\.la.lueCla.ss: (OATATVPE in kb KEEOATATVPES) Values: (UNIT in kb KEEDATATVPES)
Own slot,: MEMBERSHIP from CLASSES Inheritance: METHOD Valu.eClass: (METHOD in kb KEEDATATVPES) Cardinality.Max: 1
Cardin.:i.lity.Min: 1
Values: MEMBER- DISJOINTP!.IvlETHOD
Own slot: SUBGLASSP frorn. GLASSES Inherita.nce: METHOD ./.:i.lueCI.:..ss: (METHOD in kb KEEDAT ATVPES ) C.:ndin.:i.lity. Ivlin: 1 Ca.rchna.lít.y..Ivla.x: 1 Val1e:=;: :=>UBC.'l _A_ SS-DISJi'.:::1rNTP! .I'il:E:T!-!()['•
jc•wn slüt. su¡:mvim .Ul\HOl'i.IES üe;m UNiüNES lnherita:nce: METHOD
Unit: f'.!ODOS in knm.i.,Tledge b.:i.se BOL TZMANl"J lcrea.ted by proyect,os on 1 4- Nov- 1 9 8 6 1 3 : 32: .5 1
¡r,·-i:; _b_s=- -·;ECTOf; on 2-6- Aug- i 9 8 '7 9 :2-2: 5 3 1 .::. U.fJt:'r•-=10.·::.i::::.: nc:.u
Iviember Of: (CLASSES in kb GENERfGUNfTS) Members: N0007, N0006 , NOD05, NOD0 4, N0003, N0002, NOD0 1
Unid.:i.c.l.es o
Iviember slot: COMPROBAR.SALIDA frorn NODOS Inheritance: METHOD Va.l u.eCla.ss: (METHOD in kb KEEOA TA TYPES)
1 Comment: " Comprueba si el estado del nodo despues de l.:i. segunda fase del algoritmo es igua.l a.l que ind.icaJ.:i.::i. el pa.tron de entrena.miento" 1 \7.:.i.l1J.e;;.: !B()LTZlvlANN> N()DOS: COlv1Pf:.OB.6.R.SALIDA.! methodl 1 1 Iviember zlot: GONEXIOl"JES from NODOS
Inherita.nce: OVERRIDE. VALUES Comment: " Lista. de las conexiones en las que interviene el nodo" Va.lues: Unl:;:no>•.Tn
Ivlember slot: ESTADO from NODOS Inheritance: OVERRIOE. VALUES Va.lueCla.ss: ( ONE.OF i·.CTIVO INACTIVO) Cor.nment: " Estado actual del nodo" c.::i.rdina.lit,y. Ivlax: 1 Values: INi·.CTIVO
Iviember slot: IDENTIFIGACION from NODOS Inheritance: OVERRIDE. VALUES ValueClass: ( ONE.OF ENTRADA SALIDA INTERMEDIO) Conwiler1t: " Funcion del nodo en la red, ya sea elemento de EI'-ITRADA,INT
ERivlEDIO,o de SALIDA" Ca.rdina.lity. :M:a.x: 1 Values: IN'TERivlEDIO
Ivlember slot: SAUDA.PATRON from NODOS Inherita.nce: OVERRIDE.VALUES .lalueClass: (C)NE.OF ACTI\l() INACTI\7C)) c.:i.rcl.in.:..lity. Ivl.:..x: 1
1 Ivien:1ber slot: UMBRAL
1
Inherita.nce: OVERRIOE. VALUES Va.lueC'.la.ss: (REAL in kb KEEOATATYPES ) Cormnent: " Va.lor umbra.l pa.ra calcu.la.r el esta.do ele a.ctiva.cion o ina.ctiva.ci
en del nodo" Ca.rdinality. Ma.x: Va.lu.es: O.O
Member slot: VALOR from NOOOS Inherit.:i.nce: OVERR!DE, VALUES ValueClass: (REAL in kb KEEDATATYPES) .t. vu.nits: GORREGGION Comment: " \.la.lor numerico que tiene el nodo, .1 pa.rtir del cu.a.l se determin
.:.. su est.:i.do de act.i,.ra.cion o in.:i.ctiva.cion" 1:::a.rd.ina.lity.r .... 1.1x: Va.lues: - 0 . 1
hviember slot: VARIABLE from NOOOS Inheritance: OVERRIDE. VALUES Va.lueCla.ss: ( ONE.OF T NIL) Comment: " Variable boole.:i.na. (T, NIL) que indica si el esta.do del nodo pu.ed
e ser ca.mbiado por el funciona.miento interno de l.:i. red. Su va.lor es :NIL cua.nd o el nodo es de ENTRADA o de SALIDA"
Ca.rdin.1lity. Ivlax: 1 Values: T
Ivlember slot: VER.SI .ACTIVA.A from NODOS Inherita.nce: METHOO Va.lueClass: (METHOD in kb KEEDATATYPES) Comment: "1vletodo que calcula el estado de los nodos conectados con el nod
o propieta. io del metrodo. Toma. como .:i_rgumentos el nodo propietario y una un idad de UdIONES"
Values: I BOL TZMANN> NODOS: VER.SI. ACTIVA. A! method.I
Own slot: CALCULO from NODOS 1 Inherit.ance: METHOO
I Va.lu.eClass: (METHOO in kb KEEOATATYPES)
\ Con:nüent: " Iviet.odo que dispa.r.1 el funciona.miento interno el.e la. red a partir 1 de una determina.da situacion u.tiiizando RE:Ca_.A.C'..e..u::.UL/)" t \l alues: I fü)LTZMANN> NODOS: : C."'.LC'.ULO! J.üethodl 1
kc<.:'!! slot: CREAR.NODOS f'roTn NODOS i Ir..heritance: METHOO
.
Va.lueCla.ss: (METHOO in kb KEEOATATYPES)
-(Output-) "The ·NODOS Unit-in BOLTZtJIANN Knowletlge Base ·
O>•m slot: OEGOMPOSITION .COMPLETE f'rom GLASSES Inherita.nce: UNION VaiueClass: (LIST.OF (CLASSES in kb GENERICUNITS)) Comment: " A complete decomposition is a list, of subcl.:..sses of this cl.:i.ss which jointly subsume a.11 t.he members of this class. IVIore than one complete decomposition may be specified.
Values: Unlmown
0'.!m slot: OECOMPOSITION.D!SJOlf-JT frmT1 GLASSES f Inherit.c<.nc:e: UN!ON ValueClass: ( LIST.OF· (CLASSES in kb GENERICUNITS) ) Comment: " A disjoint decomposition is ,:i. list of subcla.sses of this clo.ss which sha.re no members. Iviore than one disjoint decomposition may be specified.
Vo.lues: Unkno't11n
Own slot: MEMBERS.OATATYPE from CLASSES Inherit 0 •• nce: OVERRIOE Va.lué .. :..ss: (OATATYPE in kb KEEOATATYPES) Values: (UNIT in kb KEEDATATYPES)
Own slot: MEMBERSHIP from CLASSES Inheritance: METHOD ValueClass: (METHOD in l:;:b KEEDATATYPES) Ca.rdir· :i.lity.Ivla.x: 1
Cardinality. Min: 1
V al u.es: :MEiv!BER- DISJOINTP! IvIETHOD
Ovm slot: MENUEST AOO from NODOS Inheritance: OVERRIOE. VALUES Va.lueCla.ss: (MENUITEM in kb KEEOATATYPES)
Comrilent: " Ivlenu p.:..ra. elegir el estado de un nodo en el mmnento de su ere acio.11"
J
1 Titie: " E:ST.e.D() DE:SE:ADO"
• • - 111 - -· "' • (''fl , .. -;" ' OTJr-;..,..E· ' C'.,...I' 70)' "'II«r t. (''TI rr-1" • V <:1. __ J:!i:), l •"'- _ ,, '- l._ ..,_ l · .'-1. -· l '' . \. • • -· '' · J ( C::H_H)'TE It·IACTI\1C:i)) i
l 1
O>.•ln slot: MENUIOENTIF from NODOS Inherit.a.nce: OVERRllJE. VALUES Valu.eClass: (MENUITEM in kb KEEDATATYPES) Title: " IDENTIFICACION DEL NODO" Comment: "11/fenu. para elegir la identificacion del nodo en el :n:10mento de s
u. crea.cion" V.:i.lues: ( " ENTi·.RDA" ( QUOTE ENTR.".D.".)) ( " SALIDA"
( QUOTE SALIDA)) ( " INTERMEDIO" (QUOTE INTERivIEDIO))
Own slot: SUBGLASSP from GLASSES Inherita.nce: METHOO Valu.eClass: (METHOO in kb KEEOATATYPES) Cardina.lity.Ivliri: 1
Cardina.lity.lvlax: 1 Values: SUBCLASS- [m;JOINTP! Iv1ETHOD
Own slot.: SIJPRIMIR.NOOOS from NODOS Inherít.a.nce: METHOD Va.lu.eClass: (METHOO in kb KEEOATATYPES) Comment: " Contiene el metodo que su.prime un nodo de la red" .la.lues: IBOLTZ1'11ANN>NODOS: : SUPRI1\·:TIR.NODOS!met.hodl
APÉNDICE 5
; ; ; -*- Mode : L ISP ; Package : KEE ; Ba s e : l O . -*-
( BOL T ZM.6.NN ( " pr· oyect o s " " 1 4-Nov- 1 986 1 3 : 30 : 3 1 " "PROYECTOS " " 2 6-Aug- 1 98 7 9 : 49 : 0 1 " ) NIL ( KNOWLEDGEBASES ) NIL ( ) ( ( KBCOPY ( ( BEFORE ( BEFOREKBCOP YIMAGE SELF KB NEWKB ) ) ( AFTER ( AFTERKBCOPY I MAGE SELF
METHOD METHOD NIL H I L )
( KBDELETE ( ( BEFORE ( BEFOREKBDELETEIMAGE SELF KB . OR . REF NOASKP RELOADP ) ) ) METHOD METHOD NIL N I L )
( KBLOAD ( ( AFTER ( AFTERKBLOADIMAGE SELF KBSTB.EAM QU IETP NOREL INKP KB ) ) ) METHOD METHOD NIL NI L )
( KBMETHODFILE ( BOLT Z MANN ) ) ( KBSAVE ( ( BEFORE ( BEFOREKBSAVEI MAGE SELF KB QUIETP MAKEMODE NEWDIRECTORY ) ) )
METHOD METHOD NIL NIL )
( KBSIZE 86 ) ( KEE . DEVELOPMENT . VERSION . NUMBER O ) ( KEE . MAJOR . VERS ION . NUMBER 2 ) ( KEE . MINOR . VERSION . NUMBER 1 ) ( KEE . PATCH . VERS ION . NUMBER 64 . 1 ) ( KEEVERS JN KEE2 . l ' ) )
l.1
( CON 1 5 ( " pr- oyect o s " " 1 4-Nov- 1 986 1 3 : 40 : 33 " " P ROYECTOS" " 1 2-Dec- 1 986 1 1 : 32 : 56 " ) NIL ( UNIONES ) r! L ( ) ! ( ACTUAL I ZACION ( NO ) )
I P !':SO N!!. : p ;:NT O l ( NODO l ) ) ( P iT02 ilOD05 ) ) )
( CON1 6 ( " pr·oyectos " " 1 4-Nov- 1 986 1 3 : 40 : 33 " " PROYECTOS " " 1 2-Dec- 1 986 1 1 : 32 : 57 " ) NIL \ u1;r;Es ) N' l l-: ;
KB NEWKB ) ) )
( C O N 2 5 ( " pr·oyec.t os " " 1 4-Nov- 1 986 1 3 : 40 : 35 " " P ROYECTOS " " 1 2-Dec- 1 986 1 1 : 3 2 : 57 " ) NIL ( UNI ONES ) NIL ( ) ( ( ACTUALI ZAC ION ( NO ) )
( P ESO ( O . 1 ) ) ( P UNTO ! ( NOD02 ) ) ( PUNT02 ( NODOS ) ) ) )
( CON26 ( " pr·oyec.t os " " l •¡-Nov- 1 986 1 3. : 40 : 34 " " P ROYECTOS " " 1 2-Dec - 1 986 1 1 : 32 : 58 " ) NIL ( UNIONES ) NIL ( ) ( ( ACTUAL I Z ACION ( NO ) )
( PESO ( 0 . 1 ) ) ( P UNTOl ( NOD02 ) ) ( P UNT02 ( NOD06 ) ) ) )
( CON35 ( " pr-oyec.tos " " 1 4-Nov- 1 986 1 3 : 40 : 35 " " P ROYECTOS " " 1 2 -Dec.- 1 986 1 1 : 32 : 58 " ) NIL ( UNIONES ) NIL ( ) ( ( ACTUALI ZACION ( NO ) )
( PESO ( 0 . 1 ) ) ( P UNTO l ( NOD03 ) ) ( PUNT02 ( NODOS ) ) ) )
( CON36 ( " pr-oyec.t os " " 1 4-Nov- 1 986 1 3 : 40 : 36 " "PROYECTOS " " 1 2-Dec- 1 986 1 1 : 32 : 58 " ) NIL ( UNIONES ) NIL ( ) ( ( ACTUALI ZACION ( NO ) )
( P ESO ( 0 . 1 ) ) ( P UNTOl ( NOD03 ) ) ( P UNT02 ( NOD06 ) ) ) )
f .-..""\ lY 1, r.:\ '-'\Jl! f-....1 ( " pr· oyec.t o s " " 1 4-Nov- 1 986 1 3 : 40 : 35 " " P ROYECTOS " " 1 2-Dec- 1 986 1 1 : 32 : 59 " ) NIL ( UNIONES ) NIL ( ) ( ( ACTUALI ZACION ( NO ) )
( P ESO ( O • l ) ) ( P UHTO l ( NODOLt ) l
\, h ', .. n .. \, .. ) J J I
( CON46 ( " pr oyect os " " 1 4-Nov-1 986 1 3 : 40 : 35 " " PROYECTOS" " 1 2-Dec-1 986 1 1 : 32 : 59 " ) NIL
( UNIONES )
N I L
( ) ( ( ACTUALI Z ACION ( NO ) )
( P ESO ( O . l ) ) ( P UNTO l ( NOD04 ) ) ( P UNT02 ( ff0D06 ) ) ) )
( CON56 ( " PROYECTOS" " 25-Nov-1 986 1 6 : 49 : 1 1 " " PROYECTOS" " 1 2-Dec- 1 986 1 1 : 33 : 2 1 " ) NIL ( UNI ONES ) N I L
( ) ( ( ACTUALI Z AC ION ( SI ) )
( PESO ( O • l ) ) ( P UNTOl ( NODOS ) ) ( PUNT02 ( NOD06 ) ) ) )
( CON57 ( " proyect o s " " 1 4-Nov- 1 986 1 3 : 40 : 36" " PROYECTOS " " 1 2 -Dec- 1 986 1 1 : 33 : 02 " )
NIL ( UN IONES ) N I L ( ) ( ( ACTUAL I ZAC ION ( NO ) )
( P ESO ( 0 . 2999999996 ) ) ( P UNTO l ( NODOS ) ) ( P UNT0 2 ( NOD07 ) ) ) )
( CON67 ( " proyectos " " 1 4-Nov- 1 986 1 3 : 40 : 36 " " PROYECTOS" " 1 2-Dec- 1 986 1 1 : 33 : 02 " )
NIL ( U NIONES ) NIL ( ) ( ( ACTUALI ZACION ( NO ) )
( PESO ( 0 . 2999999996 ) ) ( P UNTO l ( NOD06 ) ) ! P UNT02 ( HOD07 ) ) ) )
(• iHREC( I ON ! " PROYECTOS " " l -Dec- 1 986 1 8 : 00 : 08 " " P ROYECTOS " " l l -Dec- 1 986 1 5 : 35 : 38 " ) N I L ( ( ACTIVEVALUE ACTIVEVALUES ) )
"Valor· activo que expresa los numeros obt enidos para los val or· e s de los nodos y :par a l o s P• de las conexiones de forma correct a "
( )
l l AVPUT i LAMBDA ( SELF SLOT HUEVO V IEJO UNI DAD TIPO l
.. _. \ ,' / u ( AR HUEV O ) ) ) 1 0 . 0 ¡ ) ) ) ¡ ¡ ¡ ¡
( DIGIACTUATOR03294 ( " P ROYECTOS " " 25-Nov - 1 986 1 7 : 34 : 09 " "PROYECTOS " " 26-Aug- 1 987 9 : 48 : 48 " ) NIL ( ( DIGIACTUATOR ACTIVEIMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : CP TFONT ) ( HE IGHT 37 ) ( I MAGE . WAS . PAI NTED N IL ) -( O BJECT . DI SPLAYED #Slot ( VALOR NODO l BOLTZ MANN OWN ) ) ( REGION ( 99 3 1 0 78 3 7 )
N I L NIL NIL ( ( I CON . REGION ( 99 310 1 25 48 ) ) ( EXPAND . BEGION ( 99 3 1 0 7 8 37 ) ) ) )
( SAVED . VALUES -0 . 1 ) ( SUPER . IMAGE #Un i t ( I MAGE . PANEL03254 BOLTZMANN ) ) ( TITLE " NODO l / s VALOR " ) ( TITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WAS . SAVED T ) ( WI DTH 78 ) ( W INDOW " A F l avor I n s t ance"
NIL NIL NIL ( ( I CON . WI NDOW NIL ) ( EXPAND . WINDOW NIL) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DIGIMETER03297 ( " PROYECTOS " " 25-Nov - 1 986 1 7 : 35 : 04 " " P ROYECTOS" " 26-A1..1g- 1 987 9 : 48 : 49 " ) NIL ( ( DIG IMETER ACTI VE IMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : CP TFONT ) ( HEIGHT 3 7 ) ( I MAGE . WAS . PAI NTED N I L ) ( OBJECT . DISPLAYED #Slot ( VALOR NOD02 BOLTZMANN OWN ) ) ( REGION ( 1 0 1 265 7 7 3 7 )
NIL NIL NIL ( ( I CON . REGIOH ( 1 0 1 265 1 25 48 ) ) C EXPAND . REGION ( 1 0 1 265 7 7 37 ¡ \ \ \
( SAVED . VALUES -0 . l l
¡ SUPER . IMAGE #Un i t ( IMAGE . PAL032 OL T Z MANH ) J ( T ITLE " NOD0 2 ' s VALOR " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WA S . SAVED T ) ( W IDTH 7 7 ) ( W INDOW " A F lavor I n s tance"
NIL NIL
( ( ICON . W INDOW N I L ) ( EXPAND . W I NDOW MI L ) ( CURRENT . W I NDOW ( EXPAND ) ) ) ) ) )
( DIGIMETER0330 1 ( " PROYECTOS" " 2 5-Nov- 1 986 1 7 : 36 : 08 " " P ROYECTOS " " 26-Aug- 1 987 9 : 48 : 49 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL
( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 39 ) ( I MAGE . WAS . PAINTED N I L ) ( OBJECT . DI SP LAYED #Sl ot ( VALOR NOD03 BOLTZMANN OWN ) ) ( REGION ( 1 0 2 2 1 6 73 39 )
NIL N IL NIL (( IBON,·REGION ( 1 0 2 2 1 6 1 25 48 ) ) ( EXPAND . REGI ON ( 1 0 2 2 1 6 7 3 39 ) ) ) )
SAVED . VALUES -0 . 1 ) ( SUPER . IMAGE #Unit ( I MAGE . P ANEL03254 BOLTZMANN J ) ( TITLE " NOD03,. s VALOR " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( WIDTH 73 ) ( WI NDOW " A F l avo Instanc.e "
NIL NIL N IL ( ( ICON . WINDOW N I L ) C EXPAND . WINDOW NIL ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DIGIMETER03304 ( " PROYECTOS " " 25-Nov- 1 986 1 7 : 37 : 00 " "PROYECTOS " " 26-Attg- 1 98 7 9 : 48 : 50 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEI GHT 39 ) ( I MAGE . WAS . PAINTED NIL ) ( OBJECT . DISPLAYED #Slot ( VALOR NOD04 BOLTZMANN OWN ) ) ( REGION ( 1 05 1 68 69 39 )
N I L NIL NIL ( ( I CON . REG ION ( 1 03 1 7 1 1 2 5 48 ) ) ( EXP AND . REG ION ( 1 05 1 68 69 39 ) ) ) )
I SAVED . VALUES -0 . l ) ( SUPER . IMAGE #Un i t ( I MAGE . PANEL03 254 BOLTZMANN ) ) ( T ITLE " NOD04 ,. s VALOR " ) ( TITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NI L ) ) ( VALUE . WAS . SAVED T ) ( 'iH DTH 69 ) r n nmow " /l. F' l a vor· In st.;.nc.e"
NIL
( ( I COH . W I NDOW N I L ) ( EXPAND . W I NDOW N I L ) ( CURRENT . W I NDOW ( EXPAND ¡ J ; ) ; )
( DIG IMETER03307 ( " PROYECTOS " " 25-Nov-1 986 1 7 : 38 : 1 1 " " PROYECTOS " " 26-Aug- 1 987 9 : 48 : 50 " ) NIL ( ( DIG IMETER ACT IVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : CPTFONT ) ( HEIGHT 37 ) ( I MAGE . WAS . P AINTED NI L ) ( OBJECT . DISPLAYED #Slot ( VALOR NODOS BOLTZ MANN OWN ) ) ( REGION ( 1 09 1 2 1 65 37 )
N I L NIL NIL ( ( ICON . REGION ( 1 09 1 2 1 1 25 48 ) ) ( EXPAND . REGION ( 1 09 1 2 1 65 37 ) ) ) )
( SAVED . VALUES 1 . 1 ) ( SUPER . I MAGE #Un it ( I t1AGE . PANEL03254 BOLTZMANN ) ) ( TITLE " NODOS ' s VALOR " ) ( TITLEFONT FONTS : HL l OB ) ( TOPUNIT ( N IL ) ) ( VALUE . WAS . SAVE T ) ( WIDTH 65 ) ( WINDOW " A Flavor Instance"
NIL N I L N IL ( ( ICON . WI NDOW NIL ) ( EXPAND . WINDOW NIL ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DIGIMETER033 1 0 ( " PROYECT.OS" " 25-Nov- 1 986 1 7 : 38 : 55 " " P ROYECTOS " " 26-Aug- 1 987 9 : 48 : 5 1 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 39 ) ( I MAGE . WAS . PAINTED NIL ) ( OBJECT . DISPLAYED #Slot ( VALOR NOD06 BOLTZMANN OWN ) ) ( REGION ( 1 07 7 1 65 39 )
NIL NIL NIL I CCN . RES!C ( ! 07 71 1 25 4! ) ) ( EXPAND . REG ION c : o7 7 1 65 37 ) ) ) )
( SUPER . IMAGE #Un i t ( I MAGE . FANEL03254 BOLTZMANN ) ) ( TI TLE " NOD06 ' s VALOR " ) ( T ITLEFONT FONl'S : HL l OB ) ( TOPUNIT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 65 ) ( W INDOW " A Flavor In st ance "
N I L NIL
._ i_ I<:OH . \;;" : · D()"..¡j I I ) ( EX P ,t:-, f D . :; :: 1·:LOW H I L ) ( CUHRENT . W I NDOW ·'. EX:· r.I r , )
( DIG IMETER033 l 3 ( " PB.OYECTOS " " 2 5-Nov- 1 986 1 7 : 39 : 39 " " PROYECTOS " " 26-Aug- 1 98 7 9 : 48 : 5 1 " ) NIL ( ( DIG IMETER ACTIVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 40 ) ( I MAGE . WAS . PAI NTED M I L ) ( OBJECT . DISPLAYED l/Slot ( VALOR NODO? BOLTZ MANN OWN ) ) ( REG ION ( 1 05 1 8 68 40 )
NIL ,i N IL NIL ( ( ICON . REGION ( 1 06 2 0 1 25 48 ) ) ( EXPAND . REGION ( 1 05 18 68 40 ) ) ) )
( SAVED . VALUES -0 . 1 ) ( SUPER . IMAGE l/Uni t ( IMAGE . PANEL03254 BOLTZMANN ) ) ( TI TLE " NOD0 7 / s VALOR " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( V ALUE . WAS . SAVED T ) ( 'i H DTH 68 ) ( WINDOW " A Fl avor Instance"
NIL NIL N IL ( ( ICON . WINDOW N I L ( EXPAND . W IMDOW NIL t ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( DIGIMETER03366 ( " PROYECTOS" " 2 5-Nov- 1 986 1 7 : 40 : 39 " " P ROYECTOS " " 2 6-Aug- 1 98 7 9 : 48 : 52 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL
( ) ( ( BORDER 4 ) ; 1
( FONT FONTS : MEDFNB ) ( HEI GHT 4 1 ) ( IMAGE . WAS . PAINTED NIL ) ( OBJECT . DISP LAYED lfSlot ( PESO CON 1 5 BOLTZ MANN OWN ) ) ( REGION ( 2 1 7 303 85 4 1 )
NIL NIL N!L ( ( !C0 . !nN ( 2 1 7 303 1 ! 5 48 ) ) ( EXPAND . RF@TON ( 2 1 7 303 85 4 1 ) ) ) )
( SUPEB . IMAGE #U· ' · f I M t GE . PANEL03254 BOLTZMANN ) )
I TI TLEFONT FONTS : HL l OB ) ( TOPUNIT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 85 ) ( W INDOW " A F lavor I n s t ance"
NIL N I L P T ' , . . .... L
- -. ,-' ' ...... ..., ..... ... . . .. .... ... . .:,,J .... . .
. . ·: · , - - " i.. :" -;-·, (',,.'": . ·.::· ·.·-. . . . ...... ' -, ._ ,,_ ... , _,_..._.._ 1 .J. • i1 .... .. l *-J -W- i• , __ ._.._ ,- , ,.¡ ¡.¡ I J 1 J J
( " PROYECTOS " " 2 5-Nov- 1 986 1 7 : 4 1 : 06 " " PROYECTOS " " 2 6-Ai:.ig- 1 98 7 9 : 4 8 : 52 " ) NIL ( ( DIG IMETER ACTIVEI MAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 4 2 ) ( IMAGE . WAS . PAINTED N I L ) ( O BJECT . DI SP LAYED #Slot ( PESO CON 1 6 BOLTZMANN OWN ) ) ( REG I ON ( 2 2 0 253 85 4 2 )
N I L N I L NI L ( ( ICON . REGION ( 2 1 9 259 1 1 5 48 ) ) ( EXPAND . REGION ( 2 2 0 253 85 42 ) ) ) )
( SAVED . VALUES 0 . 1 ) ( SUPER . IMAGE #Un it ( IMAGE . P ANEL03 254 BOLTZMANN ) ) ( TITLE " CON 1 6 ' s P ESO " ) ( T ITLEFONT FONTS : HL I OB ) ( TOPUNIT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 85 ) ( W INDOW " A Fl avor Instance"
N I L N I L N I L ( ( ICON . WI NDOW N I L ) ( EXPAND . WI NDOW N I L ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( DIG IMETER03370 ( " PROYECTOS" " 2 5-Nov- 1 986 1 7 : 4 1 : 4 2 " " P ROYECTOS " " 26-Aug- 1 987 9 : 48 : 53 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) IMAGES )
- - NIL - - -( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 4 1 ) ( I MAGE . WA S . PAINTED N I L ) ( OBJECT . D I SP LAYED #Slot ( PESO CON26 BOLTZMANN OWN ) ) ( REGION ( 2 19 1 48 84 4 1 )
N I L N I L N I L ( ( ICON . BEGION ( 2 2 2 2 0 3 1 1 5 48 ) ) ( EXPAND . REGION ( 2 1 9 1 48 8 4 4 1 ) ) ) )
( SAVED . VALUES 0 . 1 ) ( SUPEB . IMAGE #Un i t ( IMAGE . P ANEL03254 BOLTZMANN ) )
( T J TLE " CON26 ' s ?ESO " )
( T I TLEFONT FONS : HL l OB )
TQPUNIT NIL ) ) ( VALUE . WAS . SAVED T ) ( WI DTH 84 ) ( W INDOW " A F lavor Instance "
N I L N I L N IL ( ( I CON . W I HDOW N : L ) ( EXPAND . WI NDOW ( CUBBENT . WI NDOW ( EXPAND ) ) ) ; ; ;
( D I GIMETEB033 7 2
( " P ROYECTOS " " 2 5-Nov - 1 '786 1 7 : 4 2 : 04 " " P ROYECTOS" " 2 6-Aug- 1 98 7 9 : 48 : 53 " )
NIL ( ( DIGIMETER ACT IVEIMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : BIGFNT ) ( HEI GHT 4 4 ) ( I MAGE . WAS . PAINTED NIL ) ( OBJECT . DISPLAYED #Slot ( PESO CON25 BOL T ZMANN OWN ) ) ( REGION ( 2 20 201 83 44 )
N I L N IL NIL 1 ( ( ICON . REGION 2 2 5 1 55 1 1 5 48 ) ) ( EXPAND . REGION ( 2 2 0 2 0 1 83 44 ) ) ) )
( SAVED . VALUES 0 . 1 ) ( SUPE R . IMAGE #Unit ( I MAGE . P ANEL03254 BOLT Z MANN ) ) ( TITLE " CON25 ' s PESO " ) ( T ITLEFONT FONTS : HL l OB ) ( T O P U N I T ( E I L ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 83 ) ( W INDOW " A Fl.;ivoi:- I n s tanee "
N I L NI L
NIL ( ( ICON . WINDOW N IL ) ( EXPAND . WINDOW N I L ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( OIGI METER033 7 4 ( " PROYECTOS" " 25-Nov- 1 986 1 7 : 42 : 40 " " PROYECTOS " ' 26-Aug- 1 98 7 9 : 48 : 54 " ) NIL ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : BIGFNT ) ( HEIGHT 4 4 ) ( I MAGE . WAS . PAINTED N I L )
' ¡ 1
- OBJECT .DISPL-AYED- #Slot-H tSSO CON35 BOLTZMANN OWN ) )( REGION ( 2 2 1 93 82 44 )
N I L NIL NIL
( ( ICON . REGION ( 2 2 8 99 1 1 5 48 ) ) ( EXPAND . REGION ( 2 2 1 93 8 2 44 ) ) ) ) ( SAVED . VALUES 0 . 1 )
( SUPER . I MAGE #Unit ( IMAGE . P AMEL03254 BOLT ZMANN ) )
, '"1· ... , r'1 t,·r , ,.P1· H'n "J"PC· .. u r , n L· • \ - -- ... .... .... .. .... .. . . ...,. ... . .... _ . ..... .1..1 .1.
·· ......
( TOPUNIT OIIL ) ) ( VALUE . WAS . SAVED T )
( WIDTH 8 2 ) ( 'i H NDOW " A Fl avor- Instanee "
H I L N I L N I L ( ( I C0N . W! NDOW 1 ! !:. ( Y.'f ' ' '. ' . \·' I rno N I L ) ( CURREN! . ?. ! !DOW ( E:XP.6.!D ) ) ) ) ) )
•. " '" é (··::r:.:CTO S " " 2 5-lfov- 1 c;·s6 1 7 : L¡ 3 : 1 3 " " P B.OYECTO S " " 2 6-.t>.ug- 1 98 7 c;· : 48 : .S 4 " ) N I L ( ( DIGIMETER ACTIVEIMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HE IGHT 42 ) ( I MAGE . WAS . PAI NTED N I L ) ( OBJECT . D ISP LAYED #Slot ( PESO CON45 BOLTZMANN OWN ) ) ( REGION ( 3 28 304 8 1 42 )
N I L N IL NIL ( ( I CON . REGION ( 230 43 1 1 5 48 ) ) ( EXPAND . REGION ( 32 8 304 8 1 42 ) ) ) )
( SAVED . VALUES 0 . 1 ) ( SUPER . IMAGE llUni t ( I t1AGE . PANEL03254 BOLTZMANN ) ) ( TI TLE " CON45 ' s PESO " ) ( T I TLEFONT FONTS : HL l OB ) ( TOPUN IT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( W I DTH 8 1 ) ( W INDOW " A Flavor I n s t ance "
NIL NIL N IL ( ( ICON . WI NDOW N I L ) ( EXPAND . WI NDOW N I L ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DI G IMETER033 78 ( " PROYECTOS " " 25-Nov- 1 986 1 7 : 43 : 46 " " P ROYECTOS " " 26-Aug- 1 987 9 : 48 : 54 " ) NIL ( ( DIG it1ETER ACTIVE IMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HE I GHT 4 1 ) ( I MAGE . WAS . P A INTED N I L ) ( OBJECT . DI SPLAYED llSlot ( PESO CON46 BOLTZMANN OWN ) ) ( REGION ( 324 2 54 93 4 1 )
NIL NIL IHL ( ( I CON . REG I ON ( 330 305 1 1 5 48 ) ) ( EXPAND . REG ION ( 324 254 93 4 1 ) ) ) )
( SAVED .ALUES - O r l ) ( SUPER . I MAGE #Unit ( I MAGE . PANEL03 254 BOLTZMANN ) ) ( T I TLE " COM46 ·' s P ESO " ) ( TTTLErorT FONTS : rrr. 1 0[: ) ( TOPUNIT ( M :2:L ) )
( WI DTH 93 ) ( WI NDOW " A F l avor- I n s t ance "
N I L NI.L N IL ( ( I CO N . WI NDOW N I L ) ( EXPAND . W I NDOW N I L ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
N I L
( ( DIGIMETER ACTIVEIMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEI GHT 43 ) ( IMAGE . WAS . P A INTED NIL ) ( OBJECT . DISPLAYED #Slot ( PESO CON36 BOLTZMANN OWN ) ) ( BEGION ( 2 24 40 84 43 )
NIL NIL NIL ( ( ICON . REGION ( 32 2 2 : 1 1 5 48 ) ) ( EXPAND . REGION ( 2 2 4 40 84 43 ) ) ) )
( SAVED . VALUES 0 . 1 ( SUPER . IMAGE #Uní t ( I MAGE . PANEL032 54 BOLTZM.t1NN ) ) ( TITLE "CON36 / s PESO " ) ( TITLEFONT FONTS : HL l OB ) ( TOP UNIT ( NIL ) ) ( VALUE . WAS . SAVED T l
( W IDTH 84 ) ( W INDOW " A F l avor· I n s tance"
NIL NI L NIL ( ( ICON . WI NDOW NIL ) ( EXPAND . WI NDOW N I L ( CURBENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DIGI METEB.03382 ( " P ROYECTOS" " 2 5-Nov- 1 986 1 7 : 45 : 1 0 " " PROYECTOS " " 26-Au- 1 987 9 : 48 : 55 " ) NIL ( ( DIGIMETER ACTI VE IMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4
( FONT FONTS : MEDFNB ) ( HE I GHT 42 ) ( I MAGE . WAS . P A INTED NIL ) ( OBJECT . DISP LAYED l/S l ot ( PESO CON57 BOLTZMANN OWN ) ) ( REGION ( 325 1 47 99 42 )
NIL N IL NIL ( ( ICON . REGION ( 324 205 1 1 5 48 ) ) ( EXPAND . REGION ( 32 5 1 47 99 42 ) ) ) )
( SAVED . VALUES 0 . 3 ) ( SUPER . IMAGE #Unit ( IMAGE . P ANEL03254 BOLTZMANN ) ) ( TI TLE " CON57 / s PESO " ) t T ITLEFONI FONTS : HL l OB )
( VALDE . WAS . SAVED T ) ( WI DTH 99 ) ( WINDOW " A F lavor Instance "
NIL NIL N IL ( f ICON . WI NDOW NIL ) ( EXPAND . r unnw !L ) ( CURRENT . WI NDOW ( EXP AND ) ) ) ) )
\ L ..;,. i.:: ..:. : ·- - - -·· - - - --
( " PRC<:.-:::;: Tos · ' _ 5 - fcv- l S\:::.6 1 7 : 45 : 4 2 " '1 P RO YECTOS 11 " 2 6-P.ug- i 98 7 9 : 4E : 56 1l j !H L l ( D I G I METER ACT I V E IMAGES ) I MAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 43 ) ( I MAGE . WAS . P AINTED NIL ) ( OBJECT . DISPLAYED #Slot ( PESO CON67 BOLT ZMANN OWN ) ( REGION ( 327 92 95 43 )
NIL NIL NIL ( ( I CON . REGION ( 3 24 1 4 7 1 1 5 48 ) ) ( EXPAND . REGION ( 32 7 92 95 43 ) ) ) )
( SAVED . VALUES 0 . 3 ) ( SUPE R . IMAGE #Uni t ( IMAGE . PANEL03254 BOLTZMANN ) ) ( T ITLE " CON6 7 "' s PESO " ) ( T I T LEFONT FONTS : HL l O B ) ( TOPUNIT ( NIL ) ) ( VALUE . WAS . SAVED T )
( WID'.lfi 95 ) ( WINDOW " A F l avor In s t ance "
NIL NI L N IL ( ( ICON . WI NDOW N I L ) ( EXPAND . WI NDOW NIL ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( DIG IMETER03386 ( " PROYECTOS" " 25-Nov- 1 986 1 7 : 46 : 03 " " PROYECTOS" " 26-Aug- 1 987 9 : 48 : 56 " ) NIL ( ( DIG I METER ACTIVEIMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : MEDFNB ) ( HEIGHT 4 1 ) ( IMAGC . WAS . P AINTED NIL ) ( OBJECT . DISP LAYED l/Slot ( PESO CONS6 BOLTZMANN OWN ) ) ( REGION ( 324 200 94 4 1 )
NIL NIL NIL ( ( ICON . REGION ( 326 94 1 1 5 48 ) ) ( EXPAND . REGION ( 32 4 2 00 94 4 1 ) ) ) )
( SAVED . VALUES 0 . 1 ) ( SUPER . IMAGE #Un i t ( IMAGE . PANEL03 254 BOLTZMANN ) ) ( TI TLE " CON56 ' s P ESO " ) ( T ITLEFCNT FONTS : HL ! 0P ) ( T1)l?UNIT ( !HL ) ) VALUE . WAS . SMVED T j ( W IDTH 94 )
( W I NDOW "A F lavol.' I ns t ance " NIL NIL N IL ( ( ICON . W INDOW NIL ) ( EXPAND . WI NDOW NIL ) ( CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
H I L ( ( I MAGE . P ANEL ACTIVEI MAGES ) IMAGES )
NIL
( ) ( ( BORDER 1 2 )
( HEIGHT 3 7 7 ) ( I MAGE . WAS . PAINTED ( NI L ) ) ( IMAGES
( #Uni t ( METHOD . ACTUATOR03927 BOLTZ MANN )
( OBJECT . DI SPLAYED #KB ( BOLTZMANN ) ) ( REGION ( 3 4 459 3 7 7 )
NIL H I L N I L
#Un i t #Un i t #Un i t #Un i t #Unit ltun i t ur· -· i t lii•1.ü t #Unit #Un i t #Unit #Un i t #Unit #Un i t #Uni t llUnit #Un i t ltunit
#Un i t #Uni t #Un i t #Uni t t/Unit llUnit #Un i t #Un i t #Un i t
( METHOD . ACTUATOR04439 BOLTZMANN ) ( METHOD . ACTUATOR03346 BOLTZMANN ) ( DI G I METER03386 BOLTZMANN ) ( DI G I METER03384 BOLTZMANN ) ( DI G IMETER03382 BOLTZMANN ) ( DI G I METER03380 BOLTZMANN ) ( DIGI METER0337B BOLTZ MAN N ) ( DI G IMETER03376 BOLTZMANN ) ( D IGIMETER0337 4 BOLTZMANN ) ( DI G I METER033 7 2 BOLT ZMANN ) ( DI G I METER03370 BOLTZMANN J ( DIGI METER03368 BOLT ZMANN ) ( D I G I METER03366 BOLTZMANN )
( D I G I METER03 3 1 3 BOLTZMANN) ( ERTICAL . TRAFF I C . L IGHT033 1 2 BOLT ZMAN N ) ( 0I G I METER033 1 0 BOLTZMANN ) ( VERT ICAL . TRAFFI C . LIGHT03309 BOLTZ MANN ) ( DI G I METER03307 BOLTZ MANN ) ( VERTICAL . TRAFFIC. LIGHT03306 BOLTZ MANN ) ( DI G IMETER03304 BOLTZMANN ) ( VERTICAL . TRAFFIC . LI GHT03303 BOL T Z MANN ) ( DI G IMETER03301 BOLTZMANN ) ( VERTI CAL . TRAFFIC . LIHT03299 BOLTZ MANN ) ( DI GIMETER03297 BOL1 1ANN ) ( VERTICAL . TRAFFI C . LIGHT03296 BOLTZ MANN ) ( DI G I ACTUATOR03294 BOLTZ MANN ) ( VERT I CAL . TRAFFIC . LIGHT03293 BOLTZ MAHN ) )
¡ _I
( ( ICON . REGION ( 2 6 2 4 2 48 ) ) ( EXPAND . REGION ( 3 4 459 37 7 ) ) ) ) ( TI TLE " I mage Panel for RED in KB VERSION " ) ( T ITLEFONT FONTS : HL I OB ) ( TOPUNIT #Un it ( RED BOLTZMANN ) ) ( W IDTH 459 ) ( W I NDOW " A Flavor Instance "
NIL NIL N IL
( IMAGES
T..1 ·1 r • ,, .... ..... . : :U2ET . WI HDOW ( : CON ) ) ) ) ) )
( " PROYECTOS " " 25-Nov- 1 986 1 7 : 30 : 1 0 " " PROYECTOS " " 2 5-Nov- 1 986 1 7 : 30 : 1 3 " ) NIL ( ( CLASSES GENERICUJ.i :i T S ) )
¡ ( DELETE DELETE . ALL . I MAGES METHOD METOD ) ( DELETE . ALL . I MAGES DELETE . ALL . I MAGES METHOD METHOD) ( DONT . RECREATE . IMAGES . AFTER . KBLOAD ASKUSER MIL OME . OF T NIL ASKUSER ) ) ( RECREATE . ALL . IMAGES RECREATE . ALL . IMAGES METHOD METHOD ) ( SAVE . ALL . IMAGES SAVE . ALL . IMAGES METHOD METHOD ) ( USER . DELETE . ALL . I MAGES USER . DELETE . ALL . IMAGES METHOD METHO D ) ( USER . BECREATE . ALL . IMAGES USER . RECREATE . ALL . IMAGES METHOD METHOD ) ) )
( METHOD . ACTUATOB.03346 ( " P ROYECTOS" " 2 6-Nov- 1 986 1 5 : 07 : 04 " " P ROYECTOS" " 2 6-Aug- 1 987 9 : 48 : 44 " ) NIL ( METHOD . ACTUATOR ACTIVEIMAGES ) IMAGES ) NIL
( ) ( BORDER 4 )
( FONT FONTS : HL6 ) ( HEIGHT 1 33 ) ( IMAGE . WAS . P AINTED N I L ) ( OBJECT . DISPLAYED #Slot ( RETRACT REGLAS . ALGORITMO BOLTZ MANN OWN ) ) ( REGION ( 1 7 7 1 2 2 40 1 33 )
NIL M IL NIL ( ( ICON . REGION ( 1 8 1 95 2 1 0 48 ) ) ( EXPAND . REGION ( 1 7 7 1 2 2 40 1 33 ) ) ) )
( SAVED . VALUES j RULESYSTEM2 > RULE . CLASSES : RETRACT ! method f ) ( SUPER . IMAGE l/Uni t ( IMAG E . P ANEL03254 BOLTZMANN ) ) ( TITLE " REGLAS . ALGORITMO '" s RETRACT " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WAS . SAVED T ) ( ' DTH 40 ) ( W INDOW " A F l avor I n s t ance"
NIL NIL N IL ( ( ICON . WINDOW N I L ) ( EXPAND . WINDOW NIL ) (CURRENT . WI NDOW ( EXPAND J ) ) ) ) )
( METHOD . ACTUATOR03927 ( " P ROYECTOS" " 1 0-Dec- 1 986 1 5 : 35 : 52 " " PROYECTOS" " 26-Aug- 1 98 7 9 : 48 : 44 " ) NIL ( ( METHOD . ACTUATOR ACTIVEIMAGES J IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : HL 6 ) ( HEIGHT 7 1 ) ( I MAGE . WA S . P A I TED N I L J ( 0BJEC! . D ISPLY0 rr 5 1 0 : O !GEN RED BOLIZMAMN un n ¡ ¡ ( REGION ( 1 76 35 4 1 7 1 )
NIL NIL NIL ( ( I CON . REGION ( 1 8 1 237 1 09 48 ) ) EXPAND . REGION ( 1 76 35 4 1 7 1 ) ) ) )
( SAVED . VALUES I BOLTZMANN>RED : : ORI GEN ! method l ) ( SUPER . IMA6E #U i t ( I MAGE . PANEL03254 BOLTZMAHH ) )
( TITLE " BED ' ! O B I GE N " l
·.-' .;. -, J. ;. . . _ ,_ - ::. " ; - -( TOPUiHT ( H l L ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 4 1 ) ( WINDOW ºA Fl avor- In stance º
NIL
lf'.tt NIL ( ( ICON . WINDOW NIL ) ( EXPAND . WI NDOW N I L ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( METHOD . ACTUATOR04439 ( " P ROYECTOS" " 26-Nov- 1 986 1 5 : 35 : 00 " " PROYECTOS" " 26-Aug- 1 987 9 : 48 : 45 " ) NIL ( ( METHOD . ACTUATOR ACTIVEit1AGES ) It1AGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : HL6) ( HEI GHT 62 ) ( I MAGE . WAS . P AINTED N I L ) ( OBJECT . DISPLAYED #S l ot ( ALGORITMO RED BOLTZ MANN OWN ) ) ( REG ION ( 3 28 2 1 1 1 7 6 2 )
NIL NIL NI L ( ( ICON . REGION ( 328 2 1 1 33 48 ) ) ( EXPAND . REGION ( 32 8 2 1 1 1 7 6 2 ) ) ) )
( SAVED . VALUES I BOLTZMANN>RED : : ALGORITMO ! method J ) ( SUPER . IMAGE #Unit ( IMAGE . PANEL03254 BOLTZMANN ) ) ( TI TLE " RED '° s ALGORITMO " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WAS . SAVED T ) ( W IDTH 1 1 7 ) ( WINDOW "A F lavor- Ins tance "
NIL NIL NIL ( ( !CON . WINDOW N I L ) ( EXPAND . WIHDOW NIL ) ( CURRENT . WINDOW ( EXPAHD ) ) ) ) ) )
( NODO! ( "pr-oyectos " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " PROYECTOS " " 1 2-Dec- 1 986 1 1 : 33 : 1 3 " NIL ( NODO S ) NIL ( ) ( ( CONEXIONES ( CON 1 5 C ON 1 6 ) )
( EST.O.DO ( I N.CTIVO ) ) ( I DFNT I TCACION ( ENTRADA ) ) ( VALOH ( -0 . 1 ) ) ( VAEI APLE ( f?!L ) ) ) J
( NOD02 ( " :pr- oyectos " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " PROYECTOS" " 1 2-Dec:.- 1 986 1 1 : 33 : 1 3 " ) NIL ( NODO S ) NIL )
\ __, . _ _ , , _ -.,., \ - ; ·-· - - - · .., , I
( l DENT I F I C A C I O N ( ENTRADA ) ) ( VP..LOH ( -0 . l ) )
( VARIABLE ( N I L ) ) ) )
( NOD03 ( " proyect o s " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " P ROYECTOS " " 1 2-Dec- 1 986 1 1 : 33 : 1 4 " ) NIL ( NODO S ) N IL ( ) ( ( CONEXI ONES ( CON35 CON36 ) )
( ESTADO ( INACTIVO ) ) ( I DENTIFICACION ( ENTRADA ) ) ( VALOR ( -0 . 1 ) ) ( VARIABLE ( NI L ) ) ) )
( N0004 ( " pr oyectos " " 1 4-Nov-1 986 1 3 : 32 : 5 1 " " P ROYECTOS " " 1 2-Dec- 1 986 1 1 : 33 : 1 4 " ) NIL ( NODOS ) NIL ( ) ( ( CONEXIONES ( CON45 CON46 ) )
( ESTADO ( INACTIVO ) ) ( I DENTIFICAC ION ( ENTRADA ) ) ( VALOR ( -0 . 1 ) ) ( VARIABLE ( NI L ) ) ) )
( NODOS ( " pr oyectos " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " PROYECTOS " " J. .:'.-Dec- 1 986 1 1 : 33 : 1 8 " ) NIL ( NODOS ) NIL ( ) ( ( CONEXIONES ( CON 1 5 CON25 CON35 CON45 CONS6 CONS7 ) )
( ESTADO ( ACTIVO ) ) ( VALOR ( l . l ) ) ) )
( NOD06 ( " pr oyect o s " " 1 4-Nov- 1 986 1 3 : 32 : 52 " " PROYECTOS " " 1 2-Dec- 1 986 1 1 : 33 : 1 6 " ) NIL ( NODO S ) NIL ( ) ( ( CONEXIONES ( SON ! 6 C0N 2 rnu ? CON6 CON56 CON67 ) )
( ESADO ( AC!!VO ) ) ( I DEl T IF I CACION ( IHTERf:::J::c .. :: ,= . .. :: ( VALOR ( l . l ) ) ( VARI ABLE ( T ) ) l )
!JODO? ( " :pr oyect o s " " 1 4-Nov- 1 986 1 3 : 32 : ::, : ; • ' ' ? EOYECTOS" " 1 2-Dec- 1 986 1 1 : 33 : 1 0 " ) ¡;¡IL
( NODOS ) NIL ( ) ( ( CONEXIONES ( CON57 CON67 ) )
( ESTADO ( I NACTIVO ) ) ( I DENTIFICACION ( SALIDA ) ) ( VALOR ( -0 . 1 ) ) ( VARI ABLE ( NI L ) ) ) )
( NODOS ( " pr oyectos " " 1 4-Nov- 1 986 1 3 : 32 : 5 1 " " P ROYECTOS " " 2 6-Aug- 1 987 9 : 2 2 : 53 " ) ( RE D ) ( ( CLASSES GENERICUNITS ) ) " Un idades o " ( ( COMP ROBAR . SALIDA
( LAMBDA ( SELF ) ( COND ( ( EQUAL ( G ::: I . VALUE SELF '" ESTADO ) ( GET . VALUE SELF ··· sAL IDA . P ATRON ) )
· ( P U'f . VAL U E ,· RED - ,. CORRECTO - ¿ S I-)------ --- --( T ( P U T . VALUE '" RED '" CORRECTO '" NO ) ) ) )
METHOD ( METHOD ) NIL ( ( COMMENT
"Comprueba s i el estado del nodo despues de la segunda fase del a l gor itmo es i gual al q indicaba el patr-on de entr-enamiento " ) ) )
( CONEXIONES NIL N IL NIL NIL ( ( COMMENT ( " Li s ta de las conexiones en l a s que interviene e l nodo " ) ) ) )
( ESTADO ( INACTIVO ) NIL ( ( ONE . OF ACTIVO INACTIVO ) ) NIL ( ( COMMENT ( " Es tado actual del nodo " ) ) ( CARDI NALITY . MAX ( 1 ) ) ) )
( IDENTIFICACION ( INTERMEDI O ) NIL ( ( ONE . OF ENTRADA SALIDA INTERMED I O ) ) NIL ( ( COMMENT
( " Funcion del nodo en la r-ed , ya sea e lemento de ENTRADA , INTERMED I O , o de SAL IDA " ) ) ( CARDIN.<\LITY . MAX ( l ) ) ) )
( SAL I DA . PATRON NIL N I L f ( ONE . OF ACT IVO INACT IVO ) ) N I L : \ C RDINAL I TY . MX ( l J )
( COMMENT '' Cont iene el es tado del nodo par-a el patr-on de entada . So l o es r e l evant e si la i dent i fi
ion del nodo es SAL I D A " ) ) ) ( UMBRAL
( -0 . 1 ) N I L ( REAL ) NIL ( ( AVUNITS ( #Unit ( CORRECCION BOLTZMANN ) ) )
( COMMENT ( " Va lor numer ico que tiene el nodo , a partir del cual se determina su estado de act ivacj
o inact i vacion " ) ) ( CARDINALITY . MAX ( 1 ) ) ) )
( VARIABLE ( T ) N IL ( ( ONE . OF T N IL ) ) NIL ( ( COMMENT
( " Variable booleana ( T , NIL ) que indica si el e,._'ado del nodo puede s er cambiado por el j ci onamiento interno de l a red . Su val or es NIL cuando e l nodo es de ENTRADA o de SALIDA " ) )
( CARD INALITY . MAX ( 1 ) ) ) ) ( VER . SI . ACT IVA . A
( LAMBDA ( SELF CONEX I ON ) ( P R OG ( ( NODO ( COND ( ( EQUAL SELF ( GET . VALUE CONEXION 'PUNTO l ) )
( GET . VALUE CONEXION ' PUNT02 ) ) ( T ( GET . VALUE CONEXION ' P UNTO l ) ) ) )
( P ESO . ARCO ( GET. VALUE CONEX I ON ... P ESO ) ) J- - (COND ( ( GET . VALUE NODO ,. VARIABLE )
METHOD ( METHOD ) NIL ( ( COMMENT
( P U T . VALUE NODO ,. VALOR ( + ( GET . VALUE NODO -' VALOR ) P ESO . ARCO ) ) ( CONO ( ( > = ( GET . VALUE NODO ' VALOR ) ( GET . VALUE NODO -' UMBRAL ) )
( PUT . VALUE NODO ' ESTADO ' ACTI VO ) ) ( T ( P UT . VALUE NODO ' ESTADO ' INACTIVO ) ) ) )
( T HIL ) ) ) )
( " Metodo que cal cu l a el estado de l o s nodos conectados con e l nodo propiet ar i o del met Toma como argumentos el nodo propiet ar i o y una unidad de UNIONES " ) ) ) ) )
( ( CALCULO ( L AMBDA ( SELF )
( ASSERT NIL ' REGLA . CALCULO ) ) METHOD ( METHOD ) NIL ( ( COMMENT
( " Metodo que d i s para el funcionamiento interno de la red a par t i r de una det erminada s i cion ut i l izando REGLA . CALCULO " ) ) ) )
( CREAR . NODOS ( LAMBDA ( SELF ) ( PB.OG ( DATO)
( CLI : TERPRI )
( STQ DATO ( CBEATE . URIT ( SLI : TERPRI ) ( P UT . VALUE DATO
' ESTADO
,· ...... .,.. - - - -'· l_. !_, .! ; .'_"- .'2. :.' ¡ L NIL ' ( NODOS ) ) )
( MENO ( GET . SLOT . MENU --- NODOS .. MENUESTADO ' OWN ) ) ' OWN )
( PUT . VALUE DATO ' I DENTIF ! CACION ( ME:HU ( GET . SLOT . HENU · to;:,;. _::_, , , i1,i ü I DENTIF ·· OWN ) )
( MENUESTADO
( f· 1E"i HOD ) !H L
( ( COMMENT " Cont iene la funcion que crea nuevos nodo s " )
( ( ' ' .t..CTI VO " ··· ,t.,C T I VO ) ( " I NACTIVO" ... I NACT I V O ) NIL ( MENU I TE M NIL ( ( T I TLE ( " ESTADO DESEADO " )
( COMMENT " Menu :par-a e l egir el estado de un nodo en e l momento de su creacion" ) ) ) ( MENUI DENTIF
( ( " ENTARDA " ' ENTRADA ) ( " SALIDA " 'SALIDA ) ( " I NTERMED I O " ' INTERMEDIO ) N I L ( MENUITEM ) NIL ( ( TITLE ( " I DENTIFICAC ION DEL NODO " ) )
( COMMENT " Menu par a e l egir la ident i ficacion del nodo en e l momento de su cr-eacion " ) ) ) ( SU P R I MI R . NODOS ( LAMBDA ( SELF )
( CL I : TERPRI ) ( PlU NTOUT T " NOMBRE DEL NODO : " ) ( UNI TDELETE ( CLI : REA!J ) ) )
METHOD ( METHOD) N I L ( ( COMMENT " Cont iene e l met odo que supr i me u n nodo de l a red " ) ) ) ) )
( P RUEBA ( " P ROYECTOS " " 1 2 -Dec- 1 986 1 1 : 50 : 1 6 " ) NIL ( ( ENT ITIES GENERICUNITS ) ) NIL ( ) ( )
( R . ACTIVO ( " proyectos " " 1 4-Nov- 1 986 1 3 : 33 : 24 " " PROYECTO S " " 1 9-Nov- 1 986 1 0 : 57 : 55 " ) NIL ( REGLA . ESTADO ) NIL ( ) ( ( ASSERTION ( llWff C AN ESTADO OF ?NODO IS ACTIVO ) ) )
( EXTERNAL . FORM ( IF ( ( THE VALOR OF ?NODO . IS ? X ) AND
THEN
• P ?EMISE ( # f f ( A VAL0S
( R . ACTUALI ZACION
( THE UMBRAL OF ?NODO IS ?Y ) AND ( >= ? X ? Y ) )
( " PROYECTOS" " 2 7-Nov- 1 986 1 5 : 46 : 26 " " PROYECTOS" " 1 0-Dec- 1 986 1 5 : 1 4 : 00 " ) NIL ( REGLA . I NICI O . FASE! REGLA . INIC10 . FASE2 )
.>=
( R . ASIGNACION . P ATRON
( " PROYECTOS " " l l -Dec- 1 986 1 6 : 2 7 : 5 2 " " P ROYECTOS " " 1 2 -Dec- 1 986 1 1 : 56 : 08 " ) NIL ( REGLAS . ASIGNACION . PATRON ) "Pide al us uar i o l o s val ores correspondientes par a l o s nodos de un patron " ( ) ( ( ACT ION ( ( P RI NTOUT T ( UNIT . NAME ?NODO ) " • • • • " ) ( P UT . VALUE ?NODO ' VALOR ( READ ) ) ) )
( EXTERNAL . FORM ( IF ( ( ? NODO IS IN NODOS ) ANO
( ( THE IDENT IFICACION OF ?NODO IS ENTRADA ) OR ( THE IDENTIF ICACION
OF
DO ( P RINTOUT T ( UNIT . NAME ?NODO ) " • • • • " ) ( PUT . VALUE ?NODO ' VALOR ( READ ) ) ) )
( P REMISE ( #W f f ( ? NODO IS IN CLASS NODOS )
?NODO IS SALIDA ) ) )
#W f f ( ( AN IDENT IFICACION OF ?NODO IS ENTRADA ) OR ( AN IDENTIFICACION OF ?NODO IS SAL IDA ) ]
( R . CALCULO ( " proyect os " " 1 4-Nov- 1 986 1 3 : 34 : 32 " " PROYECTOS " " l l-Dec- 1 986 1 5 : 44 : 1 6 " ) NIL ( REGL.A. . CALCULO ) NIL ( ) ( ( ACTION ( ( PRINT ?NODO ) ( PRINT ?DESTINO ) ( UN ITMSG ? NODO ' VER . SI . ACTIVA . A ?DESTI NO ) ) )
( ASSERTI ON ) ( EXTERNAL . FORM ( IF ( AND ( THE ESTADO OF ?NODO I S ACTIVO )
( THE CONEXIONES OF ? NODO IS ? DESTINO ) ) DO ( PR INT ?NODO ) ( PR INT ? DESTINO ) ( UNITMSG ?NODO ' VER . SI . ACTIVA . A ? DESTINO ) ) )
( P REMISE ( #Wff ( AN ESTADO OF ?NODO I S ACTIVO ) #Wff ( A CONEXI ONES OF ? NODO IS ?DESTINO ) ) ) ) )
( R . CAMBIO . PESO . FASE l . l ( " PROYECTOS " " 1 7-Nov- 1 986 1 6 : 29 : 00 " " PROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 6 : 45 " ) N I L
( REGLA . CAMBI O . PESO . FASE ! )
, , .' 1 r 7""' ....., :- .', r TT T':"" . · -· .,-! '-.J l' J .. '-' .C-U f!..- f". r, 1 -• - · - . -·· ' · . . ' ·. ' · : .: '--""': . _! .' ·' ·'
1 A3Si6TI0N ( #Wff ( AH ACTUAL I Z ACIUN UF CON l S I J J ) ( EXTERNAL . FORM ( IF ( ( THE ESTADO OF ?NODO IS ACTIVO ) ANO
( THE CONEXIONES OF ?NODO IS ? CON ) ANO ( THE ACTUALIZACION OF ':'CON IS H O ) .A.NO f THE PUNTO I OF ?CON IS ?ROP0 ' 1-\i;D
THEN ( THE ACTUALI ZACION OF ?CON IS S I ) DO ( P UT . VALUE ?CON
' P ESO
OF ( THE PUNT02 OF ?CON ) IS IKTIVO ) )
( + ( GET . VALUE ?CON ,. P ESO ) ( GET . VALUE ' RED ,. DELTA ) ) ) ) ) ( P REMISE ( #Wff ( AN ESTADO OF ?NODO IS ACTI VO ) #Wff ( A CONEXI ONES OF ?NODO IS ? CON )
í . ( WE I GHT ( 2 ) ) ) )
( R . CAMBIO . PESO . FASE l . 2
#Wff ( AN ACTUALI Z ACION OF ?CON I S NO ) /IWff ( A P UNTO l OF ? CON IS ?NODO ) #Wff ( A P UNT02 OF ?CON IS ? VAR2 ) #Wff ( AN ESTADO OF ? VAS2 IS ACT I VO ) ) )
( " P ROYECTOS " " 2 7-Nov- 1 986 1 5 : 09 : 53 " " PROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 6 : 40 " )
NIL ( REGLA . CAMB I O . P ESO . FASE ! ) NIL • ( ) ( ( ACT ION ( ( P UT . VALUE ?CON ' P ESO ( + ( GET . VALUE ?CON ,. PESO ) ( GET . VALUE ,. RED ' DELTA ) ) ) ) )
( ASSERT ION ( #Wff ( .l\N ACTUALI ZACI ON OF ? CON IS S I ) ) ) ( EXTERNAL . FORM ( IF ( ( THE ESTADO OF ?NODO IS ACTIVO ) AND
i .
ll THEN
( THE CONEXIONES OF ?NODO IS ? CON ) ANO ( THE ACTUAL I Z AC ION OF ?CON IS NO ) ANO ( THE PUNT02 OF ?CON I S ?NODO ) ANO ( THE ESTADO
OF ( THE PUNTO l OF ?CON ) IS ACTIVO ) )
( THE ACTUAL I Z AC ION OF ?CON IS S I ) DO ( PUT . VALUE
( P BEM ISE ( #Wff ( AN ESTADO OF
( R . CAMBIO . P ESO . FASE 2 . l
?CON - -- · -
'' P ESO ( + ( GET . VALUE ?CON ,. P ESO ) ( GET . VALUE ,. RED ' DELTA ) ) ) ) )
? NODO IS ACTI VO ) #Wff ( A CONEXI ONES OF ?NODO I S ?CON ) #Wff ( AN ACTUAL I ZACION OF ?CON IS NO ) #Wff ( A PUHT02 OF ?CON IS ?ffODO ) #Wff ( A PUNTO ! OF ?CON IR ?UAF ) #Wff AN ESTADO O F ? VAR3 I S ACTIVO ) l ) l )
( " PROYECTOS " " 2 7 -Nov- 1 986 1 6 : 1 6 : 45 " " P ROYECTOS " " l ODec- 1 986 1 4 : 1 8 : 26 " ) NIL ( REGLA . c.<>.MB I O . P ESO . FASE2 ) NIL
' ' l .
, l .t-.. . . r = ·· :
THEN ( THE ACTUAL I ZACION OF ?CON IS S I ) DO ( P UT . VALUE ?CON
'' P ESO
( T HE CONEX iONES OF ? NODO I S ?GO ) .ó,HD ( THE ACTUALI ZACION OF ?CON IS NO ) AND ( THE PUNTO! OF ?CON IS ?NODO ) AND ( THE ESTADO
OF ( THE PUNT02 OF ?CON ) IS ACTI VO ) )
( - ( GET . VALUE ?CON / PESO ) ( GET . VALUE / RED / DELTA ) ) ) ) ) ( PREM ISE ( #W f C AN ESTADO OF ?NODO IS ACTIVO ) #Wff ( A CONEXIONES OF ? NODO IS ? CON )
#W f f ( AN ACTUALI Z ACION OF ?CON I S NO ) #Wff ( A PUNTO l OF ? CON IS ?NODO ) # W f f ( A PUNT02 OF ? CON IS ?VAR 4 ) # W f f ( AN ESTADO O F ? VAR4 IS ACTIVO ) ) ) ) )
( R . CAMBIO . PESO . FASE2 . 2 ( " PROYECTOS" " 2 7-Nov- 1 986 1 6 : 1 6 : 50 " " P ROYECTOS" " 1 0-Dec- 1 986 1 4 : 1 8 : 23 " ) NIL ( REGLA . CAMBI O . PESO . FASE2 ) NIL ( ) ( ( ACTION ( ( PUT . VALUE ?CON / P ESO ( - ( GET . VALUE ?CON ·' P ESO ) ( GET . VALUE / RED / DELTA ) ) ) ) )
( ASSERTION ( llW :: f C AN ACTUAL I Z ACION OF ? CON IS SI ) ) ) ( EXTERNAL . FORM ( I F ( ( THE ESTADO OF ?NODO IS ACTIVO ) AND
THEN ( THE ACTUALI ZACION OF ?CON IS SI ) DO ( P UT . VALUE ?CON
·· l' ESO
( THE CONEXIONES OF ?NODO IS ?CON ) AND ( THE ACTUAL I Z ACION OF ?CON IS NO ) AND ( THE PUNTO! OF ?CON IS ?NODO ) AND ( THE ESTADO
OF ( THE PUNT02 OF ?CON ) IS ACTIVO ) )
( P REM :SE ( #Wff ( Aíl ESTADO OF ?NODO IS ACTIVO ) #Wff ( A CONEXI ONES OF ?NODO IS ?CON ) #Wff ( AN ACTUALI ZACION OF ?CON I S NO )
·#Wf f ( A PUNTO! OF ? CON IS ?NODO )
1 0 . coM ROBAR . SAL IDA ; ; - .., _ ;--, -= _ - , , ,.... r. · - . ..... ,.... . .... ! l ¡_- !.'. '·-' : ::.._ . . _ . .;. ,_; ·::'·
#Wff ( A PUNT02 OF ?CON IS ?VAR5 ) #Wf f C AN ESTADO OF ?VAR5 IS ACTIVO ) ) ) ) )
, , · . .., - -.' _: - l •"'::'' . - -, ,-, .--
H I L
( REGLA . COMPROBAR . SA L I DA )
NIL ( ) ( ( ACT I ON ( ( UNITMSG ?NODO / COMPROBAR . SALIDA ) ) )
( EXTERNAL . FORM ( IF ( ( ?NODO IS IN NODOS ) ANO ( THE I DENT IFICACION OF ?NODO IS SAL IDA ) DO ( UNITMSG ?NODO ' COMPROBAR . SALI DA )
( P REM ISE ( #Wff ( ?NODO IS IN CLASS NODOS ) l/Wff ( AN I DENTIFICACION OF ?NODO IS SALI DA ) ) ) ) )
( R . FIJAR . SALIDA . PATRON ( " P ROYECTOS" " l l -Dec- 1 986 1 7 : 45 : 25 " " P ROYECTOS " " l l -Dec- 1 986 1 7 : 48 : 09 " ) NIL ( REGLA . F IJAR . SALIDA . PATRON ) NIL ( ) ( ( ACTION ( ( P UT . VALUE ?NODO ' SALIDA . PATRON ( GET . VALUE ?NODO ··· ESTADO ) ) ) )
( EXTERNAL . FORM ( IF ( ( ?NODO IS IN NODOS ) AND ( THE I DENTIFI CAC ION OF ?NODO IS SALIDA ) ) DO ( P UT . VALUE ? NODO ... S.t\LIDA . PATRON ( GET . VALUE ?NODO ·' ESTADO ) J ) )
( PREMISE ( #Wff ( ?NODO IS IN CLASS NODOS ) l/Wff ( AN I DENTIFICACION OF ? NODO I S SALIDA ) ) ) ) )
( R . INACTI VO ( " :proyectos " " 1 4-Nov- 1 986 1 3 : 33 : 24 " " PROYECTOS" " 1 9-Nov- 1 986 1 0 : 58 : 1 7 " ) NIL ( REGLA . ESTADO NIL ( ) ( ( ASSERTION ( l/Wff ( AN ESTADO OF ?NODO IS INACTIVO ) )
( EXTERNAL . FORM ( I F ( ( THE VALOR OF ?NODO IS ? X ) ANO
THEN
( THE UMBRAL OF ?NODO IS ?Y ) ANO ( < ? X ?Y ) )
( THE ESTADO OF ?NODO IS INACTI VO ) ) ) ( PREMISE ( ltWff ( A VALOR OF ?NODO IS ? X ) l/Wff ( A UMBRAL OF ?NODO IS ?Y ) #tWff ( < ?X ? Y ) ) ) ) J
( R . INICIO . FASE2 ( " P ROYECTOS" " 1 9-Nov- 1 986 1 1 : 09 : 05 " " P ROYECTOS" " l l -Dec- 1 986 1 5 : 25 : 44 " ) NIL ( REGLA . INICIO . FASE2 NIL ( ) ( ( ACTION
( ( F UT . VALUE ?NODO ... V..LOR ( - ( GET . VALUE ?NODO " UMBRAL ( GET . VALUE " RED ' DELTA ) ) )
I EXTERMAL . FORM t l f ( THE I DENTIF ICACION OF ?NODO IS SAL IDA ) DO ( P UT . VALUE ?NODO
' VALOR · · ( - ( SET. VALUE · ?NODO ' UMBRAL )- ( 6ET . V.4LUE ·' RED ·' DELTA ) )
( ASSERT NIL / REGLA . ESTADO ) ( PREMISE ( #Wff ( AN I DENTIFICAC I ON OF ?NOOO I S SALI DA ) ) ) ( WE I GHT ( 0 ) ) i )
H I L
( REGLAS . ORI GEN ) NIL ( ) ( ( ASSERT I ON ( #Wff ( A PESO OF ?CON IS 0 . 1 ) ) )
- ·- ,J - t. : .:. ¡ ¡ )
( EXTERNAL . FORM C IF ( ?CON IS IN UNIONES ) THEN ( THE P ESO OF ? CON IS 0 . 1 ) ) ) ( P REMISE ( #Wff ( ?CON I S IN CLASS UNIONES ) ) ) ) )
( R . VALORES ( " P ROYECTOS" " 1 0-Dec- 1 986 1 5 : 32 : 39 " " P ROYECTOS " " 1 0-Dec- 1 986 1 5 : 32 : 39 " ) NIL ( REGLAS . ORIGEN ) NIL ( )
'
( ( ASSERTION ( #Wff ( A VALOR OF ?NODO IS -0 . ) ) ) ( EXTERNAL . FORM ( IF ( ?NODO IS IN NODOS ) THEN ( THE VALOR OF ? NODO IS -0 . 1 ) ) ) ( P REM ISE ( #W f f ( ?NODO IS IR CLASS NODOS ) ) ) ) )
( B. . VAB I ABLE . FASE l ( " pr· oyect o s " " 1 4-Nov- 1 986 1 3 : 35 : 20 " " PROYECTOS " " 26-Nov- 1 986 1 5 : 25 : 33 " ) NIL ( REGLA . VARIABLE . FASE l ) NIL ( ) ( ( ASSERTION ( #W f f ( A VARIABLE OF ?NODO IS NIL ) ) )
( EXTERNAL . FORM ( IF ( OR ( THE I DENTIFICACION OF ? NODO I S ENTRADA ) ( THE I DENTIFICACION OF ? NODO I S SALIDA ) )
THEN ( THE VAR I ABLE OF ?NODO IS N I L ) ) )
( PREMISE ( #Wff ( ( AN IDENTIFICACION OF ?NODO IS ENTRADA ) OR C AN IDENTIFICACION OF ?NODO IS SAL IDA ) )
( WEIGHT ( 1 ) ) ) )
( R . VARIABLE . FASE2 ( " P ROYECTOS " " 1 7-Nov- 1 986 1 6 : 30 : 00 " " P ROYECTOS " " 26-Nov- 1 · 36 1 5 : 3 1 : 55 " ) NIL 1 < (REGLA . VARIABLE . FASE2 ( CLASSES GENERICUNITS ) ) NIL ( ) ( ( ASSERTION ( #Wff ( A VARIABLE OF ?NODO IS NIL ) ) )
( EXTERNAL . FORM ( IF ( THE IDENTIFICACION OF ?NODO IS ENTRADA ) THEN ( THE VARI ABLE OF ?NODO IS NI L ) ) )
( PREM ISE ( #Wff ( AN I DENTIFICACION OF ?NODO I S ENTRADA ) ) ) ) )
( " PROYECTOS " " 25-Nov- l 9.S6 1 7 : 00 : 24 " " P ROYECTC·t'.· ' ' " ;;: 6-A1.1g- 1 98 7 9 : 33 : 05 " ) NIL ( ( CLASSES GENERICUNITS ) ) "Es truct ura ba s i ca de l a red compue sta por NODOS y U N I ONES" ( ) ( ( ALGORITMO ( LAMBDA ( SELF )
CASET FIL ' REGLA . INICIO . FASE ! ) ( ASSERT IL / RGLA . ESTADO )
( ASSERT NIL ' REGLA . VARIABLE . FASE l ) ( ASSERT NIL ... REGLA . CALCULO ) ( ASSERT N I L ' REGLA . CAMB I O . PESO . FASE l ) ( ASSERT NIL ' REGLA . INICIO . FASE2 ) ( ASSERT NIL ' REGLA . VARIABLE . FA SE2 ) ( ASSERT N I L ' REGLA . CALCULO ) ( A SSERT NIL ' REGLA . CAMBIO . PESO . FASE2 ) )
METHOD ( METHOD ) NIL ( ( COMMENT ( " Algor itmo que rea l i za e l apr endi zaj e ut i l izando REGLAS . ALGORITMO" ) ) ) )
( AS I GNAR . PATRON ( LAMBDA ( SELF )
( P RINTOUT T " ESCRI BA LOS VALORES CORRESPONDIENTES A CADA NODO : " ) ( ASSERT N I L ' REGLAS . ASIGNACION . PATRO!; )
METHOD "-( METHOD) NIL ( ( COMMENT
" P i de al u s uar i o los va lores de los nodos de la r e d ( un patron de entrenamiento ) " ) ) ) ( COMPROBACION
( L.CiMBDA ( SELF ) ( ASSERT N I L ' REGLA . COMPROBAR . SALIDA ) )
METHOD ( METHOD ) N I L ( ( COMMENT
"Lanza el razonamiento que comprueba l a s s a l idas despues de una ej ecucion del algori tmo co n un patr-on " ) ) )
( CORRECTO ( NO ) N I L ( ( ONE . OF S I NO ) ) NIL ( ( CARDINALITY . MAX ( 1 ) )
( COMMENT " Va l or booleano ( SI , NO ) que s irve pat'a aver-iguar- si todos los patrones de entrada han dado ·.
la sal i da adecuada tras la segunda fase del a lgor itmo de aprendizaj e " ) ) ) ( DELTA
( Q , 1 ) ¡ I N I L ( REAL ) NIL ( ( COMMENT
( " Va l or corrector- de los pesos de las conexiones en el a l gor- itmo de aprendizaj e " ) ) ( CARDINALI TY . MAX ( 1 ) ) ) )
( I TERACION ( LAMBDA ( SELF)
( UITMSG ' RED ' ASI GNAR . PATRON ) ! UNITSe ' RED ' A0 ITMO ) ( UNITMSG ' RED ' CM? RDBACI0H ) )
( METHOD ) N I L ( ( COMMENT " Metodo que real iza una iteracion completa c o n t odos los patrones d e entrada " ) ) )
( MENUOPERACIONES ( ( "CREAR NODOS " ' N ) ( "CREAR UNIONES" ,· u )
( " SUPRIMIR NODOS " ' SN) ( " SUPRIMIR UNIONES " ' ST_!) ( " F I N " ,· F ) )
( ME!W ITEM ) NIL ( ( TITLE ( " OPERACI ONES BASICAS " ) ) ( FONT ( KEE . TITLE . FONT ) )
( OPERACIONES ( LAMBDA ( SELF )
( P ROG ( ( OPERACI OH NIL ) ) ( DO N I L
( ( EQ OPERACION / F ) )
( COMMENT "Menu pr i nc. ipal d e c.reac.ion •ie la ted " ) ) )
( SETQ OPERACION ( MENU ( GET . SLOT . MENU ·' RED ... MENUOPERACIOHES ... OWN ) ) ) ( COND ( I EQ OPERAC I ON ... N )
METHOD ( METHOD ) HIL
( UNITMSG ... NODOS / CREAR . NODOS ) ) ( ( EQ OPERACI ON ' U )
( UNI TMSG 'UNIONES ... CREAR . UNIONES ) ) f ( EQ OPERACI ON / SN )
( UNI TMSG ' NODOS ' SUPRIMIR . NODOS ) ) ( EQ CPERACION ' SU ) ( UNI TMSG ' UNIONES ' SUPRIMIR . UNIONES ) ) ) ) ) )
( ( COMMENT " Cont iene la func. ion que se oapa del menu pr inc.i rel d operaciones " ) ) ) ( ORIGEN ( LAMBDA ( SELF )
( ASSERT •HI L ' REGLAS . OR IGEN ) ) METHOD ( METHOD ) N I L ( ( COMMENT " Inicializa la red" ) ) )
( \IMAGE . PANEL ( #Unit ( IMAGE . PAHEL03254 BOLTZMAHN ) ) ) ) )
REGLA . CALCULO ( " proyecto s " " 1 4-Nov- 1 986 1 3 : 34 : 32 " " P f IECTOS " " 5-Dec.- 1 986 1 3 : 44 : 2 " ) ( REGLAS . FASE2 REGLAS . FASE! ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) "Regla c.omun a las dos fases que s e oc.upa del funcionamiento interno de la red" ( ( ASSERTIOH)
( PREMISE ) ) ( ( ANO . TRACE)
( FC . TRACE ) ( I MMEOIATE . RULE . APPLICATION i :·10DE ( ON ) ) ( OR . TRAC E ) ( P ANEL . TRAC E ) ( STEPPER . MODE) ( TEXT . TRACE ) ) )
( REGLA . CAMBIO . PESO . FASE! ( " P ROYECTOS " " 26-Nov- 1 986 1 5 : 23 : 38 " " P ROYECTOS " " 1 0-Dec.- 1 986 1 4 : 1 7 : 1 9 " ) ( REGLAS . FASE l j ( ( 1::L.tJ.SSES •3E!;E::i= :- '.,7ji I :- ) ( RULE . CLASSES RULESYS!Et,l 2 ) ) , 1 C l ; e dE r ocupan de la modi f icc i oD i 0 p s o s de las conexiones s gun la nr i rfi
ea fase del a l gor 1 T 1110 ae apr end i zaj e 1i ( ( ASSERTION >
( PREMISE ) ) ( ( ANO . TRACE)
( FC . TRACE ) ! IMMEDIATE . RULE . APPLIC.!.TION . MODE ( ON ) ) C OR . TRACE ( OFF ) )
( P .6.NEL . TRACE ) ( STEP PER . MODEJ ( TEXT . TRACE ) ) )
( REGLA . CAMBIO . PESO . FASE2 ( " P ROYECTOS" " 26-Nov- 1 986 1 5 : 28 : 26 " " P ROYECTOS " " 1 0-Dec- 1 986 1 4 : 1 8 : 45 " ) ( REGLAS . FASE2 ) ( ( CLASSES GENERICUN I TS ) ( RULE . CLASSES RULESYSTEM 2 ) ) "Clase de r-eglas q•le s e ocupan de la rnod i ficaci on de los pesos de las conexiones segun la segu
nda fase del al gor- itrno de apr-endizaj e " ( ( ASSERTION )
( PREMISE ) ) ( ( AND . TRACE )
( FC . TRACE ) ( IMMEDIATE . RULE . APPLICATION . MODE ) ( OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE) ( TEXT . TRACE ) ) )
( REGLA . COMPROBAR . SALIDA ( " PROYECTOS" " l l -Dec- 1 986 1 7 : 56 : 1 2 " " PROYECTOS" " 1 2-Dec- 1 986 1 1 : 45 : 4 7 " ) ( REGLAS . CONTROL ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) NIL ( ( ASSERT . MODE ( REPLACE ) )
( ASSERTION ) ( P REMISE ) )
( ( ANO . TRACE ) ( FC . TRACE ) (' MEDIATE . RULE . APP L I CATION . t·: JDE ) ( OR . TRACE ) ( PANEL . TRACE ) ( STEPPER . MODE) (TEXT . TRACE ) ) )
( REGL\ . ESTADO ( "pl' oyectos " " 1 4-Nov- 1 986 1 3 : 33 : 2 4 " " P ROYECTOS " " 5-Dec- 1 986 1 3 : 44 : 1 3 " ) C REGLAS . FASE2 REGLAS . FASE! ( RULES RULESYSTEM 2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) "Regla comun a las dos fases . Deter-mina l o s estados de t odos l o s nodos de la r- ed a par-tir- de 1
os val or-es de cada uno de e l l o s " ( ( ASSER T . MODE ( REPLACE ) )
( ASSERT I OH ) ( PREMISE ) )
( ( AND . TRACE ) ( FC . TRACE ) ( IMMEDIATE . BULE . A P P L I CATION . MODE l
( OR . TP..". <: ( PANEL . Tr\ . .'\CE ) ( STEPPER . MODE J ( TEXT . TRACE ) ) )
( REGLA . FI JAR . SALIDA . PATRON ( " PROYECTOS" " l l -Dec- 1 986 1 7 : 44 : 50 " " P ROYECTOS " " 1 2-Dec:- 1 986 1 1 : 45 : 52 " ) ( REGLAS . GONTROL ( rrn:..ES RULESYSn!:M2 ) )
. , GE . CLASSES RULESYSTEM2 ) ) " U c. a vez l e i do e l patron de entrada , as i gna a l s l ot SALIDA . P .ó.TRON de l a s unida•ie s •ie s a l ida los
valores correspondientes " ( ( ASSERT . MODE ( REPLACE ) )
( ASSERT ION ) ( P REMISE ) )
( ( ANO . TRACE) ( FC . TRACE ) ( I MMEDIATE . RULE . APPLICATION . MODE ) ( OR . TRACE ) ( PANE L . TRACE ) ( STEPPER . MODE ) ( TEXT . TRACE ) ) )
( REGLA . INICIO . FSEl ( " PROYECTOS " " 2 7-Nov- 1 986 1 5 : 47 : 1 5 " " P ROYECTOS" " 5-Dec- 1 986 1 3 : 46 : 49 " ) ( REGLAS . FASE ! ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNITS ) ) " Regla que se util iza para preparar todos los nodos para l a primera fase del a lgor itmo . Cont ie
ne una un ica regl a R . ACTUALI ZACION , que tambien es ut i l i zada en la segunda fase del algor i tmo de apt' en d i zaj e "
( ) ( ) )
( REGLA . INICI O . FASE2 ( " PROYECTOS " " 26-Nov- 1 986 1 5 : 28 : 2 7 " " P ROYECTOS " " 5-Dec- 1 986 1 3 : 50 : 46 " ) ( REGLAS . FASE2 ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERI CUNITS ) ) " Regla que s e ut i l iza par·a pr eparar todos los nodos para l a s egunda fase del a l gor itmo" ( ) ( ))
( REGLA . VARIABLE . FASE! ( " PROYECTOS" " 2 6-Nov- 1 986 1 5 : 23 : 35 " " P ROYECTOS" " 5-Dec- 1 986 1 3 : 48 : 2 2 " ) ( REGLAS . FASE ! ) . ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERI CUNITS ) ) " Regla que a s i gna l o s valores del s lot VARIABLE de t odos los nodos de la r ed en funci on de su
ident i ficacion y de las restr i cc i ones de la pr imer a fa s e " ( ) ( ))
( REGLA . VARIABLE . FASE2 ( " PROYECTOS " " 26-Nov- 1 986 1 5 : 28 : 25 " " PROYECTOS " " 5-Dec- 1 986 1 3 : 52 : 30 " ) ( REGLAS . FASE2 ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUN I TS ) ) " Regla que a s i gna l o s valor·es del s l ot VARIABLE de t odos l os nodos de la r· e·i en fun-:ion de s u
ident i fi cacion y d e l a s restr iccione s d e la segunda fa s e "
( )
( REGLAS . ALGOR ITMO ( " PROYECTOS " " 2 6-Nov- 1 986 1 4 : 43 : 1 8 " " PROYECTOS" " 5-Dec- 1 986 1 3 : 38 : 46 " ) ( ( RULES RULESYSTEM2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) "Clase de regl a s que cont i ene t odas la s reelas necesar i a s en e l al gor itmo de aprend i z j e d e l
r- ed" ( ( ASSERT . MODE ( REPLACE ) ) ) ( ( RESOLVE . CONFLICT LEAST . PREMISE . COMPLEXI TY l
( RETRACT NIL NIL NIL N I L NIL ) ) )
( REGLAS . ASIGNACION . PATRON ( " P ROYECTOS" " l l -Dec- 1 986 1 6 : 26 : 1 8 " " PROYECTO S " " 1 2-Dec- 1 986 1 1 : 56 : 33 " ) ( REGLAS . CONTROL ( RULES RULESYSTEM2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) "P ide al usuar io los valores correspondientes para l o s nodos de un patron" ( ( ASSERT . MODE ( REPLACE ) )
( ASSERTION ) ( P REMISE )
( ( AND . TRACE ) ( FC . TRACE ) ( IMMEDIATE . RULE . APPL ICATION . MODE ) ( OR . TRACE ) ( P ANEL . TR.O.CE ) ( STEPPEI L MODE ) ( TEXT . TRACE ) ) )
( REGLAS . CONTROL ( " PROYECTOS " " 1 2-Dec- 1 986 1 1 : 43 : 36 " " PROYECTOS" " 1 2 -Dec- 1 986 1 1 : 45 : 1 7 " ) ( REGLAS . ALGORI TMO ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNITS ) ) NIL ( ( ASSERT . MODE ( REPLACE ) ) ) ( ) )
( REGLAS . FASE ! ( " P ROYECTOS " " 26-Nov- 1 986 1 4 : 44 : 09 " " PROYECTOS" " 1 2-Dec- 1 986 1 1 : 42 : 56 " ) ( REGLAS . FASES ) ( ( RULE . CLASSES RULESYSTEM2 ) ( CLASSES GENERICUNITS ) ) " Clase de r eglas que conti ene todas las r eglas referidas a l a primera fase del algoritmo de ap
rendizaj e " ( ( WEIGHT ( 0 ) ) ) ( ( RESOLVE . CONFLICT LEAST . PREMISE . COMPLEXITY ) ) )
( REGLAS . FASE2 ( "P ROYECTOS" " 26-Nov- 1 986 1 4 : 44 : 1 0 " " P ROYECTO S " " 1 2-Dec- 1 986 1 1 : 43 : 1 0 " ) ( REGLAS . FASES ) ( ( RULE . CLASSES RULESYST EM 2 ) ( CLASSES GENERICUN I TS ) ) "Clase de r eglas que contiene todas las reglas r efer idas a la s egunda fase del algor i t mo de ap
rendizaj e " ( ( WEIGHT ( 1 ) l ) ( ( RESOLVE . CONFLI CT LEAST . PREMISE . COMP LEXI TY ) ) J
'· D.r:GLAS . FASES ( " PROYECTOS " " 1 2-Dec-1 986 1 1 : 39 : 20 " " P ROYECTOS " " " 1 2-Dec-1 986 1 1 : 4 1 : 46 " ) ( REGLAS . ALGORITMO ( RULES RULESYSTEM2 ) ) ( ( RULE . CLASSES RULESYSTEM2 ) ) " Reglas que ej ecutan las dos fases del al gor itmo" ( ) ( ) )
( REGLAS . OR IGEN ( " PROYECTOS " " 1 0-Dec- 1 986 1 5 : 28 : 51 " " P ROYECTOS" " l l -Dec- 1 986 1 7 : 04 : 50 " ) ( ( RULES RULESYSTEM2 ) ) ( ( RULE . CLASSES RULESYSTE112 ) ) "Coloca los va l ores de t odos los nodos y los de t odas las conexiones " ( ( ASSERT . MODE REPLACE ) )
( ASSERT ION ) ( P REM ISE ) )
( ( ANO . TRACE ) ( FC . TRACE ) ( I MMEDIATE . RULE . APP L I CATION . MODE ) C OR . TRACE ) ( P ANEL . TRACE ) ( STEPPER . MODE ) ( TEXT . TRACE ) ) )
( UNIONES ( " pl:'oyect os " ' ' 1 4-Hov- 1 986 1 3 : 30 : 4 1 " " P ROYECTOS " " 2 6-Aug- 1 987 9 : 48 : 1 2 " ) ( RED ) ( ( CLASSES GENERICUN I TS ) ) "Conexi orres o ai:-cos entre los nodos de la red"; ( ( ACTUALI ZACION
( NO ) NIL ( ( ONE . OF SI NO ) ) NIL ( ( COMMENT
( " Va l oI' bool eano ( SI , NO ) que •:ietermina si el peso de la conexion ha sido actua l i zado en la fase coi:-respondiente del algor itmo de aprendizaj e ( sumandole o i:- estandole DELTA ) " ) )
( CARDINALITY . MAX ( 1 ) ) ) ) ( PESO
( 0 ) N IL ( REAL ) NIL ( ( COMMENT ( " Valoi:- numer i co a s ignado a la conexion enti:-e dos nodos " ) )
( AVUNI TS ( #Unit ( CORRECCION BOLTZMANN ) ) ) ) ) ( P UNTO l NIL
NIL ( NODOS ) NIL ( ( COMMENT ( " Uno de los dos nodos a s ociados a l a conexion " ) ) ( CARDINAL I TY . MAX ( 1 ) ) ) )
C PUNT02 NIL HIL ( N ODOS ) NIL ( ( COMMENT ( " Uno de l o s dos nod o 2 s i ados a la coneion " ) ) ! CARDINALITY . MAX ( 1 ) ) ) ) )
r p :os ( DTO VALOF F )
( P RINTOUT T " HOi'1BP.E DE. LA HUEVA UNIOH : " ) ( SETQ DATO ( CREATE . UNIT ( CLI : READ ) N I L NIL ' ( UNI ONES ) ) ) ( CLI : TERPRI ) ( P RINTOUT T " P ESO ( D par· a el valor por defect o ) : " ) ( SETQ VALOR ( CLI : READ ) ) ( P UT . VALUE DATO
METHOD ( t 1ETHOD ) NIL
· owN J ( CLI : TERPI.U )
( T VALOR ) )
( P RINTOUT T " P RIMER NODO CONECTADO : " ) ( SETQ N ( CLI : READ ) ) ( P UT . VALUE DATO ' PUNTO! N ) ( PUT . VALUE N
' CONEXIONES ( CAR ( AP P EN D ( GET . VALUE N ' CONEXIONES ) ( LI ST DATO ) ) )
( CLI : TERP R I J ( P RINTOUT T " SEGUNDO NOD CONECTADO : " ) ( SETQ N ( CLI : READ ) ) ( P UT . VALUE DATO ' P UNT02 N ) ( PUT. VALUE N
' CONEXIONES ( CAR ( AP P END ( GET . VALUE N 'CONEXIONES ) ( t.IST DATO ) ) ) ) ) )
( ( COMMENT " Cont i ene la func i on que cr-ea uniones ent r- e nodos " ) ) ) ( SUPRIMIR . UN IONES ( LAMBDA ( SELF )
( CL I : TERPRI ) ( PRINTOUT T " NOMBRE DE LA UIHON : ;, ) ( UNITDELETE ( CLI : READ ) ) )
METHOD ( METHOD) NIL ( ( COMMENT " Cont iene la funcion q•Je s upr-ime uni ones " ) ) ) ) )
( VERTICAL . TRAFFIC . LIGHT03293 ( " PROYECTOS" " 25-Nov- 1 986 1 7 : 33 : 28 " " PROYECTOS " " 2 6-Aug- 1 98 7 9 : 48 : 45 " ) N I L ( ( VERTICAL . TRAFIC . LI GHT AC: JEIMAGES ) IMAGES ) NIL ( ) ( ( BORDER 4 )
( FONT FONTS : HL6 ) ( HEIGHT 39 ) ( IMAGE . WAS . PAIHTED H I L ) ( LAST . V.l\LUE . D ISPr .. YED ( INAC7IVO ) ) ( OBJECT . DISP LAYED ' #Slot ( ESTADO NODOl BOLTZMANN OWN ) ) ( REGION ( 1 9 309 75 3 9 )
N I L N I L NIL ( ( ICON . REGIOR ( 1 9 309 131 48 ) ) ( EXPAND . REGIOR ( 1 9 309 75 39 ) ) ) )
( RELAY . BEGIONS . AL I ST ( ( ( ACTIVO O O 65 7 ) ( INACTI VO O 7 65 7 ) ) ) ) ( SAVE D . VALUES INACT I VO ) ( SUF ER . I MAGE #Unit ( IMAGE . PANEL03 254 BOLTZMANN ) ) ( T ITLE " NODO l ' s ESTADO " ) ( T ! 1 _ 0NT FONTS : HL l OB J
( V P E . WAS . SAVED T ) ( WIDTH 75 ) ( WINDOW "A Flavo I n s t ance"
NIL NIL HH. 1 • l C0 . i I NDOW N I L ) ( EXPAND . WINDOW NILJ I CURRENT . WI NDOW ( EXPAND ) ) ) ) ) )
( VEBT I CAL . TBAFF I C . LIGHT03296 ( " PROYECTO S " " 25-Nov- 1 986 1 7 : 34 : 43 " " PROYECTOS " " 26-Aug- 1 98 7 9 : 48 : 46 " ) NIL ( ( VERTICAL . TRAFFIC . LI GHT ACT I VEIMAGES ) IMAGES ) NIL
( ) ( ( BORDER 4 )
( FONT FONTS : HL6 ) ( HE IGHT 3 9 ) ( IMAGE . WAS . PAINTED NIL ) ( LAST . VALUE . DISPLAYED ( INACTIVO ) ) ( OBJECT . DISPL1WED #S l ot ( ESTADO NOD02 BOLTZMANN OWN ) ) ( REGION ( 2 1 264 74 39 )
NIL N IL NIL ( ( !CON . REGION ( 2 1 264 1 3 1 48 ) ) ( EXPAND . REG ION 2 1 264 7 4 39 ) ) ) )
( REU..Y . REGIONS . ALIST ( ( ACTIVO O O 64 7 ) ( INACTIVO O 7 64 7 ) ) ) ) ( SAVED . VALUES INACT I VO ) ( S UPER . IMAGE ttuni t ( IMAGE . PANEL03254 BOLTZMANN ) ) ( T : rr.. : " NOD0 2 ' s ESTADO " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUNIT · NI L ) ) ( VALUE . WAS . SAVED T ) ( WIDTH 7 4 ) ( WINDOW " A Flavo Instance "
NIL NIL N IL ( ( ICON . WINDOW NIL ) EXPAND . WINDOW N I L ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( VERTICAL . TRAFF I C . LIGHT03299 ( "PROYECTOS" " 25-Nov- 1 986 1 7 : 35 : 4 2 " " PROYECTOS " " 26-Aug- 1 98 7 9 : 48 : 46 " NIL ( ( VERTICAL . TRAFFIC . LIGHT ACTIVEIMAGES ) IMAGES ) NIL ( ) ( ( BORDFR 4 )
( FONT FONTS : HL6) ( HEIGHT 4 0 ) ( IMAGE . WA S . PAINTED N I L ) ( LAST . VALUE . DISPLAYED ( INACTIVO ( OBJECT . DISPLAYED #Slot ( ESTADO NOD03 BOLTZMANN OWN ) ) ( REGION ( 23 2 1 6 73 4 0 )
NIL N IL !H L ( ( I CON . REGION ( 2 3 2 1 6 1 3 1 48 ) ) ( EXPAND . REGION ( 23 2 1 6 73 40 ) ) ) )
( Ut:LAY . UTI:G I ONS . ALIS'! ( t.CTIV0 0 (' 6 3 ? ) !".:T!VO O 7 6 7 ) ) ) SAVED . VALUES IHACT!VJ ) SUFEB . IMAE #Uni t ( I t1AG . PANE02254 BOLT Z r1AN?: ) ) ( T!TLE " NOD0.3 ·' s ESTADO " ) ( TITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WA S . SAVED T ) ( WI DTH 7 3 ) ( WINDOW " A F l avo Instance "
!E L N IL ( ( ICON . WI NDOW N I L ) ( EXPAND . WI NDOW N I L ) ( CURREN T . W I NDOW ( EXPAND ) ) ) ) ) )
( VERTICAL . TRAFFI C . LIGHT03303 ( " PROYECTOS" " 25-Nov- 1 986 1 7 : 36 : 38 " " PROYECTOS" " 26-Aug- 1 987 9 : 48 : 47 " ) NIL ( ( VERTICAL . TRAFF I C . LIGHT ACTIVEIMAGES ) IMAGES ) NIL
( ) ( ( BORDER 4 )
( FONT FONTS : HL6) ( HEIGHT 4 0 ) ( IMAGE . WAS . PAINTED N I L ) ( LAST . VALUE . DISPLAYED ( INACTIVO ) ) ( OBJECT . DISPLAYED l/Slot ( ESTADO NOD04 BOLTZMANN OWN ) ) ( REGION ( 2 2 1 69 73 40
NIL NIL HIL ( ( I CON . REGION ( 2 2 1 69 131 4 8 ) ) ( EXPAND . REG ION ( 2 2 1 6 9 73 40 ) ) ) )
( RELAY . REGIONS . ALIST ( ( ( ACTIVO O O 63 7 ) ( INACTIVO O 7 63 7 ) ) i ) ( SAVED . VALUES INACT I VO ) ( SUPER . IMAGE l/Unit ( IMAGE . PANEI.03254 BOLTZMANN ) ) ( TI TLE " NOD04 ,. s ESTADO " ) ( T ITLEFONT FONTS : HL l OB ) ( TOPUHIT ( N IL ) ) ( VALUE . WAS . SAVED T ) ( WI DTH 73 ) ( W INDOW " A F lavor Instance"
NIL HIL N IL ( ( ICON . WINDOW N I L ) ( EXPAND . W INDOW NIL ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( VERTICAL . TRAFFIC . LIGHT03306 ( " PROYECTOS" " 25-Nov- 1 986 1 7 : 3 7 : 54 " " P ROYECTOS " ' 26-Aug- 1 987 9 : 48 : 47 " ) NIL ( ( VERTICAL . TRAFFI C . L IGHT ACTIVEIMAGES ) IMAGES ) NIL
( ) ( ( BORDER 4 )
( FONT FONTS : HL6) ( HEIGHT 40 ) ( IMAGE . WAS . P AINTED N I L ) ( LAST . VALUE . DISPLAYED ( ACTIVO ) ) ( OBJECT . DISPLAYED l/Sl ot ( ESTADO NODOS BOLTZMANN OWN ) ) ( REGION ( 24 1 20 7 1 40 )
N I L NIL NIL ( ( ICON RE6!0N ( 24 1 0 ! 2 1 48 ) ) ! XPND RE51 0! ( 2 4 ! 2 0 71 0 ) ) )
( RELAY . REGI ONS . ALIST ( ( ( ACTIVO O O 61 7 ) ( INACTIVO O 7 6 1 7 ) ) ) ) ( SAVED . VALUES ACTIVO ) ( SUPER . IMAGE l/Unit ( IMAGE . PANEL03254 BOLTZMANN ) l ( TITLE " NODOS,. s ESTADO " )
( TITLEFONT FONTS : HL I OB )
( TOPUNIT ( N I L ) ) ( VALUE . WAS . SAVED T ) ( W I DTH 7 1 ) ( W INDOW " A F l avo I n s t a n c e "
N I L N I L NIL ( ( ICON . W I NDOW N I L ) ( EXPAND .WINDOW NIL ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( VERTICAL . TRAFFIC . LIGHT03309 ( " PROYECTOS " " 25-Nov-1 986 1 7 : 38 : 38 " " PROYECTOS " " 2 6-Aug- 1 98 7 9 : 48 : 48 " ) NIL ( ( VERTI1, ·. L . TRAFFIC . L IGHT ACTIVEIMAGES ) IMAGES ) NIL 11ii· ( ) ( ( BORDER 4 )
( FONT FONTS : HL 6 ) ( HEIGHT 39 ) ( I MAGE . WAS . P A I NTED NI L ) ( LAST . VALUE . D ISPLAYED ( ACTIVO ) ) ( OBJECT . D I SPI AYED l/Sl ot ( ESTADO NOD06 BOLTZMANN OWN ) ) ( REGION ( 24 3 69 39 )
N I L N IL N I L ( ( I CON . REGION ( 24 73 1 3 1 48 ) ) ( EXPAND . REGION ( 24 7 3 69 39 ) ) ) )
( RELAY . REGIONS . ALIST ( ( ( ACTIVO O O 59 7 ) ( INACTIVO O 7 59 7 ) ) ) ) ( SAVED . VALUES ACTIVO ) ( SUPER . IMAGE t/Unit ( IMAG E . PANEL03254 BOLTZMANN ) ) ( TI TLE " NOD06 ' s ESTADO" ) ( TITLEFONT FONTS : HL l OB ) ( TOPUNIT ( NIL ) ) ( VALUE . WAS . SAVED T ) ( WI DTH 69 ) ( W INDOW " A Fl avo I n stanc e "
N I L N I L N I L 1 , ( ( ICON . W INDOW N I L ) ( EXPAND . WINDOW N I L ) ( CURRENT . WINDOW ( EXPAND ) ) ) ) ) )
( VERTICAL . TRAFFIC . LIGHT033 1 2 ( " PROYECTOS " " 25-Nov- 1 986 1 7 : 39 : 23 " "PROYECTOS " " 2 6-Aug- 1 98 7 9 : 48 : 48 " ) NIL ( ( VERTICAL . TRAFFIC . L I GHT ACTIVE IMAGES J I MAGES )
NIL ( ) ( BORDER 4 i
( CiE:i(;.;7 - , ( IMAGE . AS . E A I RTED N I L ) ( LAST . VALUE . D ISPLAYED ( INACTIVO ) ) ( OBJECT . DISPLAYED #Slot ( ESTADO NOD07 BOLTZMANN OWN ) ) ( REGION ( 26 1 8 65 40 )
NIL NIL H I L ( ( I CC: ; . :: :_ :. : : . , 2 ó 1 3 1 3 1 48 ) ) ( EXP.lir1D . iiEG : :;r; \ 2 6 l S 6 5 .:.O ) ) ) )
( SAVED . VALUES I NACTIVO )
( SUPER . IMAGE #Unit ( I MAGE . PANEL03254 BOLTZMANN ) )
( TITLE " NOD07 / s ESTADO " )
( TITLEFONT FONTS : HL l OB )
( TOPUNIT ( NIL ) )
( VALUE . WAS . SAVED T )
( I HDTH 65 )
( W INDOW " A Flavo Instance "
N I L
NIL
NIL
( ( I CO N . WINDOW N I L ) ( EXPAND . WI NDOW N I L ) ( CURRENT . WINDOW C EXPAND ) ) ) ) ) )
KBEnd