Logo Studenta

Optimizacion-binaria-con-redes-neuronales-de-Hopfield-asimetricas

¡Este material tiene más páginas!

Vista previa del material en texto

Universidad Nacional Autónoma de México
Facultad de Ciencias
Optimización Binaria con Redes Neuronales
de Hopfield Asimétricas
T E S I S
QUE PARA OBTENER EL TÍTULO DE:
FÍSICO
PRESENTA:
ALDO MORA SÁNCHEZ
DIRECTOR DE TESIS:
DR. PEDRO EDUARDO MIRAMONTES VIDAL
2011
 
UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
2
Datos del alumno
Apellido paterno: Mora
Apellido materno: Sánchez
Nombre: Aldo
Teléfono: 57547423
Universidad: Universidad Nacional Autónoma de México
Facultad: Facultad de Ciencias
Carrera: F́ısica
Número de cuenta: 300133257
Datos del tutor
Grado: Dr
Nombres: Pedro Eduardo
Apellido paterno: Miramontes
Apellido materno: Vidal
Datos del sinodal 1
Grado: Dr
Nombre: Germinal
Apellido paterno: Cocho
Apellido materno: Gil
Datos del sinodal 2
Grado: Dr
Nombre: Pablo
Apellido paterno: Padilla
Apellido materno: Longoria
Datos del sinodal 3
Grado: Dr
Nombres: David Philipp
Apellido paterno: Sanders
Datos del sinodal 4
Grado: Dr
Nombre: Fernando
Apellido paterno: Ramı́rez
Apellido materno: Alatriste
Datos del trabajo escrito
T́ıtulo: Optimización binaria con redes
neuronales de Hopfield asimétricas
Número de páginas: 62
Año: 2011
3
A mi familia, amigos y maestros, porque sin ellos todo hubiera sido muy
complicado o completamente inútil.
Índice general
Índice general 5
1. Introducción 7
2. Optimización Combinatoria 9
2.1. Algoritmos: eficiencia y complejidad . . . . . . . . . . . . . . . . 11
2.1.1. Clases de Complejidad . . . . . . . . . . . . . . . . . . . . 12
2.2. Recocido Simulado . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3. Gráficas 17
3.1. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4. Redes Neuronales 21
4.1. Fundamentos Biológicos . . . . . . . . . . . . . . . . . . . . . . . 21
4.2. Redes neuronales artificiales . . . . . . . . . . . . . . . . . . . . . 23
4.2.1. Funciones de Activación . . . . . . . . . . . . . . . . . . . 27
4.2.2. Topoloǵıas de redes neuronales . . . . . . . . . . . . . . . 29
4.3. Redes de Hopfield . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.1. Enerǵıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.2. Forma de la función objetivo y condiciones de estabilidad 34
4.4. Consecuencias de quitar las restricciones de los pesos. . . . . . . 35
5. Ruta más corta en una gráfica 37
5.1. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6. Resultados 43
6.1. Resultados utilizando el algoritmo original . . . . . . . . . . . . . 43
6.2. Modificación al algoritmo original . . . . . . . . . . . . . . . . . . 49
6.3. Resultados de la aplicación de la modificación . . . . . . . . . . . 52
7. Conclusiones 59
Bibliograf́ıa 61
5
Caṕıtulo 1
Introducción
En este documento se abordará un problema de optimización binaria
proponiendo una modificación al algoritmo de Hopfield para redes neuronales
artificiales. Se expondrá, de forma razonablemente autocontenida, el problema
de la optimización binaria tomando como caso particular la búsqueda de la
ruta más corta en una gráfica. Se observará que bajo el algoritmo de Hopfield
el problema no se puede codificar de manera estable, se estudiará brevemente
la dinámica, aparentemente caótica, del sistema que representa al problema y
finalmente se hará una modificación a la regla de actualización, esto con el
fin de conseguir estabilidad en el sistema y con ello una solución. La solución
óptima en el esquema de Hopfiled es codificada como el mı́nimo global de una
función binaria, por lo que al algoritmo de Hopfield se le adecuará el del recocido
simulado, para evitar mı́nimos locales que podŕıan, como se mostrará, significar
estados que no cumplen con las caracteŕısticas de una solución, y claramente
tampoco con las de la solución optima.
Las redes neuronales son modelos de aprendizaje automático basados en la
forma en que se cree que funciona el sistema nervioso, están constituidas por
un conjunto de unidades interconectadas que reciben como entrada una suma
pesada de valores provenientes de las demás y producen una salida, que a su vez
puede ser tomada por ellas. Las redes neuronales de Hopfield [1] son utilizadas
para la optimización de funciones, en su forma original mediante una dinámica
análoga a un proceso f́ısico real toman como entrada un vector binario y lo van
transformando de forma que se minimice una función objetivo llamada enerǵıa.
La salida es entonces un vector con la propiedad de que al ser evaluado en la
función objetivo, el resultado es siempre menor al que daŕıa la evaluación del
vector original. Este algoritmo presenta tres limitantes:
1. Al actualizarse sólo admite cambios en el vector de entrada que minimicen
la función, por lo que si el estado inicial no es cercano al mı́nimo global,
el estado final será en el mejor de los casos un mı́nimo local.
2. Se basa en modelos de Ising, por lo que la enerǵıa debe poder escribirse
como una suma de términos constantes, lineales y a lo más cuadráticos.
3. Para garantizar un cambio negativo en la enerǵıa en cada actualización
del sistema, la matriz de coeficientes de términos cuadráticos debe ser
7
8 CAPÍTULO 1. INTRODUCCIÓN
simétrica y de elementos nulos en la diagonal.
En la literatura se encuentra, referente al primer punto, el algoritmo de
“recocido simulado”(simulated annealing) [2] basado a su vez en el algoritmo
de Metropolis. Dicho algoritmo agrega una pseudotemperatura al modelo, ésta
desciende gradualmente simulando el proceso de recocido de los metales. La
probabilidad de aceptar un cambio positivo en la enerǵıa está dada por una
distribución de Boltzmann, por lo que a muy altas temperaturas se tiene un
medio de probabilidad de aceptar un cambio positivo, y a temperatura cero el
algoritmo se reduce al original permitiendo sólo cambios negativos. Con esto es
posible explorar el espacio de soluciones escapando de mı́nimos locales a altas
temperaturas, y descendiendo en la enerǵıa al bajar la temperatura. En este
trabajo se combinan ambos algoritmos, el de Hopfield y el de recocido simulado.
Sobre el segundo punto, se sabe que toda función binaria se puede escribir de
forma tal que sea la suma de términos lineales, cuadráticos, cúbicos, etcétera. El
modelo de Hopfield incluye hasta términos cuadráticos, se comentará la forma
de extender dicho modelo, sin embargo no se tratará aqúı.
Finalmente sobre el tercer punto, en la literatura se discute la dinámica de
redes de Hopfield al violar el requerimiento de simetŕıa y elementos nulos en la
diagonal, se estudia por ejemplo el caos que se presenta bajo ciertos parámetros,
sin embargo en el presente texto se propondrá una modificación a la regla de
actualización que le da estabilidad al sistema, garantizando una disminución
de la enerǵıa independientemente de la forma de la matriz de coeficientes de
interacciones cuadráticas. Aśı, para controlar los saltos en la enerǵıa basta con
variar la temperatura, de no darse esta estabilidad incluso a bajas temperaturas
tendŕıamos un comportamiento caótico sin la posibilidad, en la mayoŕıa de los
casos, de encontrar un mı́nimo.
Este primer caṕıtulo es una breve introducción, en el segundo caṕıtulo
se escribirá sobre la optimización combinatoria, definiciones,algoritmos para
resolver problemas de este tipo y la complejidad de los mismos. Se describirá en
particular el algoritmo del recocido simulado, que es un método estocástico
y metaheuŕıstico utilizado en problemas de optimización combinatiora. El
tercer caṕıtulo es sobre gráficas, incluye un poco de historia, definiciones
y tipos de gráficas. En el cuarto caṕıtulo se describirán de forma general
las redes neuronales y de forma particular las de Hopfield. Se incluyen
fundamentos bioógicos de las mismas y caracteŕısticas como topoloǵıa, funciones
de activación, etcétera. En el quinto se planteará el problema de encontrar la
ruta más corta en una gráfica, y se describirá en términos de redes de Hopfield,
modificando el algoritmo original para adecuarlo a problemas más generales.
En el sexto caṕıtulo se presentarán los resultados, y finalmente en el séptimo
conclusiones y futuras ĺıneas de investigación.
Caṕıtulo 2
Optimización Combinatoria
Un problema discreto de optimización consiste en encontrar el valor óptimo
de una función real, llamada función objetivo, dentro de un conjunto finito
de soluciones factibles. A veces dado un conjunto base E, el conjunto de
soluciones factibles se puede expresar [3] de manera natural como 2E , el conjunto
de subconjuntos de E, en este caso se le llama problema de optimización
combinatoria.
Conociendo la función objetivo, dado que el conjunto de soluciones factibles
es finito, resulta muy sencillo elaborar un algoritmo que pruebe cada una
de las soluciones y encuentre la que optimice la función. Sin embargo en la
práctica, debido a la naturaleza del conjunto de soluciones, que puede crecer
exponencialmente al variar el tamaño del problema, un algoritmo de este estilo
usualmente requiere un tiempo de cómputo exponencial en función del tamaño
de la entrada. Estos conceptos se definirán formalmente más adelante.
La optimización matemática trata, en general, de resolver el siguiente
problema:
min(f(x))
con las restricciones:
gi(x) ≥ 0 i = 1, ...,m
hj(x) = 0 j = 1, ..., p
Con f , gi y hj funciones generales de la variable x ∈ Rn. El vector
x representa variables de decisión y la función f , llamada función objetivo,
evalúa la calidad de las decisiones. Las m restricciones del primer tipo y las
p restricciones del segundo tipo determinan el subconjunto del dominio de
donde se toman las soluciones posibles. A los problemas que involucran variables
discretas se les llama de optimización combinatoria.
A continuación se darán algunas definiciones formales sobre problemas de
optimización combinatoria:
Definición 1 (Instancia) Una instancia de un problema de optimización es
un par (C,f), donde C es el conjunto de soluciones factibles y f un mapeo
f : C → R
9
10 CAPÍTULO 2. OPTIMIZACIÓN COMBINATORIA
llamado función objetivo. El problema es encontrar
c ∈ C | f(c) ≤ f(y) ∀ y ∈ C
El punto c es llamado una solución global a la instancia.
Definición 2 Un problema de optimización es un conjunto I de instancias.
Informalmente podemos describir a una instancia como un problema par-
ticular con valores fijos de entrada, es decir con la información necesaria para
encontrar una solución. Un problema es la abstracción obtenida de los elementos
en común entre varias instancias.
Un problema clásico es el del agente viajero. Se tiene una colección de puntos,
y el problema es encontrar una ruta que empezando y terminando en el mismo
lugar pase sólo una vez por cada punto y los recorra todos. Una instancia del
problema seŕıa una matriz particular de distancias entre puntos.
Definición 3 (Vecindad) Dado un problema de optimización con instancias
(C, f), una vecindad es un mapeo:
N : C → 2C
Una vecindad es el conjunto N(c) de puntos cercanos a c, si C = Rn, la
distancia euclidiana proporciona una forma natural de definir una vecindad,
como el conjunto de puntos a menos de cierto valor fijo.
Definición 4 (Óptimo Local) Dada una instancia (C, f) y una vecindad N ,
una solución c es llamada óptimo local con respecto a N , o simplemente óptimo
local cuando no hay necesidad de especificar N , si:
f(c) ≤ f(g) ∀ g ∈ N(c)
Definición 5 (Óptimo Global) Si independientemente de N , c es un ópti-
mo local, entonces c es un óptimo global.
Para resolver sistemáticamente instancias de un problema, se definen
secuencias de operaciones llamadas algoritmos.
Como ya se mencionó, debido a que el conjunto de posibles soluciones es
finito, el procedimiento más intuitivo es realizar una búsqueda exhaustiva, sin
embargo como también ya se comentó esto es ineficiente. Otro método consiste
en hacer una búsqueda al azar, de esta forma si fuera totalmente impráctico
recorrer todo el espacio de soluciones al menos se aumenta la región del mismo en
la que se haŕıa la búsqueda, evitando en lo posible tomar una muestra demasiado
sesgada, sin embargo esto tampoco hace gran diferencia. Entre los métodos más
populares, se ha buscado en la naturaleza inspiración para resolver problemas de
optimización combinatoria. Puede ser en procesos f́ısicos, como la búsqueda de
la configuración de menor enerǵıa en un sistema de átomos, o procesos biológicos
2.1. ALGORITMOS: EFICIENCIA Y COMPLEJIDAD 11
como la evolución o la “inteligencia de enjambre”, estos algoritmos suelen ser
metaheuŕısticos. A pesar de que la naturaleza discreta de estos problemas impide
utilizar herramientas anaĺıticas y por lo tanto exactas, a veces puede hacerse
una versión continua del problema, pero esta involucra resolución de ecuaciones
simultáneas, algebraicas o diferenciales, que además de tener también algoritmos
poco eficientes al final es muy probable que se requiera una discretización de
las ecuaciones para su solución, regresando al problema de la imposibilidad de
utilizar métodos anaĺıticos exactos.
2.1. Algoritmos: eficiencia y complejidad
Un algoritmo es una técnica para resolver una instancia de un problema.
Según [5], un algoritmo debe ser:
1. Finito en su descripción.
2. Factible, en cada uno de sus pasos.
3. Terminable, después de un número finito de pasos.
4. Determinista, por ser una secuencia preestablecida de pasos definidos,
aunque puede tener una componente probabiĺıstica.
La complejidad se encarga de estudiar el tiempo y espacio en memoria que
requiere un algoritmo en función del tamaño de la entrada. Es deseable que el
algoritmo sea eficiente, teóricamente un algoritmo es eficiente si el tiempo de
cómputo requerido para resolver instancias del problema está acotado por un
polinomio en función del número de bits necesarios para codificar el problema.
Como se puede leer en [7], Alan Cobham y Jack Edmonds, comenzaron a llamar
eficientes a los algoritmos que corren en tiempo polinomial.
Como los factores constantes son irrelevantes no interesa la implementación
de un algoritmo en un modelo computacional particular, simplemente se cuenta
la cantidad de pasos elementales requeridos. Un paso elemental puede ser una
operación aritmética, la verificación de una condición, la asignación de una
variable, etcétera.
Un algoritmo tiene como entrada una lista de números, un número entero a se
puede almacenar en binario con una cantidad de bits del orden de O(log(|a|+2)).
El número de bits necesarios para almacenar un racional es la suma de los bits
necesarios para almacenar el numerador y el denominador. El tamaño de una
entrada x, tam(x), es el número total de bits necesarios para almacenarla. El
espacio requerido para almacenar un irracional no se tratará aqúı, ya que sólo
se desea esbozar el concepto de complejidad.
Definición 6 (Complejidad Computacional) Sea A un algoritmo que acep-
ta entradas de un conjunto X, y sea f : N → R+. Si existe una constante
α > 0 tal que A termina su cómputo después de al menos αf(tam(x)) pasos
elementales para cada x ∈ X, se dice que A corre en tiempo O(f), también se
dice que la complejidad de A es O(f)
12 CAPÍTULO 2. OPTIMIZACIÓNCOMBINATORIA
En [7] se comparan tiempos de ejecución hipotéticos para algoritmos con
un número de pasos 100nlog(n), 10n2, n3,5, nlog(n), y n!. El logaritmo es base
2 y se considera que un paso elemental toma un nanosegundo. En ese orden,
para n = 10 tenemos tiempos de 3µs, 1µs, 3µs, 2µs, 1µs y 4µs, sin embargo si
simplemente triplicamos n, obtenemos, en el mismo orden, un tiempo de 15µs,
9µs, 148µs, 20µs, 1s y 8 × 1015 años. Para una entrada 10 veces mayor a la
original, es decir de n = 100, si el tiempo es 2n, el algoritmo tardaŕıa bajo las
condiciones especificadas 4× 1013 años.
La eficiencia teórica presenta algunos problemas, por ejemplo es una teoŕıa
del peor escenario. Se considera f de tal forma que f(n) sea máximo para
una instancia de entrada n, esto puede ser una medida pesimista si el peor
escenario ocurre raramente, en la práctica las instancias pueden estar lejos de
este. Por otro lado el orden del polinomio puede ser muy alto, con lo que existe
la posibilidad de que en el rango del problema se presente un comportamiento
similar al exponencial.
Los problemas se separan en grupos llamados clases de complejidad, estas
categoŕıas reúnen problemas con eficiencia teórica similar. Para esta clasificación
se considera el peor escenario del mejor de los algoritmos, con lo que se consigue
un justo balance que permite transmitir lo que intuitivamente podŕıamos llamar
dificultad de un problema particular, incluso a quien no esté familiarizado con él.
Hablar de la complejidad de un problema y no de un algoritmo es probablemente
un abuso, sin embargo esto se justifica al tomar el mejor algoritmo conocido, de
todas formas es importante tener en mente que aunque se hable de la pertenencia
de un problema a una clase, esto es un atributo de su mejor algoritmo conocido
y no algo inherente al problema mismo, por lo que este puede considerarse
perteneciente a otra clase de encontrarse un algoritmo mejor.
2.1.1. Clases de Complejidad
En este contexto una clase es un conjunto de problemas que pueden ser
resueltos por una máquina abstracta M en un tiempo O(f(n)), donde n es el
tamaño de la entrada.
Un problema de decisión es uno que admite como respuesta śı o no, y cada
problema de optimización se puede reformular como un problema de decisión,
por lo que usualmente la clase de complejidad a la que pertenecen los problemas
de optimización se plantea en términos de problemas de decisión.
Como indica [6], a la clase de problemas de decisión que pueden ser resueltos
en tiempo polinomial se les llama P . Los problemas de decisión cuya respuesta
afirmativa puede ser verificada en tiempo polinomial se conocen como NP , de
non-deterministic polinomial. Los problemas para los que una respuesta negativa
puede ser verificada en tiempo polinomial se conocen como Co − NP , por ser
el conjunto complemento de NP .
P está contenido en la intersección de NP y Co−NP , ya que obviamente si
existe un algoritmo polinomial, este nos proporciona una respuesta afirmativa
2.2. RECOCIDO SIMULADO 13
o negativa en tiempo polinomial, sin embargo es importante hacer la distinción
entre NP y Co−NP ya que puede existir una forma de verificar una respuesta
positiva sin que tengamos forma de saber lo contrario, y viceversa. Mas aún, hay
que enfatizar que no es claro todav́ıa si un elemento de NP está necesariamente
en P o en Co − NP , como ejemplo está el hecho de que no se conoce ningún
algoritmo polinomial para el problema del agente viajero, aunque exista forma
de verificar una respuesta positiva en tiempo polinomial y no se conozca un
algoritmo polinomial para verificar una respuesta negativa. Debido a lo anterior
una pregunta importante sigue siendo la posible igualdad entre P y NP o NP
y Co − NP . Hasta ahora se cree que hay buenas razones para considerar que
P 6= NP y NP 6= Co−NP .
Los problemas de optimización en los que el espacio de soluciones vaŕıa
exponencialmente con el tamaño de la entrada están contenidos en NP . Dentro
de NP existe un subconjunto, llamado NP -completo, que contiene problemas
que de encontrarse un algoritmo polinomial se demostraŕıa que P = NP , ya que
estos problemas pueden ser transformados en tiempo polinomial en los demás
elementos de NP . El problema del agente viajero es un ejemplo de problema
NP -completo.
Un ejemplo de algoritmo a utilizar en un problema de optimización
combinatoria es el del recocido simulado, que será explicado en la siguiente
sección.
2.2. Recocido Simulado
En [2] se propone utilizar el algoritmo de Metropolis, esto es la utilización de
herramientas de f́ısica estad́ıstica, para problemas de optimización combinatoria.
La mecánica estad́ıstica es un conjunto de métodos para analizar las
propiedades de una colección grande de átomos, como en la mayoŕıa de los
materiales con los que interactuamos estos están presentes en cantidades del
orden de 1023 por cent́ımetro cúbico, sólo se observa experimentalmente a
una temperatura dada, la configuración más probable cuando el sistema se
encuentra en equilibrio térmico. Para esto Josiah Willard Gibbs introdujo como
herramienta teórica un ensamble de part́ıculas idénticas sobre el cual se calculan
valores promedio y fluctuaciones de ellos.
La configuración del sistema se especifica dando las posiciones {ri} de cada
una de las part́ıculas, y estas son pesadas por su factor de Boltzmann e
−E({ri})kBT
donde E es la enerǵıa, kB es la constante de Boltzmann y T es la temperatura.
En esta distribución, al bajar la temperatura el pico se va haciendo más angosto
y se recorre a la izquierda, lo que significa que a bajas temperaturas dominan
los estados base como se muestra en la figura 2.1 1.
1http://commons.wikimedia.org/wiki/File:Maxwell-Boltzmann distributionPDF.png
14 CAPÍTULO 2. OPTIMIZACIÓN COMBINATORIA
Figura 2.1: Una distribución de Boltzmann para tres temperaturas, el eje x
representa la enerǵıa y el eje y la fracción de elementos con dicha enerǵıa.
Como ejemplo se puede tomar una cadena de i átomos, con la posibilidad de
apuntar sólo en dos direcciones, a cuyos estados se les denotará µi = ±1. A altas
temperaturas cada átomo tiene la misma probabilidad de encontrarse en cada
estado, por lo que se tiene una distribución binomial, con valores para la enerǵıa
máximo y mı́nimo de ±NJ, y valor más probable de 0. Los valores máximo y
mı́nimo bajo esta distribución son altamente improbables, la enerǵıa cero tiene
un peso estad́ıstico eNJ mayor. Sin embargo al bajar la temperatura, como en el
sistema hay menos fluctuaciones el estado base se vuelve cada vez más probable.
En la práctica sin embargo se ha encontrado que las bajas temperaturas no
son suficientes para garantizar el estado base. Se ha observado por ejemplo en
el proceso de recocido en metales, que si los cambios no son cuasiestáticos y
se permite que el sistema esté fuera de equilibrio, el material tendrá muchas
imperfecciones y se encontrará en un estado metaestable, un optimo local. Por
ello la técnica utilizada consiste en fundir el metal, y luego ir descendiendo
gradualmente la temperatura, pasando mucho tiempo en temperaturas cercanas
al mı́nimo. El algoritmo de recocido simulado se basa en esta técnica, definiendo
una pseudotemperatura para el sistema que funcione de tal forma que el sistema
obedezca una distribución de Boltzmann.
Para asignar en el modelo esta temperatura efectiva hay que observar las
analoǵıas entre ambos sistemas. El proceso de mejora con las iteraciones en
la optimización combinatoria es similar al reordenamiento microscópico en los
materiales, teniendo claramente la función objetivo el papel de la enerǵıa. Sin
embargo si sólo admitimos cambios en la configuración que minimicen la enerǵıa
2.2. RECOCIDO SIMULADO 15
es equivalente a bajar rápidamente a temperatura cero, por lo que las soluciones
obtenidas son metaestables.
Desde el punto de vista geométrico, debemos recordar que la hipersuperficie
de la función objetivo de un problemade optimización tiene frecuentemente
gran cantidad de picos y valles, si estamos cerca de un mı́nimo local, cualquier
algoritmo que permita únicamente un descenso nos llevará irremediablemente a
él sin la posibilidad de salir.
Con el algoritmo de Metropolis se incorporan saltos controlados en la función
objetivo, disminuyendo en altura al descender la temperatura. El algoritmo es
el siguiente:
1. Se toma un elemento del sistema y se cambia ligeramente su configuración
de forma aleatoria
2. Se calcula el cambio en la enerǵıa y si este es negativo la configuración
nueva se acepta, si el cambio es positivo se acepta con probabilidad
P (∆E) = e
−∆E
kBT .
3. Se baja la temperatura, si esta sigue siendo mayor que cero, se repite desde
el primer paso
Aśı, el sistema adquiere una distribución de Boltzmann y la analoǵıa es útil.
El valor T no tiene nada que ver con una temperatura real de algún elemento
del problema, es sólo un parámetro que se hace disminuir gradualmente para
aprovechar las predicciones de la mecánica estad́ıstica.
En resumen, el recocido simulado es un método que permite saltos en la
función objetivo que van disminuyendo en magnitud al transcurrir el tiempo, a
efecto de tratar de evitar mı́nimos locales.
Algunos problemas de optimización combinatoria aparecen de forma natural
al tratar con gráficas, que serán definidas en la siguiente sección. Por un lado,
en ellas una de las caracteŕısticas más importantes es la conectividad, atributo
que se puede representar con un valor binario. Y por otro, se ha hablado ya
de problemas que presentan variación exponencial del tamaño del espacio de
solución en función del tamaño de la entrada, y es de esta forma también que
aumentan las posibilidades de conexión de una gráfica al aumentar los nodos.
Caṕıtulo 3
Gráficas
La teoŕıa de gráficas se remonta a 1736, año en que Euler resolvió el problema
de los siete puentes de Königsberg (ahora Kaliningrado, el enclave ruso en el
Báltico). La ciudad teńıa cuatro porciones de tierra conectadas por siete puentes
como se muestra en la figura 3.1 1.
Este problema, bastante conocido en la época, consist́ıa en encontrar una
ruta por las cuatro porciones de tierra cruzando una y sólo una vez cada puente.
Euler probó que no exist́ıa tal ruta con un método que sentó las bases de la teoŕıa
de gráficas. Este problema se diferenćıa del del Agente Viajero previamente
comentado en que en este caso lo que se debe visitar una sola vez es cada
puente y no cada porción de la ciudad.
Haciendo una abstracción de la ciudad, le asignó a cada porción de tierra
un nodo o vértice, y unió dos de ellas si exist́ıa un puente que las conectaba. El
objeto resultante, con 4 nodos y 7 aristas se muestra en la figura 3.2 2.
Euler dio las condiciones necesarias y suficientes para que una gráfica
cualquiera admita una ruta como la descrita.
3.1. Definiciones
Definición 7 (gráfica) Una gráfica es un par G = (N,A) que consiste en un
conjunto no vaćıo N y un conjunto A de subconjuntos de dos elementos de N. Los
elementos de N son llamados nodos. Sean b, c ∈ N , un elemento a = {b, c} ∈ A
es una arista con vértices b y c. Se dice que b y c son incidentes con a, y que
ambos son adyacentes o vecinos entre ellos, se escribe a=bc.
Una gráfica dirigida o digráfica es una en la que los pares {b, c} son pares
ordenados, es decir las aristas tienen una direccionalidad.
1http://mosaicos.50webs.com/puenteskonigsberg.html
2tomada de http://media.texample.net/tikz/examples/PNG/bridges-of-konigsberg.png
17
18 CAPÍTULO 3. GRÁFICAS
Figura 3.1: Los puentes de Königsberg
Figura 3.2: Gráfica resultante de la abstracción de los puentes y la ciudad.
3.1. DEFINICIONES 19
Figura 3.3: Gráfica totalmente conectada
Como ejemplo podemos describir dos tipos importantes, en primer lugar la
gráfica completa Kn con n vértices (|V | = n), y A compuesto por todos los
subconjuntos de dos elementos de V . Es decir una gráfica en la que cada nodo
está conectado con todos los demás, como se muestra en la figura 3.3 3.
Además tenemos la gráfica bipartita completa Km,n, que tiene por conjunto
de nodos la unión disjunta del conjunto V1 de m elementos y el conjunto V2 de
n elementos, y por aristas todos los conjuntos {a, b} con a ∈ V1 y b ∈ V2. En
otras palabras se tienen dos grupos de nodos, y cada nodo se une con los nodos
del otro grupo como se observa en la figura 3.4 4.
La teoŕıa de gráficas estudia casos en los que la conectividad es la
principal caracteŕıstica del problema, aśı que las aristas pueden ser dibujadas
de forma arbitraria, siendo irrelevantes sus tamaños, intersecciones o ubicación
geométrica, al igual que la de los nodos.
Ahora definiremos algunos conceptos: Sea (a1, a2, ..., an) una secuencia de
aristas en una gráfica, si existen nodos b1, ..., bn+1 tales que ai = bibi+1 para
i = 1, ..., n la secuencia es llamada un camino, si b1 = bn+1 es un camino
cerrado. Un camino para el que todas las aristas son diferentes es un camino
simple, y si además b1 = bn+1 es un camino simple cerrado. Una ruta es un
camino simple en el que además todos los vértices son distintos. Un camino
3tomada de http://altermundus.com/downloads/examples/graph/Complet-16.png
4tomada de http://www.sagenb.org/home/pub/670/cells/11/sage0.png
20 CAPÍTULO 3. GRÁFICAS
Figura 3.4: Gráfica bipartita
simple cerrado con n ≥ 3 para el que todos los nodos son diferentes exceptuando
el primero y el último se llama ciclo. En cualquiera de los casos b1 es el nodo
inicial, bn+1 es el nodo final y n es la longitud.
Definición 8 (Matriz de adyacencia) Si el conjunto N de nodos tiene n
elementos, la matriz de adyacencia asociada es la matriz cuadrada de n x n con
elementos nulos excepto en las entradas i, j tales que existe una arista entre el
nodo i y el nodo j de la gráfica, en este caso la entrada de la matriz será 1. Si
la arista es un bucle en una gráfica no dirigida, entonces la entrada de la matriz
será 2.
Las gráficas pueden ser utilizadas para representar redes neuronales, el
siguiente caṕıtulo trata de su descripción.
Caṕıtulo 4
Redes Neuronales
4.1. Fundamentos Biológicos
El sistema nervioso humano puede verse como una caja negra que funciona a
tres niveles, como una computadora convencional, recibe información del medio,
la procesa, y toma decisiones en función de esto, sin embargo además de lo
anterior existe retroalimentación, por lo que somos capaces de aprender.
Las neuronas son células con alta excitabilidad en la membrana, se espe-
cializan en recibir y conducir impulsos nerviosos. Respecto a su morfoloǵıa,
constan de un cuerpo principal llamado soma del que nacen pequeñas terminales
denominadas dendritas, responsables de recibir los est́ımulos; y una prolongación
llamada axón encargada de transmitir los impulsos, la figura 4.1 muestra un
esquema1.
Los receptores convierten est́ımulos en señales eléctricas que proporcionan
información a la red de neuronas, estas señales son procesadas por el cerebro
y convertidas por los efectores en respuestas o salidas. La retroalimentación
1tomada de http://campusvirtual.unex.es/cala/epistemowikia/images/b/b4/Neurona.PNG
Figura 4.1: Esquema de una neurona
21
22 CAPÍTULO 4. REDES NEURONALES
está presente al haber flujo de información de los efectores al cerebro y de este
a los receptores.
Se cree que hay aproximadamente 10 billones de neuronas en la corteza
cerebral y 60 trillones de conexiones entre ellas. Las interconexiones neuronales
se dan a través de la sinapsis, una neurona t́ıpicamente da lugar a varios miles
de sinapsis en las que generalmente se conecta el axón con las dendritas de
otra célula, aunque también puede hacerlo con el cuerpo celular, con otro axón
o dendrita con dendrita. La sinapsis puede ocurrir entre dos neuronas o entre
una neurona y una célula de otro tipo, la sinapsis más común es la qúımica, el
mecanismo t́ıpicamente es como sigue [11]:
1. El potencialde membrana es el voltaje entre el interior y el exterior
de la célula, la sinapsis qúımica comienza con un potencial de acción,
que es un pico en el potencial de membrana que sigue una trayectoria
predeterminada, este viaja por la membrana de la neurona presináptica
hasta llegar a la sinapsis, que es el lugar de unión entre las dos neuronas.
2. El potencial de membrana se hace más positivo o menos negativo
(depolarización), lo que causa que se abran los canales permeables a iones
de calcio.
3. Los iones de calcio fluyen por la membrana de la neurona presináptica, lo
que incrementa rápidamente la concentración de calcio en el interior.
4. La concentración de calcio activa un conjunto de protéınas sensibles al
calcio, unidas a veśıculas que contienen neurotransmisores
5. Estas protéınas cambian de configuración, haciendo que algunas veśıculas
se unan a la membrana presináptica, se abren las veśıculas y vierten los
neurotransmisores en el espacio entre las membranas de las dos células.
6. Algunos de estos neurotransmisores escapan, pero otros se unen a
receptores de la membrana de la célula postsináptica.
7. El neurotransmisor activa la célula receptora, hay varios mecanismos para
esto.
8. Debido a la agitación térmica el neurotransmisor se separa del receptor,
y puede ser destruido metabólicamente o reabsorbido por la neurona
presináptica para uso futuro.
El peso de una conexión está definido por el cambio en el potencial
postsináptico de membrana, que es el que resulta de la activación de los
receptores de los neurotransmisores postsinápticos. Los cambios en el peso
sináptico pueden ser a corto o largo plazo, los cambios a corto plazo duran
entre segundos y minutos, y no implican cambios celulares estructurales; los
cambios a largo plazo ocurren por la repetida activación sináptica, debido a la
cual mensajeros secundarios pueden iniciar la śıntesis de protéınas, resultando
en una alteración de la sinapsis misma. Se cree que estos mecanismos a largo
plazo son responsables del aprendizaje y la memoria.
En el proceso anterior se observa cómo una señal eléctrica se transforma
en una qúımica y esta a su vez en una eléctrica de nuevo. Las redes neuronales
4.2. REDES NEURONALES ARTIFICIALES 23
artificiales son un modelo de cómputo, producto de la abstracción de los procesos
neuronales, de los que podemos conservar lo siguiente:
Se tiene un número N de unidades sencillas de procesamiento conectadas
entre śı, a cada par está asociado un valor llamado peso sináptico.
Las unidades pueden o no recibir una entrada del exterior, es un valor
constante pero que puede variar para cada unidad y al que después se
asociará con un umbral.
Cada unidad recibe una entrada de las otras N − 1, y hace una suma
pesada de estos N − 1 términos mas el est́ımulo exterior si es que este
existe, el peso de cada término es el peso sináptico entre la unidad que
está haciendo la suma y la unidad de la que proviene dicho término. A la
suma pesada mas el factor externo se le llama a veces campo local inducido.
Una función de activación proporciona una salida a cada unidad, tomando
como entrada el valor del campo local inducido.
La salida de una unidad puede ser entrada para otras neuronas, siempre
que su peso sináptico respecto a ella no sea cero.
En la siguiente sección se explicará con más detalle esto, pero teniendo en
cuenta que cada unidad realiza una operación muy sencilla podemos notar que
se trata de un cómputo emergente, en el que las propiedades colectivas no se
pueden reducir a las propiedades de las partes individuales. Es justamente en las
interacciones (pesos) y umbrales donde se almacena información relevante, en las
redes de Hopfield que se discutirán más adelante, la información del problema
se codifica en los pesos y umbrales, y se deja al sistema evolucionar hasta llegar
a un estado de equilibrio, que representa una configuración óptima del sistema,
al menos localmente.
4.2. Redes neuronales artificiales
Cualquier computadora es capaz de realizar tareas como el cálculo de
millones de cifras por segundo, o almacenar en unos instantes datos que a un
humano le tomaŕıa mucho tiempo, sin embargo con los algoritmos convencionales
es realmente dif́ıcil programarla para que realice una tarea tan sencilla para
un ser humano como reconocer patrones o tratar con ruido. Para un programa
convencional, una silueta de una persona con la mano derecha arriba y otra de la
misma persona con la mano izquierda arriba seŕıa un objeto totalmente distinto.
La diferencia entre estos tipos de tareas parece ser la naturaleza intŕınsecamente
paralela y no lineal del segundo, un ser humano al analizar una imagen toma
información simultáneamente de una gran cantidad de segmentos pertenecientes
a la misma, y pone a trabajar un igualmente numeroso grupo de unidades.
El cerebro humano es capaz de reconocer patrones en un tiempo mucho
menor que el que le tomaŕıa a cualquier programa creado, a pesar de que la
24 CAPÍTULO 4. REDES NEURONALES
velocidad de los componentes de una computadora moderna es aproximada-
mente seis órdenes de magnitud mayor a la de las reacciones en el cerebro. Un
ser humano crea categoŕıas de la experiencia, mediante inferencia inductiva, y
después puede utilizarlas de manera deductiva, en una computadora serial este
proceso parece casi imposible. Según [10], el cerebro humano puede reconocer
un rostro familiar en un ambiente nuevo en un lapso de entre 100 y 200 ms, a
una computadora digital le tomaŕıa mucho más una tarea menos compleja.
Además del alto paralelismo y la no linealidad, el cerebro humano puede
aprender, ajustarse al medio, tratar con ruido, es compacto, disipa poca enerǵıa
y es tolerante a fallos.
Debido a la identificación de lo anterior como deseable para la resolución
de problemas, o simplemente a la tendencia a imitar a la naturaleza por
considerarla eficiente, se han desarrollado algoritmos que tratan de reproducir
algunas de estas caracteŕısticas, entre ellos se encuentran las redes neuronales.
Estas redes surgieron como modelos del funcionamiento del sistema nervioso,
aunque han evolucionado como herramientas de inteligencia artificial, alejándose
a veces del realismo a cambio de eficiencia. La naturaleza ha servido no
sólo como inspiración, sino también como herramienta directa para resolver
problemas donde se requiere un alto paralelismo. Leonard M. Adleman [9] en
1994 publicó un art́ıculo donde utilizaba ADN para resolver una instancia de
siete nodos del problema del camino Hamiltoniano, otro problema NP-completo,
en el que en una gráfica se define un nodo inicial y uno final, y hay que encontrar
un camino que empezando en el nodo inicial y terminando en el final pase sólo
una vez por cada nodo. La diferencia con el problema del agente viajero es que
dos nodos no son necesariamente adyacentes en el del camino hamiltoniano, si
la gráfica del problema del camino hamiltoniano es totalmente conectada este
problema se convierte en el del agente viajero. En términos prácticos resolver
una instancia de siete nodos es trivial, sin embargo fue la primera vez que se
utilizó de forma satisfactoria el ADN para realizar cómputo. El algoritmo es el
siguiente:
1. Generar caminos aleatorios en la gráfica.
2. Mantener los caminos que empiecen en el nodo inicial y terminen en el
final.
3. Si la gráfica tiene n nodos, mantener sólo los caminos que pasen
exactamente por n nodos.
4. Mantener sólo los caminos que contengan al menos una vez cada nodo.
5. Si quedó algún camino, devolver “śı”, de lo contrario, devolver “no”.
La implementación biológica consistió en codificar cada nodo i en una
secuencia aleatoria de ADN de 20 elementos, y cada arista ij en la unión de los
últimos 10 elementos de la secuencia correspondiente al nodo i con los primeros
10 elementos de la secuencia correspondiente al nodo j. Exceptuando los casos
en que i fuera el nodo inicial o j el nodo final, en losque se tomaŕıan los 20
4.2. REDES NEURONALES ARTIFICIALES 25
Figura 4.2: La cadena complementaria a un nodo j sirve para unir una arista ij
con una arista jk
elementos.
Aśı, por ejemplo si el nodo i se representa con la secuencia TATCG-
GATCGGTATATCCGA llamada Oi, el nodo j con la secuencia GCTATTC-
GAGCTTAAAGCTA denominada Oj , y el nodo k con la secuencia GGCTAGG-
TACCAGCATGCTT llamada Ok, entonces la arista ij quedará representada
por la secuencia Oij GTATATCCGACTTAAAGCTA y la arista jk por la
secuencia CTTAAAGCTAGGCTAGGTAC denominada Ojk.
La unión de dos aristas con un nodo en común, como ij con jk quedaŕıa
codificada aśı:
GTATATCCGACTTAAAGCTA - CTTAAAGCTAGGCTAGGTAC
Recordando que Oj es GCTATTCGAGCTTAAAGCTA, su cadena comple-
mentaria O∗j es CGATAAGCTCGAATTTCGAT, O
∗
j sirve para unir Oij con
Ojk por afinidad de pares como se muestra la figura 4.2.
A nivel laboratorio, para una gráfica de siete nodos, con nodo incial a y nodo
final b, los cinco pasos del algoritmo se implementaron de la siguiente forma:
1. Se mezclaron en una reacción de ligación 50 pmol de cada O∗i para cada
i (exceptuando la correspondiente al nodo incial y la correspondiente al
nodo final, ya que para estos nodos se necesita una sola arista que los
contenga), y 50 pmol de cada Oij para cada ij tales que existiera una arista
que uniera al nodo i con el nodo j. Con lo que se obtuvieron moléculas de
ADN que codificaban caminos aleatorios.
2. Se amplificó mediante la técnica reacción en cadena de la polimerasa
(PCR, por sus siglas en inglés) el producto del paso anterior, usando
iniciadores Oa y O
∗
b , con lo que se consiguió amplificar sólo los caminos
que empezaban en a y terminaban en b.
3. El resultado del paso anterior se corrió en un gel de agarosa y se
amplificó la banda correspondiente a 140 pares de bases, que representa
moléculas que codifican caminos que incluyen exactamente siete vértices.
26 CAPÍTULO 4. REDES NEURONALES
Figura 4.3: Neurona artificial simple
4. El producto del paso anterior fue purificado por afinidad con un sistema
magnético de biotina - avidina. Se generó una cadena sencilla de la doble
cadena del paso anterior, y para una i fija se utilizaron cadenas O∗i unidas
a esferas de hierro, se prepararon condiciones para el emparejamiento de
cadenas y se utilizó un imán para atraer a las moléculas que conteńıan O∗i
y por tanto representaban caminos que conteńıan al nodo i. Se repitió este
proceso para cada i.
5. El resultado del paso anterior se amplificó para saber si se generó una
molécula que codificara un camino hamiltoniano.
Volviendo al enfoque anterior, de utilizar a la naturaleza como modelo y no
como herramienta, regresamos a las redes neuronales artificiales. Se comentó en
la sección anterior que estos modelos de aprendizaje artificial basados en la forma
en que se cree que funciona el cerebro humano constan de unidades (neuronas)
interconectadas, con un peso sináptico asociado a cada par y una función que
transforma la entrada proveniente de las demás unidades en una salida utilizable
por las otras unidades, la figura 4.3 ejemplifica gráficamente una neurona de dos
entradas2.
En términos matemáticos, una neurona k está representada por dos ecua-
ciones:
uk =
m∑
j=1
wkjxj
yk = φ(uk + bk)
Donde uk es la suma pesada de las entradas provenientes de las demás
neuronas, wkj es el peso sináptico entre las neuronas k y j, xj es la salida
de la neurona j, bk es el est́ımulo externo constante aplicado a la neurona k, φ
2tomada de http://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Computer.Science.AI.Neuron.svg/250px-
Computer.Science.AI.Neuron.svg.png
4.2. REDES NEURONALES ARTIFICIALES 27
es la función de activación y yk es la salida de la neurona k.
El comportamiento de la red dependerá entre otras cosas de la forma de
la función de activación, para que la red se acerque a nuestros propósitos hay
que seleccionar una función adecuada, en seguida se describen algunos tipos de
función de activación.
4.2.1. Funciones de Activación
Usualmente encontramos tres tipos de funciones de activación, las funciones
de umbral, las funciones lineales a trozos y las funciones sigmoides.
Una función de umbral es una función escalón de Heaviside, este modelo
conocido como de Mc Culloch - Pitts, es un modelo de “todo o nada”, si el
campo local inducido, es decir la suma del est́ımulo externo de una neurona
con la suma pesada de las entradas de las demás es no negativa, entonces la
neurona se activa, de lo contrario permanece inactiva. Esta función representa
a una unidad que se activa cuando la entrada excede un umbral. El modelo de
Hopfield que se usará posteriormente incorpora esta función de activación, si
por ejemplo el est́ımulo externo es negativo, entonces el requerimiento de que la
suma pesada mas el est́ımulo sea no negativo es equivalente a pedir que la suma
pesada sea mayor al est́ımulo externo, aśı para cada unidad el est́ımulo externo
funciona como un umbral.
Con ecuaciones:
m∑
j=1
wkjxj + (−bk) ≥ 0 ⇒
m∑
j=1
wkjxj ≥ bk
Aśı, para cada unidad k el est́ımulo externo bk se puede ver también como
el umbral asociado a esa unidad.
La función escalón se muestra en la figura 4.4.
La función lineal a trozos se define por una ecuación del tipo:
φ(v) =
 0 si v ≤ −
