Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Equipment >> Robot industrial

Incorporación de nodos de sesgo en su red neuronal

Este artículo le muestra cómo agregar valores de sesgo a un Perceptron multicapa implementado en un lenguaje de programación de alto nivel como Python.

Bienvenido a la serie Todo sobre circuitos sobre redes neuronales, creada por el director de ingeniería Robert Keim. Antes de continuar con esta lección sobre los nodos de sesgo, considere ponerse al día con el resto de la serie a continuación:

  1. Cómo realizar la clasificación mediante una red neuronal:¿Qué es el perceptrón?
  2. Cómo utilizar un ejemplo de red neuronal de Perceptron simple para clasificar datos
  3. Cómo entrenar una red neuronal de perceptrón básica
  4. Comprensión del entrenamiento de redes neuronales simples
  5. Introducción a la teoría del entrenamiento para redes neuronales
  6. Comprensión de la tasa de aprendizaje en redes neuronales
  7. Aprendizaje automático avanzado con el perceptrón multicapa
  8. La función de activación sigmoidea:activación en redes neuronales de perceptrones multicapa
  9. Cómo entrenar una red neuronal de perceptrón multicapa
  10. Comprender las fórmulas de entrenamiento y la retropropagación para perceptrones multicapa
  11. Arquitectura de red neuronal para una implementación de Python
  12. Cómo crear una red neuronal de perceptrón multicapa en Python
  13. Procesamiento de señales mediante redes neuronales:validación en el diseño de redes neuronales
  14. Conjuntos de datos de entrenamiento para redes neuronales:cómo entrenar y validar una red neuronal Python
  15. ¿Cuántas capas y nodos ocultos necesita una red neuronal?
  16. Cómo aumentar la precisión de una red neuronal de capa oculta
  17. Incorporación de nodos de sesgo en su red neuronal

Los nodos de sesgo, que se pueden agregar a la capa de entrada o la capa oculta de un Perceptron, producen un valor constante que es elegido por el diseñador.

Discutimos los valores de sesgo en la Parte 11, y le animo a leer (o releer) la parte relevante de ese artículo si no tiene claro qué son los nodos de sesgo o cómo modifican y potencialmente mejoran la funcionalidad de una red neuronal.

En este artículo, primero explicaré dos métodos para incorporar valores de sesgo en la arquitectura de su red, y luego realizaremos un experimento para ver si los valores de sesgo pueden mejorar el rendimiento de precisión que obtuvimos en el artículo anterior (Parte 16).

Incorporación de sesgos mediante la hoja de cálculo

El siguiente diagrama muestra una red que tiene un nodo de polarización en la capa de entrada pero no en la capa oculta.

Si esta es la configuración que está buscando, puede agregar un valor de sesgo utilizando la hoja de cálculo que contiene sus datos de entrenamiento o validación.

La ventaja de este método es simplemente que no se requieren modificaciones sustanciales de código. El primer paso es insertar una columna en su hoja de cálculo y llenarla con su valor de sesgo:

Ahora, todo lo que necesita hacer es aumentar la dimensionalidad de la capa de entrada en uno:

Integración de sesgos en el código

Si desea un nodo de sesgo en la capa oculta, o si no le gusta trabajar con hojas de cálculo, necesitará una solución diferente.

Supongamos que queremos agregar un nodo de polarización tanto a la capa de entrada como a la capa oculta. Primero, necesitaremos aumentar I_dim y H_dim , ya que nuestro objetivo es integrar los nodos de sesgo de manera que funcionen como nodos normales pero con un valor preponderado que es elegido por el diseñador y que nunca cambia.

Lo lograré de la siguiente manera:


Creación del nodo de sesgo de la capa de entrada

Como recordará, usamos el siguiente código para ensamblar el conjunto de datos de entrenamiento, separar los valores de salida objetivo y extraer la cantidad de muestras de entrenamiento.

Después de estas declaraciones, el número de columnas en la matriz bidimensional training_data será igual al número de columnas de entrada en la hoja de cálculo. Necesitamos aumentar el número de columnas en uno para tener en cuenta el nodo de sesgo en la capa de entrada, y mientras estamos en eso, podemos llenar esta columna adicional con el valor de sesgo deseado.

El siguiente código muestra cómo se puede hacer esto.


El np.ones () La función crea una matriz de una columna cuyo número de filas es igual a training_count y asigna un valor de +1 a cada elemento de esta matriz. Luego usamos np.hstack () función para agregar la matriz de una columna al lado derecho del training_data original matriz.

Tenga en cuenta que he realizado este procedimiento tanto para los datos de entrenamiento como para los datos de validación. Es importante recordar que el objetivo no es en realidad modificar los datos de entrenamiento o validación; más bien, estamos modificando los datos como un medio para implementar la configuración de red deseada.

Cuando miramos un diagrama de bloques del Perceptron, los nodos de polarización aparecen como elementos de la propia red; por lo tanto, cualquier muestra que sea procesada por la red debe someterse a esta modificación.

Creación del nodo de sesgo de capa oculta

Podemos agregar un sesgo en el procesamiento de feedforward modificando el bucle for que calcula los valores de postactivación de la capa oculta y luego insertando manualmente el valor de sesgo para el último nodo oculto (que en realidad es un nodo de sesgo).

La primera modificación se muestra a continuación:


Si la red está configurada para no tener un nodo de polarización de capa oculta, hidden_bias es igual a 0 y la ejecución del bucle for no se modifica.

Si, por otro lado, hemos decidido incluir un nodo de polarización de capa oculta, el bucle for no calculará un valor de postactivación para el nodo final en la capa (es decir, el nodo de polarización).

El siguiente paso es incrementar la variable de nodo para que acceda al nodo de polarización en postActivation_H matriz y luego asigne el valor de sesgo.

Tenga en cuenta que estas modificaciones también deben aplicarse a la parte de validación del código.

Valores de sesgo distintos de +1

En mi experiencia, +1 es el valor de sesgo estándar y no sé si existe una justificación sólida para usar otros números. El sesgo se modifica mediante ponderaciones, por lo que elegir +1 no impone restricciones firmes sobre cómo el sesgo interactúa con la funcionalidad general de la red.

Sin embargo, si desea experimentar con otros valores de sesgo, puede hacerlo fácilmente. Para el sesgo oculto, simplemente cambie el número asignado a postActivation_H [nodo] . Para el sesgo de entrada, puede multiplicar la nueva_columna matriz (que inicialmente tiene +1 para cada elemento) por el valor de sesgo deseado.

Prueba del efecto del sesgo

Si ha leído la Parte 16, sabrá que mi Perceptron tuvo algunas dificultades para clasificar las muestras en el Experimento 3, que era el problema de "alta complejidad".

Veamos si la adición de uno o más nodos de sesgo ofrece una mejora consistente y significativa.

Mi suposición era que las diferencias en la precisión de la clasificación serían bastante sutiles, por lo que para este experimento promedié diez corridas en lugar de cinco. Los conjuntos de datos de entrenamiento y validación se generaron utilizando la misma relación de alta complejidad entre entrada y salida, y la dimensionalidad de la capa oculta fue 7.

Estos son los resultados:

Conclusión

Como puede ver, los nodos de sesgo no provocaron ningún cambio significativo en el rendimiento de la clasificación.

En realidad, esto no me sorprende; creo que los nodos de sesgo a veces se exageran un poco y, dada la naturaleza de los datos de entrada que utilicé en este experimento, no veo ninguna razón por la que los nodos de sesgo ayudarían.

No obstante, el sesgo es una técnica importante en algunas aplicaciones; Es una buena idea escribir código que admita la funcionalidad de nodo de sesgo para que esté ahí cuando lo necesite.


Robot industrial

  1. Repensando su plan de juego para el monitoreo de la red
  2. Cómo reforzar sus dispositivos para prevenir ciberataques
  3. Creación de una red de sensores inalámbricos en su hogar
  4. Comprender los mínimos locales en el entrenamiento de redes neuronales
  5. Cómo aumentar la precisión de una red neuronal de capa oculta
  6. ¿Cuántas capas y nodos ocultos necesita una red neuronal?
  7. Cómo integrar la gestión de piezas de repuesto en su CMMS
  8. [Entrevista] Expertos de la industria sobre la elección de su red de IoT
  9. Cómo integrar con éxito la robótica en sus instalaciones
  10. Transformando su cadena de suministro en un centro de oportunidades
  11. ¿Qué tan segura es su red de piso de producción?