¿Qué es el batch size en Deep Learning?

Contenido del Bootcamp Dirigido por: | Última modificación: 22 de mayo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El batch size en Deep Learning forma parte de la optimización de hiperparámetros que se aplican en el estudio de las redes neuronales profundas para el manejo de los macrodatos.

De hecho, de entre todos los hiperparámetros, el learning rate y el batch size son dos parámetros directamente relacionados con el algoritmo del gradient descent.

Ahora, en este post, te explicamos qué es y cómo funciona el batch size en Deep Learning.

¿Qué es el batch size en Deep Learning?

Veamos qué es el batch size en Deep Learning. Para ello, debes recordar a lo que hace referencia el Stochastic Gradient Descent y el Mini-batch Stochastic Gradient Descent:

  • Recuerda que el SGD es un Mini-bacth SGD donde k=1.
  • Y que en el Mini-bacth SGD, la k indica el número de muestras que se utilizan para actualizar los pesos cada vez. Este no es un parámetro crítico y se suele establecer como el número máximo de muestras potencia de 2 que caben en nuestra GPU.

Para continuar, te ponemos un ejemplo sobre la optimización de hiperparámetros en Deep Learning con batch.size. Piensa que tenemos una GPU con 8GB de memoria, ¿cuántas muestras nos caben si cada imagen ocupa 1MB? ¡Depende de la arquitectura de la red! Las capas densas o Fully Connected (las tradicionales en las que todas las neuronas se interconectan con todas las neuronas de la siguiente capa) son las que más parámetros tienen, por lo que también son las que más memoria ocupan.

Por otro lado, también tenemos capas convolucionales, de pooling o de dropout, entre muchos otros tipos. Esto significa que, en la práctica, es difícil calcular de forma manual cuál es el número máximo de muestras que podemos usar.

Lo que se hace es probar con tamaños de batches machine learning potencia de 2 e ir disminuyéndolo si tenemos un error de memoria. Por ejemplo, podríamos empezar con 512, y en caso de que nos dé error, ir bajándolo a 256, 128, 64, 32, 16, 8, 4, 2 e, incluso, hasta 1. Dependiendo de la arquitectura de nuestra red, podemos llegar a tener que usar k=1, y por tanto, Stochastic Gradient Descent.

Aunque ten en cuenta que muchas veces es preferible disminuir el tamaño de la imagen, por ejemplo, de 512×512 a 256×256 o 128×128 píxeles, y usar un k mayor.

Ejemplo de batch size en Deep Learning

Vamos a ver algunos casos de diferentes bath size siguiendo con el ejemplo:

# con batch_size = 2048
learning_rate = 1.
lr_decay = 1e-3
n_epochs = 10
batch_size = 2048
train_network_decay(learning_rate, lr_decay, batch_size, n_epochs)
# batch size training
# con batch_size = 256
learning_rate = 1.
lr_decay = 1e-3
n_epochs = 10
batch_size = 256
train_network_decay(learning_rate, lr_decay, batch_size, n_epochs)
# con batch_size = 32
learning_rate = 1.
lr_decay = 1e-3
n_epochs = 10
batch_size = 32
train_network_decay(learning_rate, lr_decay, batch_size, n_epochs)
# ruerda la montaña, estamos saltando de arriba abajo y de abajo arriba, en vez de ir siempre hacia abajo


Es muy importante tener en cuenta que el learning rate está relacionado con el batch size.

Si nos aproximamos a K=1, debemos bajar el learning rate para que las actualizaciones de los pesos tengan menos importancia, ya que cada vez se aproxima más al SGD, es decir, a cálculos del gradiente con muestras aleatorias.

Veamos qué pasa si disminuimos el learning rate:

# con batch_size = 32 y learning rate = 0.1
learning_rate = 0.1
lr_decay = 1e-3
n_epochs = 10
batch_size = 32
train_network_decay(learning_rate, lr_decay, batch_size, n_epochs)

Si te fijas en la curva de pérdidas, puedes intuir que todavía es demasiado grande, puesto que la función no es monótona decreciente, es decir, no disminuye en cada época. Así que sería mejor usar un learning rate aún menor. Veámoslo:

# con batch_size = 32 y learning_rate=0.01
learning_rate = 0.01
lr_decay = 1e-3
n_epochs = 10
batch_size = 32
train_network_decay(learning_rate, lr_decay, batch_size, n_epochs)

Fíjate en cómo el accuracy es menor con el learning rate más bajo. Esto se debe a que necesitamos más épocas, ya que los pesos se actualizan más lentamente.

Ahora que sabes cómo funciona batch size en Deep Learning, podrás implementarlo en el manejo de los macrodatos. Pero aún queda mucho por aprender y, por ello, no puedes perderte nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning. ¡Es ideal para que avances con tu formación!

Aquí, podrás contar con una serie de módulos que te pondrán en contexto con los desarrolladores y herramientas más importantes para el procesamiento de los macrodatos, como Machine Learning, Spark & Scala, Tableau, Hadoop, etc. Todo ello de forma tanto teórica como práctica y con el acompañamiento de grandes profesionales y expertos en el universo del Big Data. ¿A qué esperas para empezar? ¡Apúntate ya!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado