martes, 1 de diciembre de 2009

CIRCUITOS LOGICOS CON NEURONAS

INTRODUCCION

En el estado de relajación el interior de una neurona se encuentra a un potencial de -70mV con respecto al exterior circundante. Una neurona puede recibir múltiples estímulos a través de sus dendritas y emitir estímulos a través de sus botones terminales. Estos estímulos son básicamente de dos tipos según sus efectos:
  • Excitadores: Aumentan su potencial interno, por ejemplo al recibir un estimulo de este tipo el interior de la neurona puede pasar a -68mV.
  • Inhibidores: Reducen su potencial interno, por ejemplo al recibir un estimulo de este tipo el interior de la neurona puede pasar de -68mV a -70mV.
Existen receptores que reciben señales excitadoras y otros receptores que reciben señales inhibidoras, un receptor inhibidor no recibir una señal excitadora.

Cualquiera de los estímulos se disipa en el tiempo, de modo que una neurona estimulada a -68mV volvería a -70mV por si misma. Para que una neurona se dispare y estimule a sus cercanos debe de alcanzar un potencial de -65mV, lo cual indica que debe de recibir más estímulos excitadores que inhibidores en un intervalo breve de tiempo para evitar la disipación antes mencionada. La estimulación que puede producir una neurona puede ser también excitadora o/y inhibidora, pero siempre será de la misma forma, cuando la neurona se dispare siempre hará lo mismo. Después del disparo la neurona vuelve a -70mV al cabo de un periodo refractario de 1 mS.

Lo presentado es un modelo muy simplificado del funcionamiento de una neurona, que es mucho más complejo. Nos serviremos de esto para realizar un primera aproximación a su lógica.


PLANTEAMIENTO LOGICO

Supongamos que la neurona es una sistema con {A1,A2,....An} receptores excitadores y {B1,B2,.....Bm} receptores inhibidores, esto hace un total de m+n inputs. La información de los inputs se procesa y el resultado se envía a las salida Z y X, siendo Z la salida excitadora y X la salida inhibidora. Una neurona en realidad tiene múltiples salidas, las cuales se obtendrían bifurcando las salidas Z y X cuantas veces se quiera o necesite, lo dejaremos así para no complicar la notación.

Si utilizamos la lógica binaria, estas salidas Z y X se encuentran a 0 inicialmente y no envían señales. Un 1 en Z significa que esta enviando una señal excitadora (señal E de ahora en adelante) y un 1 en X significa que esta enviando una señal inhibidora (señal I de ahora en adelante), cuando la neurona se dispare tanto X como Z se pondrán a 1. Puede que la neurona no excite a ninguna, en ese caso simplemente la salida X se encontrara desconectada a otras neuronas.

Se comento que la neurona necesitaba recibir mas señales E que I para dispararse, en realidad es necesario realizar una integración dado que el conjunto de estímulos que recibe es grande y su influencia inexacta. En este planteamiento supondremos que para que la neurona se dispare se necesitan recibir K impulsos mas E que I.

Por lo tanto lo que hace la neurona de nuestro modelo es sumar todos los impulsos E y sumar todos los impulsos I, a continuación compara los tamaños de E y I+K. Pudiéndose dar 2 situaciones:

E mayor = I+K la neurona se dispara y {X,Z}={1,1}
E menor I+K la neurona no se dispara y {X,Z}={0,0}

El diagrama simplificado de la neurona resultaría de la siguiente forma:

Aclaro que cada uno de los An tiene el mismo peso en la suma binaria. Una A y una B cualquiera pueden estar en 1 o 0, y la salida se activara (1) cuando la neurona se dispare.

Este diagrama puede expandirse hasta el nivel de puertas lógicas, esto es operaciones {and, or, not....}, si utilizamos 8 entradas el resultado es un diagrama que ocuparía una pagina utilizando símbolos pequeños, puede hacerlo cualquiera con algunos conocimientos básicos. Para mayor número de entradas la progresión es aritmética, el diagrama lógico de una neurona típica con 1000 conexiones ocuparía un folio equivalente a 125 DIN-A4, aunque quizás pudiera simplificarse. En definitiva, tenemos que una neurona a grandes rasgos se comporta como dos sumadores y un comparador. Una implicación de lo presentado es que una red neuronal puede en virtud de las simplificaciones realizadas transquibrirse a un esquema de puertas lógicas.


NEURONAS COMO PUERTAS LOGICAS

LOGICA COMBINACIONAL

El siguiente paso será trasformar las neuronas en puertas lógicas simples capaces de realizar las operaciones lógicas básicas.  Las operaciones básicas se realizaran sobre dos líneas de entrada, a las que llamaremos Q y P. El objetivo es unir estas líneas con las entradas A o B, ahora puede que la línea Q solo pueda unirse con las líneas A o solo con la B, o con ambas y lo mismo pasaría con P. Cuando la conducción es entre neurona y neurona, la salida del comparador tiene dos tomas, una para cada tipo de receptor, de forma que los canales Q y P pueden transmitir en este caso datos a ambos (A y B).

