Una neurona artificial es una función matemática concebida como un modelo de neuronas biológicas en una red neuronal . Las neuronas artificiales son las unidades elementales de las redes neuronales artificiales . [1] La neurona artificial es una función que recibe una o más entradas, aplica pesos a estas entradas y las suma para producir una salida.
El diseño de la neurona artificial se inspiró en los circuitos neuronales . Sus entradas son análogas a los potenciales postsinápticos excitatorios y a los potenciales postsinápticos inhibidores en las dendritas neuronales , oactivación , sus pesos son análogos al peso sináptico y su salida es análoga al potencial de acción de una neurona que se transmite a lo largo de su axón .
Por lo general, cada entrada se pondera por separado y la suma se suele añadir a un término conocido como sesgo (que corresponde vagamente al potencial umbral ), antes de pasar por una función no lineal conocida como función de activación o función de transferencia [ aclaración necesaria ] . Las funciones de transferencia suelen tener forma sigmoidea , pero también pueden adoptar la forma de otras funciones no lineales, funciones lineales por partes o funciones escalonadas. También suelen ser monótonamente crecientes , continuas , diferenciables y acotadas . También se han explorado recientemente funciones de activación no monótonas, ilimitadas y oscilantes con múltiples ceros que superan a las funciones de activación sigmoideas y similares a ReLU en muchas tareas. La función de umbralización ha inspirado la construcción de puertas lógicas denominadas lógica de umbral; aplicable a la construcción de circuitos lógicos que se asemejan al procesamiento cerebral. Por ejemplo, en los últimos tiempos se han utilizado ampliamente nuevos dispositivos como los memristores para desarrollar dicha lógica. [2]
La función de transferencia de una neurona artificial no debe confundirse con la función de transferencia de un sistema lineal .
Una neurona artificial puede denominarse unidad semilineal , neurona Nv , neurona binaria , función umbral lineal o neurona McCulloch–Pitts ( MCP ) , según la estructura utilizada.
Las neuronas artificiales simples, como el modelo McCulloch-Pitts, a veces se describen como "modelos de caricatura", ya que pretenden reflejar una o más observaciones neurofisiológicas, pero sin tener en cuenta el realismo. [3] Las neuronas artificiales también pueden referirse a células artificiales en ingeniería neuromórfica ( ) que son similares a las neuronas físicas naturales.
Para una neurona artificial k dada, sean m + 1 entradas con señales x 0 a x m y pesos w k 0 a w k m . Por lo general, a la entrada x 0 se le asigna el valor +1, lo que la convierte en una entrada de sesgo con w k 0 = b k . Esto deja solo m entradas reales a la neurona: de x 1 a x m .
La salida de la neurona k es:
Donde (phi) es la función de transferencia (comúnmente una función de umbral).
La salida es análoga al axón de una neurona biológica y su valor se propaga a la entrada de la siguiente capa, a través de una sinapsis. También puede salir del sistema, posiblemente como parte de un vector de salida .
No tiene un proceso de aprendizaje como tal. Sus pesos de función de transferencia están calculados y su valor umbral está predeterminado.
Una neurona MCP es un tipo de neurona artificial restringida que opera en pasos de tiempo discretos. Cada una tiene cero o más entradas, y se escriben como . Tiene una salida, escrita como . Cada entrada puede ser excitatoria o inhibidora . La salida puede ser tranquila o de activación . Una neurona MCP también tiene un umbral .
En una red neuronal MCP, todas las neuronas funcionan en pasos de tiempo discretos sincrónicos de . En el momento , la salida de la neurona es si el número de entradas excitatorias activadas es al menos igual al umbral y no se activan entradas inhibidoras; en caso contrario.
Cada salida puede ser la entrada de un número arbitrario de neuronas, incluida ella misma (es decir, son posibles los bucles propios). Sin embargo, una salida no puede conectarse más de una vez con una sola neurona. Los bucles propios no causan contradicciones, ya que la red opera en pasos de tiempo discretos sincrónicos.
Como ejemplo sencillo, considere una sola neurona con un umbral de 0 y un solo bucle inhibidor. Su salida oscilaría entre 0 y 1 en cada paso, actuando como un "reloj".
Cualquier máquina de estados finitos puede ser simulada por una red neuronal MCP. [4] Equipadas con una cinta infinita, las redes neuronales MCP pueden simular cualquier máquina de Turing . [5]
Las neuronas artificiales están diseñadas para imitar aspectos de sus contrapartes biológicas. Sin embargo, existe una brecha de rendimiento significativa entre las redes neuronales biológicas y artificiales. En particular, se han descubierto neuronas biológicas individuales en el cerebro humano con función de activación oscilante capaz de aprender la función XOR . [6]
Sin embargo, a diferencia de la mayoría de las neuronas artificiales, las neuronas biológicas se activan en pulsos discretos. Cada vez que el potencial eléctrico dentro del soma alcanza un cierto umbral, se transmite un pulso a través del axón. Este pulso se puede traducir en valores continuos. La velocidad (activaciones por segundo, etc.) a la que se activa un axón se convierte directamente en la velocidad a la que se introducen iones de señal en las células vecinas. Cuanto más rápido se activa una neurona biológica, más rápido acumulan potencial eléctrico las neuronas cercanas (o lo pierden, dependiendo de la "ponderación" de la dendrita que se conecta a la neurona que se activó). Es esta conversión la que permite a los científicos informáticos y matemáticos simular redes neuronales biológicas utilizando neuronas artificiales que pueden generar valores distintos (a menudo de −1 a 1).
Las investigaciones han demostrado que la codificación unaria se utiliza en los circuitos neuronales responsables de la producción del canto de los pájaros . [7] [8] El uso de la codificación unaria en redes biológicas se debe presumiblemente a la simplicidad inherente de la codificación. Otro factor que podría contribuir a ello es que la codificación unaria proporciona un cierto grado de corrección de errores. [9]
Se están realizando investigaciones y desarrollos en neuronas artificiales físicas, orgánicas e inorgánicas.
Por ejemplo, algunas neuronas artificiales pueden recibir [10] [11] y liberar dopamina ( señales químicas en lugar de señales eléctricas) y comunicarse con células cerebrales y musculares naturales de ratas , con potencial para su uso en BCI / prótesis . [12] [13]
Los memristores biocompatibles de bajo consumo pueden permitir la construcción de neuronas artificiales que funcionan a voltajes de potenciales de acción biológicos y podrían utilizarse para procesar directamente señales de biodetección , para computación neuromórfica y/o comunicación directa con neuronas biológicas . [14] [15] [16]
Se han incorporado circuitos neuromórficos orgánicos hechos de polímeros , recubiertos con un gel rico en iones para permitir que un material lleve una carga eléctrica como las neuronas reales , en un robot, lo que le permite aprender sensoriomotoramente dentro del mundo real, en lugar de a través de simulaciones o virtualmente. [17] [18] Además, las neuronas artificiales de punta hechas de materia blanda (polímeros) pueden operar en entornos biológicamente relevantes y permitir la comunicación sinérgica entre los dominios artificiales y biológicos. [19] [20]
La primera neurona artificial fue la Unidad Lógica de Umbral (TLU), o Unidad de Umbral Lineal, [21] propuesta por primera vez por Warren McCulloch y Walter Pitts en 1943 en Un cálculo lógico de las ideas inmanentes en la actividad nerviosa . El modelo fue específicamente diseñado como un modelo computacional de la "red nerviosa" en el cerebro. [22] Como función de transferencia, empleó un umbral, equivalente a usar la función de paso de Heaviside . Inicialmente, solo se consideró un modelo simple, con entradas y salidas binarias, algunas restricciones en los pesos posibles y un valor de umbral más flexible. Desde el principio ya se advirtió que cualquier función booleana podría implementarse mediante redes de tales dispositivos, lo que se ve fácilmente del hecho de que uno puede implementar las funciones AND y OR, y usarlas en la forma normal disyuntiva o conjuntiva . Los investigadores pronto se dieron cuenta también de que las redes cíclicas, con retroalimentaciones a través de neuronas, podían definir sistemas dinámicos con memoria, pero la mayor parte de la investigación se concentró (y todavía lo hace) en redes estrictamente de retroalimentación positiva debido a la menor dificultad que presentan.
Una red neuronal artificial importante y pionera que utilizó la función de umbral lineal fue el perceptrón , desarrollado por Frank Rosenblatt . Este modelo ya consideraba valores de peso más flexibles en las neuronas y se utilizaba en máquinas con capacidades adaptativas. La representación de los valores de umbral como un término de sesgo fue introducida por Bernard Widrow en 1960 – véase ADALINE .
A finales de los años 80, cuando la investigación sobre redes neuronales recobró fuerza, se empezaron a considerar neuronas con formas más continuas. La posibilidad de diferenciar la función de activación permite el uso directo del descenso de gradiente y otros algoritmos de optimización para el ajuste de los pesos. Las redes neuronales también empezaron a utilizarse como modelo de aproximación de funciones generales . El algoritmo de entrenamiento más conocido, llamado retropropagación, ha sido redescubierto varias veces, pero su primer desarrollo se remonta al trabajo de Paul Werbos . [23] [24]
La función de transferencia ( función de activación ) de una neurona se elige de modo que tenga una serie de propiedades que mejoren o simplifiquen la red que contiene la neurona. Por ejemplo, es crucial que cualquier perceptrón multicapa que utilice una función de transferencia lineal tenga una red monocapa equivalente; por lo tanto, es necesaria una función no lineal para obtener las ventajas de una red multicapa. [ cita requerida ]
A continuación, u se refiere en todos los casos a la suma ponderada de todas las entradas a la neurona, es decir, para n entradas,
donde w es un vector de pesos sinápticos y x es un vector de entradas.
La salida y de esta función de transferencia es binaria, dependiendo de si la entrada alcanza un umbral especificado, θ . La "señal" se envía, es decir, la salida se establece en uno, si la activación alcanza el umbral.
Esta función se utiliza en perceptrones y suele aparecer en muchos otros modelos. Realiza una división del espacio de entradas por un hiperplano . Es especialmente útil en la última capa de una red destinada a realizar una clasificación binaria de las entradas. Se puede aproximar a partir de otras funciones sigmoideas asignando valores grandes a los pesos.
En este caso, la unidad de salida es simplemente la suma ponderada de sus entradas más un término de sesgo . Un número de estas neuronas lineales realizan una transformación lineal del vector de entrada. Esto suele ser más útil en las primeras capas de una red. Existe una serie de herramientas de análisis basadas en modelos lineales, como el análisis armónico , y todas ellas se pueden utilizar en redes neuronales con esta neurona lineal. El término de sesgo nos permite realizar transformaciones afines a los datos.
Ver: Transformación lineal , Análisis armónico , Filtro lineal , Wavelet , Análisis de componentes principales , Análisis de componentes independientes , Deconvolución .
Una función no lineal bastante simple, la función sigmoidea, como la función logística, también tiene una derivada fácil de calcular, que puede ser importante al calcular las actualizaciones de peso en la red. Por lo tanto, hace que la red sea más fácil de manipular matemáticamente y fue atractiva para los primeros científicos informáticos que necesitaban minimizar la carga computacional de sus simulaciones. Anteriormente se veía comúnmente en perceptrones multicapa . Sin embargo, trabajos recientes han demostrado que las neuronas sigmoideas son menos efectivas que las neuronas lineales rectificadas . La razón es que los gradientes calculados por el algoritmo de retropropagación tienden a disminuir hacia cero a medida que las activaciones se propagan a través de capas de neuronas sigmoideas, lo que dificulta la optimización de las redes neuronales utilizando múltiples capas de neuronas sigmoideas.
En el contexto de las redes neuronales artificiales , el rectificador o ReLU (Rectified Linear Unit) es una función de activación definida como la parte positiva de su argumento:
donde x es la entrada a una neurona. Esto también se conoce como función de rampa y es análoga a la rectificación de media onda en ingeniería eléctrica. Esta función de activación fue introducida por primera vez a una red dinámica por Hahnloser et al. en un artículo de 2000 en Nature [25] con fuertes motivaciones biológicas y justificaciones matemáticas. [26] Se ha demostrado por primera vez en 2011 que permite un mejor entrenamiento de redes más profundas, [27] en comparación con las funciones de activación ampliamente utilizadas antes de 2011, es decir, la sigmoidea logística (que está inspirada en la teoría de la probabilidad ; consulte regresión logística ) y su contraparte más práctica [28] , la tangente hiperbólica .
Una variante comúnmente utilizada de la función de activación ReLU es Leaky ReLU, que permite un pequeño gradiente positivo cuando la unidad no está activa:
donde x es la entrada a la neurona y a es una pequeña constante positiva (en el artículo original se utilizó el valor 0,01 para a ). [29]
La siguiente es una implementación de pseudocódigo simple [ cita requerida ] de una única TLU que toma entradas booleanas (verdadero o falso) y devuelve una única salida booleana cuando se activa. Se utiliza un modelo orientado a objetos . No se define ningún método de entrenamiento, ya que existen varios. Si se utilizara un modelo puramente funcional, la TLU de clase a continuación se reemplazaría con una TLU de función con parámetros de entrada umbral, pesos y entradas que devolvieran un valor booleano.
Clase TLU definida como: umbral de miembro de datos : número pesos de miembro de datos : lista de números de tamaño X miembro de función fire(inputs : lista de booleanos de tamaño X) : booleano definido como: variable T : número T ← 0 para cada i en 1 a X hacer si entradas(i) es verdadero entonces T ← T + pesos(i) fin si fin para cada si T > umbral entonces devuelve verdadero de lo contrario: devuelve falso fin si fin de la función fin de la clase