¿Cómo aprenden las redes neuronales artificiales?

Una red neuronal “aprende” al intentar resolver un problema de optimización para elegir un conjunto de parámetros que minimice una función de error, que es la suma típica de errores al cuadrado. Esta definición de aprendizaje no es exclusiva de un modelo de red neuronal. Considere, en el caso más simple, un modelo lineal de la forma [math] y = XB [/ math]. Dado un vector de datos [math] y \ in \ mathbb {R} ^ m [/ math], seleccionamos [math] B \ in \ mathbb {R} ^ n [/ math] que minimiza [math] || y -XB || _2 [/ math], donde [math] X [/ math] es una matriz de [math] m [/ math] by [math] n [/ math] con “datos de entrenamiento” en las filas. Resolver este problema de minimización de mínimos cuadrados tiene un buen resultado analítico de forma cerrada: [math] \ hat {B} = (X ^ TX) ^ {- 1} X ^ Ty [/ math]. Sin embargo, existe un compromiso entre la facilidad computacional de encontrar los parámetros óptimos del modelo y la complejidad del modelo. Esto es evidente en el caso lineal, ya que el modelo es extremadamente fácil de ajustar pero tiene una forma muy simple. La red neuronal intenta encontrar un “punto óptimo”: mientras que el modelo es altamente no lineal, su forma funcional particular permite un procedimiento de ajuste computacionalmente pulido llamado “backpropogation”. Para apreciar completamente esta idea, primero debemos definir el modelo.

  1. El modelo:

Una “red neuronal” es una función de [math] f: \ mathbb {R} ^ m \ rightarrow \ {- 1,1 \} [/ math]. Escribir la forma matemática en una expresión monstruosa es excesivamente feo, así que la desglosaremos con palabras y diagramas. Una red neuronal con capas [math] L [/ math] y [math] d_l [/ math] por capa se parece a lo siguiente:

La entrada a cada neurona es una combinación lineal de las salidas de cada una de las neuronas en la capa inferior. La salida de la neurona es un umbral no lineal que se aplica a su entrada: es algo que asigna la línea real a (-1,1) de una manera 1-1, de modo que “la mayoría” de la línea positiva se asigna bastante cerca de 1 y y “la mayoría” de la línea negativa se asigna bastante cerca de -1. Una opción común es la función [math] g (x) = \ frac {e ^ xe ^ {- x}} {e ^ x + e ^ {- x}} [/ math].

La salida final de la señal es el signo de la neurona superior. Tenga en cuenta que la capa superior está restringida para tener una sola neurona. En el ejemplo de dibujos animados anterior, tenemos 3 capas con 3 neuronas en la primera capa, 2 en la segunda y 1 en la parte superior.

2. Ajustando el modelo con “Backpropagation”

El objetivo de ajustar el modelo es encontrar un conjunto adecuado de “pesos”, que podamos designar de forma compacta como [math] w [/ math], para las entradas de cada una de las neuronas. Una forma de hacerlo es elegir un conjunto de ponderaciones que minimice la suma de los errores cuadrados para los ejemplos de entrenamiento que ya tenemos. La intuición aquí es elegir un modelo que esté “cerca” del modelo verdadero, tal como lo haríamos en una regresión lineal. Sin embargo, a diferencia de la regresión lineal, una solución analítica no es factible debido a las feas funciones de umbral, por lo que debemos recurrir a un enfoque computacional como el descenso de gradiente. La pendiente de gradiente toma pasos en la dirección de la mayor disminución de Error en el espacio del parámetro, esperando encontrar un mínimo (global). (Recuerde que, a partir del cálculo multivariable, el gradiente del campo escalar apunta en la dirección del mayor aumento de la función, y así, al caminar en la dirección opuesta apunta en la dirección de mayor disminución repitiendo el argumento con el negativo de la función).

Comience por inicializar el modelo con un conjunto arbitrario de pesos. Avanzando, dada una entrada [math] x \ in \ mathbb {R} ^ m [/ math], podemos calcular la salida como se indica arriba. Por lo tanto, podemos calcular el error [math] E = (yf (x)) ^ 2 [/ math], que es el error del primer ejemplo de entrenamiento. Ahora, calculamos el gradiente de esta función de error con respecto a los pesos.

La belleza del método es que el cálculo del gradiente del error es ingenioso y se puede hacer recursivamente usando la regla de la cadena. Para ver esto, introduciremos alguna notación. Deje que [math] k = 1 … L [/ math] indique capas, suponga que [math] s_ {jk} [/ math] es la salida de la neurona jth en la capa [math] k [/ math], [math] x_ {jk} [/ math] es la entrada a la neurona [math] j [/ math] en la capa [math] k [/ math], y [math] w_ {ijk} [/ math] es el peso de la señal entrada en la [math] j [/ math] th neurona en la capa [math] k [/ math] que proviene de la [math] i [/ math] th neuron en la capa [math] k-1 [/ math], así que que [math] x_ {jk} = \ sum_ {i = 1} ^ {d_ {k-1}} {w_ {ijk} s_ {ik-1}} [/ math] y [math] s_ {jk} = g (x_ {jk}) [/ math]. Tenga en cuenta que [math] d_ {k-1} [/ math] representa el número de neuronas en la capa [math] k-1 [/ math]. Por la regla de la cadena, [math] \ frac {\ partial E} {\ partial w_ {ijk}} = \ frac {\ partial E} {\ partial s_ {jk}} \ frac {\ partial s_ {jk}} { \ partial w_ {ijk}} [/ math]. Dado que [math] x_ {jk} [/ math] es lineal en los pesos, la parte difícil es solo en el cálculo del componente anterior del producto. Podemos recursivamente calcular esto como

[math] \ frac {\ parcial E} {\ parcial s_ {jk}} = \ frac {\ parcial E} {\ parcial x_ {jk}} \ frac {\ parcial x_ {jk}} {\ parcial s_ {jk }} = \ sum_ {i = 1} ^ {d_ {k + 1}} \ frac {\ parcial E} {\ parcial s_ {ik + 1}} \ frac {\ parcial s_ {ik + 1}} {\ parcial x_ {jk}} \ frac {\ parcial x_ {jk}} {\ parcial s_ {jk}} [/ math]

La recursión termina desde [math] \ frac {\ partial E} {\ partial x_ {1L}} = 2 (x_ {1L} -y) [/ math]. Comenzamos calculando los gradientes de la capa superior, y almacenamos los gradientes a medida que avanzamos hacia abajo en cada capa, de modo que no necesitamos volver a calcular los gradientes. Esto conduce a la eficiencia computacional.

Por lo tanto, “aprender” en una red neuronal no es más que iterar entre calcular el error utilizando los datos de entrenamiento y actualizar los pesos calculando el gradiente de la función de error.

3. Referencias
Aprendí este material del profesor Yaser Abu-Mostafa en Caltech en su curso CS156. Esto está disponible en línea en: Learning From Data – Curso en línea (MOOC). También recomendaría su libro de texto: Learning From Data MOOC

El campo de las redes neuronales artificiales es extremadamente complicado y evoluciona fácilmente. Para comprender las redes neuronales y cómo procesan la información, es fundamental examinar cómo funcionan estas redes y los modelos básicos que se utilizan en dicho proceso.

¿Qué son las redes neuronales artificiales?

Las redes neuronales artificiales son modelos computacionales paralelos (a diferencia de nuestras computadoras, que tienen un solo procesador para recopilar y mostrar información). Estas redes suelen estar formadas por múltiples procesadores simples que pueden actuar en paralelo uno junto al otro para modelar sistemas cambiantes. Este proceso de computación paralela también permite un procesamiento y cómputo más rápido de las soluciones. Las redes neuronales siguen una estructura computacional dinámica y no siguen un proceso simple para derivar una salida deseada.

La base de estas redes se originó a partir de la neurona biológica [1] y las estructuras neuronales: cada neurona tiene múltiples entradas únicas y produce una salida. De manera similar, en las redes neuronales, las diferentes entradas se procesan y modifican por un peso o una especie de ecuación que cambia el valor original. Luego, la red combina estas diferentes entradas ponderadas con referencia a un cierto umbral y función de activación y da el valor final.

¿Cómo funcionan las redes neuronales?

Las redes neuronales artificiales se organizan en capas de procesos de computación en paralelo. Para cada procesador en una capa, cada número de entradas se multiplica por un peso establecido originalmente, lo que se traduce en lo que se llama el valor interno de la operación. Este valor se modifica aún más por un valor de umbral creado originalmente y se envía a una función de activación para asignar su salida. La salida de esa función se envía luego como entrada para otra capa, o como la respuesta final de una red si la capa es la última. Las ponderaciones y los valores de umbral se modifican con mayor frecuencia para producir el valor correcto y más preciso.

Los mecanismos de aprendizaje de una red neuronal.

Mirar una analogía puede ser útil para comprender los mecanismos de una red neuronal. El aprendizaje en una red neuronal está estrechamente relacionado con la forma en que aprendemos en nuestras vidas y actividades regulares: realizamos una acción y un capacitador o entrenador nos acepta o corrige para comprender cómo mejorar en una determinada tarea. De manera similar, las redes neuronales requieren un entrenador para describir lo que se debería haber producido como respuesta a la entrada. En función de la diferencia entre el valor real y el valor generado por la red, se calcula un valor de error y se envía a través del sistema. Para cada capa de la red, el valor de error se analiza y se usa para ajustar el umbral y los pesos para la siguiente entrada. De esta manera, el error sigue disminuyendo ligeramente en cada ejecución a medida que la red aprende a analizar valores.

El procedimiento descrito anteriormente se conoce como backpropogation y se aplica de manera continua a través de una red hasta que el valor de error se mantiene al mínimo. En este punto, la red neuronal ya no requiere un proceso de entrenamiento de este tipo y se le permite funcionar sin ajustes. La red puede finalmente aplicarse, utilizando los pesos y umbrales ajustados como pautas.

El uso de una red neuronal durante la ejecución

Cuando una red neuronal se está ejecutando activamente, no se produce ninguna propagación hacia atrás, ya que no hay manera de verificar directamente la respuesta esperada. En cambio, la validez de las declaraciones de salida se corrige durante una nueva sesión de entrenamiento o se deja tal como está para que se ejecute la red. Es posible que sea necesario realizar muchos ajustes, ya que la red consta de una gran cantidad de variables que deben ser precisas para que la red neuronal artificial funcione.

Se puede examinar un ejemplo básico de tal proceso enseñando a una red neuronal a convertir texto a voz. Uno podría elegir varios artículos y párrafos diferentes y usarlos como entradas para la red y predeterminar una entrada deseada antes de ejecutar la prueba. La fase de entrenamiento consistiría entonces en atravesar las múltiples capas de la red y utilizar la propagación inversa para ajustar los parámetros y el valor de umbral de la red para minimizar el valor de error para todos los ejemplos de entrada. Luego, la red se puede probar en nuevos artículos para determinar si realmente podría convertir el texto al habla adecuada.

Las redes como estas pueden ser modelos viables para una gran variedad de problemas matemáticos y estadísticos, que incluyen, entre otros, la síntesis y el reconocimiento del habla, el reconocimiento y la predicción de la cara, el modelado de sistemas no lineales y la clasificación de patrones.

Conclusión

Las redes neuronales son un nuevo concepto cuyo potencial acabamos de arañar la superficie. Pueden usarse para una variedad de diferentes conceptos e ideas, y aprender a través de un mecanismo específico de propagación inversa y corrección de errores durante la fase de prueba. Al minimizar adecuadamente el error, estos sistemas de múltiples capas pueden algún día aprender y conceptualizar ideas solo, sin la corrección humana.

¡Espero que esto ayude! Por favor, siéntase libre de comentar esta respuesta, A2A o PM, si tiene más preguntas, comentarios o inquietudes. ¡Gracias!

[1] Si quieres saber más sobre cómo funciona biológicamente una neurona, revisa mi respuesta a ¿Qué es una neurona?

Fuentes

La mayor parte de esta respuesta provino de mi conocimiento a través de cursos en línea y la lectura de múltiples artículos y artículos diferentes sobre redes neuronales, pero usé los siguientes recursos para mejorar la calidad de esta respuesta:

[1] http://www.cheshireeng.com/Neura
[2] http : //www.scientificamerican.co…

La pregunta es fascinante, lo que hace que muchas personas sientan curiosidad por las redes neuronales.
Algunas respuestas realmente buenas aquí, que cubren la teoría matemática y la analogía biológica detrás de las redes neuronales, trataré de dar un ejemplo hipotético simple, que puede complementar las explicaciones anteriores.

Problema
Supongamos que soy un Android con una inteligencia basada en la teoría de la red neuronal y que hago mi primer examen:
· Estoy obligado a contestar 10 preguntas.
· Para aprobar, necesito obtener 4 correctos
El problema es:
· Me falta conocimiento del tema.

Prueba 1:
· Solo puedo responder 1 pregunta correctamente y, por lo tanto, fallé.

Modelo matematico:

Ahora, veamos lo que sucedió en el examen y le demos una base matemática,
· 10 preguntas: # entrada
· 1 intento correcto, por lo que actualmente solo tengo un 10% de conocimiento del tema
· Esto podría escribirse como 0.1 , cuantificando mi nivel de conocimiento actual.
# Este es el peso, a menudo llamado peso sináptico si ve la analogía biológica e indica el ‘ conocimiento almacenado ‘ actual de la red neuronal
· Los criterios de éxito son claros:

Si ,
Corregir intentos> = 4.
entonces ,
Pasar
Más
Fallar

Matemáticamente,
f (x) = 1, si x> = 4
f (x) = 0, si x <4

# Esta es la función de activación o la función de transferencia , que evalúa mi rendimiento y produce un resultado, pasa o falla en este ejemplo.

· En base a la función anterior, el resultado de este primer examen es 0, que muestra que falló.

ANN inclinada:

Ahora, el resultado anterior del examen 1, se puede cuantificar como un error:
Resultado deseado, T = 1 (Pase)
Salida real, O = 0, cero (Fallo)

Así, en términos simples, Error = (T – O) = 1

El error positivo muestra la necesidad de aprender y hacer un cambio al nivel de conocimiento actual de 0.1.

Este cambio incremental anterior (por ejemplo, ∆W) se puede cuantificar en función del error, como:
∆W = α x (TO)

Donde, α es la velocidad o el ritmo al que aprendo, se llama velocidad de aprendizaje. En base a esto, aprenderé y haré cambios en mi nivel de conocimiento actual de 0.1, denotado como ‘Peso’

Matemáticamente
Digamos, aprendo a una tasa del 10%, por lo tanto, α = 0.1

∆W = 0.1 X (1 -0) = 0.1

W (después de aprender) = W + ∆W = 0.1 + 0.1 = 0.2

Por la presente, aprendiendo de mi falla (error) , aumenté mi nivel de conocimiento (nuevo peso) en un 10% (mi tasa de aprendizaje) a 0.2 .

En la prueba 2,

Si se me dan 10 preguntas del mismo tema, podré hacer 2 preguntas (0.2 X 10) correctamente basadas en mi aprendizaje. Pero, como todavía no puedo pasar la prueba (4 preguntas correctas), seguiré aprendiendo de la misma manera que antes hasta obtener el resultado deseado (Pase).

Este fue un ejemplo muy simplificado (con muchas brechas) para entender de manera intuitiva, lo que queremos decir con decir, aprendizaje de ANN y se basa libremente en:
– Single Perceptron NN, con función de activación Umbral / Límite duro y aprendizaje mediante el algoritmo de reglas de aprendizaje de Perceptron.

Me gustaría explicar el contexto en términos sencillos sin entrar en la parte matemática.