Transmision entre neuronas

universalizador

Se podría tener un canal Q o P que solo es transmisible a un tipo de receptor (A o B), por ejemplo una célula somática que solo puede trasmitir a A. Es posible "universalizar" a través de una neurona este tipo de señales discriminantes para que puedan llegar tanto a A como a B. Veamos como seria el esquema de un posible universalizador.


Si la neurona tuviera una K de 1 entonces bastaría con conectar el canal con la toma A o B compatibles y a continuación "conectar a tierra" el resto de A´s y B´s. Conectar a tierra significa que se el resto de conexiones de la neurona son aislados, conectar a tierra en electrónica significa poner un 0. Si K es diferente a 1 entonces basta con multiplicar el canal de llegada de los datos para que un solo impulso active la salida del comparador.
 
Negador

El negador convierte el bit de un canal en su opuesto, una neurona negadora podría tener el siguiente diagrama:
negador 

En la imagen anterior se ha cambiado el aspecto de la neurona con respecto a otras imágenes. El signo menos de la caja indica que es un negador, también se representa la K de la neurona.  Para K=1 una toma A (recordemos que se trata de un receptor de excitación) se conecta a Vcc que en electrónica representa el. Dado que para una neurona el 1 provocado de esta manera no duraría mucho tiempo en la practica seria quizás necesario conectar Vcc a una multitud de A´s y Q´s a otra multitud de B´s tal que al recibir la neurona las señales inhibidoras asociadas dejara de emitir pulsos por Z y X. No obstante y para no complicar un asunto que tiene fácil solución, se considerara que el objetivo de una puerta lógica es procesar los bits que llegan en pulsos en un determinado instante a los receptores implicados.


Sumador, "O"

El sumador procesa los bits de dos canales y da como salida un 0 solo si ambas entradas son 0, en caso contrario da 1. Se trata pues de una puerta "or". Veamos un posible esquema de sumador para K=1.

Sumador

Para K mayor que 1 solo es necesario multiplicar los canales P y Q. Para poder determinar todas las permutaciones lógicas posibles se necesita la siguiente puerta.

o exclusiva

Para conseguir esta puerta lógica se utilizaran 2 neuronas acopladas de la siguiente manera:

o exclusiva

Si se inspecciona se comprueba que si P y Q son iguales solo entonces las salidas son 0. Para construir esta puerta se ha necesitado multiplicar las señales P y Q, lo cual se puede conseguir mediante el uso de un universalizador y utilizando sus múltiples salidas.

Mediante la utilización conjunta de los elementos ahora descritos quedan cubiertas todas las operaciones de la lógica combinacional. Aunque es posible diseñar circuitos en una sola neurona que cubran las necesidades requeridas en la lógica combinacional, trabajo para casa.


MEMORIA Y LOGICA SECUENCIAL

Una neurona es incapaz de memorizar el 1 dado que el estado asociado a este 1 dura un breve periodo de tiempo del ciclo de excitación. Como unidad capaz de guardar un bit de datos se propondrá un anillo de memoria.

Anillo de memoria 

El anillo de memoria se basa en la excitación sucesiva de una neurona a la siguiente en un anillo, de forma que un 1 se trasmite indefinidamente dentro de este. Sobre este anillo es posible realizar dos operaciones básicas que son:
  • Introducción de datos: puesta a 0 mediante el reset y puesta a 1 mediante el set.
  • Recuperación de datos.
El siguiente es un ejemplo de anillo de memoria:

Anillo de memoria

Se han simplificado los diagramas eliminando por ejemplo la toma a tierra de modo que la neurona esta cogiendo cada vez un aspecto más abstracto, pero sigue estando ahí. Las tres salidas se han unida en una sola, en electrónica eso no es posible pero trabajando con neuronas si, pues esas tres señales que vallan a cualquier neurona se comportaran como un único input 1.  Un 1 en la señal azul borra el 1 de la salida, y un 1 en la señal roja añade un 1.

Si al anillo de memoria se le añadieran dos sumadores, 1 para combinar la señal de reset con una señal de reloj y otro sumador para combinar la señal de ser con otra señal de reloj se habría obtenido un biestable RS sincrono.

Biestable JK

A partir del biestable JK es posible obtener fácilmente los biestables T y D, teniendo así todos los elementos necesarios para desarrollar la lógica secuencial. A continuación un circuito neuronal que cumple las mismas funciones de un biestable JK:


Se ha omitido la señal de reloj, por tanto se trata de un biestable asíncrono. Se puede conseguir un biestable JK sincrono añadiendo la señal del reloj a las 4 neuronas de la izquierda y aumentando el tipo K en una unidad. Se recuerda que el biestable JK se diferencia del RS en que si tanto la entrada J como K son 1, entonces el valor almacenado cambia a su opuesto. De modo que podrían realizarse las operaciones propias de la lógica secuencial y del almacenamiento de memoria.


