¿Qué es el batch size en Deep Learning?

Autor: | Última modificación: 17 de agosto de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

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 batch 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)
¿Qué es el batch size en Deep Learning? 1
# 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)
¿Qué es el batch size en Deep Learning? 2
# 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)
¿Qué es el batch size en Deep Learning? 3
# ruerda la montaña, estamos saltando de arriba abajo y de abajo arriba, en vez de ir siempre hacia abajo
¿Qué es el batch size en Deep Learning? 4


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)
¿Qué es el batch size en Deep Learning? 5

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)
¿Qué es el batch size en Deep Learning? 6

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.

Aprende más sobre el Big Data

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!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Sabías que hay más de 5.000 vacantes para desarrolladores de Big Data sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso!