Categories: NoticiasTecnología

Incorporación de nodos de sesgo en su red neuronal

Bienvenido a la serie All About Circuits en 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 utilizando una red neuronal: ¿qué es el perceptrón?
  2. Cómo usar un ejemplo simple de red neuronal de Perceptron para clasificar datos
  3. Cómo entrenar una red neuronal básica de perceptrón
  4. Comprensión del entrenamiento simple de redes neuronales
  5. Una introducción a la teoría del entrenamiento para redes neuronales
  6. Comprender 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 perceptrón multicapa
  9. Cómo entrenar una red neuronal de perceptrón multicapa
  10. Comprender las fórmulas de entrenamiento y la propagación hacia atrás para perceptrones multicapa
  11. Arquitectura de red neuronal para una implementación de Python
  12. Cómo crear una red neuronal perceptrón multicapa en Python
  13. Procesamiento de señales utilizando 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 de 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 de Perceptron o a la capa oculta, producen un valor constante elegido por el diseñador.

Discutimos los valores de sesgo en la Parte 11, y lo aliento 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 sesgo a través de 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 capacitación o validación.

La ventaja de este método es simplemente que no se requieren modificaciones sustanciales del 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 su dimensionalidad de la capa de entrada en uno:

Integrando el sesgo 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 sesgo 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 modo que funcionen como nodos normales pero con un valor preponderado que el diseñador elige y que nunca cambia.

Lo lograré de la siguiente manera:

Crear el 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 el número de muestras de entrenamiento.

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

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

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

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

Cuando miramos un diagrama de bloques del Perceptron, los nodos de sesgo aparecen como elementos de la red misma; por lo tanto, cualquier muestra 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 alimentación directa modificando el bucle for que calcula los valores de postactivación de 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 sesgo de capa oculta, hidden_bias es igual a 0 y la ejecución del bucle for no cambia.

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

El siguiente paso es incrementar la variable del nodo para que acceda al nodo de sesgo en el 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 alguna justificación sólida para usar otros números. El sesgo se modifica por los pesos, por lo que elegir +1 no impone restricciones firmes sobre cómo interactúa el sesgo 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 cambia el número asignado a postActivation_H (nodo). Para el sesgo de entrada, puede multiplicar el 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, sabe 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.

Supuse que las diferencias en la precisión de la clasificación serían bastante sutiles, por lo que para este experimento, promedié diez carreras en lugar de cinco. Los conjuntos de datos de capacitación 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.

Aquí están los resultados:

Conclusión

Como puede ver, los nodos de sesgo no condujeron a 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 están un poco exagerados, 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 puedan ayudar.

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é allí cuando lo necesite.

Maria Montero

Me apasiona la fotografía y la tecnología que nos permite hacer todo lo que siempre soñamos. Soñadora y luchadora. Actualmente residiendo en Madrid.

Recent Posts

Máquina de mano Lean, Green, Raspberry Pi

Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…

3 years ago

Cómo pronosticar series de tiempo usando autorregresión

Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…

3 years ago

Aquí están todas las formas en que puede cargar su AirPods Pro

Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…

3 years ago

Las principales noticias tecnológicas del lunes: la prohibición de clientes de terceros de Twitter parece no ser un accidente

Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…

3 years ago

AirPods Max 2: aquí están las características más solicitadas

Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…

3 years ago

El remake de Dead Space continúa luciendo terriblemente genial en el nuevo tráiler de la historia

El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…

3 years ago