1
2
v + 12 si −
1
2 < v <
1
2
1 si v ≥ 12
Y la podemos observar en la figura 4.5.
Finalmente, la función sigmoide es muy utilizada en la construcción de redes
neuronales ya que es no lineal, siempre creciente y diferenciable, un ejemplo es
la función loǵıstica:
φ(v) =
1
1 + e−av
El parámetro a indica la pendiente de la sigmoide, al aumentar este valor y
hacerlo tender a infinito recuperamos la función escalón. La figura 4.6 muestra
dos funciones loǵısticas, la de ĺınea continua tiene una pendiente de 1, la de ĺınea
28 CAPÍTULO 4. REDES NEURONALES
Figura 4.4: Función escalón de Heaviside
Figura 4.5: Función lineal a trozos
4.2. REDES NEURONALES ARTIFICIALES 29
Figura 4.6: Función sigmoide
discontinua tiene una pendiente de 0.5:
Lo importante de estas funciones es que más allá de cierto valor de saturación
la salida tenga dos posibilidades, los valores de las mismas son irrelevantes
aśı que de ser conveniente se puede usar por ejemplo el conjunto 0,1 o el -
1,1.
Otro aspecto importante a considerar al diseñar una red es la topoloǵıa, que
se refiere a las conexiones entre unidades y como consecuencia de ello al flujo
de la información.
4.2.2. Topoloǵıas de redes neuronales
Se distinguen dos tipos de arquitecturas:
Las redes proalimentadas, en las que el flujo de datos es estrictamente de
entrada a salida. Se tienen n capas de neuronas, y una neurona de la capa
i puede únicamente estar conectada a neuronas de la capa i+1. La primer
capa es la que recibe la entrada y la última da la salida. Como la capa de
entrada no realiza cómputo por convención no se le cuenta en el número de
capas, aśı, una red de una capa de entrada, una capa oculta o intermedia,
y una capa de salida se dice que tiene dos capas. En la imagen3 4.7 se
muestra una red proalimentada, con tres entradas y dos salidas.
Las redes retroalimentadas o recurrentes pueden admitir conexiones más
generales, y la noción de capa puede o no estar presente. En estas redes
debido a la posible presencia de ciclos hay dos esquemas, en uno el que
3upload.wikimedia.org/wikipedia/commons/thumb/e/e1/MultiLayerNeuralNetwork.png/400px-
MultiLayerNeuralNetwork.png
30 CAPÍTULO 4. REDES NEURONALES
Figura 4.7: Red proalimentada
Figura 4.8: Red recurrente de dos capas
el comportamiento dinámico es muy importante ya que la activación
puede continuar indefinidamente o hasta que el sistema se estabilice en
un atractor; y otro en el que se calcula la activación de cada unidad una
vez y trata las conexiones recurrentes como información extra, incorporada
por la propia red. La figura 4.8 es de una red recurrente con dos capas:
El número decapas en una red proalimentada es importante ya que
determina la capacidad de clasificación que tiene un sistema. Minsky y Papert
demostraron que una red de una sola capa no puede representar un simple XOR
(O exclusivo). La tabla de valores de XOR, para entradas binarias -1 y 1 es la
siguiente:
x0 x1 y
-1 -1 -1
-1 1 1
1 -1 1
1 1 -1
Que gráficamente se ilustra en la figura 4.9 4.
Las gráficas representan los operadores lógicos AND, OR y XOR. Cada una
de estas funciones tiene por entrada dos valores binarios, el caso concreto de
4tomada de [12]
4.2. REDES NEURONALES ARTIFICIALES 31
Figura 4.9: Representación de AND, OR y XOR
XOR se ejemplifica en la tabla anterior, XOR toma valor 1 si y sólo si las
entradas son distintas, aśı que las entradas (-1,1) y (1,-1) tienen valor de 1 (en
negro en la gráfica) y las demás de -1 (mostrado en blanco).
Podemos observar que AND devuelve 1 en un sólo punto, aśı que si trazamos
una ĺınea es posible separar las entradas que devuelven 1 y de las que devuelven
-1. OR tiene 3 valores de un tipo y uno de otro, por lo que de igual forma existen
ĺıneas que pueden separar el problema, sin embargo para XOR esto es imposible
ya que las dos entradas a separar están en la misma ĺınea. La relación entre lo
anterior y las redes neuronales es que una red de una sola capa tiene capacidad
de separar valores de la misma forma en que lo hace una ĺınea recta, ya que
para una capa y dos entradas, con una entrada externa constante θ, la entrada
total s es:
s = w1x1 + w2x2 + θ
Tomando por función de activación una función umbral, la salida es 1 si
s ≥ 0 y -1 si s ≤ 0, es decir los puntos del plano x1, x2 que cumplan
w1x1 + w2x2 ≥ −θ
Darán como salida 1 y los demás -1. El ĺımite es justamente la recta
w1x1 + w2x2 = −θ
Por lo que todos los puntos que estén de un lado activarán la unidad.
Este inconveniente se soluciona agregando una capa oculta, lo que geométri-
camente significa agregar una dimensión, siendo con ello los puntos separables
por un plano en el espacio ahora tridimensional. Lo anterior no se presentará a
detalle aqúı ya que las redes a utilizar son las de Hopfield, pero puede ser
consultado en [12]. Las redes de Hopfield son redes recurrentes en las que el
número de capas no está definido, pertenecen al grupo de redes que se estabilizan
en un atractor, en estas redes no hay restricciones sobre la conectividad de las
unidades.
32 CAPÍTULO 4. REDES NEURONALES
4.3. Redes de Hopfield
La idea de Hopfield para optimizar funciones fue hacer una analoǵıa con
un sistema dinámico que tiende al equilibrio. En su art́ıculo [1] la función a
optimizar era la similitud entre una cadena binaria y una cadena binaria patrón
porque buscaba justamente almacenar patrones en una red. Cada estado del
sistema (concretamente las salidas de las unidades) representaŕıa un patrón y
podŕıa verse como un punto en el espacio de configuración, con la enerǵıa se
codificaŕıan los patrones a almacenar en los pesos y umbrales de la red, de tal
forma que los puntos que representan los patrones a almacenar fueran mı́nimos
locales, aśı al empezar desde un lugar cercano a un patrón almacenado la
dinámica conduciŕıa el sistema hasta este. Por punto cercano se puede entender
un patrón parecido a alguno de los almacenados, pero con ruido. De esta forma
la red funcionaŕıa como una memoria asociativa. Si los patrones son imágenes
podemos recuperar o “recordar” una imagen con parte de ella, o con una versión
ligeramente distorsionada de la misma.
Una red de Hopfield es una red en la que se admiten todas las conexiones
posibles entre neuronas, con una función de activación tipo umbral. Se toman
unidades al azar y se les aplica la función de activación, si los pesos wij cumplen
ciertos requisitos, a saber, wij = wji y wii = 0 para todo (i, j) entonces la red
eventualmente converge a un estado de equilibrio. Para ejemplificar lo anterior y
su utilidad se describirá un problema sencillo pero ilustrativo, el de la memoria
asociativa, abordado por Hopfield en su art́ıculo [1].
El problema es el siguiente, se tiene un sistema de N unidades, la unidad
i puede estar en el estado ξi = 1 o ξi = −1. Se le llama patrón µ al conjunto
ξµ = {ξ1, ξ2, ..., ξN} Se deben almacenar p patrones, de tal forma que cuando
se presente una nueva cadena ζ, la red produzca el patrón almacenado más
parecido a ζ.
Tomaremos como función de activación para la unidad i una función escalón:
Si = sgn(
N∑
j
wijSj − θi) (4.1)
Donde de nuevo wij son los pesos y θi son los umbrales. La función sgn es:
sgn(x) =
{
1 si x ≥ 0
−1 si x < 0
Hasta ahora, no sabemos nada de los valores de los pesos y los umbrales,
aśı que en cierta forma son parámetros que podemos ajustar para obtener lo
que deseamos, que es estabilidad. Observemos ahora como se puede almacenar
un patrón. Si escribimos las siguientes N ecuaciones:
sgn(
N∑
j
wijξj − θi) = ξi ∀ i
4.3. REDES DE HOPFIELD 33
Podemos observar que de cumplirse, la regla de actualización no produciŕıa
cambios ya que justamente aśı se definió la regla de actualización. Cualesquiera
parámetros que permitan esta igualdad conseguiŕıan estabilidad para el patrón
a almacenar. En particular si tomamos
θi = 0
wij ∝ ξiξj
Obtendremos
sgn(
N∑
j
wijSj − θi) ∝ sgn(
N∑
j
ξiξ
2
j ) = sgn(
N∑
j
ξi) = sgn(Nξi) = Nξi
De esta forma, si tomamos
wij =
ξiξj
N
Tenemos la igualdad deseada. Más aún, si el estado inicial {Si} difiere
en menos de la mitad de los bits del patrón almacenado {ξi}, este error
será compensado por la suma
N∑
j
wijSj
Aśı, todos los estados que difieran en menos de la mitad de los bits del
patrón terminarán en el valor almacenado, por lo que el patrón ξ es un
atractor. Análogamente se puede probar que -ξ es otro atractor, de hecho si
el estado inicial difiere en más de la mitad de los bits del patrón el sistema
evolucionará hasta este estado reverso. Para un sólo patrón almacenado tenemos
estos dos atractores.
Si se desean almacenar p patrones, se encuentra de la misma forma que los
pesos deben calcularse mediante una superposición de los patrones
wij =
1
N
p∑
µ=1
ξµi ξ
µ
j
En [13] se discute la capacidad de almacenamiento para un sistema de N
unidades.
4.3.1. Enerǵıa
En la sección anterior se habló de estabilidad sin considerar la “enerǵıa”
asociada al estado de la red. El concepto de enerǵıa surgió de la analoǵıa entre
estos sistemas y el modelo de Ising, como el de espines descrito en la sección de
recocido simulado. El modelo de Ising es un modelo para el ferromagnetismo,
se tienen variables discretas (espines) que pueden tomar dos estados y que
34 CAPÍTULO 4. REDES NEURONALES
interactúan con los vecinos, la dinámica del sistema es tal que los espines se
acomodan minimizando la enerǵıa.
En la analoǵıa de Hopfield las neuronas corresponden a los espines, los pesos
a las interacciones entre ellos, los umbrales al campo inducido y la función a
optimizar a la enerǵıa, en este caso la función se minimiza pero si nuestra función
objetivo requiere ser maximizada basta un cambio de signo en la misma. En el
caso de la memoria asociativa la función a optimizar es la similitud entre el
estado inicial S y el patrón más cercano ξ. Al ajustar los pesos wij para que
almacenen los patrones, la dinámica es la que bajo este modelo tendŕıa un
sistema de N espines, con interacciones wij entre ellos.
La enerǵıa del sistema en ambos casos se define como:
H = −1
2
N∑
i
N∑
j
wijSiSj +
N∑
i
θiSi (4.2)
Más adelante se verá que la función objetivo tiene que ser de la forma de esta
enerǵıa, por lo que ella determina el tipo de problemas que se pueden solucionar
con una red de Hopfield.
4.3.2. Forma de la función objetivo y condiciones de
estabilidad
Al describir la memoria asociativa se encontró una condición suficiente para
que la regla de actualización nos condujese hasta un punto deseado, sin embargo
el problema de una función general a optimizar y sus condicionesde estabilidad
aún no se ha discutido.
Para ambos podemos usar el concepto de enerǵıa, recordando la analoǵıa de
Hopfield la función a optimizar corresponde a la enerǵıa, por lo que con este
modelo lo mejor que podemos conseguir es minimizar una función de la forma
(4.2), es decir con una suma de términos lineales y cuadráticos en las variables.
El procedimiento entonces para aplicar el algoritmo de Hopfield, es escribir
la función a optimizar en la forma (4.2) para encontrar los pesos y umbrales
que codifiquen nuestro problema. Al escribir la función a optimizar puede que
aparezcan términos cúbicos o de mayor orden, esto, como se verá más adelante
en el planteamiento particular del problema de la ruta más corta, puede a veces
resolverse reescribiendo la función en otros términos, si no es posible entonces
deberá buscarse algún otro algoritmo de optimización.
Para discutir la estabilidad de un sistema descrito por una función general
de la forma (4.2) bajo la regla de actualización (4.1), evaluemos el cambio en la
enerǵıa del sistema debido a un cambio en la unidad k, de Vk0 a Vkf .
4.4. CONSECUENCIAS DE QUITAR LAS RESTRICCIONES DE LOS PESOS.35
∆Hk = −
1
2
∑
i
wikViVkf −
1
2
∑
i
wkiVkfVi + bkVkf +
1
2
wkkVkfVkf
−(−1
2
∑
i
wikViVk0 −
1
2
∑
i
wkiVk0Vi + bkVk0 +
1
2
wkkVk0Vk0)
= −1
2
∑
i
wikVi∆Vk −
1
2
∑
i
wkiVi∆Vk + bk∆Vk +
1
2
wkk(V
2
kf − V 2k0)
Si
wij = wji y wii = 0 ∀i, j (4.3)
entonces se puede escribir:
∆Hk = −∆Vk(
∑
i
wkiVi − bk) (4.4)
Si la unidad k cambió de -1 a 1 entonces ∆Vk > 0, y de acuerdo a la regla
de actualización para que se haya dado este cambio∑
i
wkiVi − bk ≥ 0
Por lo tanto, de la ecuación (4.4) ∆Hk ≤ 0
Por otro lado, si el cambio fue de 1 a -1 ∆Vk < 0 y
∑
i wkiVi − bk < 0, en
cuyo caso ∆Hk < 0
Combinando ambos casos, siempre podemos decir que ∆Hk ≤ 0
Todo lo anterior significa que un sistema con una función de la forma
(4.2), bajo las restricciones (4.3) y con una regla de actualización como
(4.1) irá evolucionando hasta encontrarse al menos en un mı́nimo local. Las
condiciones (4.3) fueron llamadas por Gérard Toulouse un “inteligente salto
hacia atrás del realismo biológico”, ya que en la naturaleza no hay evidencia que
nos lleve a pensar en conexiones simétricas, pero como se mostró proporcionan
estabilidad al modelo. Más adelante se discutirá el efecto de ignorar estas
restricciones y una manera de evitarlas.
4.4. Consecuencias de quitar las restricciones de
los pesos.
Al respecto Hopfield [1] estudió el efecto de remover estas condiciones en
sistemas de 30 y 100 neuronas, en los que los wij son números aleatorios entre
-1 y 1. Encontró que para N = 30 el sistema no muestra un recorrido ergódico
por todo el espacio de configuración, y antes de cierto tiempo se establece en
una conducta ĺımite, siendo lo más común un punto estable. En 50 simulaciones
para cada matriz encontró que frecuentemente dos o tres estados capturaban la
36 CAPÍTULO 4. REDES NEURONALES
dinámica, existiendo a veces oscilaciones entre dos puntos, o un recorrido caótico
en una región del espacio de configuración de distancia de Hamming pequeña.
El caso de N = 100 mostró resultados cualitativamente similares. En [16] se
estudia el comportamiento caótico de una red de Hopfield con 3 neuronas y uno
de los pesos como parámetro, se encuentran atractores y ciclos ĺımite. Hertz
[13] propone una ligera asimetŕıa que funcione como ruido para escapar de los
mı́nimos locales menos estables, sin embargo no resulta muy conveniente en
la práctica ya que en primer lugar, el problema está codificado en los pesos
y umbrales, por lo que la asimetŕıa no es un parámetro a elegir, y en segundo
lugar no es algo sobre lo que se tenga control, variar la asimetŕıa seŕıa resolver un
problema distinto al planteado. En el presente texto se utiliza la temperatura
como parámetro variable a voluntad capaz de introducir ruido al sistema y
permitirnos escapar de los estados menos estables, se propone una regla de
actualización que implica cambios no positivos en la enerǵıa, de esta forma se
puede introducir ruido de forma controlada y retirarlo a voluntad. Antes de
ello se analizarán algunos resultados obtenidos de la simulación utilizando el
algoritmo original de Hopfield.
Como ejemplo de problema a resolver con una red de Hopfield se tratará el
de encontrar la ruta más corta entre dos nodos de una gráfica.
Caṕıtulo 5
Ruta más corta en una
gráfica
5.1. Implementación
El problema es, dados los vértices a y b de una gráfica, encontrar una ruta
de costo total mı́nimo que los conecte. El costo entre dos nodos es una constante
que puede representar el tiempo de tránsito, la distancia f́ısica o cualquier otro
valor que nos interese.
El primer paso para abordar el problema de la ruta más corta en una gráfica
utilizando una red neuronal de Hopfield es definir la estructura de la red. Si la
gráfica original tiene N nodos, una forma de construir la red es con N(N − 1)
neuronas, la neurona (i, j) tendrá como salida Vij = 1 si la arista que une el
nodo i con el j está en la ruta, y 0 de otra forma.
Habiendo dado una estructura a la red, necesitamos definir una función que
tenga por mı́nimo la configuración de la red que represente la ruta más corta
entre el nodo a y el nodo b.
La ruta entre a y b tiene que cumplir algunas condiciones:
1. Que la suma de los costos entre cada par de nodos que forman la ruta sea
mı́nima
2. No agregar aristas inexistentes.
3. Que la ruta sea continua
4. Que la ruta comience en a y termine en b.
Una ruta que cumpla simultáneamente las cuatro condiciones será la deseada.
Expresando matemáticamente el problema, tenemos un conjunto de N
nodos, una matriz A de adyacencia, como se describe en la definición 8 del
caṕıtulo sobre gráficas, y una matriz C de costos (en este caso la distancia
euclidiana entre nodos), en la que el elemento cij es el costo asociado a la arista
37
38 CAPÍTULO 5. RUTA MÁS CORTA EN UNA GRÁFICA
que une al nodo i con el j, si es que esta existe.
Con estos elementos podemos podemos construir la función de enerǵıa. Para
el primer requisito tenemos simplemente:
E1 = α1
N∑
i,j
CijVij (5.1)
El término anterior es mı́nimo si se escogen las aristas de menos costo. Al
final para la enerǵıa total se sumarán todos los términos de la enerǵıa, por lo
que la constante α1 es un parámetro a controlar para darle más o menos peso a
un término.
Sobre el segundo requisito podemos construir con la matriz de adyacencia
otra matriz M con elementos cero donde la matriz de adyacencia tiene algo
distinto de cero, y valores muy altos en las demás entradas, aśı, el término:
E2 = α2
N∑
i,j
MijVij (5.2)
Será mı́nimo si las aristas incluidas son las existentes en la gráfica, como la
red neuronal incluye neuronas para todas las unidades de alguna forma hay que
penalizar a las neuronas que representen aristas inexistentes. Podŕıa también
hacerse una red con neuronas sólo para aristas existentes, esto haŕıa innecesario
el término anterior y además reduciŕıa el tiempo de cómputo, pero en este caso
se tomó la red completa.
Sobre la continuidad podŕıamos por ejemplo escribir para cada par i, j un
término proporcional a
Vij(
N∑
k
Vjk − 1)2
Aśı si la arista ij no está en la ruta, el término será cero, y si está en la
ruta será mı́nimo cuando la suma sea 1, esto es cuando exista una y sólo una
arista que salga de j, teniendo aśı continuidad en el nodo j. El problema de este
término es que tendŕıamos una interacción cúbica entre las neuronas, situación
incompatible con la forma de la enerǵıa en (4.2). Si quitamos el cuadrado
pareceŕıa resolverse el problema porque la interacción seŕıa ahora cuadrática,
sin embargo al quitar el cuadrado la cantidad entre paréntesis podŕıa ser -1 si
la suma es cero, lo que nos daŕıa un mı́nimo si la ruta se interrumpe en j y esto
claramente no es lo que buscamos. También podŕıamos pensaren utilizar un
valor absoluto en vez de elevar el interior al cuadrado, pero el problema seŕıa
ahora que habŕıa que tratarlo por casos, cuando lo de adentro es negativo y
cuando es positivo, esto depende directamente del valor de Vjk, que es variable.
Lo anterior significaŕıa que los pesos dependen de la dinámica en lugar de ser
constantes y tampoco es lo que deseamos.
Como se comentó con anterioridad la forma de expresar la enerǵıa es crucial
para poder aplicar el algoritmo, a veces dificultades como la anterior se pueden
salvar reformulando la enerǵıa en otros términos. En este caso por ejemplo se
5.1. IMPLEMENTACIÓN 39
puede bajar el orden de la interacción si exigimos continuidad en cada nodo,
es decir, el número de aristas entrantes debe ser igual al número de aristas
salientes, con excepción del nodo a y el b, en el nodo inicial debe salir una arista
y no entrar nada y en el nodo final lo opuesto.
Lo anterior se puede expresar de la siguiente forma:
E3 = α3
N∑
i
(
N∑
k 6=i
Vki −
N∑
k 6=i
Vik + F (i))
2 (5.3)
con
F (i) =
{
1 si i = a
−1 si i = b
Para cada nodo i, si i 6= a, b la parte entre paréntesis se anula si la suma
de arsitas entrantes es igual a la suma de aristas salientes. Si i = a el interior
del paréntesis se anula sólo si la primer suma es 0 y la segunda es 1, lo que
implica que no hay aristas entrando al nodo a y hay una arista saliendo de él.
Si i = b entonces el término se anula si la primer suma es 1 y la segunda 0, lo
que significa que hay una arista que entra a b y ninguna sale de ah́ı.
El mı́nimo de la expresión (5.3) hasta ahora es aquella configuración en la que
sale una arista de a y no entra ninguna, entra una arista en b y no sale ninguna,
y para todos los demás nodos el número de aristas salientes es igual al número
de aristas entrantes. Si la configuración incluye la ruta más corta y además otras
aristas que mantengan la simetŕıa este término seguiŕıa siendo mı́nimo, aunque
al incluir el término (5.1) esta configuración seŕıa más energética que la de la
ruta más corta.
Sin embargo esto no es suficiente aún, como ya se mencionó el algoritmo de
Hopfield original encuentra mı́nimos locales, y puede ser que la solución trivial
{Vij} = 0 para todo i, j sea un mı́nimo local, ya que es mı́nima en todos los
términos hasta ahora incluidos exceptuando los dos que incluyen la función F,
que son pocos comparados con los 2N2 + 2(N − 1)2 + (N − 2) términos que no
incluyen F.
Para lo anterior podemos agregar un término más:
E4 = α4
∥∥∥∥∥∥
N∑
ij
Vijdij − dab
∥∥∥∥∥∥ (5.4)
Donde dij es el vector distancia entre los nodos ij.
Dentro del śımbolo de norma tenemos dos vectores, el primero es la suma
de todos los vectores incluidos en la ruta en un estado particular del sistema,
el segundo es el vector que va del inicio al final. La norma se hará cero cuando
estos dos vectores sean iguales, es decir cuando al unir todos los segmentos de la
ruta, el inicio y el fin estén a una distancia igual que a y b. Esto por śı sólo puede
en el peor de los casos tener un mı́nimo en cualquier configuración que cumpla
lo anterior, pudiendo ser incluso discontinua y no empezar en a ni terminar en b,
sin embargo penaliza la salida trivial y al ser combinado con los demás términos
40 CAPÍTULO 5. RUTA MÁS CORTA EN UNA GRÁFICA
ya tenemos cubiertas las cuatro condiciones requeridas.
Si unimos los términos anteriores tenemos:
E(a, b) = α1
N∑
i,j
CijVij + α2
N∑
i,j
MijVij (5.5)
+α3
N∑
i
(
N∑
k 6=i
Vki −
N∑
k 6=i
Vik + F (i))
2 + α4
∥∥∥∥∥∥
N∑
ij
Vijdij − dab
∥∥∥∥∥∥
Que es una función cuyo mı́nimo es la configuración que representa una ruta
continua de a a b del menor costo.
Ahora falta escribir (5.5) en términos de (4.2), es decir llevar a cabo todas
las operaciones y agrupar los términos cuadráticos y lineales, los términos
constantes se pueden ignorar porque al importarnos sólo las diferencias en la
enerǵıa estos términos son irrelevantes.
Para codificar el problema en la red neuronal, los coeficientes de los términos
cuadráticos corresponderán a los pesos, los de los términos lineales a los umbrales
y los constantes, como ya se mencionó, serán ignoradas.
Como cada neurona representa un par de nodos y por tanto tiene dos ı́ndices,
se necesitan 4 ı́ndices para especificar un peso w, por ejemplo wijkl será el peso
de la conexión entre la neurona ij que representa la arista ij y la neurona kl
que representa la arista kl.
Como ejemplo se simplificará el término E4 en sus componentes cuadráticas,
lineales y constantes.
E4 = α4
∥∥∥∥∥∥
N∑
ij
Vijdij − dab
∥∥∥∥∥∥ = (
∑
ij
Vij(xj − xi)− (xb − xa))2
+(
∑
ij
Vij(yj − yi)− (yb − ya))2 =
∑
ij
∑
kl
VijVkl(xj − xi)(xl − xk)
−2(xb − xa)
∑
ij
Vij(xj − xi) + (xb − xa)2
+
∑
ij
∑
kl
VijVkl(yj − yi)(yl − yk)
−2(yb − xa)
∑
ij
Vij(yj − yi) + (yb − ya)2
Por lo que:
E4 = −
1
2
∑
ijkl
w4ijklVijVkl +
∑
ij
U4ijVij
Donde
5.1. IMPLEMENTACIÓN 41
w4ijkl = −2(xj − xi)(xk − xl)− 2(yj − yi)(yl − yk) (5.6)
Es la parte de los pesos correspondientes a E4, y
U4ij = −2(xb − xa)(xj − xi)− 2(yb − ya)(yj − yi) (5.7)
Es la parte de los umbrales.
Para obtener los pesos, hay que hacer lo mismo con los demás términos de
la enerǵıa, los dos primeros no tienen términos cuadráticos aśı que sólo resta el
tercero, un cálculo como el anterior arroja:
w3ijkl =

-2 si j = l y i, k 6= j
4 si j = k y i, l 6= j
-2 si i = k y j, l 6= i
0 en cualquier otro caso
(5.8)
Por lo que el peso total es la suma de (5.6) y (5.8)
La parte del umbral asociada al tercer término de la enerǵıa, U3ij es la suma
de cuatro términos:
U3aij =
{
2 si j = a y i 6= a
0 de cualquier otra forma
U3bij =
{
-2 si i = a y j 6= a
0 de cualquier otra forma
U3cij =
{
-2 si j = b y i 6= b
0 de cualquier otra forma
U3dij =
{
2 si i = b y j 6= b
0 de cualquier otra forma
Ahora faltan sólo las contribuciones al umbral de los primeros dos términos,
U1ij = Cij
U2ij = Mij
De todo lo anterior ya podemos calcular los pesos y umbrales totales:
wijkl = w
3
ijkl + w
4
ijkl
Uij = U
1
ij + U
2
ij + U
3a
ij + U
3b
ij + U
3c
ij + U
3d
ij + U
4
ij
Hasta ahora se han tenido dos dificultades, la forma restrictiva de la ecuación
(4.2) a funciones a lo más cuadráticas y la convergencia a mı́nimos locales.
El primer punto se resolvió reformulando la enerǵıa y el segundo mejorará al
agregar a la simulación el algoritmo del recocido simulado. Sin embargo hay un
problema más, los pesos encontrados para este problema violan las condiciones
de Hopfield, que son simetŕıa (wij = wji) y elementos nulos en la diagonal
(wii = 0), en el siguiente caṕıtulo se observará qué sucede de violarse estas
condiciones, y se encontrará una forma de evitarlas.
42 CAPÍTULO 5. RUTA MÁS CORTA EN UNA GRÁFICA
Caṕıtulo 6
Resultados
6.1. Resultados utilizando el algoritmo original
Sabemos que nuestra ecuación de enerǵıa no cumple con las condiciones
de estabilidad, aśı que para ver las consecuencias de esto en nuestro problema
particular se utilizó una instancia simple, una gráfica de 9 nodos y 12 aristas en
forma de rectángulo de 2 aristas de lado con un costo unitario para cada arista.
Se eligió como nodo inicial la esquina inferior izquierda y como nodo final la
esquina superior derecha, como se esperaba que la enerǵıa no se estabilizara
necesariamente, se guardó la configuración de menor enerǵıa que el sistema
hubo adquirido, siendo ésta final o no.
Los resultados se pueden observar en la figura 6.1. La parte superior es la
gráfica en la que se buscará la ruta más corta, en rojo se muestran las conexiones
y en negro las aristas que el programa arrojó como solución. Los nodos negros
son el incial y el final. La parte inferior es la enerǵıa en función del tiempo.
Se puede observar que la salida es un camino discontinuo, y que ni siquiera
incluye el nodo inicial. Además podemos ver de la gráfica que la enerǵıa no
necesariamente desciende, y aunque no se incluyeaqúı ninguna imagen hubo
casos en los que la enerǵıa oscilaba o teńıa un comportamiento aparentemente
caótico.
Se escribió un programa en Python para ver los efectos individuales de las
restricciones en la forma de la matriz de pesos, el procedimiento fue el siguiente:
1. Construir una matriz de números aleatorios, pero que cumpla las condi-
ciones (4.3). Asociarle a esta matriz el número de variación cero.
2. Seleccionar como condiciones iniciales, valores al azar de encendido o
apagado para las neuronas. Guardar estos valores para tener siempre las
mismas condiciones iniciales para efectos de comparación.
3. Correr el algoritmo de Hopfield, y después de cierto periodo de tránsito,
guardar la enerǵıa del sistema para cada tiempo. El algoritmo de Hopfield
requiere de actualización al azar de las N unidades, para efectos de
comparación entre las variaciones se actualizaron las unidades en el mismo
orden, aunque este fue al azar.
43
44 CAPÍTULO 6. RESULTADOS
Figura 6.1: Resultado de aplicar el algoritmo original
4. Graficar en el eje x el número de variación y en el eje y los valores que
haya tenido la enerǵıa después del tiempo de tránsito para ese número de
variación.
5. Alejarse gradualmente de las condiciones de Hopfield (la forma de hacerlo
se detallará adelante). Aumentar en uno el número de variación.
6. Repetir desde el paso 3
Lo anterior para observar, al alejarnos gradualmente de las condiciones (4.3),
el efecto en la estabilidad del sistema. Lo que hace el algoritmo es simplemente
graficar en el eje x el grado de asimetŕıa y en el eje y los estados finales después
de un tiempo de tránsito, si se observa más de un punto en una ĺınea vertical
significa que hay más de un estado final, esto es se establece una conducta ĺımite
o se comporta caóticamente pero no se estabiliza. El algoritmo se repitió con
distintas matrices, todas al azar, sin embargo con algunas se desestabilizaba
el sistema mucho más rápido que con otras. Sin detenerse en el estudio de las
caracteŕısticas de las matrices que presentaban este compartamiento, se fijó una
de ellas para el estudio posterior, esta matriz teńıa por entrada enteros entre
-2 y 2, y umbrales entre -1 y 1. Para la condición de Hopfield de simetŕıa, se
consiguió un alejamiento gradual al sumar aleatoriamente números arriba de la
diagonal, debido a que lo importante no son los valores de los términos w(i, j) y
w(j, i) sino la diferencia entre ellos, agregar números al azar en ambos lados de
la diagonal podŕıa de hecho mantener ambos valores cercanos. El requerimiento
de los ceros de la diagonal también se trató sumando gradualmente números a
ella. Debido a que en ambos casos para tener estabilidad sólo nos interesa estar
cerca de w(i, i) = 0 y |w(i, j) − w(j, i)| = 0, se podŕıa esperar que el aumento
6.1. RESULTADOS UTILIZANDO EL ALGORITMO ORIGINAL 45
Figura 6.2: Resultado de sumar -0.2 a elementos sobre la diagonal
del número de estados finales sucediera de igual forma si se suman sólo números
negativos o sólo números positivos, sin embargo como muestran algunas de las
figuras siguientes, se observó en las simulaciones que esto no fue aśı .
Como primer gráfica se muestra en la figura 6.2 el efecto de sumar el número
-0.2 a elementos elegidos aleatoriamente sobre la diagonal
No se observa nada significativo, únicamente un desplazamiento del valor
final de la enerǵıa. Para la figura 6.3 se hizo lo mismo pero ahora agregando un
número positivo, 0.2
En este caso śı hay un aumento en el número de estados finales después de
cierta variación, y los valores además se van alejando entre śı, lo que implica una
mayor inestabilidad del sistema. Si ahora agregamos constantemente un número
negativo sólo a la diagonal, como por ejemplo -0.05, obtenemos lo que muestra
la figura 6.4. El valor a agregar en cada variación fue mucho más pequeño en el
caso de la diagonal ya que si hay N2 elementos en la matriz habŕıa sólo N en
la diagonal.
La figura 6.4 comparte algunas caracteŕısticas con los diagramas de bifurca-
ción, que no es de sorprender ya que se ha hablado del caos que puede presentar
este algoritmo si no se dan las condiciones de estabilidad. Se encuentran por
ejemplo zonas con menos estados finales en medio de zonas con una cantidad
mayor de los mismos.
Podemos observar ahora en la figura 6.5 y 6.6 que sumar a la diagonal
números positivos no tiene consecuencias significativas.
Y como es de esperarse, si se combinan las condiciones de los casos que
presentaron inestabilidad, es decir si se agregan números negativos a la diagonal
y positivos sobre ella se obtiene otro caso interesante, que se puede observar en la
46 CAPÍTULO 6. RESULTADOS
Figura 6.3: Resultado de sumar 0.2 a elementos sobre la diagonal
Figura 6.4: Resultado de sumar números negativos a la diagonal de la matriz
6.1. RESULTADOS UTILIZANDO EL ALGORITMO ORIGINAL 47
Figura 6.5: Resultado de sumar números positivos a la diagonal
Figura 6.6: Resultado de sumar números positivos a la diagonal y sobre ella
48 CAPÍTULO 6. RESULTADOS
Figura 6.7: Resultado de sumar números negativos a la diagonal y positivos
sobre ella
figura 6.7. Aunque a simple vista no se distingue, con la ayuda de un programa
se encontró que el número de estados finales se mantuvo constante a partir de
cierta variación, y hubo una región que no se ubicaba al final, para la que el
número de estados finales fue el mayor. Se guardó una matriz correspondiente
a esta región para analizar posteriormente el posible comportamiento caótico
resultante de utilizarla como matriz de pesos.
Con esta matriz se corrió el algoritmo de Hopfield y se generó una serie de
tiempo con los valores de la enerǵıa resultantes, a dicha serie se le aplicó una
transformada rápida de Fourier. La transformada de Fourier es una herramienta
matemática para mapear una función en el espacio de frecuencias. Se puede
considerar a una función como un elemento de un espacio vectorial de dimensión
infinita, el espacio de las funciones, que admite por base al conjunto de soluciones
de cualquier operador diferencial autoadjunto como se puede encontrar en
cualquier libro sobre funciones especiales como [14], estas bases son capaces de
generar cualquier función expresándola como combinación lineal de elementos de
la misma, los coeficientes de esta expansión representan la contribución de cada
elemento de la base a la función, son la proyección de la función en cada elemento
de ella. Si en particular se toma como base al conjunto {sen(nx), cos(nx)}, n ∈ N
tendremos para la expansión coeficientes que indican la amplitud, o importancia
de una frecuencia particular en una función. Una transformada rápida de Fourier
lleva esta idea a conjuntos discretos de datos, permitiéndonos tener una idea de
la periodicidad de los mismos al conocer las frecuencias involucradas.
Un sistema caótico tiene una regla determinista que genera salidas con
periodicidad infinita pero no es lo mismo que azar, la transformada rápida de
Fourier de una serie de tiempo totalmente aleatoria es una ĺınea horizontal
debido a la igual contribución de todas las frecuencias, una serie periódica con
una única frecuencia se mostraŕıa bajo la transformada como un único pico, y
un sistema caótico t́ıpico exhibiŕıa en escala logaŕıtmica una ĺınea inclinada al
6.2. MODIFICACIÓN AL ALGORITMO ORIGINAL 49
Figura 6.8: De arriba a abajo serie de tiempo, valor absoluto de la transformada
rápida de Fourier y transformada en escala logaŕıtmica con ajuste lineal
aplicársele la transformada.
En el caso tratado aqúı se consiguió un ajuste con valor de R2 =0.51,
pendiente de -0.66 y ordenada al origen de 12.34, en la imagen 6.8 se muestran
las gráficas de la serie de tiempo, la transformada y la transformada en escala
logaŕıtmica con su ajuste lineal.
Se puede observar en la parte superior de la figura 6.8 que poco abajo del
valor 50 de la enerǵıa, la salida

Otros materiales