Inicialización de Pesos

 

Inicialización de pesos es el proceso de asignar valores iniciales.

 

A los pesos de las conexiones entre neuronas.

 

En una red neuronal artificial.

 

La red neuronal aprenda de manera eficiente.

 

Evite problemas como el desvanecimiento del gradiente

 

La explosión del gradiente.

 

¿Por qué es importante la Inicialización de Pesos?

 

Se inicializan con valores demasiado grandes.

 

Las activaciones pueden crecer exponencialmente.

 

Provocando una explosión del gradiente.

 

Los pesos son demasiado pequeños.

 

Las activaciones pueden tender a cero.

 

Causando un desvanecimiento del gradiente

 

Dificultando el aprendizaje.

 

Permite un entrenamiento más rápido y estable.

 

Métodos de Inicialización de Pesos

 

Estrategias para inicializar los pesos.

 

En una red neuronal.

 

Inicialización Aleatoria

 

Se asignan valores aleatorios a los pesos.

 

Puede generar problemas.

 

Si los valores son demasiado grandes o pequeños.

 

Inicialización Cero (Zero Initialization) 

 

Se inicializan todos los pesos en cero.

 

Todas las neuronas aprenderían lo mismo.

 

La red no convergería.

 

Inicialización de Xavier/Glorot 

 

Diseñada para redes con funciones.

 

De activación sigmoide.

 

Tangente hiperbólica.

 

Se calculan los pesos.

 

 

Nin es el número de entradas.

 

Nout el número de salidas.

 

Mantiene la varianza de los valores.

 

A lo largo de la red.

 

 

Inicialización de He (Kaiming Initialization) 

 

Diseñada para redes con activaciones ReLU o Leaky ReLU.

 

La fórmula para los pesos es

 

 

 

Permite que los gradientes se propaguen.

 

Mejor en redes profundas.

 

Ejemplo en Python con TensorFlow / Keras

 

Diferentes métodos de inicialización.

 

Red neuronal con Keras.

 

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

# Definir una red con diferentes inicializaciones de pesos
model = keras.Sequential([
layers.Dense(64, activation=’relu’, kernel_initializer=’he_normal’, input_shape=(100,)),
layers.Dense(32, activation=’relu’, kernel_initializer=’glorot_uniform’),
layers.Dense(10, activation=’softmax’, kernel_initializer=’random_normal’)
])

# Resumen del modelo
model.summary()

 

 

Una correcta inicialización de pesos

 

La red neuronal aprenda de manera eficiente.

 

Converja más rápido.

 

Regla general

 

Xavier (Glorot): Funciona bien con sigmoide o tanh.

 

He Initialization: Ideal para ReLU y Leaky ReLU.

 

 

Manu Duque
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal.

Puedes revisar nuestra política en la página de Política de Privacidad, Condiciones de Uso y Cookies.