Ejemplo de función de activación de red neuronal. Biblioteca electrónica científica. Función de activación neuronal

) son parte de mi trabajo científico en la universidad, que sonaba así: "Complejo de software para detectar rostros en una transmisión de video utilizando una red neuronal convolucional". El objetivo del trabajo fue mejorar características de velocidad en el proceso de detección de rostros en una transmisión de video. Se utilizó la cámara de un teléfono inteligente como transmisión de video, se escribió un PS de escritorio (lenguaje Kotlin) para crear y entrenar una red neuronal convolucional, así como una aplicación móvil para Android (lenguaje Kotlin), que utilizó la red entrenada y "probó". para reconocer rostros en la transmisión de video de la cámara. Los resultados fueron regulares, use una copia exacta de la topología que propuse bajo su propio riesgo y riesgo (no lo recomendaría).

Problemas teóricos

  • determinar el problema a resolver por una red neuronal (clasificación, predicción, modificación);
  • determinar los datos de entrada (tipo: imagen, sonido, tamaño: 100x100, 30x30, formato: RGB, escala de grises) y salida (número de clases);
  • determinar la topología de la red convolucional (número de capas convolucionales, submuestreadas y completamente conectadas; número de mapas de características, tamaño del núcleo, funciones de activación).

Introducción

Los mejores resultados en el campo del reconocimiento facial los mostró la red neuronal convolucional o red neuronal convolucional (en adelante CNN), que es un desarrollo lógico de las ideas de arquitecturas de redes neuronales como cognitrón y neocognitrón. El éxito se debe a la capacidad de tener en cuenta la topología bidimensional de la imagen, a diferencia del perceptrón multicapa.

Las redes neuronales convolucionales proporcionan resistencia parcial a cambios de escala, desplazamientos, rotaciones, cambios de ángulo y otras distorsiones. Las redes neuronales convolucionales combinan tres ideas arquitectónicas para proporcionar invariancia de escala, rotación, traslación y distorsión espacial:

  • campos receptores locales (proporcionan conectividad bidimensional local de neuronas);
  • coeficientes sinápticos generales (garantiza la detección de ciertas características en cualquier parte de la imagen y reduce el número total de coeficientes de ponderación);
  • organización jerárquica con submuestras espaciales.
Actualmente, la red neuronal convolucional y sus modificaciones se consideran los mejores algoritmos para encontrar objetos en la escena en términos de precisión y velocidad. Desde 2012, las redes neuronales ocupan el primer lugar en el conocido competencia internacional sobre reconocimiento de imágenes ImageNet.

Por eso en mi trabajo utilicé una red neuronal convolucional basada en los principios del neocognitrón y complementada con entrenamiento utilizando el algoritmo. propagación hacia atrás errores.

Estructura de red neuronal convolucional

Una CNN consta de diferentes tipos de capas: capas convolucionales, capas de submuestreo y capas de una red neuronal "normal": un perceptrón, de acuerdo con la Figura 1.


Figura 1: topología de la red neuronal convolucional

Los dos primeros tipos de capas (convolucional, submuestreo), alternándose entre sí, forman el vector de características de entrada para un perceptrón multicapa.

La red convolucional debe su nombre al nombre de la operación: convolución, cuya esencia se describirá más adelante.

Las redes convolucionales son un feliz término medio entre las redes biológicamente plausibles y un perceptrón multicapa convencional. Hoy en día, los mejores resultados en el reconocimiento de imágenes se obtienen con su ayuda. En promedio, la precisión del reconocimiento de dichas redes supera a las RNA convencionales en un 10-15%. El SNA es tecnología clave Aprendizaje profundo.

La principal razón del éxito del SCN fue el concepto de ponderaciones comunes. A pesar de gran tamaño, estas redes tienen una pequeña cantidad de parámetros configurables en comparación con su antecesor, el neocognitrón. Existen variantes de CNN (Tiled Convolutional Neural Network), similares al neocognitrón; en este tipo de redes hay un rechazo parcial de los pesos asociados, pero el algoritmo de aprendizaje sigue siendo el mismo y se basa en la retropropagación del error. Las CNN pueden ejecutarse rápidamente en una máquina en serie y aprender rápidamente simplemente paralelizando el proceso de convolución en cada mapa, así como la deconvolución cuando el error se propaga a través de la red.

La siguiente figura demuestra la visualización de convolución y submuestreo:

modelo de neurona


Topología de redes neuronales convolucionales

La determinación de la topología de la red se basa en el problema que se está resolviendo, los datos de artículos científicos y experiencia experimental propia.

Puedes seleccionar próximos pasos Influyendo en la elección de la topología:

  • determinar el problema a resolver por una red neuronal (clasificación, predicción, modificación);
  • determinar las limitaciones en el problema a resolver (velocidad, precisión de la respuesta);
  • determine la entrada (tipo: imagen, sonido, tamaño: 100x100, 30x30, formato: RGB, escala de grises) y los datos de salida (número de clases).
La tarea que resuelve mi red neuronal es la clasificación de imágenes, específicamente de rostros. Las restricciones impuestas a la red son la velocidad de respuesta (no más de 1 segundo) y una precisión de reconocimiento de al menos el 70%. Topología general de la red de acuerdo con la Figura 2.


Figura 2: Topología de red neuronal convolucional

Capa de entrada

Los datos de entrada son imágenes JPEG en color, de 48x48 píxeles de tamaño. Si el tamaño es demasiado grande, entonces complejidad computacional aumentará y, en consecuencia, se violarán las restricciones en la velocidad de respuesta; la determinación del tamaño en este problema se resuelve mediante el método de selección; Si elige un tamaño demasiado pequeño, la red no podrá identificar las características clave de las caras. Cada imagen se divide en 3 canales: rojo, azul, verde. Esto produce 3 imágenes de 48x48 píxeles.

La capa de entrada tiene en cuenta la topología bidimensional de las imágenes y consta de varios mapas (matrices), puede haber un mapa si la imagen se presenta en escala de grises, de lo contrario hay 3, donde cada mapa corresponde a una imagen con un canal específico (rojo, azul y verde).

Los datos de entrada de cada valor de píxel específico se normalizan en el rango de 0 a 1, mediante la fórmula:

capa convolucional

La capa convolucional es un conjunto de mapas (otro nombre es mapas de características, en la vida cotidiana son matrices ordinarias), cada mapa tiene un núcleo sináptico (en diferentes fuentes se llama de manera diferente: núcleo de escaneo o filtro).

La cantidad de tarjetas está determinada por los requisitos de la tarea; si se toma una gran cantidad de tarjetas, la calidad del reconocimiento aumentará, pero también aumentará la complejidad computacional. Con base en el análisis de artículos científicos, en la mayoría de los casos se propone tomar una proporción de uno a dos, es decir, cada mapa de la capa anterior (por ejemplo, en la primera capa convolucional, la anterior es la entrada) es asociado con dos mapas de la capa convolucional, de acuerdo con la Figura 3. Número de tarjetas - 6.


Figura 3 - Organización de conexiones entre los mapas de la capa convolucional y la anterior

El tamaño de todos los mapas de capas convolucionales es el mismo y se calcula mediante la fórmula 2:

El kernel es un filtro o ventana que se desliza sobre toda el área tarjeta anterior y encuentra ciertos signos de objetos. Por ejemplo, si la red fue entrenada en muchas caras, entonces uno de los núcleos podría producir señal más grande en la zona del ojo, boca, ceja o nariz, otro núcleo puede detectar signos diferentes. El tamaño del núcleo suele oscilar entre 3x3 y 7x7. Si el tamaño del núcleo es pequeño, no podrá resaltar ninguna característica; si es demasiado grande, aumenta el número de conexiones entre neuronas. Además, el tamaño del kernel se elige de manera que el tamaño de los mapas de la capa convolucional sea uniforme, esto nos permite no perder información al reducir la dimensión en la capa de submuestreo que se describe a continuación.

El kernel es un sistema de pesos compartidos o sinapsis, esta es una de las características principales de una red neuronal convolucional. en condiciones normales red multicapa Hay muchas conexiones entre neuronas, es decir, sinapsis, lo que ralentiza enormemente el proceso de detección. Por el contrario, en una red convolucional, los pesos compartidos reducen el número de conexiones y permiten encontrar la misma característica en toda el área de la imagen.

Inicialmente, los valores de cada mapa de capa convolucional son iguales a 0. Los valores de los pesos del núcleo se establecen aleatoriamente en el rango de -0,5 a 0,5. El kernel se desliza sobre el mapa anterior y realiza una operación de convolución, que a menudo se usa para el procesamiento de imágenes, la fórmula:

Informalmente, esta operación se puede describir de la siguiente manera: con una ventana de tamaño de kernel g, recorremos toda la imagen f con un paso dado (generalmente 1), en cada paso multiplicamos el contenido de la ventana elemento por elemento por el kernel g, el resultado se resume y se escribe en la matriz de resultados, como en la Figura 4.


Figura 4 - Operación de convolución y obtención de los valores del mapa de convolución (válido)


Operación de convolución y obtención de valores del mapa de convolución. El núcleo está desplazado, el nuevo mapa tiene el mismo tamaño que el anterior (mismo)

En este caso, dependiendo del método de procesamiento de los bordes de la matriz original, el resultado puede ser menor imagen original(válido), mismo tamaño (igual) o tamaño más grande(lleno), de acuerdo con la Figura 5.


Figura 5 - Tres tipos de convolución de la matriz original

De forma simplificada, esta capa se puede describir mediante la fórmula:

En este caso, debido a efectos de borde, el tamaño de las matrices originales disminuye, fórmula:

Capa de submuestreo

La capa de submuestreo, al igual que la capa convolucional, tiene mapas, pero su número coincide con la capa anterior (convolucional), hay 6. El propósito de la capa es reducir la dimensión de los mapas de la capa anterior. Si algunos signos ya han sido identificados durante la operación de convolución anterior, entonces para el procesamiento posterior es necesario imagen detallada Ya no es necesario y está condensado a menos detalles. Además, filtrar detalles innecesarios ayuda a evitar el sobreentrenamiento.
Durante el proceso de escaneo del mapa de la capa anterior mediante el núcleo de la capa de submuestreo (filtro), el núcleo de escaneo no se cruza, a diferencia de la capa convolucional. Normalmente, cada mapa tiene un tamaño de núcleo de 2x2, lo que permite reducir los mapas anteriores de la capa convolucional en un factor de 2. Todo el mapa de características se divide en celdas de elementos de 2x2, de las cuales se seleccionan los valores máximos.

Normalmente, la función de activación RelU se aplica en la capa de submuestreo. Operación de submuestreo (o MaxPooling - selección máxima) de acuerdo con la Figura 6.


Figura 6 - Formación nueva tarjeta capa de submuestreo basada en el mapa de capa convolucional anterior. Operación de submuestreo (Max Pooling)

Formalmente, la capa se puede describir mediante la fórmula:

Capa completamente conectada

El último tipo de capa es la capa de un perceptrón multicapa convencional. El propósito de la capa es la clasificación; modela una función no lineal compleja, optimizándola y mejorando la calidad del reconocimiento.

Las neuronas de cada mapa de la capa submuestreada anterior están conectadas a una neurona de la capa oculta. Por lo tanto, el número de neuronas en la capa oculta es igual al número de tarjetas en la capa de submuestra, pero las conexiones pueden no ser necesariamente las mismas; por ejemplo, solo una parte de las neuronas de cualquiera de las tarjetas en la capa de submuestra puede estar conectadas a la primera neurona de la capa oculta, y la parte restante a la segunda, o todas las neuronas de los primeros mapas están conectadas a las neuronas 1 y 2 de la capa oculta. El cálculo de los valores de las neuronas se puede describir mediante la fórmula:

Capa de salida

La capa de salida está conectada a todas las neuronas de la capa anterior. El número de neuronas corresponde al número de clases reconocidas, es decir, 2: faciales y no faciales. Pero para reducir el número de conexiones y cálculos para el caso binario, se puede utilizar una neurona y, cuando se utiliza una tangente hiperbólica como función de activación, la salida de una neurona con un valor de -1 significa que pertenece a la "no persona". clase, por el contrario, la salida de una neurona con un valor de 1 significa que pertenece a la clase personas

Seleccionar una función de activación

Una de las etapas del desarrollo de una red neuronal es la selección de la función de activación neuronal. El tipo de función de activación determina en gran medida funcionalidad red neuronal y el método de entrenamiento de esta red. El algoritmo clásico de retropropagación funciona bien en redes neuronales de dos y tres capas, pero a medida que se profundiza más comienza a experimentar problemas. Una de las razones es la llamada atenuación de gradientes. A medida que el error se propaga desde la capa de salida a la capa de entrada, el resultado actual se multiplica por la derivada de la función de activación en cada capa. La derivada de la función de activación sigmoidea tradicional es menor que uno en todo el dominio de definición, por lo que después de varias capas el error se acercará a cero. Si, por otro lado, la función de activación tiene una derivada ilimitada (como una tangente hiperbólica), entonces el error puede explotar a medida que se propaga, haciendo inestable el procedimiento de aprendizaje.

En este trabajo, la tangente hiperbólica se utiliza como función de activación en las capas oculta y de salida, y ReLU se utiliza en las capas convolucionales. Veamos las funciones de activación más comunes utilizadas en redes neuronales.

Función de activación sigmoidea

Esta función pertenece a la clase. funciones continuas y toma un número real arbitrario como entrada y da un número real en el rango de 0 a 1 como salida. En particular, grande (módulo). números negativos se convierten en cero y los positivos grandes se convierten en uno. Históricamente, el sigmoide encontró amplia aplicación, ya que su salida se interpreta bien como el nivel de activación de la neurona: desde ninguna activación (0) hasta activación completamente saturada (1). Sigmoide se expresa mediante la fórmula:

Gráfica de la función sigmoidea como se muestra a continuación:

Una propiedad extremadamente indeseable del sigmoide es que cuando la función se satura en un lado u otro (0 o 1), el gradiente en estas áreas se acerca a cero.

Recuerde que en el proceso de retropropagación, un gradiente (local) dado se multiplica por el gradiente general. Por lo tanto, si el gradiente local es muy pequeño, efectivamente anula el gradiente general. Como resultado, casi ninguna señal pasará a través de la neurona hasta sus pesos y de forma recursiva hasta sus datos. Además, hay que tener mucho cuidado al inicializar los pesos de las neuronas sigmoideas para evitar la saturación. Por ejemplo, si los pesos iniciales son demasiado grandes, la mayoría de las neuronas entrarán en un estado de saturación, lo que provocará que la red aprenda mal.

La función sigmoidea es:

  • continuo;
  • monótonamente creciente;
  • diferenciable.

Función de activación tangente hiperbólica

En este trabajo, la tangente hiperbólica se utiliza como función de activación para las capas oculta y de salida. Esto se debe a las siguientes razones:
  • las funciones de activación simétrica, como la tangente hiperbólica, proporcionan una convergencia más rápida que la función logística estándar;
  • la función tiene una primera derivada continua;
  • una función tiene una derivada simple que se puede calcular en términos de su valor, lo que ahorra cálculos.
La gráfica de la función tangente hiperbólica se muestra en la figura:

Función de activación ReLU

Se sabe que las redes neuronales son capaces de aproximarse función compleja, si tienen suficientes capas y la función de activación no es lineal. Las funciones de activación como sigmoidea o tangencial no son lineales, pero provocan problemas de atenuación o expansión de gradientes. Sin embargo, puede utilizar una opción mucho más sencilla: una unidad lineal rectificada (ReLU), que se expresa mediante la fórmula:

Gráfico de la función ReLU como se muestra a continuación:

Beneficios de usar ReLU:

  • su derivada es igual a uno o cero y, por lo tanto, los gradientes no pueden crecer ni decrecer, porque multiplicando uno por el delta de error obtenemos el delta de error, pero si usáramos otra función, por ejemplo, una tangente hiperbólica, entonces el delta de error podría disminuir, aumentar o permanecer igual, es decir, la derivada de la hiperbólica tangente devuelve el número con signo diferente y magnitud, que puede influir mucho en la atenuación o expansión del gradiente. Además, el uso de esta función conduce a un adelgazamiento de los pesos;
  • calcular la tangente sigmoidea e hiperbólica requiere operaciones computacionales intensivas como la exponenciación, mientras que ReLU se puede implementar utilizando una simple transformación de umbral de la matriz de activación en cero;
  • corta partes innecesarias en el canal con una salida negativa.
Entre las desventajas, cabe señalar que ReLU no siempre es lo suficientemente confiable y puede fallar ("morir") durante el proceso de capacitación. Por ejemplo, un gradiente grande que pasa a través de una ReLU puede hacer que los pesos se actualicen de modo que la neurona nunca vuelva a activarse. Si esto sucede, entonces, a partir de este momento, el gradiente que pasa por esta neurona siempre será cero. En consecuencia, esta neurona quedará irreversiblemente desactivada. Por ejemplo, si la tasa de aprendizaje es demasiado alta, puede resultar que hasta el 40% de los ReLU estén "muertos" (es decir, nunca activados). Este problema se resuelve eligiendo una tasa de aprendizaje adecuada.

Muestras de entrenamiento utilizadas en experimentos.

La muestra de entrenamiento consta de ejemplos positivos y negativos. EN en este caso de personas y “no personas”. La proporción de ejemplos positivos y negativos es de 4 a 1, 8000 positivos y 2000 negativos.

La base de datos LFW3D se utilizó como conjunto de entrenamiento positivo. Contiene 13.000 imágenes JPEG en color de rostros frontales, de tamaño 90x90 píxeles. La base de datos se proporciona vía FTP, el acceso es mediante contraseña. Para recibir una contraseña, debe completar un formulario simple en la página principal del sitio, donde indica su nombre y correo electrónico. Un ejemplo de personas de la base de datos se muestra como se muestra en la siguiente figura:

Como ejemplo de entrenamiento negativo se utilizó la base de datos SUN397; contiene una gran cantidad de escenas de todo tipo, que se dividen en categorías; Un total de 130.000 imágenes, 908 escenas, 313.000 objetos de escena. El peso total de esta base de datos es de 37 GB. Las categorías de imágenes son muy diferentes y te permiten seleccionar un entorno más específico donde se utilizará el PS final. Por ejemplo, si se sabe a priori que el detector de rostros está destinado únicamente al reconocimiento en interiores, entonces no tiene sentido utilizar una muestra de entrenamiento de la naturaleza, el cielo, las montañas, etc. Por ello, el autor de la obra seleccionó las siguientes categorías de imágenes: sala de estar, oficina, aula, sala de ordenadores. A continuación se muestran imágenes de ejemplo del conjunto de entrenamiento SUN397:

Resultados

La propagación directa de la señal desde una imagen de entrada que mide 90x90 píxeles tarda 20 ms (en una PC) y 3000 ms en una aplicación móvil. Al detectar una cara en una transmisión de video con una resolución de 640x480 píxeles, es posible detectar 50 áreas no superpuestas que miden 90x90 píxeles. Los resultados obtenidos con la topología de red seleccionada son peores en comparación con el algoritmo de Viola-Jones.

Conclusiones

Las redes neuronales convolucionales proporcionan resistencia parcial a cambios de escala, desplazamientos, rotaciones, cambios de ángulo y otras distorsiones.

Centro- es un filtro que se desliza sobre toda la imagen y encuentra rasgos faciales en cualquier parte de la imagen (invariancia de desplazamiento).

Capa de submuestreo da:

  • aumentar la velocidad de los cálculos (al menos 2 veces), reduciendo el tamaño de los mapas de la capa anterior;
  • filtrado de detalles ya innecesarios;
  • buscando señales de más alto nivel(para la siguiente capa convolucional).
Últimas capas– capas de un perceptrón multicapa convencional. Dos totalmente conectados y una salida. Esta capa es responsable de la clasificación; desde un punto de vista matemático, modela una función no lineal compleja, optimizándola y mejorando la calidad del reconocimiento. La cantidad de neuronas en la capa 6 se basa en la cantidad de mapas de características de la capa submuestreada.

Posibles mejoras

  • considere las redes neuronales Fast-RCNN, YOLO;
  • paralelización del proceso de aprendizaje en GPU;
  • uso NDK de Android(C++) para mejorar el rendimiento

El entrenamiento de una red neuronal convolucional se describe en

Función de activación

La señal recibida del sumador se pasa a la función de activación. El resultado obtenido al calcular esta función es la salida de la neurona Y.

Así, si denotamos la función de activación como F, la salida Y de la neurona depende del vector de valores de entrada y del vector de pesos de la siguiente manera:

Y = F(X1*W1 + X2*W2 + … + Xn*Wn)

En la práctica se utilizan diferentes funciones activaciones que le permiten cambiar el comportamiento de una neurona, por ejemplo, lineal, umbral, sigmoidea, etc. Consideremos brevemente algunas de estas funciones como ejemplo. Más descripción completa Encontrarás, por ejemplo, en

Función de activación lineal

La gráfica de la función de activación lineal se muestra en la Fig. 4-3. Como puede ver, esta gráfica es una línea recta, cuyo ángulo de inclinación depende de la constante k, y la cantidad de desplazamiento a lo largo del eje de coordenadas horizontal depende de la constante t.

4.

5.

6. Para que la red neuronal pueda completar la tarea, es necesario entrenarla (ver Fig. 1). Existen algoritmos de aprendizaje supervisados ​​y no supervisados.
El proceso de aprendizaje supervisado es la presentación de una muestra de ejemplos de formación a la red. Cada muestra se envía a las entradas de la red, luego se procesa dentro de la estructura NN, se calcula la señal de salida de la red, que se compara con el valor correspondiente del vector objetivo, que representa la salida de la red requerida. Luego, de acuerdo con una regla determinada, se calcula el error y los coeficientes de ponderación de las conexiones dentro de la red cambian según el algoritmo seleccionado. Los vectores del conjunto de entrenamiento se presentan secuencialmente, se calculan los errores y se ajustan los pesos para cada vector hasta que el error en todo el conjunto de entrenamiento alcance un nivel aceptablemente bajo.

