En el aprendizaje automático , el perceptrón (o neurona McCulloch–Pitts ) es un algoritmo de aprendizaje supervisado de clasificadores binarios . Un clasificador binario es una función que puede decidir si una entrada, representada por un vector de números, pertenece o no a alguna clase específica. [1] Es un tipo de clasificador lineal , es decir, un algoritmo de clasificación que realiza sus predicciones basándose en una función predictora lineal que combina un conjunto de pesos con el vector de características .
El perceptrón fue inventado en 1943 por Warren McCulloch y Walter Pitts . [5] La primera implementación de hardware fue la máquina Mark I Perceptron construida en 1957 en el Laboratorio Aeronáutico de Cornell por Frank Rosenblatt , [6] financiada por la División de Sistemas de Información de la Oficina de Investigación Naval de los Estados Unidos y el Centro de Desarrollo Aéreo de Roma . Se demostró públicamente por primera vez el 23 de junio de 1960. [7] La máquina fue "parte de un esfuerzo de cuatro años previamente secreto del NPIC [el Centro Nacional de Interpretación Fotográfica de los Estados Unidos ] desde 1963 hasta 1966 para desarrollar este algoritmo en una herramienta útil para los intérpretes de fotografías". [8]
Rosenblatt describió los detalles del perceptrón en un artículo de 1958. [9] Su organización de un perceptrón está construida con tres tipos de células ("unidades"): AI, AII, R, que significan " proyección ", "asociación" y "respuesta".
El proyecto de Rosenblatt fue financiado bajo el Contrato Nonr-401(40) "Programa de Investigación de Sistemas Cognitivos", que duró desde 1959 hasta 1970, [10] y el Contrato Nonr-2381(00) "Proyecto PARA" ("PARA" significa "Autómatas de Percepción y Reconocimiento"), que duró desde 1957 [6] hasta 1963. [11]
El perceptrón fue concebido como una máquina, en lugar de un programa, y aunque su primera implementación fue en software para el IBM 704 , posteriormente se implementó en hardware personalizado como el "perceptrón Mark I" con el nombre de proyecto "Proyecto PARA", [12] diseñado para el reconocimiento de imágenes . La máquina se encuentra actualmente en el Museo Nacional Smithsoniano de Historia Estadounidense . [13]
El perceptrón Mark I tenía tres capas. Una versión se implementó de la siguiente manera:
Rosenblatt llamó a esta red perceptrón de tres capas el perceptrón alfa , para distinguirlo de otros modelos de perceptrón con los que experimentó. [7]
Las unidades S están conectadas a las unidades A de forma aleatoria (según una tabla de números aleatorios) a través de un tablero de conexiones (ver foto), para "eliminar cualquier sesgo intencional particular en el perceptrón". Los pesos de conexión son fijos, no aprendidos. Rosenblatt era inflexible en cuanto a las conexiones aleatorias, ya que creía que la retina estaba conectada aleatoriamente a la corteza visual y quería que su máquina perceptrón se asemejara a la percepción visual humana. [14]
Las unidades A están conectadas a las unidades R, con pesos ajustables codificados en potenciómetros , y las actualizaciones de peso durante el aprendizaje se realizaron mediante motores eléctricos. [2] : 193 Los detalles del hardware se encuentran en un manual del operador. [12]
En una conferencia de prensa organizada por la Marina de los EE. UU. en 1958, Rosenblatt hizo declaraciones sobre el perceptrón que causaron una acalorada controversia entre la incipiente comunidad de IA ; basándose en las declaraciones de Rosenblatt, The New York Times informó que el perceptrón era "el embrión de una computadora electrónica que [la Marina] espera que pueda caminar, hablar, ver, escribir, reproducirse y ser consciente de su existencia". [15]
Rosenblatt describió sus experimentos con muchas variantes de la máquina Perceptrón en un libro titulado Principles of Neurodynamics (1962). El libro es una versión publicada del informe de 1961. [16]
Entre las variantes están:
La máquina fue enviada desde Cornell al Smithsonian en 1967, bajo una transferencia gubernamental administrada por la Oficina de Investigación Naval. [8]
Aunque el perceptrón parecía prometedor en un principio, se demostró rápidamente que no se podía entrenar a los perceptrones para que reconocieran muchas clases de patrones. Esto provocó que el campo de la investigación sobre redes neuronales se estancara durante muchos años, antes de que se reconociera que una red neuronal de propagación hacia delante con dos o más capas (también llamada perceptrón multicapa ) tenía mayor capacidad de procesamiento que los perceptrones con una capa (también llamados perceptrones de una sola capa ).
Los perceptrones de una sola capa solo son capaces de aprender patrones linealmente separables . [17] Para una tarea de clasificación con alguna función de activación por pasos, un solo nodo tendrá una sola línea que divide los puntos de datos que forman los patrones. Más nodos pueden crear más líneas divisorias, pero esas líneas deben combinarse de alguna manera para formar clasificaciones más complejas. Una segunda capa de perceptrones, o incluso nodos lineales, son suficientes para resolver muchos problemas que de otro modo no serían separables.
En 1969, un famoso libro titulado Perceptrones de Marvin Minsky y Seymour Papert demostró que era imposible para estas clases de redes aprender una función XOR . A menudo se cree incorrectamente que también conjeturaron que un resultado similar se daría para una red de perceptrones multicapa. Sin embargo, esto no es cierto, ya que tanto Minsky como Papert ya sabían que los perceptrones multicapa eran capaces de producir una función XOR. (Véase la página sobre Perceptrones (libro) para más información.) Sin embargo, el texto de Minsky y Papert, a menudo mal citado, provocó una disminución significativa en el interés y la financiación de la investigación de redes neuronales. Pasaron diez años más hasta que la investigación de redes neuronales experimentó un resurgimiento en la década de 1980. [17] [ verificación necesaria ] Este texto fue reimpreso en 1987 como "Perceptrones - Edición ampliada" donde se muestran y corrigen algunos errores en el texto original.
Rosenblatt siguió trabajando en perceptrones a pesar de la disminución de la financiación. El último intento fue Tobermory, construido entre 1961 y 1967, diseñado para el reconocimiento de voz. [18] Ocupaba una habitación entera. [19] Tenía 4 capas con 12.000 pesos implementados por núcleos magnéticos toroidales . En el momento de su finalización, la simulación en computadoras digitales se había vuelto más rápida que las máquinas perceptrón construidas específicamente para ese fin. [20] Murió en un accidente de navegación en 1971.
El algoritmo del perceptrón kernel fue introducido ya en 1964 por Aizerman et al. [21] Las garantías de límites de margen fueron dadas para el algoritmo del perceptrón en el caso general no separable por primera vez por Freund y Schapire (1998), [1] y más recientemente por Mohri y Rostamizadeh (2013) quienes extienden resultados previos y dan límites L1 nuevos y más favorables. [22] [23]
El perceptrón es un modelo simplificado de una neurona biológica . Si bien la complejidad de los modelos de neuronas biológicas suele ser necesaria para comprender por completo el comportamiento neuronal, las investigaciones sugieren que un modelo lineal similar al perceptrón puede producir algunos comportamientos observados en neuronas reales. [24]
En este trabajo se estudian los espacios de soluciones de los límites de decisión para todas las funciones binarias y los comportamientos de aprendizaje. [25]
En el sentido moderno, el perceptrón es un algoritmo para aprender un clasificador binario llamado función umbral : una función que asigna su entrada (un vector de valor real ) a un valor de salida (un único valor binario ):
donde es la función escalonada de Heaviside , es un vector de pesos de valor real, es el producto escalar , donde m es el número de entradas al perceptrón y b es el sesgo . El sesgo desplaza el límite de decisión alejándolo del origen y no depende de ningún valor de entrada.
De manera equivalente, dado que , podemos agregar el término de sesgo como otro peso y agregar una coordenada a cada entrada , y luego escribirlo como un clasificador lineal que pasa el origen:
El valor binario (0 o 1) se utiliza para realizar una clasificación binaria como instancia positiva o negativa. Espacialmente, el sesgo cambia la posición (aunque no la orientación) del límite de decisión planar .
En el contexto de las redes neuronales, un perceptrón es una neurona artificial que utiliza la función de paso de Heaviside como función de activación. El algoritmo del perceptrón también se denomina perceptrón de una sola capa , para distinguirlo de un perceptrón multicapa , que es un nombre inapropiado para una red neuronal más complicada. Como clasificador lineal, el perceptrón de una sola capa es la red neuronal de propagación hacia adelante más simple .
Desde el punto de vista de la teoría de la información , un solo perceptrón con K entradas tiene una capacidad de 2K bits de información. [26] Este resultado se debe a Thomas Cover . [27]
Sea específicamente el número de formas de separar linealmente N puntos en K dimensiones, entonces, cuando K es grande, es muy cercano a uno cuando , pero muy cercano a cero cuando . En palabras, una unidad de perceptrón puede memorizar casi con certeza una asignación aleatoria de etiquetas binarias en N puntos cuando , pero casi con certeza no cuando .
Cuando opera solo con entradas binarias, un perceptrón se denomina función booleana linealmente separable o función booleana de umbral. La secuencia de números de funciones booleanas de umbral en n entradas es OEIS A000609. El valor solo se conoce con exactitud hasta el caso, pero el orden de magnitud se conoce con bastante exactitud: tiene un límite superior y un límite inferior . [28]
Cualquier función de umbral lineal booleana se puede implementar con pesos enteros únicamente. Además, la cantidad de bits necesaria y suficiente para representar un único parámetro de peso entero es . [28]
Un único perceptrón puede aprender a clasificar cualquier semiespacio, pero no puede resolver ningún vector linealmente no separable, como el problema booleano de " o exclusivo" (el famoso "problema XOR").
Una red de perceptrones con una capa oculta puede aprender a clasificar cualquier subconjunto compacto con una precisión arbitraria. De manera similar, también puede aproximarse a cualquier función continua con soporte compacto con una precisión arbitraria. Este es, en esencia, un caso especial de los teoremas de George Cybenko y Kurt Hornik .
Los perceptrones (Minsky y Papert, 1969) estudiaron el tipo de redes de perceptrones necesarias para aprender varias funciones booleanas.
Consideremos una red de perceptrones con unidades de entrada, una capa oculta y una salida, similar a la máquina de perceptrones Mark I. Calcula una función booleana de tipo . Llaman a una función conjuntivamente local de orden , si y solo si existe una red de perceptrones tal que cada unidad en la capa oculta se conecta a, como máximo, unidades de entrada.
Teorema. (Teorema 3.1.1): La función de paridad es conjuntivamente local de orden .
Teorema. (Sección 5.5): La función de conexidad es conjuntivamente local de orden .
A continuación se muestra un ejemplo de un algoritmo de aprendizaje para un perceptrón de una sola capa con una sola unidad de salida. En el caso de un perceptrón de una sola capa con varias unidades de salida, dado que los pesos de una unidad de salida están completamente separados de los de las demás, se puede ejecutar el mismo algoritmo para cada unidad de salida.
En el caso de los perceptrones multicapa , donde existe una capa oculta, se deben utilizar algoritmos más sofisticados, como la retropropagación . Si la función de activación o el proceso subyacente que modela el perceptrón no es lineal , se pueden utilizar algoritmos de aprendizaje alternativos, como la regla delta , siempre que la función de activación sea diferenciable . No obstante, el algoritmo de aprendizaje descrito en los pasos siguientes suele funcionar, incluso en el caso de perceptrones multicapa con funciones de activación no lineales.
Cuando se combinan múltiples perceptrones en una red neuronal artificial, cada neurona de salida opera independientemente de todas las demás; por lo tanto, el aprendizaje de cada salida puede considerarse de forma aislada.
Primero definimos algunas variables:
Mostramos los valores de las características de la siguiente manera:
Para representar los pesos:
Para mostrar la dependencia del tiempo de , usamos:
El algoritmo actualiza los pesos después de cada muestra de entrenamiento en el paso 2b.
Un perceptrón único es un clasificador lineal . Solo puede alcanzar un estado estable si todos los vectores de entrada se clasifican correctamente. En caso de que el conjunto de entrenamiento D no sea linealmente separable , es decir, si los ejemplos positivos no se pueden separar de los ejemplos negativos mediante un hiperplano, entonces el algoritmo no convergería ya que no hay solución. Por lo tanto, si la separabilidad lineal del conjunto de entrenamiento no se conoce a priori, se debe utilizar una de las variantes de entrenamiento siguientes. El análisis detallado y las extensiones del teorema de convergencia se encuentran en el Capítulo 11 de Perceptrons (1969).
La separabilidad lineal se puede comprobar en el tiempo , donde es el número de puntos de datos y es la dimensión de cada punto. [29]
Si el conjunto de entrenamiento es linealmente separable, entonces se garantiza que el perceptrón convergerá después de cometer un número finito de errores. [30] El teorema está demostrado por Rosenblatt et al.
Teorema de convergencia del perceptrón : dado un conjunto de datos , tal que , y es linealmente separable por algún vector unitario , con margen :
Luego, el algoritmo de aprendizaje del perceptrón 0-1 converge después de cometer como máximo errores, para cualquier tasa de aprendizaje y cualquier método de muestreo del conjunto de datos.
La siguiente prueba simple se debe a Novikoff (1962). La idea de la prueba es que el vector de peso siempre se ajusta en una cantidad acotada en una dirección con la que tiene un producto escalar negativo y, por lo tanto, puede estar acotado por arriba por O ( √ t ) , donde t es el número de cambios en el vector de peso. Sin embargo, también puede estar acotado por abajo por O ( t ) porque si existe un vector de peso satisfactorio (desconocido), entonces cada cambio avanza en esta dirección (desconocida) en una cantidad positiva que depende solo del vector de entrada.
Supongamos que en el paso , el perceptrón con peso comete un error en el punto de datos , luego se actualiza a .
Si , el argumento es simétrico, entonces lo omitimos.
WLOG , , entonces , , y .
Por supuesto, tenemos separación con márgenes: Por lo tanto,
Además, y dado que el perceptrón cometió un error, , y así
Desde que empezamos con , después de cometer errores, pero también
Combinando los dos, tenemos
Si bien se garantiza que el algoritmo del perceptrón convergerá en alguna solución en el caso de un conjunto de entrenamiento linealmente separable, aún puede elegir cualquier solución y los problemas pueden admitir muchas soluciones de calidad variable. [31] El perceptrón de estabilidad óptima , hoy en día mejor conocido como la máquina de vectores de soporte lineal , fue diseñado para resolver este problema (Krauth y Mezard , 1987). [32]
Cuando el conjunto de datos no es linealmente separable, no hay forma de que un único perceptrón converja. Sin embargo, todavía tenemos [33]
Teorema de ciclado del perceptrón : si el conjunto de datos tiene solo un número finito de puntos, entonces existe un número límite superior , tal que para cualquier vector de peso inicial, todos los vectores de peso tienen una norma limitada por
Esto lo demuestra por primera vez Bradley Efron . [34]
Considere un conjunto de datos donde son de , es decir, los vértices de un hipercubo n-dimensional centrado en el origen, y . Es decir, todos los puntos de datos con valores positivos tienen , y viceversa. Según el teorema de convergencia del perceptrón, un perceptrón convergería después de cometer, como máximo, errores.
Si tuviéramos que escribir un programa lógico para realizar la misma tarea, cada ejemplo positivo muestra que una de las coordenadas es la correcta, y cada ejemplo negativo muestra que su complemento es un ejemplo positivo. Al recopilar todos los ejemplos positivos conocidos, finalmente eliminamos todas las coordenadas menos una, momento en el cual se aprende el conjunto de datos. [35]
Este límite es asintóticamente ajustado en términos del peor de los casos. En el peor de los casos, el primer ejemplo presentado es completamente nuevo y proporciona bits de información, pero cada ejemplo posterior diferiría mínimamente de los ejemplos anteriores y proporciona 1 bit cada uno. Después de los ejemplos, hay bits de información, lo que es suficiente para el perceptrón (con bits de información). [26]
Sin embargo, no es estricto en términos de expectativa si los ejemplos se presentan de manera uniforme y aleatoria, ya que el primero daría bits, el segundo bits, y así sucesivamente, tomando los ejemplos en total. [35]
El algoritmo de bolsillo con trinquete (Gallant, 1990) resuelve el problema de estabilidad del aprendizaje del perceptrón al mantener la mejor solución vista hasta el momento "en su bolsillo". El algoritmo de bolsillo luego devuelve la solución en el bolsillo, en lugar de la última solución. También se puede utilizar para conjuntos de datos no separables, donde el objetivo es encontrar un perceptrón con un pequeño número de clasificaciones erróneas. Sin embargo, estas soluciones aparecen puramente estocásticamente y, por lo tanto, el algoritmo de bolsillo no se acerca a ellas gradualmente en el curso del aprendizaje, ni se garantiza que aparezcan dentro de un número determinado de pasos de aprendizaje.
El algoritmo Maxover (Wendemuth, 1995) es "robusto" en el sentido de que convergerá independientemente del conocimiento (previo) de la separabilidad lineal del conjunto de datos. [36] En el caso de separabilidad lineal, resolverá el problema de entrenamiento, si se desea, incluso con una estabilidad óptima ( máximo margen entre las clases). Para conjuntos de datos no separables, devolverá una solución con un pequeño número de clasificaciones erróneas. En todos los casos, el algoritmo se acerca gradualmente a la solución en el curso del aprendizaje, sin memorizar estados previos y sin saltos estocásticos. La convergencia es hacia la optimalidad global para conjuntos de datos separables y hacia la optimalidad local para conjuntos de datos no separables.
El perceptrón votado (Freund y Schapire, 1999) es una variante que utiliza múltiples perceptrones ponderados. El algoritmo inicia un nuevo perceptrón cada vez que un ejemplo se clasifica incorrectamente, inicializando el vector de pesos con los pesos finales del último perceptrón. A cada perceptrón también se le asignará otro peso correspondiente a cuántos ejemplos clasifique correctamente antes de clasificar incorrectamente uno, y al final el resultado será una votación ponderada de todos los perceptrones.
En problemas separables, el entrenamiento del perceptrón también puede apuntar a encontrar el mayor margen de separación entre las clases. El llamado perceptrón de estabilidad óptima se puede determinar mediante esquemas iterativos de entrenamiento y optimización, como el algoritmo Min-Over (Krauth y Mezard, 1987) [32] o el AdaTron (Anlauf y Biehl, 1989)). [37] AdaTron utiliza el hecho de que el problema de optimización cuadrático correspondiente es convexo. El perceptrón de estabilidad óptima, junto con el truco del kernel , son los fundamentos conceptuales de la máquina de vectores de soporte .
El perceptrón utilizó además una capa de preprocesamiento de pesos aleatorios fijos, con unidades de salida con umbrales. Esto le permitió al perceptrón clasificar patrones analógicos, proyectándolos en un espacio binario . De hecho, para un espacio de proyección de dimensión suficientemente alta, los patrones pueden volverse linealmente separables.
Otra forma de resolver problemas no lineales sin utilizar múltiples capas es utilizar redes de orden superior (unidad sigma-pi). En este tipo de red, cada elemento del vector de entrada se extiende con cada combinación de pares de entradas multiplicadas (segundo orden). Esto se puede extender a una red de orden n .
Sin embargo, hay que tener en cuenta que el mejor clasificador no es necesariamente el que clasifica todos los datos de entrenamiento a la perfección. De hecho, si tuviéramos la restricción previa de que los datos provienen de distribuciones gaussianas equivariantes, la separación lineal en el espacio de entrada es óptima y la solución no lineal está sobreajustada .
Otros algoritmos de clasificación lineal incluyen Winnow , máquina de vectores de soporte y regresión logística .
Al igual que la mayoría de las demás técnicas para entrenar clasificadores lineales, el perceptrón se generaliza de forma natural a la clasificación multiclase . En este caso, la entrada y la salida se extraen de conjuntos arbitrarios. Una función de representación de características asigna cada par de entrada/salida posible a un vector de características de valor real y dimensión finita. Como antes, el vector de características se multiplica por un vector de peso , pero ahora se utiliza la puntuación resultante para elegir entre muchas salidas posibles:
El aprendizaje itera nuevamente sobre los ejemplos, predice un resultado para cada uno, deja los pesos sin cambios cuando el resultado previsto coincide con el objetivo y los cambia cuando no lo hace. La actualización se convierte en:
Esta formulación de retroalimentación multiclase se reduce al perceptrón original cuando es un vector de valor real, se elige entre , y .
Para ciertos problemas, las representaciones y características de entrada/salida se pueden elegir de modo que se puedan encontrar de manera eficiente incluso si se eligen de un conjunto muy grande o incluso infinito.
Desde 2002, el entrenamiento del perceptrón se ha vuelto popular en el campo del procesamiento del lenguaje natural para tareas como el etiquetado de partes del discurso y el análisis sintáctico (Collins, 2002). También se ha aplicado a problemas de aprendizaje automático a gran escala en un entorno de computación distribuida . [38]