La idea básica detrás de una red neuronal es simular (copiar de manera simplificada pero razonablemente fiel) un montón de células cerebrales densamente interconectadas dentro de una computadora para que pueda aprender cosas, reconocer patrones y tomar decisiones de manera humana. Lo sorprendente de una red neuronal es que no tiene que programarlo para aprender explícitamente: ¡se aprende solo, como un cerebro!

Pero no es un cerebro. Es importante tener en cuenta que las redes neuronales son (generalmente) simulaciones de software: se realizan mediante la programación de computadoras muy comunes, que funcionan de manera muy tradicional con sus transistores comunes y puertas lógicas conectadas en serie, para comportarse como si estuvieran construidas a partir de miles de millones De células cerebrales altamente interconectadas trabajando en paralelo. Nadie ha intentado construir una computadora conectando transistores en una estructura densamente paralela exactamente como el cerebro humano. Las simulaciones por computadora son solo colecciones de variables algebraicas y ecuaciones matemáticas que las unen (en otras palabras, números almacenados en cuadros cuyos valores cambian constantemente). No significan nada en absoluto para las computadoras que llevan dentro, solo para las personas que las programan.

Las redes neuronales producidas de esta manera se denominan redes neuronales artificiales (o ANN) para diferenciarlas de las redes neuronales reales (colecciones de células cerebrales interconectadas) que encontramos dentro de nuestro cerebro.

Una red neuronal típica tiene desde docenas hasta cientos, miles o incluso millones de neuronas artificiales llamadas unidades organizadas en una serie de capas, cada una de las cuales se conecta a las capas de cada lado. Algunas de ellas, conocidas como unidades de entrada , están diseñadas para recibir diversas formas de información del mundo exterior que la red intentará conocer, reconocer o procesar de otra manera. Otras unidades se encuentran en el lado opuesto de la red y señalan cómo responde a la información que se aprende; esos son conocidos como unidades de salida . Entre las unidades de entrada y las unidades de salida hay una o más capas de unidades ocultas que, juntas, forman la mayoría del cerebro artificial. La mayoría de las redes neuronales están completamente conectadas , lo que significa que cada unidad oculta y cada unidad de salida está conectada a cada unidad en las capas a cada lado. Las conexiones entre una unidad y otra están representadas por un número llamado peso , que puede ser positivo (si una unidad excita a otra) o negativo (si una unidad suprime o inhibe a otra). Cuanto mayor es el peso, más influencia tiene una unidad sobre otra. (Esto corresponde a la forma en que las células cerebrales reales se activan entre sí a través de pequeños huecos llamados sinapsis).

La información fluye a través de una red neuronal de dos maneras. Cuando se aprende (se entrena) o se opera normalmente (después de entrenarse), los patrones de información se introducen en la red a través de las unidades de entrada, que disparan las capas de unidades ocultas, y éstas a su vez llegan a las unidades de salida. Este diseño común se llama una red de avance . No todas las unidades “disparan” todo el tiempo. Cada unidad recibe entradas de las unidades a su izquierda, y las entradas se multiplican por el peso de las conexiones a las que viajan. Cada unidad suma todas las entradas que recibe de esta manera y (en el tipo de red más simple) si la suma es más que un cierto valor de umbral , la unidad “dispara” y activa las unidades a las que está conectada (las que están a su derecha) .

Para que una red neuronal aprenda, tiene que haber un elemento de retroalimentación involucrado, al igual que los niños aprenden cuando se les dice lo que están haciendo bien o mal. De hecho, todos usamos retroalimentación, todo el tiempo. Piense en la primera vez que aprendió a jugar un juego como jugar a los bolos. Cuando recogiste la bola pesada y la hiciste rodar por el callejón, tu cerebro observó qué tan rápido se movió la bola y la línea que siguió, y notaste lo cerca que estuviste para derribar los bolos. La próxima vez que fue tu turno, recordaste lo que habías hecho mal antes, modificaste tus movimientos en consecuencia y, con suerte, lanzaste la pelota un poco mejor. Entonces, usó la retroalimentación para comparar el resultado que deseaba con lo que realmente sucedió, descubrió la diferencia entre los dos y usó eso para cambiar lo que hizo la próxima vez (“Necesito lanzarlo más fuerte”, “Necesito rodar un poco más. a la izquierda, “Tengo que dejar ir más tarde”, y así sucesivamente). Cuanto mayor sea la diferencia entre el resultado deseado y el real, más radicalmente habrías alterado tus movimientos.

Las redes neuronales aprenden las cosas exactamente de la misma manera, generalmente mediante un proceso de retroalimentación llamado backpropagation (algunas veces abreviado como “backprop”). Esto implica comparar la salida que produce una red con la salida que debía producir (valores reales reales), y usar la diferencia entre ellos para modificar los pesos de las conexiones entre las unidades en la red, trabajando desde las unidades de salida a través de los ocultos. unidades a las unidades de entrada, retrocediendo, en otras palabras. Con el tiempo, la propagación hacia atrás hace que la red aprenda, reduciendo la diferencia entre la salida real y la deseada al punto (es decir, reduciendo el error cuadrático) donde los dos coinciden exactamente, por lo que la red calcula las cosas exactamente como debería.

Una vez que la red ha sido entrenada con suficientes ejemplos de aprendizaje, llega a un punto en el que puede presentarla con un conjunto completamente nuevo de entradas que nunca antes se han visto y ver cómo responde. Por ejemplo, suponga que ha estado enseñando a una red mostrándole muchas imágenes de sillas y mesas, representadas de una manera adecuada que puede entender, y diciéndole si cada una es una silla o una mesa. Después de mostrarlo, digamos, 25 sillas diferentes y 25 mesas diferentes, le da una imagen de un nuevo diseño que no se ha encontrado antes y ve qué sucede. Dependiendo de cómo lo hayas entrenado, intentará categorizar el nuevo ejemplo como una silla o una mesa, generalizando sobre la base de su experiencia pasada, como un humano.
Eso no significa que una red neuronal solo pueda “mirar” los muebles y responder instantáneamente a ellos de manera significativa; No se está comportando como una persona. Considere el ejemplo que acabamos de dar: la red no está realmente mirando piezas de mobiliario. Las entradas a una red son esencialmente números binarios: cada píxel en la unidad de entrada está encendido o apagado.
Una silla típica se presentaría como 10110 en binario, mientras que una tabla típica podría ser 01001. Por lo tanto, durante la fase de aprendizaje, la red simplemente está mirando muchos números como 10110 y 01001 y aprendiendo que una silla significa y otra que significa mesa.

PD: para entrenar una red neuronal para reconocer cierta categoría de objetos, uno necesita asignar verdades básicas para el mismo. Para un conjunto de nuevos datos, el ajuste se puede realizar utilizando varios marcos como caffe o deeplab y proporcionando tasas de aprendizaje adecuadas y rutas para los datos de capacitación. Los archivos de caffemodel producidos después del entrenamiento se pueden usar para probar los marcos de interés. La segmentación de los objetos se puede realizar mediante la agrupación máxima o la aplicación de CRF (campos aleatorios condicionales). ¡¡¡Espero que esto ayude!!!
Fuente: internet

Algunas respuestas extremadamente fascinantes aquí. Felicitaciones a todos ellos. Puedo añadir un par de notas más aquí. Las redes neuronales artificiales no son más que un intento matemático para simular gran parte de cómo funciona nuestra mente. Las AN son una columna vertebral primaria de lo que llaman el conexionismo en psiquiatría y estudios relacionados. La suposición subyacente es que todos los comportamientos mentales pueden explicarse en alguna forma como consecuencia de varias simplificaciones de ” unidades de computación ” que “se unen “. He puesto en cursiva los dos últimos pares de palabras porque:
1. Las unidades informáticas consideradas en las AN son perceptrones básicos. Al escuchar la simulación de perceptrón, hay una función matemática llamada función de transferencia. La función toma todas las entradas al perceptrón (que vienen como varios cables de otras neuronas) como un vector y luego calcula la salida. Básicamente se podría elegir cualquier función de transferencia. Pero esta selección solo ha provocado una gran investigación. El modelo de McCulloh Pitts inicialmente asumió que esta función de transferencia es un interruptor perfecto (un interruptor que se dispara en función de las entradas que satisfacen una condición específica y, de lo contrario, se activan).

2. La reunión: esta parte realmente trata sobre las conexiones que interconectan las unidades informáticas. Cada una de estas conexiones actúa como un promotor o inhibidor de la señal que transporta. En otras palabras, digamos que al comienzo de la conexión, la señal tenía una fuerza x, al final, la señal se multiplicaría por un factor w para dar una señal final de fuerza w. Si w <1, la conexión (o sinapsis en términos médicos) se considera un inhibidor y si w> 1, un promotor. Ahora, puede imaginar un montón de combinatoria si quiere conectarse, supongamos, tales unidades de procesamiento. En cualquier caso, puede hacer un conjunto de operaciones polinomiales desde las entradas vírgenes a estas neuronas y la salida final del cuadro conectado. Esa función final es la salida final de su ANN. Mis co-respondedores ya han señalado algunas de esas estructuras.

Esa fue la estructura a un nivel muy alto. Pero, ¿qué significa realmente aprender en este contexto? Siempre que su función de transferencia sea continua y limitada, la salida de cada neurona y, por lo tanto, toda la caja se puede interpretar como un polinomio en las dimensiones de sus entradas. Ahora todo el desafío es ajustar los pesos y elegir una función de transferencia adecuada para cada una de sus neuronas. Nuevamente, la combinatoria aquí lo alejará de los resultados generalizados de las elecciones aleatorias. Sin embargo, la estructura más estudiada es la red de neuronas de avance de múltiples capas, que ya se explica en estas respuestas.

Por lo tanto, el objetivo final de una ANN es poder construir ese polinomio que refleje verdaderamente el comportamiento matemático de sus datos, con la precisión deseada.

También hay una gran cantidad de otros modelos (redes Hebbian, redes Hopfield para optimización y otros). Estos forman el nivel ligeramente más alto de variedad y, si está realmente interesado, algunos libros (@Fundamentals of Artificial Neural Networks: Mohamad Hassoun) pueden ser excelentes para comenzar.

Las redes neuronales artificiales se entrenan al recibir un gran número de entradas, junto con la salida correcta para cada una. Algo así como la forma en que entrenas a un perro. Emite un comando y luego les muestra lo que quiere que hagan en respuesta. Pero eso es básicamente una recuperación de memoria, y una red neuronal artificial hace algo aún más difícil, que es aprender es una especie de “promedio”, por lo que más tarde puede dar a la red una entrada que no ha visto antes, y dará Una salida cercana a lo que esperas.

La forma en que generan una salida, dada una entrada, es al tener un modelo interno incorporado que tiene muchas variables. Si las variables se configuran en valores aleatorios y el modelo recibe una entrada, generará una salida aleatoria. Lo que el entrenamiento hace es buscar un conjunto de valores para las variables que hacen que los resultados del modelo coincidan con los resultados correctos dados en el conjunto de entrenamiento.

De hecho, el entrenamiento comienza dando valores aleatorios a todas las variables. Entonces todas las entradas + salidas correctas se dan al modelo. Mide el error entre lo que genera y la salida correcta. Luego cambia los valores de las variables en la dirección que reducirá la suma de los errores. Luego se repite, hasta que los cambios en las variables ya no reducen los errores sumados (sumados en el conjunto completo de entradas de entrenamiento más salidas correctas).

Ahora, cómo decide la dirección para cambiar cada variable y la cantidad, es saber algo sobre el modelo. El modelo integrado en la mayoría de las redes neuronales artificiales hace que una entrada consista en un gran número de “dígitos”, y proporciona una variable para cada dígito que se multiplica por ese dígito. Luego suma los resultados de todos los dígitos multiplicados por la variable. Esa suma final se pasa luego a través de un limitador, por lo que hay un valor de salida máximo (máximo positivo y máximo negativo).

Así es como el modelo toma dígitos de entrada y produce una salida de ellos. Multiplica los dígitos por las variables y luego suma los resultados.

Resulta que con un modelo de esta forma, siempre se puede saber si aumentar el valor de una variable individual aumentará el error o lo disminuirá. Es decir, si le da al modelo un conjunto de dígitos de entrada y mide el error frente a la salida correcta, entonces puede decir cuánto contribuyó cada variable al error.

Entonces, para una entrada dada en el conjunto de entrenamiento, la red realiza una grabación para cada variable. Mide cuánto contribuyó esa variable al error generado por la red, para esa entrada. También registra la dirección para cambiar la variable para reducir el error para esa entrada. Mantiene una suma corriente del tamaño de la contribución y la dirección para cambiarla.

Al final, para cada variable, tiene una suma de los cambios individuales que habrían reducido la contribución de esa variable a los errores. Luego simplemente agrega esa suma al valor de la variable. Sin embargo, para ser cauteloso, solo agrega una fracción de la suma. Esto le da un nuevo valor variable. Luego repite el proceso, hasta que el error sumado permanece casi igual dos veces seguidas. (Existen variaciones: algunas redes neuronales guardan todas las correcciones y aplican la suma al final, mientras que otras, como la “propagación hacia atrás” cambian las variables después de cada entrada)

Es bastante simple, conceptualmente y bastante sorprendente que funcione tan bien como lo hace.

La magia está en poder mirar una sola variable y ver si aumentar el valor de esa variable aumentará el error o lo disminuirá, y en qué medida. Un gran avance que comenzó con las redes neuronales artificiales fue descubrir un modelo que tiene esta propiedad. Esta forma de modelo se denomina “combinación lineal” y permite el proceso descrito anteriormente, que se denomina “pendiente de gradiente”. La forma de calcular la contribución de una variable al error es “tomando la derivada”. La derivada apunta en la dirección del cambio más pronunciado del error, con respecto a la variable diferenciada sobre. (Pequeña corrección: para que todo funcione, el cuadrado del error se usa en todas partes).

Recientemente se han descubierto muchas variaciones de este enfoque básico. Todos tienen la misma idea subyacente de comenzar con un modelo que tiene muchas variables y medir la contribución de cada variable al error, luego ajustar las variables y repetirlas. Sin embargo, para algunas variaciones, esto se oculta en el fondo de las matemáticas.

Sean

Para comprender cómo aprenden las redes neuronales, entendamos qué significa aprender de los datos.

Ahora vamos a dar un paso más atrás. Antes de comenzar a aprender sobre el ‘aprendizaje’, respondamos la pregunta: ¿Cómo se generan los datos?

Básicamente hay un proceso subyacente que genera datos continuamente. Por ejemplo, debe haber un proceso que genere todas las imágenes de gatos y perros. Pero ese proceso es desconocido para nosotros. Si conocemos ese proceso, podemos saber cómo se genera una imagen de gato o cómo se genera una imagen de perro.

Idealmente, el objetivo del aprendizaje automático es “aprender” sobre ese proceso. Esto es a nivel abstracto el objetivo del Aprendizaje Automático. Formalmente, el proceso representa una función matemática y las muestras de datos son puntos en algún espacio vectorial. Entonces podemos formular el objetivo del aprendizaje automático como el aprendizaje de la función matemática que genera los datos.

Ahora, el espacio de búsqueda de todas las funciones es bastante grande (prácticamente infinito), por lo que asumimos alguna forma paramétrica de función (utilizando algún conocimiento previo) y ajustamos los datos a ella. Las redes neuronales hacen esencialmente lo mismo.

(Fuente: The Clever Machine)

Esta es una caricatura que ilustra la formalización de NN. ‘Ak’ es la forma paramétrica de la función a ser ‘aprendida’. Tenga en cuenta que Bk, Wjk son los parámetros de la NN y que se “aprenden” a partir de los datos.

Una vez que se aprenden estos parámetros, la función Ak representaría el proceso de generación de datos (que describí anteriormente). Ahora este Ak puede usarse para todo tipo de inferencia interesante (por ejemplo, clasificación, regresión, etc.).

Así es como NN aprende. ¡Espero que esto responda a su pregunta!

Algunas respuestas extremadamente fascinantes aquí. Felicitaciones a todos ellos. Puedo añadir un par de notas más aquí. Las redes neuronales artificiales no son más que un intento matemático para simular gran parte de cómo funciona nuestra mente. Las AN son una columna vertebral primaria de lo que llaman el conexionismo en psiquiatría y estudios relacionados. La suposición subyacente es que todos los comportamientos mentales pueden explicarse en alguna forma como consecuencia de varias simplificaciones de ” unidades de computación ” que “se unen “. He puesto en cursiva los dos últimos pares de palabras porque:

1. Las unidades informáticas consideradas en las AN son perceptrones básicos. Al escuchar la simulación de perceptrón, hay una función matemática llamada función de transferencia. La función toma todas las entradas al perceptrón (que vienen como varios cables de otras neuronas) como un vector y luego calcula la salida. Básicamente se podría elegir cualquier función de transferencia. Pero esta selección solo ha provocado una gran investigación. El modelo de McCulloh Pitts inicialmente asumió que esta función de transferencia es un interruptor perfecto (un interruptor que se dispara en función de las entradas que satisfacen una condición específica y, de lo contrario, se activan).

2. La reunión: esta parte realmente trata sobre las conexiones que interconectan las unidades informáticas. Cada una de estas conexiones actúa como un promotor o inhibidor de la señal que transporta. En otras palabras, digamos que al comienzo de la conexión, la señal tenía una fuerza x, al final, la señal se multiplicaría por un factor w para dar una señal final de fuerza w. Si w <1, la conexión (o sinapsis en términos médicos) se considera un inhibidor y si w> 1, un promotor. Ahora, puede imaginar un montón de combinatoria si quiere conectarse, supongamos, tales unidades de procesamiento. En cualquier caso, puede hacer un conjunto de operaciones polinomiales desde las entradas vírgenes a estas neuronas y la salida final del cuadro conectado. Esa función final es la salida final de su ANN. Mis co-respondedores ya han señalado algunas de esas estructuras.

Esa fue la estructura a un nivel muy alto. Pero, ¿qué significa realmente aprender en este contexto? Siempre que su función de transferencia sea continua y limitada, la salida de cada neurona y, por lo tanto, toda la caja se puede interpretar como un polinomio en las dimensiones de sus entradas. Ahora todo el desafío es ajustar los pesos y elegir una función de transferencia adecuada para cada una de sus neuronas. Nuevamente, la combinatoria aquí lo alejará de los resultados generalizados de las elecciones aleatorias. Sin embargo, la estructura más estudiada es la red de neuronas de avance de múltiples capas, que ya se explica en estas respuestas.

Por lo tanto, el objetivo final de una ANN es poder construir ese polinomio que refleje verdaderamente el comportamiento matemático de sus datos, con la precisión deseada.

Más información visite: Guía para principiantes de redes neuronales artificiales

Las redes neuronales artificiales son capaces de mapear cualquier función no lineal de manera incremental y esto técnicamente se llama aprendizaje. Lo hacen aprendiendo los pesos en neuronas individuales y las funciones de activación elegidas entre cada capa ayudan a mapear las transformaciones. Esto se logra proporcionando la red neuronal como muchos ejemplos disponibles que definen las entradas y salidas. Los ejemplos que se le proporcionan se conocen como ‘conjunto de entrenamiento’. Las salidas también suelen denominarse verdades fundamentales.

La red debe ajustarse bien al conjunto de entrenamiento, lo que también significa que aprende a mapear las entradas y salidas.

El aprendizaje se logra a través de ciclos de propagación hacia adelante y propagación hacia atrás ejecutando un ejemplo (descenso de gradiente estocástico) o muchos ejemplos (lote) a la vez. Este es un proceso de cálculo y actualización matemático no trivial que involucra álgebra lineal y derivados y, por lo general, se modela como matrices / vectores multidimensionales que contienen pesos fraccionarios para neuronas que involucran multiplicaciones de matrices paralelas.

Un buen aprendizaje debe tratar de adaptarse al conjunto de datos de entrenamiento con la mayor precisión posible, pero también debe poder generalizarse en la mayor medida posible.

Un conjunto de datos completamente separado pero similar llamado “conjunto de prueba” se entrega a la red aprendida y ahora puede predecir la salida cuando se retiene de la red. Los mejores resultados en el conjunto de pruebas indican una red aprendida que se ha generalizado bien. La buena precisión del conjunto de entrenamiento y no tan buena o peor, la precisión del conjunto de pruebas indica un sobreajuste.

Los experimentos empíricos muestran que el aprendizaje no es un proceso determinista, ya que también depende de los pesos iniciales y los algoritmos de optimización específicos y los tamaños de lotes de conjuntos de datos de aprendizaje. También depende de las arquitecturas de redes neuronales específicas que especifican el número de capas ocultas, neuronas por capa, inicializaciones de pesos, decaimientos, momentos, funciones de activación utilizadas, sesgos, abandonos, realimentación, conjuntos, etc.

El aprendizaje se mide en términos de precisión, es una métrica que se calcula es la relación correcta con todas las predicciones correctas en el conjunto de pruebas. Una red neuronal bien diseñada puede tener una precisión de más del 99% si la calidad de los datos es lo suficientemente buena.

Las redes neuronales artificiales imitan al cerebro humano. La información de varias partes del cuerpo pasa al cerebro a través de las neuronas. En ANN las percepciones actúan como neuronas. Percepton es dos tipos, percepton de una sola capa y percepton de múltiples capas. En la percepción de una sola capa hay una capa de entrada y una capa de salida. En la percepción multicapa Hay muchas capas ocultas entre la capa de entrada y la capa de salida. Hay un trabajo de percepción multicapa sobre la base del algoritmo de propagación hacia atrás. En la propagación hacia atrás, la entrada se envía a través de la capa oculta y el resultado de la capa de salida se propaga hacia atrás. Este proceso continuo hasta que la ANN proporciona un resultado preciso.

Si no estás interesado en muchos detalles matemáticos, te recomendaría que leas mi artículo reciente:
¿La red neuronal artificial apoya los supuestos del conectivismo?

El artículo fue escrito para educadores y no para ingenieros informáticos o matemáticos.

Teorema de aproximación universal por la perspectiva de cybenkos pero simplificado. Se aproxima a cualquier función continua con error acotado.
Aquí hay una explicación simplificada del resultado de cybenkos en stackexchange. Es posible que necesite saber cómo la red neuronal de dos capas puede aproximarse a cualquier función booleana.
Teorema de aproximación universal – Redes neuronales

Las ANN son redes de neuronas simuladas (que realizan un procesamiento mínimo y cuyas características no evolucionan con el tiempo) unidas por sinapsis. Cuando los cerebros orgánicos aprenden, la fuerza de las conexiones neuronales aumenta. Lo mismo es cierto para ANNs; La fuerza (lo llamamos peso) de las conexiones neuronales cambia. Por ejemplo, en un ejercicio de entrenamiento con datos etiquetados (llamado Aprendizaje Supervisado), la ANN ajusta sus ponderaciones para hacer que su salida se acerque más a las salidas deseadas. En términos generales, lo que ha aprendido se almacena en el conjunto de pesos que genera.

Si me dice la topología de una ANN (el número de neuronas, cómo están distribuidas / conectadas y cómo se procesan internamente), todo lo que una ANN ha aprendido puede recuperarse a través del conjunto de pesos que ha generado.

¡Todos han escrito muchas respuestas geniales! Hice un video inspirado en “Explique si tengo cinco años” sobre cómo las redes neuronales artificiales también aprenden, si desea echar un vistazo:

SwiftKey acaba de lanzar la primera NN del mundo para teléfonos inteligentes. Si le interesa, eche un vistazo al nuevo SwiftKey Neural Alpha para Android.

SwiftKey presenta un teclado alfa desarrollado por Neural Networks

Hay varias formas de depender de qué algoritmo se está utilizando. Esta pregunta es demasiado vaga para responder realmente en profundidad, aunque recomendaría leer algoritmos tales como una red neuronal Feed Forward altamente común y otros algoritmos de ANN.

Las redes neuronales de diferentes topologías que utilizan varios métodos de entrenamiento, incluida la infame propagación hacia atrás, se basan en el enfoque del conexionismo inspirado en la biología para el proceso de pensamiento. El estado de la actividad mental es el resultado del proceso emergente de varias unidades uniformes simples. Las redes neuronales aprenden mediante la evolución de la interconexión de servidores en respuesta a estímulos específicos. Conocida como plasticidad neural. La información está codificada en la fuerza de las conexiones.

Es como si la neurona en la capa inferior hiciera un pequeño trabajo, como mirar un fragmento de una imagen y hacer algunos cálculos al respecto, no entiende mucho específicamente, pero lo que sí entiende la neurona es que estoy dando una señal que es útil para alguien que está dando una señal, quién está dando una señal, quién está dando una señal, quién está dando una señal y así sucesivamente. En cierto modo, son capaces de desplegar este nudo dimensional muy alto y de separarlo para que sea más fácil separar las cosas que están cerca en la superficie de las que estaban enredadas antes. Pero luego, en la parte superior, colocamos dos neuronas y estas neuronas miran todo el cuadro hasta ahora. Básicamente, son expertos en hacer la llamada final para descubrir que todas las capas debajo de mí dijeron estas cosas, así que sé que esto es un gato o al menos estoy 92% seguro de que es un gato, así que básicamente es un gato. Pero se necesita mucho tiempo para aprender a mostrarle la imagen de un automóvil cuando se está aprendiendo, y la próxima vez que la muestre en la imagen de un automóvil es un poco más probable que diga que es un automóvil. No llega a pesar de que eso fue lo último que vio. Cuando le dices a un niño, eso es un archivador y luego, un segundo después, dices, ¿qué es eso? Él no va a ser como, “zapato”, ¿verdad? Seguramente le dirá que es un archivador.

Echa un vistazo a este http://www.everythingai.co.in/20

Su es un ejemplo con el que puedes empezar.

Perceptrón de una sola capa como clasificador lineal