Está en la página 1de 18

Redes

neuronales

Inteligencia
Artificial
Redes neuronales
Las redes neuronales artificiales o el
modelo conexionista

¿Es posible representar o modelar el funcionamiento de nuestro


cerebro artificialmente? ¿Cómo funciona una neurona artificial?
¿Qué aplicaciones tiene este enfoque de la Inteligencia
Artificial?

Introducción
A lo largo de este módulo veremos los métodos estadísticos de aprendizaje
y razonamiento, veremos que estos métodos van desde simples cálculos
hasta modelos más complejos, como lo son las redes neuronales multicapa.

Las redes neuronales toman como modelo a la mente humana, intentando


simular por medio de una computadora el funcionamiento de nuestro
cerebro. Esta idea de construir máquinas inteligentes utilizando neuronas
artificiales viene desde hace un tiempo largo a esta parte. Sin embargo, en
la década del setenta se frenó la investigación en este campo para volver a
resurgir en nuestros días, ya que actualmente se cuenta con computadoras
digitales mucho más potentes y porque se ha intentado y logrado construir
sistemas masivamente paralelos.

Los detractores del modelo de las redes neuronales o modelo conexionista


le quitan importancia a este campo de la IA debido a que piensan, en
general, que el conexionismo se inspira en una forma demasiado “primitiva”
de representación del conocimiento y el razonamiento: la neurona y sus
relaciones.
El modelo de las redes neuronales también es llamado modelo o
arquitectura conexionista.

Fundamentos biológicos
Cada neurona en nuestro cerebro está compuesta por un cuerpo, axones y
dendritas. Las dendritas forman un "cepillo filamentoso" muy fino que rodea
el cuerpo de la neurona.

El axón puede considerarse como un tubo largo y fino que se


