Comunicación en Chipre Internet móvil. Internet móvil y comunicaciones en Chipre. Operador de telefonía móvil KKTC Turkcell

Mi conocimiento de las redes neuronales se produjo cuando salió. Aplicación prisma. Procesa cualquier fotografía mediante redes neuronales y la reproduce desde cero utilizando el estilo seleccionado. Interesado en esto, me apresuré a buscar artículos y “tutoriales”, principalmente sobre Habré. Y para mi gran sorpresa, no encontré ni un solo artículo que describiera de forma clara y paso a paso el algoritmo para el funcionamiento de las redes neuronales. La información estaba dispersa y faltaba. puntos clave. Además, la mayoría de los autores se apresuran a mostrar el código en un lenguaje de programación u otro sin recurrir a explicaciones detalladas.

PAG Mi primer y más importante descubrimiento fue la lista de reproducción del programador estadounidense Jeff Heaton, en la que explica detallada y claramente los principios de funcionamiento de las redes neuronales y su clasificación. Después de ver esta lista de reproducción, decidí crear la mía propia. red neuronal, empezando desde el mismo ejemplo sencillo. Probablemente lo sepas cuando empiezas a enseñar nuevo idioma, tu primer programa será Hola Mundo. Es una especie de tradición. en el mundo aprendizaje automático yo tambien tengo el mio Hola Mundo y esta es una red neuronal resolución de problemas exclusivo o (XOR). La tabla XOR se ve así:

En consecuencia, la red neuronal toma dos números como entrada y debe generar otro número: la respuesta. Ahora sobre las propias redes neuronales.

¿Qué es una red neuronal?

Una red neuronal es una secuencia de neuronas conectadas por sinapsis. La estructura de una red neuronal llegó al mundo de la programación directamente desde la biología. Gracias a esta estructura, la máquina gana la capacidad de analizar e incluso recordar información diversa. Las redes neuronales también son capaces no sólo de analizar la información entrante, sino también de reproducirla desde su memoria. Para aquellos interesados, asegúrese de ver 2 videos de TED Talks:Vídeo 1 , Vídeo 2 ). En otras palabras, una red neuronal es una interpretación mecánica del cerebro humano, que contiene millones de neuronas que transmiten información en forma de impulsos eléctricos.

¿Qué tipos de redes neuronales existen?

Por ahora, consideraremos ejemplos en la realidad. tipo básico Redes neuronales: esta es una red de retroalimentación (en lo sucesivo, DPR). También en artículos posteriores presentaré más conceptos y les hablaré sobre las redes neuronales recurrentes. SPR, como su nombre indica, es una red con conexión en serie capas neuronales, en ella la información siempre va en una sola dirección.

¿Para qué sirven las redes neuronales?

Las redes neuronales se utilizan para resolver problemas complejos que requieren cálculos analíticos. temas similares que hace cerebro humano. Las aplicaciones más comunes de las redes neuronales son:

Clasificación - distribución de datos por parámetros. Por ejemplo, se le proporciona un conjunto de personas como entrada y debe decidir a cuáles de ellas darles crédito y a cuáles no. Este trabajo se puede realizar mediante una red neuronal, analizando información como: edad, solvencia, historia de crédito etc.

Predicción - la capacidad de predecir el siguiente paso. Por ejemplo, la subida o bajada de las acciones en función de la situación del mercado de valores.

Reconocimiento - actualmente, la mayoría amplia aplicación redes neuronales. Se utiliza en Google cuando buscas una foto o en las cámaras de los teléfonos cuando detecta la posición de tu rostro y lo resalta y mucho más.

Ahora, para entender cómo funcionan las redes neuronales, echemos un vistazo a sus componentes y sus parámetros.

¿Qué es una neurona?

Una neurona es una unidad computacional que recibe información y produce sobre ella. cálculos simples y lo transmite. Se dividen en tres tipos principales: de entrada (azul), ocultos (rojo) y de salida (verde). También hay una neurona de desplazamiento y una neurona de contexto, de las que hablaremos en el próximo artículo. En el caso de que una red neuronal consta de una gran cantidad de neuronas, se introduce el término capa. En consecuencia, hay una capa de entrada que recibe información, n capas ocultas (generalmente no más de 3) que la procesan y una capa de salida que genera el resultado. Cada neurona tiene 2 parámetros principales: datos de entrada y datos de salida. En el caso de una neurona de entrada: entrada=salida. Por lo demás, el campo de entrada contiene la información total de todas las neuronas de la capa anterior, después de lo cual se normaliza usando la función de activación (por ahora imaginémoslo como f(x)) y termina en el campo de salida.

Importante recordar que las neuronas operan con números en el rango o [-1,1]. Pero, ¿cómo se pueden procesar los números que quedan fuera de este rango? En en esta etapa, la respuesta más sencilla es dividir 1 por ese número. Este proceso se llama normalización y se utiliza con mucha frecuencia en redes neuronales. Más sobre esto un poco más adelante.

¿Qué es una sinapsis?

Una sinapsis es una conexión entre dos neuronas. Las sinapsis tienen 1 parámetro: peso. Gracias a él, la información de entrada cambia a medida que se transmite de una neurona a otra. Digamos que hay 3 neuronas que transmiten información a la siguiente. Entonces tenemos 3 pesos correspondientes a cada una de estas neuronas. Para la neurona cuyo peso es mayor, esa información será dominante en la siguiente neurona (por ejemplo, mezcla de colores). De hecho, el conjunto de pesos de una red neuronal o la matriz de pesos es una especie de cerebro de todo el sistema. Es gracias a estos pesos que la información de entrada se procesa y se convierte en un resultado.

Importante recordar , que durante la inicialización de la red neuronal, los pesos se colocan en orden aleatorio.

¿Cómo funciona una red neuronal?

EN en este ejemplo muestra parte de una red neuronal, donde las letras I denotan neuronas de entrada, la letra H denota una neurona oculta y la letra w denota pesos. La fórmula muestra que la información de entrada es la suma de todos los datos de entrada multiplicada por sus pesos correspondientes. Luego daremos 1 y 0 como entrada. Sean w1 = 0,4 y w2 = 0,7. Los datos de entrada de la neurona H1 serán los siguientes: 1*0,4+0*0,7=0,4. Ahora que tenemos la entrada, podemos obtener la salida conectando la entrada a la función de activación (más sobre esto más adelante). Ahora que tenemos el resultado, lo pasamos. Y así, repetimos para todas las capas hasta llegar a la neurona de salida. Habiendo lanzado una red de este tipo por primera vez, veremos que la respuesta está lejos de ser correcta, porque la red no está capacitada. Para mejorar los resultados la entrenaremos. Pero antes de aprender cómo hacer esto, introduzcamos algunos términos y propiedades de una red neuronal.

Función de activación

Una función de activación es una forma de normalizar los datos de entrada (hablamos de esto antes). Es decir, si tienes un número grande en la entrada, pasándolo por la función de activación obtendrás una salida en el rango que necesitas. Hay bastantes funciones de activación, por lo que consideraremos las más básicas: Lineal, Sigmoidea (Logística) y Tangente Hiperbólica. Sus principales diferencias son la gama de valores.

función lineal

Esta función casi nunca se utiliza, excepto cuando es necesario probar una red neuronal o pasar un valor sin conversión.

Sigmoideo

Esta es la función de activación más común y su rango de valores es . Aquí es donde se muestran la mayoría de los ejemplos en la web, a veces también se le llama; función logística. En consecuencia, si en su caso hay valores negativos (por ejemplo, las acciones pueden subir no solo sino también bajar), entonces necesitará una función que también capture los valores negativos.

Tangente hiperbólica

Sólo tiene sentido utilizar la tangente hiperbólica cuando tus valores pueden ser tanto negativos como positivos, ya que el rango de la función es [-1,1]. No es recomendable utilizar esta función sólo con valores positivos ya que esto empeorará significativamente los resultados de tu red neuronal.

conjunto de entrenamiento

Un conjunto de entrenamiento es una secuencia de datos sobre la que opera una red neuronal. En nuestro caso de eliminación o (xor), tenemos solo 4 resultados diferentes, es decir, tendremos 4 conjuntos de entrenamiento: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Iteración

Este es un tipo de contador que aumenta cada vez que la red neuronal pasa por un conjunto de entrenamiento. En otras palabras, este es el número total de conjuntos de entrenamiento completados por la red neuronal.

era

Cuando se inicializa la red neuronal, este valor se establece en 0 y tiene un límite establecido manualmente. Cuanto mayor sea la época, mejor entrenada estará la red y, en consecuencia, su resultado. La época aumenta cada vez que repasamos el conjunto completo de conjuntos de entrenamiento, en nuestro caso, 4 conjuntos o 4 iteraciones.

Importante no confunda iteración con época y comprenda la secuencia de su incremento. primera norteuna vez aumenta la iteración, y luego la época y no al revés. En otras palabras, no se puede entrenar primero una red neuronal en un solo conjunto, luego en otro, y así sucesivamente. Debes entrenar cada conjunto una vez por era. De esta forma podrás evitar errores en los cálculos.

Error

El error es un porcentaje que refleja la diferencia entre las respuestas esperadas y recibidas. El error se forma en cada época y debe decaer. Si esto no sucede, entonces algo estás haciendo mal. El error se puede calcular de diferentes formas, pero consideraremos solo tres métodos principales: error cuadrático medio (en adelante MSE), Root MSE y Arctan. No hay restricciones de uso aquí, como en la función de activación, y usted es libre de elegir cualquier método que le brinde mejor resultado. Sólo debes tener en cuenta que cada método cuenta los errores de forma diferente. Con Arctan, el error casi siempre será mayor, ya que funciona según el principio: que más diferencia, mayor será el error. El MSE raíz tendrá el error más pequeño, por lo que lo más común es utilizar un MSE que mantenga el equilibrio en el cálculo del error.

MSE raíz

arctán

El principio de cálculo de los errores es el mismo en todos los casos. Para cada conjunto, contamos el error restando el resultado de la respuesta ideal. A continuación, lo elevamos al cuadrado o calculamos la tangente al cuadrado a partir de esta diferencia, después de lo cual dividimos el número resultante por el número de conjuntos.

Tarea

Ahora, para ponerte a prueba, calcula la salida de una red neuronal determinada usando sigmoide y su error usando MSE.

Datos:

I1=1, I2=0, w1=0,45, w2=0,78, w3=-0,12, w4=0,13, w5=1,5, w6=-2,3.

Solución

Entrada H1 = 1*0,45+0*-0,12=0,45

Salida H1 = sigmoide (0,45) = 0,61

Entrada H2 = 1*0,78+0*0,13=0,78

Salida H2 = sigmoidea(0,78)=0,69

Entrada O1 = 0,61*1,5+0,69*-2,3=-0,672

Salida O1 = sigmoide (-0,672) = 0,33

O1ideal = 1 (0xor1=1)

Error = ((1-0,33)^2)/1=0,45

Resultado - 0,33, error - 45%.

¡Muchas gracias por su atención! Espero que este artículo haya podido ayudarte en el estudio de las redes neuronales. En el próximo artículo, hablaré sobre las neuronas de sesgo y cómo entrenar una red neuronal utilizando el método de retropropagación y descenso de gradiente.

Recursos utilizados:

Hoy en día, en cada esquina, aquí y allá, la gente grita sobre los beneficios de las redes neuronales. Pero sólo unos pocos entienden realmente de qué se trata. Si busca explicaciones en Wikipedia, su cabeza dará vueltas desde lo alto de las ciudadelas de términos y definiciones científicas construidas allí. Si está lejos de la ingeniería genética y el lenguaje confuso y seco de los libros de texto universitarios solo causa confusión y falta de ideas, intentemos resolver juntos el problema de las redes neuronales.

Para comprender el problema, es necesario descubrir la causa raíz, que se encuentra completamente en la superficie. Recordando a Sarah Connor, con un escalofrío en el corazón entendemos que una vez los pioneros desarrollo informático Warren McCulloch y Walter Pitts perseguidos meta egoísta creando la primera Inteligencia Artificial.

Las redes neuronales son un prototipo electrónico de un sistema de autoaprendizaje. Como un niño, una red neuronal absorbe información, la mastica, adquiere experiencia y aprende. Durante el proceso de aprendizaje, dicha red se desarrolla, crece y puede hacer propias conclusiones y tomar decisiones de forma independiente.

Si el cerebro humano está formado por neuronas, entonces podemos aceptar condicionalmente que una neurona electrónica es una especie de caja imaginaria que tiene muchos orificios de entrada y uno de salida. El algoritmo interno de la neurona determina el orden de procesamiento y análisis de la información recibida y la convierte en un único conjunto útil de conocimientos. Dependiendo de qué tan bien funcionen las entradas y salidas, todo el sistema piensa rápidamente o, por el contrario, puede ralentizarse.

Importante: Normalmente, las redes neuronales utilizan información analógica.

Repitamos que puede haber muchos flujos de entrada de información (científicamente, esta conexión entre la información inicial y nuestra "neurona" se llama sinapsis), y todos ellos son de diferente naturaleza y tienen un significado desigual. Por ejemplo, una persona percibe el mundo que le rodea a través de los órganos de la visión, el tacto y el olfato. Es lógico que la visión sea más importante que el olfato. En función de diferentes situaciones de la vida, utilizamos determinados sentidos: en completa oscuridad, el tacto y el oído pasan a primer plano. Sinapsis en redes neuronales por la misma analogía en diferentes situaciones tendrá un significado diferente, que generalmente se indica por el peso de la conexión. Al escribir código, se establece un umbral mínimo para el paso de información. Si el peso de la conexión es mayor que el valor especificado, entonces el resultado de la verificación de la neurona es positivo (y igual a uno V sistema binario), si es menor, entonces negativo. Es lógico que cuanto más alto sea el listón, más preciso será el trabajo de la red neuronal, pero más tiempo llevará.

Para que una red neuronal funcione correctamente, es necesario dedicar tiempo a entrenarla; ésta es la principal diferencia con los algoritmos programables simples. Como niño pequeño, la red neuronal necesita una inicial base de información, pero si escribe el código inicial correctamente, la propia red neuronal no solo podrá tomar la decisión correcta a partir de la información disponible, sino también hacer suposiciones independientes.

Al escribir código primario, debe explicar sus acciones literalmente con los dedos. Si trabajamos, por ejemplo, con imágenes, en la primera etapa nos importará su tamaño y clase. Si la primera característica nos dice el número de entradas, la segunda ayudará a la propia red neuronal a clasificar la información. Idealmente, una vez cargados los datos primarios y comparado la topología de las clases, la propia red neuronal podrá clasificar nueva información. Digamos que decidimos cargar una imagen de 3x5 píxeles. La aritmética simple nos dirá que habrá 3*5=15 entradas. Y la propia clasificación determinará el número total de productos, es decir, neuronas. Otro ejemplo: una red neuronal necesita reconocer la letra "C". El umbral especificado coincide completamente con la letra; esto requerirá una neurona con un número de entradas igual al tamaño de la imagen.

Supongamos que el tamaño será el mismo 3x5 píxeles. Alimentando el programa varias fotos letras o números, le enseñaremos a determinar la imagen del símbolo que necesitamos.

Como en cualquier formación, el alumno debe ser castigado por la respuesta incorrecta, pero no daremos nada por la respuesta correcta. Si el programa percibe la respuesta correcta como Falsa, aumentamos el peso de la entrada en cada sinapsis. Si por el contrario el resultado es incorrecto el programa considera el resultado positivo o Verdadero, entonces restamos el peso de cada entrada a la neurona. Es más lógico empezar a aprender conociendo el símbolo que necesitamos. El primer resultado será incorrecto, pero ajustando ligeramente el código, cuando trabajo adicional el programa funcionará correctamente. El ejemplo dado de un algoritmo para construir código para una red neuronal se llama paquetetrón.


hay mas opciones complejas el trabajo de las redes neuronales con la devolución de datos incorrectos, su análisis y conclusiones lógicas de la propia red. Por ejemplo, un predictor de futuro en línea es una red neuronal bastante programada. Estos programas son capaces de aprender tanto con como sin profesor y se denominan resonancia adaptativa. Su esencia radica en el hecho de que las neuronas ya tienen sus propias expectativas sobre qué tipo de información quieren recibir y en qué forma. Entre las expectativas y la realidad existe un fino umbral, la llamada vigilancia de las neuronas, que ayuda a la red a clasificar correctamente la información entrante y no perder ni un solo píxel. El truco de la red neuronal AR es que aprende de forma independiente desde el principio y determina de forma independiente el umbral de vigilancia de las neuronas. Lo que, a su vez, influye en la clasificación de la información: cuanto más vigilante está la red, más meticulosa es.

Hemos recibido los conocimientos básicos sobre qué son las redes neuronales. Ahora intentemos resumir la información recibida. Entonces, redes neuronales es un prototipo electrónico del pensamiento humano. Consisten en neuronas electrónicas y sinapsis: la información fluye en la entrada y salida de la neurona. Las redes neuronales se programan según el principio de aprendizaje con un profesor (un programador que carga información primaria) o de forma independiente (basándose en suposiciones y expectativas de la información recibida, que es determinada por el mismo programador). Con la ayuda de una red neuronal, es posible crear cualquier sistema: desde la simple determinación de un patrón en imágenes de píxeles hasta el psicodiagnóstico y el análisis económico.

Algoritmos, Aprendizaje automático

Bienvenido a la segunda parte del tutorial de Redes Neuronales. Me gustaría disculparme inmediatamente con todos los que estaban esperando la segunda parte mucho antes. Por ciertas razones tuve que postergar su escritura. De hecho, no esperaba que el primer artículo tuviera tanta demanda y que tanta gente estuviera interesada. este tema. Teniendo en cuenta tus comentarios, intentaré aportarte lo máximo posible. más información y al mismo tiempo mantener el máximo camino claro su presentación. En este artículo, hablaré sobre formas de enseñar/entrenar redes neuronales (en particular, el método de retropropagación) y si, por alguna razón, aún no has leído la primera parte, te recomiendo comenzar con ella. Mientras escribía este artículo, también quería hablar sobre otros tipos de redes neuronales y métodos de entrenamiento, sin embargo, cuando comencé a escribir sobre ellos, me di cuenta de que esto iría en contra de mi método de presentación. Entiendo que estés ansioso por obtener la mayor cantidad de información posible, sin embargo, estos temas son muy amplios y requieren un análisis detallado, y mi objetivo principal no es escribir otro artículo con una explicación superficial, sino transmitirte todos los aspectos del tema. tema y hacer que el desarrollo del artículo sea lo más fácil de entender posible. Me apresuro a molestar a quienes les gusta "codificar", ya que todavía no recurriré al uso de un lenguaje de programación y les explicaré todo "con los dedos". Basta de introducción, sigamos estudiando las redes neuronales.

¿Qué es una neurona de desplazamiento?


Antes de comenzar con nuestro tema principal, debemos introducir el concepto de otro tipo de neurona: una neurona de desplazamiento. Una neurona de desplazamiento o neurona de polarización es el tercer tipo de neurona utilizada en la mayoría de las redes neuronales. La peculiaridad de este tipo de neuronas es que su entrada y salida son siempre iguales a 1 y nunca tienen sinapsis de entrada. Las neuronas de desplazamiento pueden estar presentes en la red neuronal una a la vez por capa, o estar completamente ausentes no pueden ser 50/50 (en rojo en el diagrama están los pesos y las neuronas que no se pueden colocar); Las conexiones de las neuronas de polarización son las mismas que las de las neuronas ordinarias, con todas las neuronas del siguiente nivel, excepto que no puede haber sinapsis entre dos neuronas de polarización. En consecuencia, se pueden colocar en la capa de entrada y en todas las capas ocultas, pero no en la capa de salida, ya que simplemente no tendrán nada con qué formar una conexión.

¿Para qué se utiliza una neurona de desplazamiento?



Se necesita una neurona de desplazamiento para poder obtener un resultado de salida desplazando la gráfica de la función de activación hacia la derecha o hacia la izquierda. Si esto suena confuso, veamos un ejemplo simple donde hay una neurona de entrada y una neurona de salida. Entonces podemos establecer que la salida de O2 será igual a la entrada de H1, multiplicada por su peso, y pasada por la función de activación (fórmula en la foto de la izquierda). En nuestro caso concreto usaremos sigmoide.

De un curso de matemáticas escolar, sabemos que si tomamos una función y = ax+b y cambiamos los valores de “a” en ella, entonces la pendiente de la función cambiará (los colores de las líneas en el gráfico de la izquierda), y si cambiamos “b”, entonces desplazaremos la función hacia la derecha o hacia la izquierda (los colores de las líneas en el gráfico de la derecha). Entonces "a" es el peso de H1 y "b" es el peso de la neurona de polarización B1. Este es un ejemplo aproximado, pero así es como funciona (si observa la función de activación a la derecha de la imagen, notará una gran similitud entre las fórmulas). Es decir, cuando durante el entrenamiento ajustamos los pesos de las neuronas ocultas y de salida, cambiamos la pendiente de la función de activación. Sin embargo, ajustar el peso de las neuronas de polarización puede darnos la oportunidad de desplazar la función de activación a lo largo del eje X y capturar nuevas regiones. En otras palabras, si el punto responsable de su solución está ubicado como se muestra en el gráfico de la izquierda, entonces su red neuronal nunca podrá resolver el problema sin utilizar neuronas de polarización. Por lo tanto, rara vez verá redes neuronales sin neuronas de sesgo.

Además, las neuronas de desplazamiento ayudan en el caso en que todas las neuronas de entrada reciben 0 como entrada y no importa qué pesos tengan, todas pasarán 0 a la siguiente capa, pero no en el caso de la presencia de una neurona de desplazamiento. La presencia o ausencia de neuronas de polarización es un hiperparámetro (más sobre esto más adelante). En resumen, debe decidir por sí mismo si necesita utilizar neuronas de polarización o no ejecutando el NN con y sin neuronas de polarización y comparando los resultados.

IMPORTANTE Tenga en cuenta que a veces las neuronas de desplazamiento no se indican en los diagramas, sino que sus pesos simplemente se tienen en cuenta al calcular el valor de entrada, por ejemplo:

Entrada = H1*w1+H2*w2+b3
b3 = sesgo*w3

Dado que su salida es siempre igual a 1, simplemente podemos imaginar que tenemos una sinapsis adicional con un peso y agregar este peso a la suma sin mencionar la neurona misma.

¿Cómo hacer que la NS dé respuestas correctas?

La respuesta es simple: necesitas entrenarla. Sin embargo, por muy sencilla que sea la respuesta, su implementación en términos de simplicidad deja mucho que desear. Existen varios métodos para enseñar redes neuronales y destacaré 3, en mi opinión, los más interesantes:
  • Método de retropropagación
  • Propagación resiliente o método Rprop
  • Algoritmo genético
Rprop y GA se discutirán en otros artículos, pero ahora veremos la base de lo básico: el método de retropropagación, que utiliza el algoritmo de descenso de gradiente.

¿Qué es el descenso de gradiente?

Esta es una forma de encontrar el mínimo o máximo local de una función moviéndose a lo largo de un gradiente. Si comprende el concepto de descenso de gradiente, no debería tener ninguna pregunta al utilizar el método de retropropagación. Primero, averigüemos qué es un gradiente y dónde está presente en nuestra red neuronal. Construyamos una gráfica donde el eje x serán los valores del peso de la neurona (w) y el eje y será el error correspondiente a este peso (e).


Mirando este gráfico, entenderemos que el gráfico de la función f(w) es la dependencia del error del peso seleccionado. En esta gráfica, nos interesa el mínimo global: el punto (w2,e2) o, en otras palabras, el lugar donde la gráfica se acerca más al eje x. Este punto significará que eligiendo el peso w2 obtendremos el menor error - e2 y, como consecuencia, el mejor resultado de todos los posibles. El método de descenso del gradiente nos ayudará a encontrar este punto (el gradiente se indica en amarillo en el gráfico). En consecuencia, cada peso en la red neuronal tendrá su propio gráfico y gradiente, y para cada uno es necesario encontrar un mínimo global.

Entonces, ¿qué es este gradiente? Un gradiente es un vector que determina la inclinación de una pendiente e indica su dirección con respecto a cualquier punto de una superficie o gráfico. Para encontrar el gradiente necesitas tomar la derivada del gráfico en un punto dado (como se muestra en el gráfico). Avanzando en dirección a esta pendiente, nos deslizaremos suavemente hacia el valle. Ahora imagina que el error es un esquiador y la gráfica de la función es una montaña. En consecuencia, si el error es del 100%, entonces el esquiador se encuentra en la cima de la montaña, y si el error es del 0%, en la base. Como todo esquiador, el error intenta bajar lo más rápido posible y reducir su valor. Al final deberíamos obtener el siguiente resultado:


Imaginemos que un esquiador es arrojado, utilizando un helicóptero, a una montaña. Qué tan alto o bajo depende del caso (similar a cómo en una red neuronal, al inicializar, los pesos se colocan en un orden aleatorio). Digamos que el error es del 90% y este es nuestro punto de partida. Ahora el esquiador debe descender siguiendo una pendiente. En la bajada, en cada punto calcularemos la pendiente, que nos mostrará la dirección de bajada y, cuando cambie la pendiente, la corregiremos. Si la pendiente es recta, después del enésimo número de tales acciones llegaremos a las tierras bajas. Pero en la mayoría de los casos la pendiente (gráfico de función) será ondulada y nuestro esquiador se enfrentará a un problema muy grave: un mínimo local. Creo que todo el mundo sabe qué es un mínimo local y global de una función, para refrescar la memoria aquí hay un ejemplo. Llegar a un mínimo local conlleva el hecho de que nuestro esquiador permanecerá para siempre en esta tierra baja y nunca rodará montaña abajo, por lo que nunca podremos obtener la respuesta correcta. Pero esto podemos evitarlo equipando a nuestro esquiador con un jetpack llamado impulso. He aquí una breve ilustración del momento:

Como probablemente ya habrás adivinado, esta mochila le dará al esquiador la aceleración necesaria para superar el cerro que nos mantiene en el mínimo local, pero aquí hay un PERO. Imaginemos que establecimos un valor determinado para el parámetro de momento y pudimos superar fácilmente todos los mínimos locales y alcanzar el mínimo global. Dado que no podemos simplemente apagar el jetpack, podemos saltarnos el mínimo global si todavía hay mínimos cerca de él. En última instancia, esto no es tan importante, ya que tarde o temprano volveremos al mínimo global, pero conviene recordar que cuanto mayor sea el momento, mayor será el alcance con el que el esquiador esquiará en zonas bajas. Además del momento, el método de retropropagación también utiliza un parámetro como la tasa de aprendizaje. Como muchos probablemente pensarán, entonces más velocidad Cuanto más entrenemos, más rápido entrenamos la red neuronal. No. La tasa de aprendizaje, así como el par, es un hiperparámetro, un valor que se selecciona mediante prueba y error. La velocidad de aprendizaje puede estar directamente relacionada con la velocidad del esquiador y podemos decir con seguridad que cuanto más lejos vayas, más tranquilo irás. Sin embargo, aquí también hay ciertos aspectos, ya que si no le damos ninguna velocidad al esquiador, no irá a ninguna parte, y si le damos una velocidad baja, entonces el tiempo de viaje puede alargarse durante un tiempo muy , período de tiempo muy largo. ¿Qué pasa entonces si damos demasiada velocidad?


Como puedes ver, nada bueno. El esquiador comenzará a deslizarse por el camino equivocado y quizás incluso en la dirección contraria, lo que, como comprenderás, sólo nos alejará de encontrar la respuesta correcta. Por lo tanto, en todos estos parámetros es necesario encontrar media dorada para evitar la no convergencia del NS (más sobre esto más adelante).

¿Qué es el método? Propagación hacia atrás(MOR)?

Ahora hemos llegado al punto en el que podemos discutir cómo asegurarnos de que su Sociedad Nacional pueda aprender correctamente y tomar las decisiones correctas. El AMP está muy bien visualizado en este GIF:


Ahora veamos cada etapa en detalle. Si recuerdas, en el artículo anterior calculamos la salida del NS. De otra forma, esto se llama paso directo, es decir, transferimos información secuencialmente desde las neuronas de entrada a las de salida. Luego de lo cual calculamos el error y, en base a él, hacemos una transmisión inversa, que consiste en cambiar secuencialmente los pesos de la red neuronal, comenzando por los pesos de la neurona de salida. El valor de las escalas cambiará en la dirección que nos dará el mejor resultado. En mis cálculos utilizaré el método de encontrar el delta, ya que es el método más simple y comprensible. También usaré un método estocástico para actualizar los pesos (más sobre esto más adelante).

Ahora continuemos desde donde dejamos los cálculos en el artículo anterior.

Datos de tareas del artículo anterior.


Datos: I1=1, I2=0, w1=0,45, w2=0,78,w3=-0,12,w4=0,13,w5=1,5,w6=-2,3.

Entrada H1 = 1*0,45+0*-0,12=0,45
Salida H1 = sigmoide (0,45) = 0,61

Entrada H2 = 1*0,78+0*0,13=0,78
Salida H2 = sigmoidea(0,78)=0,69

Entrada O1 = 0,61*1,5+0,69*-2,3=-0,672
Salida O1 = sigmoide (-0,672) = 0,33

O1ideal = 1 (0xor1=1)

Error = ((1-0,33)^2)/1=0,45

Resultado - 0,33, error - 45%.


Como ya hemos calculado el resultado del NN y su error, podemos proceder inmediatamente al MOR. Como mencioné anteriormente, el algoritmo siempre comienza con una neurona de salida. En ese caso, ¿calculemos su valor? (delta) según la fórmula 1.

Como la neurona de salida no tiene sinapsis salientes, usaremos la primera fórmula (? salida), por lo tanto para las neuronas ocultas ya usaremos la segunda fórmula (? oculta). Aquí todo es bastante simple: calculamos la diferencia entre el resultado deseado y el obtenido y lo multiplicamos por la derivada de la función de activación del valor de entrada de una neurona determinada. Antes de comenzar los cálculos, quiero llamar su atención sobre la derivada. En primer lugar, como probablemente ya haya quedado claro, con MOR es necesario utilizar sólo aquellas funciones de activación que se puedan diferenciar. En segundo lugar, para evitar cálculos innecesarios, la fórmula derivada se puede reemplazar con una fórmula más amigable y simple de la forma:


Por tanto, nuestros cálculos para el punto O1 se verán así.

Solución

Salida O1 = 0,33
O1ideal = 1
Error = 0,45

O1 = (1 - 0,33) * ((1 - 0,33) * 0,33) = 0,148


Esto completa los cálculos para la neurona O1. Recuerde que después de calcular el delta de una neurona, debemos actualizar inmediatamente los pesos de todas las sinapsis salientes de esta neurona. Como en el caso de O1 no las hay, pasamos a las neuronas del nivel oculto y hacemos lo mismo, salvo que ahora tenemos la segunda fórmula para calcular el delta y su esencia es multiplicar la derivada de la función de activación. del valor de entrada por la suma de los productos de todos los pesos salientes y el delta de la neurona con la que está conectada esta sinapsis. Pero ¿por qué las fórmulas son diferentes? El hecho es que el objetivo del MOP es distribuir el error de las neuronas de salida a todos los pesos del NN. El error se puede calcular solo a nivel de salida, como ya lo hicimos, también calculamos el delta en el que ya existe este error. En consecuencia, ahora usaremos un delta en lugar de un error, que se transmitirá de neurona a neurona. En este caso, encontremos el delta para H1:

Solución

Salida H1 = 0,61
w5 = 1,5
?O1 = 0,148

H1 = ((1 - 0,61) * 0,61) * (1,5 * 0,148) = 0,053


Ahora necesitamos encontrar el gradiente para cada sinapsis saliente. Aquí es donde normalmente insertan una fracción de 3 niveles con un montón de derivadas y demás infiernos matemáticos, pero eso es lo bueno de usar el método de conteo delta, porque en última instancia tu fórmula para encontrar el gradiente se verá así:

Aquí el punto A es el punto al comienzo de la sinapsis y el punto B está al final de la sinapsis. Entonces podemos calcular el gradiente de w5 de esta manera:

Solución

Salida H1 = 0,61
?O1 = 0,148

GRADw5 = 0,61 * 0,148 = 0,09


Ahora tenemos todos los datos necesarios para actualizar el peso w5 y lo haremos gracias a la función MOP, que calcula la cantidad en la que se debe cambiar tal o cual peso y se ve así:


Le recomiendo encarecidamente que no ignore la segunda parte de la expresión y utilice el momento, ya que esto le permitirá evitar problemas con un mínimo local.

Aquí vemos 2 constantes de las que ya hablamos cuando analizamos el algoritmo de descenso de gradiente: E (épsilon): tasa de aprendizaje, ? (alfa) - momento. Al traducir la fórmula en palabras, obtenemos: el cambio en el peso de la sinapsis es igual al coeficiente de tasa de aprendizaje multiplicado por el gradiente de este peso, agregue el momento multiplicado por el cambio anterior en este peso (en la primera iteración es 0). En este caso, calculemos el cambio en el peso w5 y actualicemos su valor sumándole ?w5.

Solución

mi = 0,7
? = 0.3
w5 = 1,5
GRADw5 = 0,09
?w5(i-1) = 0

W5 = 0,7 * 0,09 + 0 * 0,3 = 0,063
w5 = w5 + ?w5 = 1,563


Así, tras aplicar el algoritmo, nuestro peso aumentó en 0,063. Ahora te sugiero que hagas lo mismo con H2.

Solución

Salida de H2 = 0,69
w6 = -2,3
?O1 = 0,148
mi = 0,7
? = 0.3
?w6(i-1) = 0

H2 = ((1 - 0,69) * 0,69) * (-2,3 * 0,148) = -0,07

GRADw6 = 0,69 * 0,148 = 0,1

W6 = 0,7 * 0,1 + 0 * 0,3 = 0,07

W6 = w6 + ?w6 = -2,2


Y por supuesto, no te olvides de I1 e I2, porque también tienen sinapsis cuyos pesos también debemos actualizar. Sin embargo, recuerde que no necesitamos encontrar deltas para las neuronas de entrada ya que no tienen sinapsis de entrada.

Solución

w1 = 0,45, ?w1(i-1) = 0
w2 = 0,78, ?w2(i-1) = 0
w3 = -0,12, ?w3(i-1) = 0
w4 = 0,13, ?w4(i-1) = 0
?H1 = 0,053
?H2 = -0,07
mi = 0,7
? = 0.3

GRADw1 = 1 * 0,053 = 0,053
GRADw2 = 1 * -0,07 = -0,07
GRADw3 = 0 * 0,053 = 0
GRADw4 = 0 * -0,07 = 0

W1 = 0,7 * 0,053 + 0 * 0,3 = 0,04
?w2 = 0,7 * -0,07 + 0 * 0,3 = -0,05
?w3 = 0,7 * 0 + 0 * 0,3 = 0
?w4 = 0,7 * 0 + 0 * 0,3 = 0

W1 = w1 + ?w1 = 0,5
w2 = w2 + ?w2 = 0,73
w3 = w3 + ?w3 = -0,12
w4 = w4 + ?w4 = 0,13


Ahora asegurémonos de haber hecho todo correctamente y calculemos nuevamente la salida de la red neuronal solo con pesos actualizados.

Solución

Yo1 = 1
Yo2 = 0
w1 = 0,5
w2 = 0,73
w3 = -0,12
w4 = 0,13
w5 = 1,563
w6 = -2,2

Entrada H1 = 1 * 0,5 + 0 * -0,12 = 0,5
Salida H1 = sigmoide (0,5) = 0,62

Entrada H2 = 1 * 0,73 + 0 * 0,124 = 0,73
Salida H2 = sigmoide (0,73) = 0,675

Entrada O1 = 0,62* 1,563 + 0,675 * -2,2 = -0,51
Salida O1 = sigmoide (-0,51) = 0,37

O1ideal = 1 (0xor1=1)

Error = ((1-0,37)^2)/1=0,39

Resultado - 0,37, error - 39%.


Como podemos ver después de una iteración de MOP, logramos reducir el error en un 0,04 (6%). Ahora debes repetir esto una y otra vez hasta que el error sea lo suficientemente pequeño.

¿Qué más necesitas saber sobre el proceso de aprendizaje?

Una red neuronal se puede entrenar con o sin profesor (aprendizaje supervisado, no supervisado).

Formación tutelada- este es el tipo de entrenamiento inherente a problemas como la regresión y la clasificación (lo usamos en el ejemplo anterior). En otras palabras, aquí tú actúas como profesor y el SN como alumno. Usted proporciona los datos de entrada y el resultado deseado, es decir, el estudiante, al observar los datos de entrada, comprenderá que debe esforzarse por lograr el resultado que usted le proporcionó.

Aprendizaje no supervisado- Este tipo de formación no se produce con mucha frecuencia. Aquí no hay ningún profesor, por lo que la red no obtiene el resultado deseado o el número de ellos es muy reducido. Básicamente, este tipo de entrenamiento es inherente a las redes neuronales cuya tarea es agrupar datos según determinados parámetros. Digamos que envía 10.000 artículos sobre Habré y después de analizar todos estos artículos, la NS podrá distribuirlos en categorías basadas, por ejemplo, en palabras que aparecen con frecuencia. Artículos que mencionan lenguajes de programación, a programar, y donde hay palabras como Photoshop, a diseñar.

También existe un método tan interesante como aprendizaje por refuerzo(aprendizaje por refuerzo). Este método merece un artículo aparte, pero intentaré describir brevemente su esencia. Este método es aplicable cuando podemos, en base a los resultados recibidos de la Sociedad Nacional, darle una evaluación. Por ejemplo, queremos enseñarle a la NS a jugar PAC-MAN, luego, cada vez que la NS obtenga muchos puntos, la animaremos. En otras palabras, damos a la SN el derecho de encontrar cualquier manera de lograr el objetivo, siempre que le dé buen resultado. De esta manera, la red comienza a comprender lo que quiere lograr con ella y trata de encontrar la mejor manera de lograr este objetivo sin proporcionar constantemente datos del “maestro”.

La capacitación también se puede realizar utilizando tres métodos: método estocástico, método por lotes y método de mini lotes. Hay tantos artículos y estudios sobre qué método es mejor y nadie puede llegar a una respuesta general. Soy partidario del método estocástico, pero no niego que cada método tiene sus pros y sus contras.

Brevemente sobre cada método:

estocástico(a veces también se le llama en línea) el método funciona de acuerdo con el siguiente principio: encontrado?w, actualice inmediatamente el peso correspondiente.

método por lotes funciona de manera diferente. Sumamos el ?w de todos los pesos en la iteración actual y solo entonces actualizamos todos los pesos usando esta suma. Una de las ventajas más importantes de este enfoque es el importante ahorro en tiempo de cálculo, pero en este caso la precisión puede verse muy afectada.

Método de mini lotes es un medio de oro e intenta combinar las ventajas de ambos métodos. Aquí el principio es este: distribuimos libremente los pesos en grupos y cambiamos sus pesos por la suma de todos los pesos en un grupo particular.

¿Qué son los hiperparámetros?

Los hiperparámetros son valores que deben seleccionarse manualmente y, a menudo, mediante prueba y error. Entre estos valores se encuentran:
  • Momento y velocidad de aprendizaje.
  • Número de capas ocultas
  • Número de neuronas en cada capa.
  • Presencia o ausencia de neuronas de desplazamiento.
Otros tipos de redes neuronales contienen hiperparámetros adicionales, pero no hablaremos de ellos. Elegir los hiperparámetros correctos es muy importante y afectará directamente la convergencia de su NN. Es bastante sencillo entender si vale la pena utilizar neuronas de desplazamiento o no. El número de capas ocultas y de neuronas que contienen se puede calcular mediante fuerza bruta basándose en una regla sencilla- Cuantas más neuronas, más preciso será el resultado y exponencialmente más tiempo dedicarás a entrenarlo. Sin embargo, vale la pena recordar que no se debe crear una red neuronal con 1000 neuronas para resolver tareas simples. Pero con la elección del momento y la velocidad de aprendizaje, todo es un poco más complicado. Estos hiperparámetros variarán según la tarea en cuestión y la arquitectura de la red neuronal. Por ejemplo, para resolver XOR, la tasa de aprendizaje puede estar en el rango de 0,3 a 0,7, pero en una red neuronal que analiza y predice los precios de las acciones, una tasa de aprendizaje superior a 0,00001 conduce a una mala convergencia de la red neuronal. No deberías centrar tu atención en los hiperparámetros ahora y tratar de comprender a fondo cómo elegirlos. Esto vendrá con la experiencia, pero por ahora le aconsejo que simplemente experimente y busque ejemplos de cómo resolver un problema particular en Internet.

¿Qué es la convergencia?



La convergencia indica si la arquitectura NN es correcta y si los hiperparámetros se seleccionaron correctamente de acuerdo con la tarea. Digamos que nuestro programa muestra el error NS en cada iteración en el registro. Si el error disminuye con cada iteración, entonces estamos en en el camino correcto y nuestro NS converge. Si el error salta hacia arriba y hacia abajo o se congela un cierto nivel, entonces el NS no converge. En el 99% de los casos esto se soluciona cambiando los hiperparámetros. El 1% restante significará que tienes un error en la arquitectura de la red neuronal. También sucede que la convergencia se ve afectada por el reentrenamiento del NN.

¿Qué es el reciclaje?

El sobreajuste, como su nombre indica, es el estado de una red neuronal cuando está sobresaturada de datos. Este problema ocurre si entrena la red con los mismos datos durante demasiado tiempo. En otras palabras, la red comenzará a no aprender de los datos, sino a recordarlos y “abarrotarlos”. En consecuencia, cuando envía nuevos datos a la entrada de esta red neuronal, puede aparecer ruido en los datos recibidos, lo que afectará la precisión del resultado. Por ejemplo, si mostramos NS fotos diferentes manzanas (solo las rojas) y diga que es una manzana. Entonces, cuando el NN vea una manzana amarilla o verde, no podrá determinar que es una manzana, ya que ha recordado que todas las manzanas deben ser rojas. Por el contrario, cuando el NN ve algo rojo y con forma de manzana, como un melocotón, dirá que es una manzana. Esto es ruido. En el gráfico, el ruido se verá así.


Se puede ver que la gráfica de la función fluctúa mucho de un punto a otro, que son los datos de salida (resultado) de nuestro NN. Idealmente, este gráfico debería ser menos ondulado y recto. Para evitar el sobreentrenamiento, no debe entrenar la red neuronal durante mucho tiempo con los mismos datos o con datos muy similares. Además, se puede producir un sobreajuste. un gran número parámetros que usted proporciona a la entrada del NS o una arquitectura demasiado compleja. Por lo tanto, cuando observe errores (ruido) en la salida después de la fase de entrenamiento, deberá utilizar uno de los métodos de regularización, pero en la mayoría de los casos esto no será necesario.

Conclusión

Espero que este artículo haya podido aclarar los puntos clave de un tema tan difícil como las Redes Neuronales. Sin embargo, creo que no importa cuántos artículos leas, es imposible dominar un tema tan complejo sin práctica. Por lo tanto, si recién está comenzando su viaje y desea explorar esta industria prometedora y en desarrollo, le aconsejo que comience a practicar escribiendo su propia red neuronal y solo luego recurra a la ayuda de varios marcos y bibliotecas. Además, si está interesado en mi método de presentar información y desea que escriba artículos sobre otros temas relacionados con el aprendizaje automático, vote en la encuesta a continuación por el tema que le interese. Nos vemos en futuros artículos :)

En los últimos años, el progreso tecnológico se ha acelerado tanto que ha dejado de sorprendernos especialmente. Casi nos hemos acostumbrado a la idea de que en los próximos años las carreteras estarán llenas de coches autónomos, y ordenador personal como interlocutor será más interesante que la mayoría de las personas. Este salto tecnológico está garantizado por un gran avance en un nuevo campo del conocimiento: las redes neuronales. Incluso aquellos que nunca han estado interesados ​​en el mundo de las TI deberían saber de qué se trata.

Breve descripción del fenómeno.

Red neuronal Se denominan sistemas informáticos que tener la capacidad de autoaprender y aumento gradual de la productividad. Se utilizan para resolver problemas que no se pueden programar lógicamente:

  • Aprendizaje automático: un tipo inteligencia artificial. Su peculiaridad radica en el aprendizaje gradual utilizando el ejemplo de millones de tareas similares;
  • En robótica, el sistema se utiliza en el desarrollo de numerosos algoritmos para los “cerebros” de hierro de los sistemas automáticos;
  • Arquitectos sistemas informáticos encontrar una de las soluciones al problema de la computación paralela en redes neuronales;
  • También hay muchas otras opciones de implementación: resolución de problemas puramente matemáticos, modelado informático de inteligencia natural, etc.

Los principales elementos de dicha red son:

  1. Las neuronas artificiales son unidades elementales interconectadas;
  2. Synapse es una conexión que sirve para enviar y recibir datos entre neuronas;
  3. Señal: información a transmitir.

Redes neuronales convolucionales

Uno de los tipos más populares de redes neuronales es el llamado convolucional, que ha demostrado su eficacia en el reconocimiento de patrones visuales (imágenes y vídeos), sistemas de recomendación y procesamiento del lenguaje natural:

  • Se escalan perfectamente y pueden usarse para el reconocimiento de imágenes de resolución arbitrariamente alta;
  • Utilizan neuronas volumétricas (tridimensionales). Las neuronas dentro de la capa están conectadas sólo por pequeñas áreas llamadas campo receptivo;
  • Las neuronas de las capas vecinas se conectan mediante el mecanismo de localización espacial. El apilamiento de muchas de estas capas proporciona la apariencia de filtros no lineales que comienzan a responder a todos numero mayor píxeles;
  • Cada filtro se expande para cubrir todo el campo de visión. Estas unidades se replican, se dividen los parámetros existentes y se forma un mapa. Así, todas las neuronas de una determinada capa convolucional comienzan a responder al mismo objeto (dentro de una región de respuesta específica).

Excursión a la historia.

La implementación práctica de la teoría del aprendizaje automático solo ha sido posible hoy en día, gracias a la aparición de hardware relativamente barato y al mismo tiempo potente. Sin embargo, la investigación teórica sobre este tema se remonta a décadas atrás:

  • Primero modelo computacional la lógica de umbral basada en matemáticas y algoritmos fue construida por Warren McCulloch y Walter Pitts en 1943;
  • A finales de la década de 1940, Donald Hebb desarrolló el mecanismo de la plasticidad neuronal y con ello estableció las reglas para los autómatas de aprendizaje;
  • La primera aplicación de los descubrimientos teóricos al funcionamiento de ordenadores se remonta a 1954. Alison Clarke utilizó una calculadora normal para estos fines;
  • Frank Rosenblatt desarrolló un algoritmo de reconocimiento de patrones y una notación matemática en 1958;
  • A finales de la década de 1960, el interés científico por el problema se desvaneció notablemente debido a la imposibilidad de su aplicación con las capacidades hardware de la época;
  • La cibernética no volvió a las redes neuronales hasta principios de la década de 1980: apareció un sistema con un mecanismo de retroalimentación, se desarrollaron algoritmos de autoaprendizaje y se sentaron las bases de la disciplina de la minería de datos;
  • En la década de 2000 potencia informática La computadora ha crecido tanto que ha hecho posible hacer realidad las aspiraciones más descabelladas de los científicos de salón. Los programas de reconocimiento de voz se han generalizado, visión por computadora etc.

Red neuronal de Hopfield

En 1982, el científico estadounidense John Hopfield describió nueva apariencia sistema computacional, que ahora lleva su nombre. Entre sus rasgos característicos:

  1. Los bloques de la red solo pueden tomar dos valores para describir su estado: 1 y -1. Cada par de unidades de valor indica la posibilidad o imposibilidad de conectar nodos del gráfico;
  2. La actualización de un único nodo en un gráfico de simulación de neuronas artificiales se realiza de forma asincrónica o sincrónica. En el primer caso, sólo se actualiza un bloque, que puede seleccionarse aleatoriamente. En el segundo caso, todos los bloques se actualizan simultáneamente;
  3. Una red se caracteriza por un estado llamado "energía". Las actualizaciones de red siempre ocurren cuando valores máximos energía;
  4. Las reglas para aprender una red son similares a los mecanismos de la inteligencia humana. Es posible conectar datos nuevos tanto utilizando datos antiguos (regla local) como sin hacer referencia a muestras antiguas (regla adicional).

Debido a su proximidad a muestras biológicas, este modelo se utiliza a menudo para comprender el funcionamiento de la memoria humana.

Principales limitaciones y problemas.

Lista de principales afirma métodos modernos análisis predictivo Los datos se reducen a lo siguiente:

  1. Se necesita mucho tiempo para recopilar la información adecuada y posteriormente entrenar la máquina. Principalmente preocupado por la robótica;
  2. Ninguno de los sistemas existentes actualmente es capaz de resolver problemas matemáticos fundamentales (el problema del viajante y la factorización de grandes números);
  3. Alta complejidad de creación, configuración y mantenimiento de sistemas. Esto requiere especialistas muy cualificados, cuyos servicios sólo las grandes corporaciones pueden permitirse pagar;
  4. Para trabajo eficiente Se requieren granjas de computadoras y software de alto rendimiento. El problema se está resolviendo gradualmente aumentando la potencia del hardware. GPU: De 1991 a 2015 aumentó un millón de veces.

A pesar de los numerosos problemas, las redes neuronales son lo mejor que tiene actualmente la humanidad en el camino hacia la inteligencia artificial. Se utilizan en casi todas partes: pilotos automáticos en aviones y automóviles, programas para detectar fraudes con tarjetas de credito, dominar el juego de Go (juego de mesa lógico), etc.

Redes neuronales recurrentes

Si las conexiones entre bloques forman un ciclo dirigido (comienzan y terminan en el mismo vértice del gráfico), entonces estamos hablando de red neuronal recurrente:

  • Cada conexión tiene un peso determinado (prioridad);
  • Los nodos se dividen en dos tipos: nodos de entrada, de salida y nodos ocultos;
  • La información se puede transmitir no solo directamente (capa por capa), sino también entre neuronas. De este modo, los elementos individuales pueden recibir datos sobre la posición anterior del sistema;
  • Una característica distintiva es el llamado concepto de atención: la máquina puede señalar ciertos datos que requieren un procesamiento en profundidad.

Por sus características de diseño, la red se utiliza para resolver amplia gama tareas:

  • Reconocimiento de datos verbales y textuales;
  • Al mismo tiempo, es difícil comprender el significado del texto: la máquina “ve” sólo una imagen visual sin referencia a características cualitativas;
  • TRN se utiliza actualmente en sistemas automatizados de traducción de textos (por ejemplo, Yandex.Translator).

Si en el siglo XX las personas mas inteligentes Los planetas diseñaban cohetes, ahora las redes neuronales son objeto de aplicación de su potencial intelectual. Es difícil no saber qué es esto hoy en día, porque los principales medios de comunicación anuncian a cada paso los logros en este ámbito. Los ejemplos más famosos: asistente de voz Manzana Siri, traductor en línea Google Translate, motor de búsqueda Yandex "Palekh". Y esto es sólo el comienzo del camino hacia la inteligencia artificial en toda regla.

Vídeo sobre el diseño de redes neuronales.

EN en este vídeo Oleg Voloshin lo dirá en lenguaje sencillo Cómo funcionan las redes neuronales modernas, en qué se basa su funcionalidad:

Los temas de la inteligencia artificial y las redes neuronales son cada vez más populares que nunca. Muchos usuarios recurren cada vez más a nosotros con preguntas sobre cómo funcionan las redes neuronales, qué son y cuál es el principio de su funcionamiento.

Estas preguntas, además de su popularidad, también tienen una complejidad considerable, ya que los procesos representan algoritmos complejos aprendizaje automático, diseñado para una variedad de propósitos, desde analizar cambios hasta modelar los riesgos asociados con ciertas acciones.

¿Qué son las redes neuronales y sus tipos?

La primera pregunta que surge a los interesados ​​es, ¿qué es una red neuronal? En la definición clásica, se trata de una determinada secuencia de neuronas que están interconectadas por sinapsis. Las redes neuronales son un modelo simplificado de análogos biológicos.

Un programa con estructura de red neuronal permite a la máquina analizar datos de entrada y recordar el resultado obtenido de determinadas fuentes. Posteriormente, este enfoque permite recuperar de la memoria el resultado correspondiente al conjunto de datos actual, si ya estaba disponible en la experiencia de los ciclos de red.

Mucha gente percibe una red neuronal como un análogo del cerebro humano. Por un lado, este juicio puede considerarse cercano a la verdad, pero, por otro lado, el cerebro humano es un mecanismo demasiado complejo para que sea posible recrearlo con la ayuda de una máquina, incluso en una fracción de segundo. por ciento. Una red neuronal es, ante todo, un programa basado en el principio del cerebro, pero de ningún modo su análogo.

Una red neuronal es un conjunto de neuronas, cada una de las cuales recibe información, la procesa y la transmite a otra neurona. Cada neurona procesa la señal exactamente de la misma manera.

¿Cómo entonces se obtienen resultados diferentes? Se trata de las sinapsis que conectan las neuronas entre sí. Una neurona puede tener una gran cantidad de sinapsis que fortalecen o debilitan la señal y tienen la capacidad de cambiar sus características con el tiempo.

Son los parámetros de sinapsis correctamente seleccionados los que permiten obtener el resultado correcto de la transformación de los datos de entrada en la salida.

Habiendo decidido esquema general, qué es una red neuronal, podemos distinguir los principales tipos de su clasificación. Antes de proceder a la clasificación conviene hacer una aclaración. Cada red tiene una primera capa de neuronas, llamada capa de entrada.

No realiza ningún cálculo ni transformación, su tarea es una sola: recibir y distribuir a otras neuronas. señales de entrada. Ésta es la única capa común a todos los tipos de redes neuronales; su estructura adicional es el criterio para la división principal.

  • Red neuronal de una sola capa. Se trata de una estructura para la interacción de neuronas, en la que, después de que los datos de entrada ingresan a la primera capa de entrada, el resultado final se transfiere inmediatamente a la capa de salida. En este caso no se considera la primera capa de entrada, ya que no realiza más acciones que la recepción y distribución, esto ya se ha mencionado anteriormente. Y la segunda capa realiza todos los cálculos y procesamientos necesarios y genera inmediatamente resultado final. Las neuronas de entrada se combinan con la capa principal mediante sinapsis que tienen diferentes coeficientes de ponderación, lo que garantiza la calidad de las conexiones.
  • Red neuronal multicapa. Como se desprende de la definición, este tipo de red neuronal, además de las capas de entrada y salida, también tiene capas intermedias. Su número depende de la complejidad de la propia red. Se parece más a la estructura de una red neuronal biológica. Este tipo de redes se desarrollaron bastante recientemente; antes de eso, todos los procesos se implementaban mediante redes de una sola capa. Respectivamente solución similar tiene mucho más posibilidades que su antepasado. En el proceso de procesamiento de información, todos capa intermedia Representa una etapa intermedia de procesamiento y distribución de información.

Dependiendo de la dirección de distribución de la información entre las sinapsis de una neurona a otra, las redes también se pueden clasificar en dos categorías.

  • Redes de propagación directa o unidireccionales, es decir, una estructura en la que la señal se mueve estrictamente desde la capa de entrada a la capa de salida. El movimiento de la señal en la dirección opuesta es imposible. Desarrollos similares están bastante extendidos en momento presente Resolver con éxito problemas como reconocimiento, predicciones o agrupamiento.
  • Redes con retroalimentación o recurrentes. Redes similares Permita que la señal se mueva no solo en la dirección de avance, sino también en la dirección de retroceso. ¿Qué aporta esto? En tales redes, el resultado de la salida se puede devolver a la entrada en base a esto, la salida de la neurona está determinada por los pesos y las señales de entrada, y se complementa con las salidas anteriores, que nuevamente se devuelven a la entrada. Estas redes tienen una función característica memoria a corto plazo, sobre cuya base se restauran y complementan las señales durante el procesamiento.

Estas no son las únicas opciones para clasificar las redes.

Se pueden dividir en homogéneas e híbridas según los tipos de neuronas que componen la red. Y también heteroasociativo o autoasociativo, según el método de formación en red, con o sin profesor. También puedes clasificar las redes según su finalidad.

¿Dónde se utilizan las redes neuronales?

Las redes neuronales se utilizan para resolver una variedad de problemas. Si consideramos las tareas por grado de complejidad, entonces la habitual es adecuada para resolver los problemas más simples. programa de computadora, más
Para problemas complejos que requieren pronósticos simples o solución aproximada de ecuaciones, se utilizan programas que utilizan métodos estadísticos.

Pero las tareas de un nivel aún más complejo requieren un enfoque completamente diferente. Esto se aplica en particular al reconocimiento de patrones, el reconocimiento de voz o la predicción compleja. En la cabeza de una persona, tales procesos ocurren de manera inconsciente, es decir, al reconocer y recordar imágenes, una persona no es consciente de cómo ocurre este proceso y, en consecuencia, no puede controlarlo.

Son precisamente estos problemas los que ayudan a resolver las redes neuronales, es decir, se crean para realizar procesos cuyos algoritmos se desconocen.

Así, las redes neuronales se utilizan ampliamente en las siguientes áreas:

  • reconocimiento, y esta dirección es actualmente la más amplia;
  • predecir el siguiente paso, esta característica es aplicable en el comercio y los mercados de valores;
  • clasificación de los datos de entrada por parámetros; esta función la realizan robots de crédito, que pueden tomar una decisión sobre la aprobación de un préstamo a una persona, basándose en un conjunto de datos de entrada de diferentes parámetros.

Las capacidades de las redes neuronales las hacen muy populares. Se les pueden enseñar muchas cosas, como jugar, reconocer una determinada voz, etc. Partiendo del hecho de que las redes artificiales se construyen según el principio de las redes biológicas, se les pueden enseñar todos los procesos que realiza una persona de forma inconsciente.

¿Qué es una neurona y una sinapsis?

Entonces, ¿qué es una neurona en términos de redes neuronales artificiales? Este concepto se refiere a una unidad que realiza cálculos. Recibe información de la capa de entrada de la red, realiza cálculos simples con ella y la envía a la siguiente neurona.

La red contiene tres tipos de neuronas: de entrada, ocultas y de salida. Además, si la red es de una sola capa, entonces no contiene neuronas ocultas. Además, existen una variedad de unidades llamadas neuronas de desplazamiento y neuronas de contexto.

Cada neurona tiene dos tipos de datos: entrada y salida. En este caso, los datos de entrada de la primera capa son iguales a los datos de salida. En otros casos, la entrada de la neurona recibe la información total de las capas anteriores, luego pasa por el proceso de normalización, es decir, todos los valores que se caen de rango requerido, son transformados por la función de activación.

Como se mencionó anteriormente, una sinapsis es una conexión entre neuronas, cada una de las cuales tiene su propio grado de peso. Es gracias a esta característica que la información de entrada cambia durante el proceso de transmisión. Durante el procesamiento, predominará la información transmitida por la sinapsis con gran peso.

Resulta que el resultado no está influenciado por las neuronas, sino por las sinapsis que dan un cierto conjunto de pesos a los datos de entrada, ya que las propias neuronas realizan exactamente los mismos cálculos cada vez.

En este caso, los pesos se establecen en orden aleatorio.

Esquema de funcionamiento de una red neuronal.

Para imaginar el principio de funcionamiento de una red neuronal no se requieren habilidades especiales. La capa de entrada de las neuronas recibe cierta información. Se transmite a través de sinapsis a la siguiente capa, donde cada sinapsis tiene su propio coeficiente de peso y cada neurona posterior puede tener varias sinapsis entrantes.

Como resultado, la información recibida por la siguiente neurona es la suma de todos los datos, cada uno multiplicado por su propio coeficiente de peso. El valor resultante se sustituye en la función de activación y se obtiene la información de salida, que se transmite más hasta llegar a la salida final. El primer lanzamiento de la red no da los resultados correctos, ya que la red aún no está entrenada.

La función de activación se utiliza para normalizar los datos de entrada. Existen muchas funciones de este tipo, pero hay varias de las principales que son las más utilizadas. Su principal diferencia es el rango de valores en el que operan.

  • La función lineal f(x) = x, la más simple de todas las posibles, se utiliza únicamente para probar la red neuronal creada o transmitir datos en su forma original.
  • La sigmoide se considera la función de activación más común y tiene la forma f(x) = 1 / 1+e-×; Además, el rango de sus valores es de 0 a 1. También se le llama función logística.
  • Para cubrir valores negativos se utiliza una tangente hiperbólica. F(x) = e²× - 1 / e²× + 1 - esta es la forma que tiene esta función y el rango que tiene es de -1 a 1. Si la red neuronal no permite el uso valores negativos, entonces no deberías usarlo.

Para poder darle a la red los datos con los que operará, se necesitan conjuntos de entrenamiento.

La integración es un medidor que aumenta con cada serie de entrenamiento.

La época es un indicador del entrenamiento de una red neuronal; este indicador aumenta cada vez que la red pasa por un ciclo; conjunto completo conjuntos de entrenamiento.

En consecuencia, para entrenar la red correctamente, es necesario realizar conjuntos, aumentando constantemente el indicador de época.

Los errores se identificarán durante la formación. Esta es la diferencia porcentual entre el resultado obtenido y el deseado. Este indicador debería disminuir a medida que aumenta el indicador de época; de lo contrario, habrá un error del desarrollador en alguna parte.

¿Qué es una neurona de sesgo y para qué sirve?

En las redes neuronales existe otro tipo de neurona: la neurona de desplazamiento. Se diferencia del tipo principal de neuronas en que su entrada y salida son iguales en cualquier caso. Además, estas neuronas no tienen sinapsis de entrada.

La disposición de dichas neuronas se produce una por capa y no más, y no pueden hacer sinapsis entre sí. No es aconsejable colocar este tipo de neuronas en la capa de salida.

¿Para qué sirven? Hay situaciones en las que la red neuronal simplemente no puede encontrar la solución adecuada debido a que punto deseado estará fuera de su alcance. Precisamente por eso se necesitan neuronas de este tipo para poder desplazar el área de definición.

Es decir, el peso de la sinapsis cambia la curvatura del gráfico de función, mientras que la neurona de desplazamiento permite un desplazamiento a lo largo del eje de coordenadas X, de modo que la red neuronal puede capturar un área inaccesible para ella sin un desplazamiento. En este caso, el desplazamiento se puede realizar tanto hacia la derecha como hacia la izquierda. Las neuronas de desplazamiento no suelen estar marcadas esquemáticamente; su peso se tiene en cuenta de forma predeterminada al calcular el valor de entrada.

Además, las neuronas de polarización le permitirán obtener un resultado en el caso de que todas las demás neuronas produzcan 0 como parámetro de salida. En este caso, independientemente del peso de la sinapsis, exactamente este valor se transmitirá a cada capa posterior.

La presencia de una neurona de desplazamiento permitirá corregir la situación y obtener un resultado diferente. La viabilidad de utilizar neuronas de desplazamiento se determina probando la red con y sin ellas y comparando los resultados.

Pero es importante recordar que para lograr resultados no basta con crear una red neuronal. Ella también necesita ser capacitada, lo que también requiere enfoques especiales y tiene sus propios algoritmos. Este proceso difícilmente puede considerarse simple, ya que su implementación requiere ciertos conocimientos y esfuerzos.




Arriba