En el aprendizaje no supervisado, el conjunto de entrenamiento consta únicamente de vectores de entrada. El algoritmo de aprendizaje ajusta los pesos de la red para que se obtengan vectores de salida consistentes, es decir, de modo que la presentación de vectores de entrada suficientemente cercanos produzca salidas idénticas. Por lo tanto, el proceso de aprendizaje extrae las propiedades estadísticas del conjunto de entrenamiento y agrupa vectores similares en clases. Presentar un vector de una clase determinada como entrada producirá un determinado vector de salida, pero antes del entrenamiento es imposible predecir qué salida producirá una clase determinada de vectores de entrada. Por lo tanto, las salidas red similar debe transformarse en alguna forma comprensible, determinada por el proceso de aprendizaje. Este no es un problema grave. Generalmente no es difícil identificar la conexión entre una entrada y una salida, instalado por la red.
Para entrenar redes neuronales sin profesor, utilizan método de señalización Entrenamiento de Hebb y Oya.



Matemáticamente, el proceso de aprendizaje se puede describir de la siguiente manera. Durante el funcionamiento, la red neuronal genera una señal de salida Y, implementando una determinada función Y = G(X). Si se da la arquitectura de la red, entonces la forma de la función G está determinada por los valores de los pesos sinápticos y la red sesgada.

Sea la solución a algún problema la función Y = F(X), especificada por los parámetros de los datos de entrada-salida (X 1, Y 1), (X 2, Y 2), ..., (X N, Y N ), para lo cual Y k = F( X k) (k = 1, 2,…, N).

El entrenamiento consiste en buscar (sintetizar) una función G que sea cercana a F en el sentido de una determinada función de error E. (ver Fig. 1.8).

Si se elige un conjunto de ejemplos de entrenamiento: pares (X N, Y N) (donde k = 1, 2, ..., N) y un método para calcular la función de error E, entonces entrenar una red neuronal se convierte en un problema de optimización multidimensional. con una dimensión muy grande, y dado que la función E puede tener una forma arbitraria, el entrenamiento en el caso general es un problema de optimización no convexo multiextremo;

Para resolver este problema, se pueden utilizar los siguientes algoritmos (iterativos):

1. Algoritmos de optimización local con cálculo de derivadas parciales de primer orden:

algoritmo de gradiente (método de descenso más pronunciado),

· métodos con optimización unidimensional y bidimensional de la función objetivo en la dirección antigradiente,

· método de gradiente conjugado,

· métodos que tienen en cuenta la dirección del antigradiente en varios pasos del algoritmo;

2. Algoritmos de optimización local con cálculo de derivadas parciales de primer y segundo orden:

El método de Newton.

· métodos de optimización con matrices de Hesse dispersas,

· métodos cuasi-Newton,

· Método de Gauss-Newton,

· Método Levenberg-Marquardt y otros;

3. algoritmos estocásticos optimizaciones:

· buscar en una dirección aleatoria,

· recocido simulado,

· Método de Monte Carlo (método de prueba estadística numérica);

4. algoritmos de optimización global (los problemas de optimización global se resuelven enumerando los valores de las variables de las que depende la función objetivo).

7. Red neuronal o sistema nervioso El ser humano es una red compleja de estructuras humanas que garantiza el comportamiento interconectado de todos los sistemas del cuerpo.

Una neurona biológica es una célula especial que estructuralmente consta de un núcleo, un cuerpo celular y procesos. Una de las tareas clave de una neurona es transmitir un impulso electroquímico a través de la red neuronal a través de conexiones disponibles con otras neuronas. Además, cada conexión se caracteriza por un cierto valor llamado fuerza de la conexión sináptica. Este valor determina lo que sucederá con el impulso electroquímico cuando se transmita a otra neurona: se fortalecerá, se debilitará o permanecerá sin cambios.

Una red neuronal biológica tiene alto grado Conectividad: una neurona puede tener varios miles de conexiones con otras neuronas. Pero este es un valor aproximado y en cada caso concreto es diferente. La transmisión de impulsos de una neurona a otra genera una determinada excitación de toda la red neuronal. La magnitud de esta excitación determina la respuesta de la red neuronal a algunas señales de entrada. Por ejemplo, el encuentro de una persona con un viejo conocido puede provocar una fuerte estimulación de la red neuronal si a este conocido se asocian algunos recuerdos vívidos y agradables de la vida. A su vez, una fuerte estimulación de la red neuronal puede provocar un aumento de la frecuencia cardíaca, parpadeos más frecuentes y otras reacciones. Reunión con extraño Para la red neuronal, esto pasará casi desapercibido y, por lo tanto, no provocará reacciones fuertes.

Se puede dar el siguiente modelo altamente simplificado de una red neuronal biológica:

Cada neurona consta de un cuerpo celular, que contiene un núcleo. Muchas fibras cortas llamadas dendritas se ramifican desde el cuerpo celular. Las dendritas largas se llaman axones. Los axones se estiran. largas distancias, mucho mayor que lo que se muestra en la escala de esta figura. Normalmente, los axones miden 1 cm de largo (que es 100 veces el diámetro del cuerpo celular), pero pueden alcanzar 1 metro.

En los años 60-80 del siglo XX, la dirección prioritaria de la investigación en el campo de la inteligencia artificial fue sistemas expertos. Los sistemas expertos han demostrado su eficacia, pero sólo en áreas altamente especializadas. Para crear más versátil sistemas inteligentes se necesitaba un enfoque diferente. Esto probablemente llevó a los investigadores de inteligencia artificial a centrar su atención en las redes neuronales biológicas que subyacen cerebro humano.

Las redes neuronales en inteligencia artificial son modelos simplificados de redes neuronales biológicas.

Aquí es donde terminan las similitudes. La estructura del cerebro humano es mucho más compleja que la descrita anteriormente y, por tanto, no es posible reproducirla con mayor o menor precisión.

Las redes neuronales tienen muchas propiedades importantes, pero la clave es la capacidad de aprender. Entrenar una red neuronal implica principalmente cambiar la "fuerza" de las conexiones sinápticas entre neuronas. El siguiente ejemplo lo demuestra claramente. En el experimento clásico de Pavlov, sonaba una campana cada vez justo antes de alimentar al perro. El perro aprendió rápidamente a asociar el sonido de la campana con la comida. Esto se debió al hecho de que se fortalecieron las conexiones sinápticas entre las áreas del cerebro responsables de la audición y las glándulas salivales. Y posteriormente, la estimulación de la red neuronal mediante el sonido de la campana comenzó a provocar una salivación más intensa en el perro.

Hoy en día, las redes neuronales son una de las áreas prioritarias de investigación en el campo de la inteligencia artificial.

8. Perceptrones multicapa llamadas redes neuronales feedforward. La señal de entrada en tales redes se propaga hacia adelante, de capa a capa. Un perceptrón multicapa en su representación general consta de los siguientes elementos:

· conjuntos de nodos de entrada que forman la capa de entrada;

una o más capas ocultas de neuronas computacionales;

· una capa de salida de neuronas.

El perceptrón multicapa es una generalización del perceptrón monocapa de Rosenblatt. Un ejemplo de perceptrón multicapa es el siguiente modelo de red neuronal:

El número de elementos de entrada y salida en un perceptrón multicapa está determinado por las condiciones del problema. Pueden surgir dudas sobre qué valores de entrada utilizar y cuáles no. La cuestión de cuántas capas intermedias y elementos utilizar en ellas aún no está del todo clara. Como aproximación inicial, podemos tomar una capa intermedia y establecer el número de elementos en ella igual a la mitad de la suma del número de elementos de entrada y salida.

Los perceptrones multicapa se utilizan con éxito para resolver una variedad de problemas complejos y tienen las siguientes tres características distintivas.

Red neuronal- intento con modelos matemáticos replicar el funcionamiento del cerebro humano para crear máquinas que tengan...

Red neuronal artificial Generalmente aprende con un profesor. Esto significa tener un conjunto de entrenamiento (conjunto de datos) que contenga ejemplos con valores verdaderos: etiquetas, clases, indicadores.

Los conjuntos sin etiquetar también se utilizan para entrenar redes neuronales, pero no lo cubriremos aquí.

Por ejemplo, si desea crear una red neuronal para estimar la opinión del texto, conjunto de datos Habrá un listado de propuestas con valoraciones emocionales correspondientes a cada una. El tono del texto está determinado. señales(palabras, frases, estructura de oraciones) que dan una connotación negativa o positiva. Pesos Las características en la evaluación final del sentimiento del texto (positivas, negativas, neutrales) dependen de función matemática, que se calcula durante el entrenamiento de la red neuronal.

Anteriormente, las personas generaban funciones manualmente. Cuantas más características y pesos seleccionados con mayor precisión, más precisa será la respuesta. La red neuronal ha automatizado este proceso.

Una red neuronal artificial consta de tres componentes:

  • Capa de entrada;
  • Capas ocultas (computacionales);
  • Capa de salida.

Ocurre en dos etapas:

  • errores.

Durante la propagación del error hacia adelante, se realiza una predicción de la respuesta. Con la retropropagación, se minimiza el error entre la respuesta real y la prevista.


Distribución directa

Establezcamos los pesos iniciales al azar:

Multipliquemos los datos de entrada por pesos para formar una capa oculta:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

La salida de la capa oculta se pasa a través de una función no lineal () para obtener la salida de la red:

  • y_ = fn(h1, h2, h3)

Propagación hacia atrás

  • El error total (total_error) se calcula como la diferencia entre el valor esperado "y" (del conjunto de entrenamiento) y el valor obtenido "y_" (calculado en la etapa de propagación directa del error), pasando por la función de costo.
  • La derivada parcial del error se calcula para cada peso (estos diferenciales parciales reflejan la contribución de cada peso al error total (total_loss)).
  • Estos diferenciales luego se multiplican por un número llamado tasa de aprendizaje (η).

El resultado obtenido se resta luego de los pesos correspondientes.

El resultado serán los siguientes pesos actualizados:

  • w1 = w1 — (η * ∂(err) / ∂(w1))
  • w2 = w2 — (η * ∂(err) / ∂(w2))
  • w3 = w3 — (η * ∂(err) / ∂(w3))

La idea de que adivinemos e inicialicemos los pesos al azar y nos den respuestas precisas no parece del todo razonable, pero funciona bien.


memes populares sobre cómo Carlson se convirtió en desarrollador de ciencia de datos

Si está familiarizado con las series de Taylor, la retropropagación tiene el mismo resultado final. Sólo que en lugar de una serie infinita, intentamos optimizar solo su primer término.

Los sesgos son pesos que se agregan a las capas ocultas. También se inicializan y actualizan aleatoriamente de la misma manera que la capa oculta. La función de la capa oculta es determinar la forma de la función subyacente en los datos, mientras que la función del sesgo es cambiar la función encontrada para que coincida parcialmente con la función original.

Derivadas parciales

Se pueden calcular derivadas parciales, de modo que sepamos cuál fue la contribución al error para cada peso. La necesidad de derivados es obvia. Imagine una red neuronal tratando de encontrar velocidad optima vehículo no tripulado. Si el coche detecta que va más rápido o más lento que la velocidad requerida, la red neuronal cambiará la velocidad, acelerando o desacelerando el coche. ¿Qué acelera/desacelera? Velocidades derivadas.

Veamos la necesidad de derivadas parciales usando un ejemplo.

Supongamos que se pidiera a los niños que lanzaran un dardo a un blanco, apuntando al centro. Aquí están los resultados:

Ahora, si encontramos el error general y simplemente lo restamos de todos los pesos, sumaremos los errores cometidos por todos. Entonces, digamos que un niño golpea demasiado bajo, pero les pedimos a todos los niños que se esfuercen por alcanzar el objetivo, entonces esto conducirá a la siguiente imagen:

El error de varios niños puede reducirse, pero error general sigue aumentando.

Habiendo encontrado las derivadas parciales, encontramos los errores correspondientes a cada peso por separado. Si corrige selectivamente los pesos, obtendrá lo siguiente:

Hiperparámetros

Se utiliza una red neuronal para automatizar la selección de funciones, pero algunos parámetros se configuran manualmente.

tasa de aprendizaje

La tasa de aprendizaje es un hiperparámetro muy importante. Si la tasa de aprendizaje es demasiado lenta, incluso después de entrenar la red neuronal durante mucho tiempo, los resultados estarán lejos de ser óptimos. Los resultados se verán así:

Por otro lado, si la tasa de aprendizaje es demasiado alta, la red producirá respuestas muy rápidamente. Obtendrá lo siguiente:

función de activación

La función de activación es una de las herramientas más poderosas que influye en la fuerza asignada a las redes neuronales. En otras palabras, determina en parte qué neuronas se activarán y qué información se transmitirá a las capas siguientes.

Sin funciones de activación, las redes profundas pierden gran parte de su capacidad de aprendizaje. La no linealidad de estas funciones es responsable de aumentar el grado de libertad, lo que permite generalizar problemas de altas dimensiones a dimensiones más bajas. Los siguientes son ejemplos de funciones de activación comunes:

función de pérdida

La función de pérdida está en el centro de la red neuronal. Se utiliza para calcular el error entre las respuestas reales y recibidas. Nuestro objetivo global es minimizar este error. Por lo tanto, la función de pérdida acerca efectivamente el entrenamiento de la red neuronal a este objetivo.

La función de pérdida mide "qué tan buena" es la red neuronal dado el conjunto de entrenamiento y las respuestas esperadas. También puede depender de variables como pesos y compensaciones.

La función de pérdida es unidimensional y no vectorial porque evalúa qué tan bien se desempeña la red neuronal en su conjunto.

Algunas funciones de pérdida famosas:

  • Cuadrática (desviación estándar);
  • Entropía cruzada;
  • Exponencial (AdaBoost);
  • Distancia Kullback-Leibler o ganancia de información.

La desviación estándar es la función de pérdida más simple y la más utilizada. Se especifica de la siguiente manera:

La función de pérdida en una red neuronal debe cumplir dos condiciones:

  • La función de pérdida debe escribirse como un promedio;
  • La función de pérdida no debe depender de ningún valor de activación de la red neuronal que no sea el valor producido en la salida.

Redes neuronales profundas

(aprendizaje profundo) es una clase de algoritmos que aprenden a comprender los datos de manera más profunda (de manera más abstracta). Algoritmos populares de redes neuronales aprendizaje profundo se presentan en el siguiente diagrama.

Algoritmos de redes neuronales populares (http://www.asimovinstitute.org/neural-network-zoo)

Más formalmente en aprendizaje profundo:

  • Se utiliza una cascada (tubería, como un flujo transmitido secuencialmente) de muchas capas de procesamiento (no lineal) para extraer y transformar características;
  • Basado en características de aprendizaje (representación de información) en datos sin aprendizaje supervisado. Las funciones de nivel superior (que están en las últimas capas) se obtienen de funciones nivel inferior(que están en las capas iniciales);
  • Aprende representaciones multinivel que corresponden. diferentes niveles abstracciones; Los niveles forman una jerarquía de presentación.

Ejemplo

Considere una red neuronal de una sola capa:

Aquí se entrena la primera capa (neuronas verdes), y simplemente se transmite a la salida.

Mientras que en el caso de una red neuronal de dos capas, no importa cómo se entrene la capa oculta verde, luego se pasa a la capa oculta azul donde continúa entrenándose:

Por tanto, cuanto mayor sea el número de capas ocultas, mayores serán las capacidades de aprendizaje de la red.

No confundir con amplia red neuronal.

En este caso, una gran cantidad de neuronas en una capa no conduce a una comprensión profunda de los datos. Pero conduce al aprendizaje. más señales.

Ejemplo:

Al estudiar gramática inglesa, es necesario conocer una gran cantidad de conceptos. En este caso, una red neuronal amplia de una sola capa funciona mucho mejor que una red neuronal profunda, que es significativamente más pequeña.

En el caso del aprendizaje de la transformada de Fourier, el alumno (red neuronal) debe ser profundo porque no hay muchos conceptos que conocer, pero cada uno es bastante complejo y requiere una comprensión profunda.

Lo principal es el equilibrio.

Es muy tentador utilizar redes neuronales amplias y profundas para cada tarea. Pero podría ser mala idea, porque:

  • Ambos requieren significativamente más datos de entrenamiento para lograr la precisión mínima deseada;
  • Ambos tienen una complejidad exponencial;
  • Una red neuronal demasiado profunda intentará romper los supuestos fundamentales, pero también hará suposiciones falsas y tratará de encontrar pseudodependencias que no existen;
  • Una red neuronal que sea demasiado amplia intentará encontrar más funciones de las que existen. Entonces, al igual que el anterior, comenzará a hacer suposiciones incorrectas sobre los datos.

Maldición de la dimensionalidad

La maldición de la dimensionalidad se refiere a diversos fenómenos que surgen al analizar y organizar datos en espacios de alta dimensión (a menudo con cientos o miles de dimensiones) y no ocurre en situaciones de baja dimensión.

La gramática inglesa tiene una gran cantidad de atributos que influyen en ella. En el aprendizaje automático, debemos representarlos con características en forma de una matriz de longitud finita y significativamente menor (que el número signos existentes). Para ello, las redes generalizan estas características. Esto crea dos problemas:

  • Los supuestos incorrectos introducen sesgos. Un sesgo alto puede hacer que el algoritmo pase por alto relaciones significativas entre las características y las variables objetivo. Este fenómeno se llama subaprendizaje.
  • A partir de pequeñas desviaciones en el conjunto de entrenamiento debido a un aprendizaje insuficiente de las funciones, la varianza aumenta. Una variación alta conduce a un sobreajuste; los errores se perciben como información confiable.

Compromiso

En la etapa inicial del aprendizaje, el sesgo es grande porque el resultado de la red está lejos del deseado. Y la dispersión es muy pequeña, ya que los datos tienen poca influencia todavía.

Al final del entrenamiento, el sesgo es pequeño porque la red ha identificado la característica subyacente en los datos. Sin embargo, si el entrenamiento es demasiado largo, la red también aprenderá el ruido específico de ese conjunto de datos. Esto produce una amplia gama de resultados cuando se realizan pruebas en diferentes conjuntos, ya que el ruido varía de un conjunto de datos a otro.

En realidad,

Los algoritmos con un gran sesgo generalmente se basan en más modelos simples, que no son propensos a sobreajustarse, pero pueden estar insuficientemente adaptados y no identificar patrones o propiedades de características importantes. Los modelos con bajo sesgo y alta varianza suelen ser más complejos en términos de estructura, lo que les permite representar con mayor precisión el conjunto de entrenamiento. Sin embargo, pueden mostrar mucho ruido del conjunto de entrenamiento, lo que hace que sus predicciones sean menos precisas a pesar de su complejidad adicional.

Por lo tanto, generalmente es imposible tener un sesgo pequeño y una varianza pequeña al mismo tiempo.

En la actualidad existen muchas herramientas que pueden crear fácilmente modelos complejos de aprendizaje automático, y el reentrenamiento está ocupando un lugar central. Porque el sesgo ocurre cuando la red no recibe suficiente información. Pero cuantos más ejemplos hay, más variantes de dependencias y variabilidad aparecen en estas correlaciones.

Las funciones de activación (funciones de transferencia) de una neurona pueden tener las más diferente tipo. Función de activación F, por regla general, pertenece a la clase de funciones sigmoideas
con argumento norte y salir a.

Veamos las tres formas más comunes de función de activación.

Función de activación única con restricciones estrictas. duro. Esta función se describe mediante la relación a= duro( norte) = 1(norte) y se muestra en la Fig. 2.2. es igual a 0 si norte< 0, и 1, если norte³ 0.

El PPP Neural Network Toolbox incluye la función M hardlim, que implementa la función de activación con restricciones estrictas. Ahora puedes graficar esta función usando los operadores del lenguaje MATLAB:

trama(n,hardlim(n),"c+:");

Como resultado, obtenemos una gráfica de la función hardlim en el rango de valores de entrada de –5 a + 5 (Fig. 2.2).

Función de activación lineal puralina. Esta función se describe mediante la relación
a= puralina( norte) = norte y se muestra en la Fig. 2.3.

Arroz. 2.3.

Función logística activación logsig. Esta función se describe mediante la relación
a=logsig( norte) = 1/(1 + exp(– norte)) y se muestra en la Fig. 2.4. Pertenece a la clase de funciones sigmoideas y su argumento puede tomar cualquier valor en el rango de –¥ a +¥, y la salida varía en el rango de 0 a 1. En Neural Network Toolbox, está representada por la M -función de registro. Debido a su diferenciabilidad, esta función se utiliza a menudo en redes de aprendizaje de retropropagación.

Arroz. 2.4.

El símbolo en el cuadrado de la derecha. esquina superior Los gráficos caracterizan la función de activación. Esta imagen se utiliza en diagramas estructurales redes neuronales.

Neural Network Toolbox también incluye otras funciones de activación. Utilizando el lenguaje MATLAB, el usuario puede crear sus propias funciones únicas.

Teoría redes neuronales(NS) incluye amplio círculo preguntas de diferentes campos de la ciencia: biofísica, matemáticas, informática, diseño de circuitos y tecnología. Por tanto, el concepto de “redes neuronales” es difícil de definir en detalle. Demos algunas definiciones.

Redes neuronales - sistemas de autoaprendizaje que imitan la actividad del cerebro humano.

Redes neuronales artificiales- dispositivos computación paralela, que consta de muchos interactuando procesadores simples(elementos de procesamiento).

Se puede considerar una red neuronal artificial (RNA) como un gráfico dirigido ponderado en el que las neuronas artificiales son los nodos.

La matriz de pesos de conexión de una red neuronal entrenada se puede clasificar como un modelo heurístico de representación del conocimiento.

Según la arquitectura de las conexiones, las RNA se pueden agrupar en dos clases: redes de retroalimentación, en las que los gráficos no tienen bucles, y redes recurrentes o redes de retroalimentación.

Las redes neuronales se distinguen por la estructura de la red (conexiones entre neuronas), las características del modelo neuronal y las características del entrenamiento de la red.

Según su estructura, las redes neuronales se pueden dividir en parcialmente conectadas (o en capas) y completamente conectadas, con conexiones aleatorias y regulares, con conexiones simétricas y asimétricas.

Según las señales utilizadas en las entradas y salidas, las redes neuronales se pueden dividir en analógicas y binarias.

Según el modelado del tiempo, las redes neuronales se dividen en redes de tiempo continuo y discreto.

Según la organización del entrenamiento, el entrenamiento de redes neuronales se divide en redes neuronales supervisadas y entrenamiento no supervisado.

Según las características del modelo neuronal, se distinguen neuronas con diferentes funciones no lineales: umbral, sigmoide exponencial, sigmoide racional, tangente hiperbólica.

Actualmente redes neuronales se utilizan para resolver muchos problemas no formalizables o difíciles de formalizar:

  • reconocimiento y síntesis de voz;
  • reconocimiento de imágenes aeroespaciales;
  • previsión de cotizaciones de valores y tipos de cambio;
  • prevención del fraude con tarjetas de crédito;
  • valoración de bienes inmuebles;
  • evaluar la situación financiera de las empresas y el riesgo de impago de los préstamos;
  • procesamiento de señales de radar;
  • control del tráfico en autopistas y ferrocarriles;
  • diagnóstico en medicina;
  • extraer conocimiento de grandes volúmenes de datos en negocios, finanzas e investigación científica.

Redes neuronales se puede utilizar en las siguientes condiciones:

  1. Si el problema lo puede resolver una persona.
  2. Si al resolver un problema es posible identificar muchos factores de entrada (señales, signos, datos, etc.) y muchos factores de salida.
  3. Si los cambios en los factores de entrada conducen a cambios en los factores de salida.

Al utilizar redes neuronales, es necesario resolver los siguientes problemas:

  1. Planteamiento de un problema susceptible de solución mediante una red neuronal.
  2. Seleccionar un modelo de ANN.
  3. Preparación de datos iniciales para el entrenamiento de la RNA.
  4. Entrenamiento RNA.
  5. La solución real del problema utilizando una ANN entrenada.

Además, a veces es necesaria otra etapa: la interpretación de la solución obtenida por la red neuronal.

Estructura de la red neuronal

A pesar de la gran variedad de opciones redes neuronales, todos tienen características comunes. Entonces, todos ellos, como el cerebro humano, constan de una gran cantidad de elementos del mismo tipo: neuronas, que imitan las neuronas del cerebro, interconectadas.

Arroz. 8. Neurona biológica

Biológico neurona se modela como un dispositivo que tiene varias entradas y una salida. A cada entrada se le asigna un determinado coeficiente de ponderación ( w), caracterizando rendimiento canal y evaluar el grado de influencia de la señal de esta entrada en la señal de salida. Las señales procesadas por la neurona pueden ser analógicas o digitales (1 o 0). En el cuerpo de la neurona, se produce una suma ponderada de excitaciones de entrada, y luego este valor es un argumento a favor de la función de activación de la neurona.

En la figura. La figura 9 muestra un diagrama de una neurona artificial.

Arroz. 7.1. Circuito de neuronas artificiales

El estado de la neurona está determinado por la fórmula.

, (7.1)

norte- número de entradas de neuronas,

xyo- valor de la i-ésima entrada de la neurona,

yo- peso de la i-ésima sinapsis.

Entonces el valor del axón de la neurona está determinado por la fórmula

Y= F(S), (7.2)

Dónde F- alguna función llamada activación. Muy a menudo, como función de activación se utiliza el llamado sigmoide, que tiene siguiente vista:

. (7.3)

La principal ventaja de esta función es que es diferenciable en todo el eje x y tiene una derivada muy simple:

Al disminuir el parámetro a El sigmoide se vuelve más plano, degenerando en una línea horizontal en el nivel 0,5 en a=0. Al aumentar a El sigmoide se acerca cada vez más a la función de un solo salto.

Cuando se conectan de cierta manera, las neuronas forman una red neuronal. Entre las diversas estructuras de redes neuronales, una de las más famosas es la estructura multicapa, en la que cada neurona de una capa arbitraria está conectada a todos los axones de las neuronas de la capa anterior o, en el caso de la primera capa, a todas las entradas de la red neuronal. Estas redes neuronales se denominan totalmente conectadas.

Entrenamiento de redes neuronales

Entrenar una red neuronal- significa decirle lo que queremos de ella. Este proceso es muy similar a enseñarle el alfabeto a un niño. Después de mostrarle al niño una imagen de la letra “A”, le preguntamos: “¿Qué letra es esta?” Si la respuesta es incorrecta, le decimos al niño la respuesta que nos gustaría que dé: “Esta es la letra A”. El niño recuerda este ejemplo junto con la respuesta correcta, es decir, se producen algunos cambios en su memoria en la dirección correcta. Repetiremos el proceso de presentación de las letras una y otra vez hasta memorizar firmemente las 33 letras. Este proceso se llama "aprendizaje supervisado".

En entrenamiento de redes neuronales actuamos exactamente de la misma manera. Disponemos de una base de datos que contiene ejemplos (un conjunto de imágenes de letras escritas a mano). Al presentar la imagen de la letra “A” a la entrada de la red, recibimos de ella alguna respuesta, no necesariamente correcta. También conocemos la respuesta correcta (deseada); en este caso, nos gustaría que el nivel de señal en la salida denominada "A" sea máximo. Normalmente, la salida deseada en un problema de clasificación es el conjunto (1, 0, 0, ...), donde 1 está en la salida denominada "A" y 0 está en todas las demás salidas. Al calcular la diferencia entre la respuesta deseada y la respuesta real de la red, obtenemos 33 números: el vector de error. El algoritmo de retropropagación de errores es un conjunto de fórmulas que permiten calcular las correcciones requeridas para los pesos de la red utilizando el vector de error. Podemos presentar la misma carta (así como diferentes imágenes de la misma carta) a la red muchas veces. En este sentido, aprender se parece más a repetir ejercicios en el deporte: entrenar.

Resulta que después de repetidas presentaciones de ejemplos, los pesos de la red se estabilizan y la red da respuestas correctas a todos (o casi todos) los ejemplos de la base de datos. En este caso, dicen que "la red neuronal ha aprendido todos los ejemplos", "la red neuronal está entrenada" o "la red neuronal está entrenada". EN implementaciones de software Puede ver que durante el proceso de aprendizaje, la magnitud del error (la suma de los errores al cuadrado de todas las salidas) disminuye gradualmente. Cuando el error llega a cero o a un nivel pequeño aceptable, se detiene el entrenamiento y la red resultante se considera entrenada y lista para usar con nuevos datos.

Entonces, bajo capacitación se refiere al proceso de adaptación de la red a las muestras de referencia presentadas modificando (de acuerdo con uno u otro algoritmo) los coeficientes de ponderación de las conexiones entre neuronas.

Es importante señalar que toda la información que tiene una red neuronal sobre un problema está contenida en un conjunto de ejemplos. Por lo tanto, la calidad del entrenamiento en red depende directamente de la cantidad de ejemplos en el conjunto de entrenamiento, así como de qué tan completamente estos ejemplos describen la tarea dada. Por ejemplo, no tiene sentido utilizar una red neuronal para predecir una crisis financiera si las crisis no están representadas en el conjunto de formación. Se cree que para una formación completa se necesitan al menos varias docenas (o mejor aún, cientos) de ejemplos.

Función de activación neuronal

Función de activación neuronal define la transformación no lineal llevada a cabo por la neurona.

Existen muchos tipos de funciones de activación, pero las más comunes son las cuatro siguientes:

1. Límite función. En la figura. 7.2, A Se muestra su horario.

. (7.5)

La primera de las funciones de activación introducida fue descrita en el trabajo de McCulloch y Pitts. En honor a esto, el modelo de una neurona con una función de activación de umbral se denomina modelo de McCulloch-Pitts.

2. Lineal por partes función. Se muestra en la Fig. 7.2, b y se describe mediante la siguiente relación:

. (7.6)

En este caso a= 1, y el coeficiente de pendiente de la sección lineal se elige como la unidad, y la función completa se puede interpretar como una aproximación de un amplificador no lineal. Con un coeficiente de pendiente infinitamente grande de la sección lineal, la función degenera en un umbral.

La mayoría de los tipos de redes neuronales artificiales utilizan neuronas con una función de activación lineal, que es un caso especial de (7.6) con una región lineal ilimitada.

Arroz. 7.2. Tipos de funciones de activación
a), d) umbral; b) lineal; c) sigmoideo;
e) tangencial; f) funciones de activación de base radial