subdivide en numerosas ramas que terminan en pequeños
bulbos, los cuales tienen contacto con las dendritas de las
otras células. La pequeña separación entre una terminación y
una dendrita es llamada sinapsis. (http://goo.gl/y4pqoq)

El axón de una neurona puede formar conexiones sinápticas con muchas


otras neuronas.

“Funcionalmente, las dendritas reciben señales desde otras células a través


de los puntos de conexión llamados sinapsis. La fuerza de una conexión dada
es determinada por la eficiencia de la transmisión sináptica” (Vergara
Quiche, http://goo.gl/7y0oPa, p. 1). Desde ahí las señales son pasadas al
cuerpo de la célula. Las señales que llegan de las dendritas pueden ser
excitatorias o inhibitorias, y podemos decir informalmente que si la suma
ponderada de estas, realizada dentro del cuerpo de la neurona, supera su
"umbral de activación" dentro de un tiempo suficiente, la neurona se
disparará, enviando un impulso nervioso a través de su axón.

Partes de una célula nerviosa o neurona (Fuente: Russell y Norvig, 2004, p. 13)
Si tomamos a cada neurona por separado veremos que son
extremadamente lentas comparándolas con sus homologas artificiales, ya
que trabajan en el rango de los milisegundos, lo cual representa una
eternidad para una computadora digital. Sin embargo, los humanos
podemos llevar a cabo tareas extremadamente complejas, como la
interpretación de una escena visual o la comprensión de una frase
incompleta en la décima parte de un segundo. En, otras palabras, que lo que
nosotros somos capaces de realizar en 100 pasos, a una computadora puede
llevarle 10 millones de pasos.

Pero, ¿cómo puede ser esto posible si cada una de nuestras neuronas es tan
lenta? La diferencia está en que nuestro cerebro contiene un número
gigantesco de elementos procesadores que actúan en paralelo.

Nuestro cerebro contiene un número gigantesco de elementos


procesadores que actúan en paralelo, lo que nos permite llevar a cabo
tareas complejas.

Otro aspecto importante es que nuestras neuronas son dispositivos


propensos a fallos, están constantemente muriendo y sus patrones de
activación son irregulares. Por otro lado, los componentes de los
computadores digitales deben funcionar perfectamente. ¿Por qué? Porque
tales componentes guardan bits de información que sólo están disponibles
en este lugar de la computadora, de manera que el fallo de uno de estos
componentes significa automáticamente una pérdida de información.

Redes neuronales
Podemos decir que una red neuronal artificial es, básicamente, la
reproducción mediante computadores del funcionamiento del cerebro
humano. “Su principal aplicación es en torno a las tareas en que los seres
humanos fácilmente superan a los computadores tradicionales, como en
procesamiento de señales, procesamiento de imágenes, procesamiento de
voz, robótica y otros”. (Gamarra Moreno, http://goo.gl/y4pqoq, p. 165)
Nuestro cerebro está formado por miles de millones de neuronas
interconectadas entre sí en forma variable y compleja.

Cada neurona recibe señales de las otras neuronas o señales


provenientes del exterior de la red, luego las procesa y las pondera
(dándole distinta importancia a cada una de ellas) y genera una
única señal de salida que se transmite a las otras neuronas.

La información que procesa una red neuronal se encuentra


dispersa entre todas sus interconexiones, lo que la hace
fundamentalmente diferente a un computador tradicional, en que
la información se encuentra totalmente localizada y no distribuida
como en este caso. Esta característica hace que las redes
neuronales posean una gran tolerancia a fallas. (Gamarra
Moreno, http://goo.gl/y4pqoq, p. 165)

El La información que procesa una red neuronal se encuentra distribuida


entre todas sus interconexiones.

Podemos decir que estos modelos de redes neuronales artificiales (también


llamados arquitecturas conexionistas) se caracterizan por:

 un gran número de elementos muy simples que procesan de modo


similar a las neuronas;

 un gran número de conexiones con “pesos” entre los elementos (los


pesos en las conexiones codifican el conocimiento de una red);

 control distribuido altamente paralelo;

 énfasis en el aprendizaje automático.

A su vez, cada uno de los elementos simples que componen una red
neuronal está formado por:

 una conexión de la unidad j a la unidad i que sirve para propagar la


activación aji de j a i;

 cada conexión tiene un peso numérico wji asociado, que determina


la fuerza y el signo de la conexión;

 cada unidad i primero calcula una suma ponderada de sus entradas:


ini =  wji aj (con j=0 hasta n);

 luego se aplica una función de activación g a la suma para lograr la


salida: ai = g(ini) = g( wji aj) (con j=0 hasta n);

 la función de activación habilita (cerca de +1) la unidad cuando se


dan las entradas adecuadas y desactiva (cerca a 0) la unidad cuando
se dan entradas erróneas.

Modelo matemático sencillo para la neurona. (Fuente: Russell y Norvig, 2004, p. 839)

Como funciones g de activación validas podemos tener a la función umbral,


o escalón, y a la función sigmoide:

 Función umbral:

Salida ai = 1 si g(ini) > 0

Salida ai = 0 si g(ini) < 0

 Función sigmoide: f(x) = 1/(1+ e-x)

La función sigmoide también es llamada función logística.


Función umbral (a) y función sigmoide (b). (Fuente: Russell y Norvig, 2004, p. 840)

Las operaciones individuales de cada una de estas unidades se parecen a


las compuertas lógicas AND, OR y NOT, siempre y cuando se utilicen
funciones de umbral y pesos adecuados. Esto es muy importante ya que
significa que podremos construir redes usando estas unidades para calcular
cualquier función booleana que se presente en sus entradas, por más
compleja que sea.

Las unidades neuronales con los pesos adecuados pueden representar las funciones
booleanas AND, OR y NOT. (Fuente: Russell y Norvig, 2004, p. 840)
¿Te atreverías a verificar, utilizando una función
sigmoide, si se cumple la representación de las
funciones booleanas “AND, OR y NOT” utilizando
estas unidades básicas neuronales?

Estructuras
Brevemente, diremos que existen dos estructuras principales de redes
neuronales:

 Acíclicas, o redes con propagación hacia adelante: en este tipo de


redes su representación está dada en función de sus entradas
actuales.

 Cíclicas, o redes recurrentes, o con propagación hacia atrás: son


aquellas cuyas salidas alimentan a sus entradas. Por lo tanto, las
redes recurrentes (a diferencia de las redes con propagación hacia
delante) pueden tener memoria a corto plazo.

Red neuronal de una sola capa con propagación


hacia adelante, o Perceptrón
El perceptrón fue inventado por Resenblatt en 1962 y fue uno de los
primeros modelos de redes neuronales.

Un perceptrón imita a una neurona tomando la suma ponderada de sus


entradas y enviando a la salida un 1 si la suma es más grande que algún valor
umbral ajustable; si ocurre de otro modo, devuelve 0.

En un perceptrón las conexiones son unidireccionales.

Las entradas (x1, x2, x3,…, xn) y los pesos de las conexiones (w1, w2, w3,…, wn)
son valores normalmente reales que pueden ser negativos o positivos. Si la
presencia de alguna entrada xi tiende a causar la activación del perceptrón,
el peso wi será positivo, y si la entrada xi inhibe al perceptrón, entonces el
peso wi será negativo.

El perceptrón está compuesto por los pesos, el procesador de sumas y el


procesador del umbral ajustable. El aprendizaje es un proceso en donde se
van variando los valores de los pesos y del umbral, también llamado peso
w0. Puede verse a w0 como la propensión a que se dispare el perceptrón,
independientemente de sus entradas.

Representación genérica de un perceptrón. (Fuente: Wikipedia, http://goo.gl/730sut,


2014)

Podemos decir que un perceptrón calcula una función binaria de su entrada.


Por tanto, algunos perceptrones se podrán combinar para calcular funciones
más complejas. Lo más interesante es que cualquiera que sea el cálculo que
se tenga que realizar con un perceptrón, este puede aprender a calcularlo.

Lo más interesante es que cualquiera que sea el cálculo que se tenga que
realizar con un perceptrón, este puede aprender a calcularlo.

Llegado a este punto, se debe aclarar que por lo general los perceptrones
solo pueden representar funciones linealmente separables. Esto se debe a
la forma de calcular que tiene intrínsecamente un perceptrón y porque,
además, este se comporta como un “separador lineal”. Si vemos
detalladamente el modo de cálculo de un perceptrón, entenderemos más
este concepto. Si tenemos un vector de entrada x (x1, x2, x3,…, xn), podemos
advertir (como vimos anteriormente con las unidades neuronales básicas)
que la función de la suma ponderada g(x) y la función de salidas o(x) se
definen como:
 g(x) =  wi . xi (para i=0 hasta n)

 o(x) = 1 si g(x) > 0

 o(x) = 0 si g(x) < 0

Si consideramos el caso en el que solo tenemos dos entradas, entonces:

 g(x) = w0 + w1.x1 + w2.x2

Si g(x) = 0, el perceptrón no puede decidir si debe dispararse. Un pequeño


cambio en las entradas puede producir que el dispositivo se decida por uno
de los dos caminos. Además, si g(x) = 0 se obtiene la ecuación de la recta:

 x2 = -((w1/w2).x1) – (w0/w2)

Como puede verse, la ecuación de esta recta está determinada por los pesos
w0, w1 y w2. Por lo tanto, si un vector de entrada se sitúa hacia uno de los
dos lados de la recta, el perceptrón da como salida 1, y si se sitúa al otro lado
el perceptrón, da como salida 0; es decir que tendremos una recta que
separa dos casos de entrenamiento correctamente. Dicha recta suele
denominarse superficie de decisión. Para perceptrones con muchas
entradas, la superficie de decisión es un hiperplano en el espacio
multidimensional de los posibles vectores de entrada.

Separación lineal del perceptrón para el caso de las funciones booleanas AND y OR
(gráficos a y b respectivamente) y el problema de intentar representar una función no
lineal, como lo es la función XOR (gráfico c). (Fuente: Russell y Norvig, 2004, p. 843)
Dos cuestiones muy importantes a tener en cuenta son que:

 el signo de g(x) es el que determina si el perceptrón se dispara o no;

 el valor absoluto de g(x) indica hasta qué punto un vector de


entrada cualquiera se aleja de la superficie de decisión.

Según tu criterio y leyendo la bibliografía, ¿por qué


crees que un perceptrón no puede representar
funciones un poco más complejas, como en el caso
de la XOR?

Viendo todo lo anterior, podemos deducir que el problema de aprendizaje


para el perceptrón consiste en localizar una superficie de decisión adecuada.
Como regla informal podremos definir que:

 si el perceptrón se dispara cuando no es debido, hay que hacer cada


wi más pequeño en una cantidad proporcional a xi; y si el
perceptrón no se dispara cuando es debido, entonces hay que hacer
cada wi más grande, teniendo en cuenta la misma proporción.

Algoritmo de aprendizaje del perceptrón de


incremento fijo
Para un problema de clasificación con n características de entrada (x1, x2,
x3,…, xn) y dos clases de salida: calcularemos un conjunto de pesos (w1, w2,
w3,…, wn) que harán que el perceptrón se dispare en el momento en el que
la entrada caiga dentro de la primera clase de las salidas, es decir:

1. Crear un perceptrón con n+1 entradas y n+1 pesos, donde una


entrada x0 siempre tiene asignada un valor de 1.

2. Inicializar los pesos (w1, w2, w3,…, wn) con valores reales aleatorios.

3. Iterar a través del conjunto de entrenamiento, recogiendo todos los


ejemplos sin clasificar que se obtienen con el conjunto de pesos que
se tiene.

4. Si todos los ejemplos se clasificaron correctamente, la salida son los


pesos y se termina.
a. Si no, calcular el vector suma S de los vectores sin clasificar,
donde cada vector es de la forma (x1, x2, x3,…, xn). Al calcular
la suma, añadir a S el vector x, si x es una entrada para la que
el perceptrón falla al no dispararse como debería, y añade –
x, si x es una entrada para la que el perceptrón se dispara
incorrectamente. Multiplicar la suma por un factor escalar .

5. Modificar los pesos (w1, w2, w3,…, wn), añadiendo los elementos del
vector S a éstos. Volver al paso 3.

Como puede verse, el algoritmo de aprendizaje del perceptrón es un


algoritmo de búsqueda. Comienza en un estado inicial aleatorio y acaba
encontrando un estado solución. El espacio de la búsqueda consiste en todas
las posibles asignaciones de valores reales a los pesos del perceptrón, y la
estrategia de búsqueda es un descenso por el gradiente.

Redes neuronales multicapa


La idea es tomar un conjunto de unidades neuronales elementales
(perceptrones), vincularlas de alguna forma y luego entrenarlas para que
pueden aprender a realizar tareas útiles de verdad. Además, otro objetivo
fundamental es que se las debe entrenar para que sean rápidas y resistentes
a los daños y para que sean capaces de generalizar a partir de las entradas
que ven.

Podríamos decir que una red multicapa es capaz de calcular cualquier cosa.
Dado un conjunto de entradas, se pueden utilizar unidades de suma y
umbral simples como compuertas “AND, OR y NOT”, seleccionando
apropiadamente el umbral y los pesos de conexión. Con esto se pretende
decir que es posible construir un circuito combinacional cualquiera
constituido por dichas unidades lógicas básicas.

El problema principal es el aprendizaje en este tipo de redes. Para ello, la


propagación hacia atrás (backpropagation) nos ayuda a resolver el
inconveniente.

Es común que en este tipo de redes contemos con unidades de activación


de las unidades de entrada, ocultas y de salida, denotadas por xi, hi y oi,
respectivamente. Suponiendo que se tiene una red de tres capas, entonces
los pesos de las conexiones entre las capas de entrada y ocultas se denotan
como w1ij, mientras que los pesos de las conexiones entre las capas de salida
y ocultas se denotan con w2ij.
Cada unidad de una capa (neurona) se conecta hacia adelante
a todas las unidades de la siguiente capa. Las activaciones
saltan desde la capa de entrada hacia la capa oculta y desde
ésta hacia la capa de salida. Normalmente el conocimiento de
la red esta codificado en los pesos de las conexiones entre las
unidades. (Gómez Blas y Guzmán Montoya,
http://goo.gl/M9mMMC, p. 9)

La existencia de capas ocultas permite que estas redes puedan desarrollar


complejos detectores de características o de representaciones internas. Es
decir que se espera que al abordar problemas complejos, como el
reconocimiento de caracteres escritos a mano, la red neuronal no solo
aprenda a clasificar las entradas para las que esta entrenada, sino que
generalice y sea capaz de explicar las entradas que todavía no haya visto.

Representación genérica de una red multicapa (Fuente: Wikipedia, http://goo.gl/ifjCjy)

Al igual que el perceptrón una red de propagación hacia atrás


normalmente empieza con un conjunto de pesos aleatorio. La
red [luego] ajusta sus pesos cada vez que ve un par
entrada/salida. Cada par requiere dos etapas: Un paso hacia
adelante y un paso hacia atrás. El paso hacia adelante implica
la presentación de un ejemplo de entrada hacia la red y
permite que las activaciones continúen hasta que alcancen la
capa de salida. Mientras que durante el paso hacia atrás, la
salida que se tiene de la red en ese momento se compara con
la salida objetivo y se calcula el error estimado de las
unidades de salida. Entonces los pesos que están conectados
a las unidades de salida, se pueden ajustar para reducir
dichos errores. Luego podemos utilizar las estimaciones del
error de las unidades de salidas para derivar el error estimado
de las unidades de las capas ocultas. Por último, los errores
se propagan hacia atrás a las conexiones procedentes de las
unidades de entrada.

Al contrario que el algoritmo de aprendizaje del


perceptrón, el algoritmo de propagación hacia atrás calcula
sus pesos de un modo progresivo, después de observar cada
par de entrada/salida [y su entrenamiento consta de varias
etapas]. (Gómez Blas y Guzmán Montoya,
http://goo.gl/M9mMMC, p. 10)

Se recomienda leer el capítulo 20 completo, haciendo hincapié en el


apartado de redes neuronales, del libro Inteligencia artificial. Un enfoque
moderno, de Russell y Norvig (2004).

Aplicaciones
Las redes neuronales artificiales son un tema apasionante y tienen un
ámbito muy grande de aplicación, desde los juegos de computadora hasta la
medicina. A continuación, se detallaran brevemente algunos de estos casos.

Redes neuronales para especificar marcadores


anatómicos de los ventrículos del corazón:
La ventriculografía es una técnica utilizada en medicina para visualizar las
cavidades cardíacas. Para simplificar, podemos decir que su objetivo
principal es definir el tamaño y la forma del ventrículo izquierdo, así como
también visualizar la forma y la movilidad de estructuras asociadas con las
válvulas del corazón.

Poder determinar la forma ventricular ha sido uno de los principales


problemas a la hora de aplicar técnicas de procesamiento digital de
imágenes a gráficos del corazón humano. Por lo tanto, se ha propuesto el
uso de las redes neurales para identificar los marcadores anatómicos
necesarios para establecer una representación de un contorno inicial sobre
imágenes angiográficas del ventrículo izquierdo.

Se eligieron las redes neuronales para llevar este trabajo debido a que estas
son muy buenas para representar funciones o reconocer patrones. Además,
la ventaja de la segunda configuración es que el tiempo de entrenamiento
se reduce considerablemente en relación con otros algoritmos y, a su vez, se
garantiza una buena velocidad de convergencia.

Proceso seguido para el desarrollo de la red neuronal para este caso. (Fuente: Ponce Cruz, 2010, p. 26).
Imagen del corazón que remarca los marcadores anatómicos (Fuente: Ponce Cruz,
2010, p. 27)

Segmentación de imágenes cerebrales de


resonancia magnética basada en redes neuronales:
Se ha desarrollado un método de segmentación de imágenes de resonancia
magnética cerebrales basándose en la utilización de redes neurales
conjuntamente con algoritmos genéticos. Este método permite detectar y
cuantificar los diferentes tejidos cerebrales de una manera automática, más
sensible, y con ello dar un primer paso hacia el diagnóstico temprano de la
atrofia cerebral, como el Alzheimer y la demencia senil.
(a)Imagen original de una resonancia magnética. (b) Imágenes utilizadas como referencia y
obtenidas de un software específico. (c) Imágenes clasificadas con la red neuronal
(Fuente: Ponce Cruz, 2010, p. 28).
Bibliografías de referencia
Ascolano, F., Cazorla, M. A., Alfonso, M. I., Otto, C. y Lozano, M.A. (2003).
Inteligencia artificial. Modelos, técnicas y áreas de aplicación. Madrid: Paraninfo.

Gamarra Moreno, Abraham (s. f.). Aprendizaje con redes neuronales artificiales.
Recuperado de http://goo.gl/y4pqoq

García, A. (2012). Inteligencia artificial: fundamentos, práctica y aplicaciones.


Madrid: TC libros.

Gómez Blas, M. M. y Guzmán Montoya, E. (21/01/1997). Implementación del


algoritmo de retropropagación para el entrenamiento de redes neuronales
(Proyecto de investigación II). Recuperado de http://goo.gl/M9mMMC

Ponce Cruz, P. (2010). Inteligencia Artificial Con Aplicaciones a la Ingeniería.


Méjico: Alfaomega.

Russell, S. J. y Norvig, P. (2004). Inteligencia artificial. Un enfoque moderno (2ª ed.).


Madrid: Prentice Hall

Vergara Quiche, R. I. (s. f.). Redes Neuronales Artificiales – RNA. Universidad


Nacional José Faustino Sánchez Carrión. Recuperado de http://goo.gl/7y0oPa

Artículo: Perceptrón Multicapa (10/06/2014). En Wikipedia, la enciclopedia libre.


Recuperado el 25 de Julio de 2014 a las 17:00 de http://goo.gl/ifjCjy

También podría gustarte