CONSIDERACIONES

A partir de los elementos expuestos en principio es posible construir un procesador e diseñar software que pueda utilizarse para realizar todo tipo de tareas (lógica programable), todo ello basado en neuronas.

8 comentarios:

Anónimo dijo...

Pues mira...me parece cuanto menos interesante la idea...porque supongo que lo que hasta ahora se le prestaba más atención era precisamente lo contrario: intentar simular el comportamiento de las neuronas con circuitos lógicos. Supongo que llevar a cabo el experimento que propones también nos enseñaría algo sobre como funcionan las neuronas en sí mismas.

Saludos.

Iñigo Azcorra dijo...

Hola cambiosocialya, las neuronas a grandes rasgos se sabe como funcionan y de lo que aqui he expuesto nada nuevo hay sobre el conocimiento de la neurona. Lo que hago es cojer como funciona una neurona individualmente para diseñar a partir de estas neuronas los componentes tipicos de la electronica. Mi objetivo era el de poder presentar el como atraves del propio funcionamiento de las neuronas se pueden construir circuitos analogos a los electronicos incluso computadoras.

Por otra parte tambien dejo ver que el cerebro puede representarse como un conjunto de puertas logicas.

Como anecdota te comento que para hacer un contador que cuente desde 0 hasta 31 harian falta a ojo y segun los dispositivos que he presentado unas 60 neuronas, no digo que nuestro cerebro este organizado como lo haria un electronico pero de ser asi 60 unicamente neuronas bastarian para contar hasta 31. Ahora, a saber si la naturaleza es una diseñadora electronica o trabaja de otra forma.

Saludos

Bloody86 dijo...

Esta idea que propone es muy interesante. De hecho la discutí un día con una amiga médico y, aunque la discusión fue muy provechosa, no llegamos, evidentemente, a ninguna conclusión.

En todo caso, felicitarle enormemente porque su blog tiene una cualidad impresionante, vamos, juega usted en primera división.

Iñigo Azcorra dijo...

Bloody86 bienvenido, gracias por tu felicitacion y por tu participacion.

Los procesos cognitivos estan vinculados al cerebro y las unidades funcionales basicas pueden considerarse las celulas nerviosas, por tanto parece que puede existir un camino para explicar los fenomenos congnitivos desde la parte hasta el todo. Para ello encontrar un siguiene nivel operativo a la neurona puede ser importante y esa ha sido mi intencion, aunque lo he ligado a las operaciones logicas simples que ademas suelen utilizarse en electronica. Existe tambien otro camino, que es el que va desde las estructuras mas complejas descendiendo, por ejemplo esta el cerebro y dentro de el esta el lobulo occipital que procesa la vision y dentro de esto un sector primario que identifica los contornos y las orientaciones de estos contornos etc. Creo que trabajar en las dos direcciones es una buena opcion.

Saludos

Bloody86 dijo...

Ei Iñigo!

Hace días que no publica, espero que no le pase el temido efecto blogger y lo deje. Ya se lo dije, tiene usted un blog magnífico y unos artículos de gran calidad.

Nada más que animarle y esperando un nuevo post.

Saludos.

Iñigo Azcorra dijo...

Gracias por el interes Bloody86, ahora mismo estoy trabajando en un proyecto y absorbe mi concentracion de tal modo que no puedo publicar otra cosa. De todos modos para mi lo inusual a sido la cadencia de articulos que estaba trayendo durante los ultimos 6 meses

Saludos!

PabloV dijo...

algo debo estar haciendo mal porque me da siempre 0 la salida de la o exclusiva, igualmente el cerebro puede/suele usar 3 neuronas para hacer la “o exclusiva”. La neurona excitadora que recibe la entrada mayor actúa sobre una inhibidora vecina que impide la propagación por circuitos vecinos (similares) así se obtiene especificidad, si quieres leer al respecto está muy bien descripto en la retina. Lo utilizamos para hacer los bordes de las cosas que vemos.
saludos tu blog tiene un nivel impresionante

Iñigo Azcorra dijo...

Hola raztez, puede ser, siempre se puede colar alguna pifiada, no seria ni la primera ni la ultima.


Supongo que te refieres al apartado de "o exclusiva". La primera neurona con K=2 da una señal inhibidora solo cuando P y Q son 1, la señal inhibidora llega duplicada a la segunda neurona haciendo K=3 y dando una salida 0. Cuando P y Q son 0 la salida es 0 claramente, y cuando una de las dos es 1 entonces al ser K=1 en la ultima neurona la salida es 1. Que es la tipica o exclusiva.

Es importante señalar que las salidas Z e X no son una salida y el negado de esa salida, como suele suceder habitualmente en electronica. Tanto Z como X tienen el mismo valor 1 o 0, solo que una tiene caracter excitador y la otra inhibidor, una sirve para sumar y otra para restar.

Gracias por el interes, es un articulo algo farragoso de entender.