3. sigmoideo función. Este es el tipo de función de activación más utilizado. Se introdujo por analogía con la función de umbral, pero en todas partes es estrictamente monótona creciente, continua y diferenciable (Fig. 7.2, V). La diferenciabilidad es una propiedad importante para el análisis de redes neuronales y algunos métodos para entrenarlas.

EN vista general la función de activación sigmoidea se describe mediante la relación:

, (7.7)

Dónde a- parámetro que determina la pendiente de la función.

Variándolo se pueden obtener diferentes tipos de sigmoide. Más comúnmente utilizado a= 1. En el caso de infinitamente grande a la función sigmoidea degenera en una función de umbral.

Además de las funciones enumeradas que varían en el rango, también se introducen sus análogos con el rango de valores [–1, 1]. Entonces, por ejemplo (Fig. 7.2, GRAMO), la función de umbral se puede redefinir como

. (7.8)

En lugar de la función de activación sigmoidea, se usa ampliamente la tangente hiperbólica, que tiene propiedades similares (Fig. 11, d)

. (7.10)

La singularidad de esta función la hace conveniente para resolver problemas de control.

4. En las redes neuronales introducidas por Broomhead y Lowe, se utiliza la función de activación. Gauss(Figura 7.2, mi)

Su argumento se calcula mediante la fórmula:

, (7.12)
Dónde

z- vector de señales de entrada de neuronas,

do- vector de coordenadas del centro de la ventana función de activación,

s - ancho de ventana,

|| || - Distancia euclidiana.

En la teoría de las redes neuronales, funciones de activación del tipo

(7.13)

se denominan funciones de base radial (RBF), y las redes basadas en ellas se denominan redes RBF (RBF - función de base radial).

Representación de datos de entrada

La peculiaridad de una red neuronal es que todos los parámetros de entrada y salida se presentan en forma de números de coma flotante, generalmente en el rango . Al mismo tiempo, los datos de dominio suelen tener una codificación diferente. Por lo tanto, pueden ser números en un rango arbitrario, fechas, cadenas de caracteres. Por tanto, los datos sobre un problema pueden ser tanto cuantitativos como cualitativos. Veamos primero cómo convertir datos cualitativos en datos numéricos y luego cómo convertir los datos de entrada al rango requerido.

Podemos dividir los datos cualitativos en dos grupos: ordenados (ordinales) y desordenados. Para determinar cómo codificar estos datos, consideremos el problema de predecir el éxito del tratamiento de una enfermedad. Un ejemplo de datos organizados podrían ser, por ejemplo, datos sobre factores de riesgo adicionales para una enfermedad determinada.

Otro posible ejemplo podría ser la edad del paciente.

El peligro de cada factor aumenta en las tablas a medida que se avanza de izquierda a derecha.

En el primer caso vemos que el paciente puede tener varios factores de riesgo al mismo tiempo. En este caso, necesitamos utilizar una codificación en la que no exista una situación en la que diferentes combinaciones de factores correspondan al mismo valor. El método de codificación más común es cuando a cada factor se le asigna una categoría. número binario. El número 1 en esta categoría indica la presencia del factor y el número 0 indica su ausencia. Parámetro No puedes asociar el número 0. Por lo tanto, un número binario de cuatro dígitos es suficiente para representar todos los factores. Así, el número 1010 2 = 10 10 significa que el paciente tiene hipertensión y consumo de alcohol, y el número 0000 2 corresponde a la ausencia de factores de riesgo en el paciente. Así, los factores de riesgo estarán representados por números en el rango .

En el segundo caso, también podríamos codificar todos los valores con pesos binarios, pero esto no sería práctico ya que el conjunto de valores posibles sería demasiado desigual. En este caso, sería más correcto asignar a cada valor su propio peso, que difiere en uno del peso del valor vecino. Entonces el número 3 corresponderá a la edad de 50-59 años. Por lo tanto, la edad se codificará con números en el rango.

Puede hacer lo mismo con datos desordenados asignando un número a cada valor. Sin embargo, esto introduce un ordenamiento indeseable que puede distorsionar los datos y dificultar mucho el proceso de aprendizaje. Como una de las formas de solucionar este problema, se puede proponer asignar cada valor a una de las entradas de la red neuronal. En este caso, si este valor está presente, la entrada correspondiente se establece en 1 o 0 en caso contrario. Este método no es una panacea, porque con una gran cantidad de opciones de valores de entrada, la cantidad de entradas de la red neuronal crece a una cantidad enorme. Esto aumentará drásticamente el tiempo dedicado a la formación. Como solución alternativa a este problema, puede utilizar una solución ligeramente diferente. A cada valor del parámetro de entrada se le asigna un vector binario, cada bit del cual corresponde a una entrada separada de la red neuronal. Por ejemplo, si el número de valores de parámetros posibles es 128, entonces se puede utilizar un vector de siete bits. Entonces, el primer valor corresponderá al vector 0000000, el 128 - 1111111 y, por ejemplo, el valor 26 - 0011011. Luego, el número de parámetros de entrada necesarios para la codificación se puede determinar como

norte= Registro 2 (norte) , (7.14)
Dónde

norte - número de valores de parámetros,

norte- número de entradas.

Conversión de entradas numéricas

Para una red neuronal, es necesario que los datos de entrada se encuentren en el rango , mientras que los datos del dominio del problema pueden estar en cualquier rango. Supongamos que los datos de uno de los parámetros están en el rango. Entonces de una manera sencilla habrá racionamiento

, (7.15)
Dónde

incógnita- valor inicial del parámetro,

El valor suministrado a la entrada de la red neuronal.

Este método de codificación no está exento de inconvenientes. Entonces, si , entonces la distribución de los datos de entrada puede tomar la forma

Arroz. 11. Distribución parámetros de entrada

La distribución de los parámetros de entrada será extremadamente desigual, lo que conducirá a un deterioro de la calidad de la formación. Por lo tanto, en tales situaciones, así como en el caso en que el valor de entrada se encuentre en el rango )


Arriba