Athrun Data Intelligence


Deep Learning ha revolucionado el campo AI al permitir que las máquinas comprendan información más profunda interiormente de nuestros datos. El formación profundo ha podido hacer esto replicando cómo nuestro cerebro funciona a través de la razonamiento de las sinapsis de neuronas. Uno de los aspectos más críticos de la capacitación de modelos de formación profundo es cómo alimentamos nuestros datos al maniquí durante el proceso de capacitación. Aquí es donde entran en pernio el procesamiento por lotes y la capacitación en mini lotes. La forma en que entrenamos nuestros modelos afectará el rendimiento universal de los modelos cuando se ponga en producción. En este artículo, profundizaremos en estos conceptos, comparando sus pros y contras, y explorando sus aplicaciones prácticas.

Proceso de entrenamiento de formación profundo

Entrenar un maniquí de formación profundo implica minimizar la función de pérdida que mide la diferencia entre los resultados predichos y las etiquetas reales posteriormente de cada época. En otras palabras, el proceso de entrenamiento es una pareja de zapateo entre Propagación con destino a delante y Propagación con destino a a espaldas. Esta minimización generalmente se logra utilizando descenso de gradiente, un cálculo de optimización que actualiza los parámetros del maniquí en la dirección que reduce la pérdida.

Proceso de capacitación de aprendizaje profundo | descenso de gradiente

Puedes descifrar más sobre el cálculo de descenso de gradiente aquí.

Entonces, aquí, los datos rara vez se pasan una muestra a la vez o todo a la vez conveniente a restricciones computacionales y de memoria. En cambio, los datos se pasan en fragmentos llamados «lotes».

Entrenamiento de aprendizaje profundo | Tipos de descenso de gradiente
Fuente: Medio

En las primeras etapas del formación necesario y la capacitación en redes neuronales, se utilizaron dos métodos comunes de procesamiento de datos:

1. Enseñanza fortuito

Este método actualiza los pesos del maniquí utilizando una sola muestra de entrenamiento a la vez. Si perfectamente ofrece las actualizaciones de peso más rápidas y puede ser útil en la transmisión de aplicaciones de datos, tiene inconvenientes significativos:

  • Actualizaciones enormemente inestables conveniente a gradientes ruidosos.
  • Esto puede conducir a una convergencia subóptima y tiempos de entrenamiento generales más largos.
  • No perfectamente adecuado para el procesamiento paralelo con GPU.

2. Enseñanza de lotes completos

Aquí, todo el conjunto de datos de capacitación se utiliza para calcular gradientes y realizar una única modernización de los parámetros del maniquí. Tiene gradientes muy estables y comportamiento de convergencia, que son grandes ventajas. Hablando de las desventajas, sin bloqueo, aquí hay algunas:

  • Uso de memoria extremadamente parada, especialmente para grandes conjuntos de datos.
  • Solación del cálculo de la época mientras paciencia procesar todo el conjunto de datos.
  • Inflexible para conjuntos de datos de crecimiento dinámico o entornos de formación en fila.

A medida que los conjuntos de datos se hicieron más grandes y las redes neuronales se volvieron más profundas, estos enfoques resultaron ineficientes en la maña. Las limitaciones de memoria y la ineficiencia computacional empujaron a los investigadores e ingenieros a encontrar un circunscripción medio: capacitación en mini lotes.

Ahora, intentemos comprender qué procesamiento por lotes y procesamiento de mini lotes.

¿Qué es el procesamiento por lotes?

Para cada paso de capacitación, todo el conjunto de datos se alimenta al maniquí a la vez, un proceso conocido como procesamiento por lotes. Otro nombre para esta técnica es el descenso de gradiente de lotes completos.

Procesamiento por lotes en aprendizaje profundo
Fuente: Medio

Características esencia:

  • Utiliza todo el conjunto de datos para calcular los gradientes.
  • Cada época consiste en un solo pase con destino a delante y con destino a a espaldas.
  • Memoria intensiva.
  • Generalmente más cachazudo por época, pero estable.

Cuándo usar:

  • Cuando el conjunto de datos se ajusta completamente a la memoria existente (ajuste adecuado).
  • Cuando el conjunto de datos es pequeño.

¿Qué es el entrenamiento de mini lotes?

Un compromiso entre el descenso de gradiente de lotes y el descenso de gradiente fortuito es el entrenamiento de mini lotes. Utiliza un subconjunto o una parte de los datos en circunstancia de todo el conjunto de datos o una sola muestra.

Características esencia:

  • Divida el conjunto de datos en grupos más pequeños, como 32, 64 o 128 muestras.
  • Realiza actualizaciones de gradiente posteriormente de cada mini conjunto.
  • Permite una convergencia más rápida y una mejor universalización.

Cuándo usar:

  • Para grandes conjuntos de datos.
  • Cuando GPU/TPU está apto.

Resumamos los algoritmos anteriores en forma tabular:

Tipo Tamaño por lotes Modernización de frecuencia Requisito de memoria Convergencia Ruido
Lotes completos Conjunto de datos completo Una vez por época Stop Establo, cachazudo Bajo
Mini conjunto Por ejemplo, 32/64/128 Posteriormente de cada conjunto Medio Sensato Medio
Probabilístico 1 muestra Posteriormente de cada muestra Bajo Ruidoso, rápido Stop

Cómo funciona el descenso de gradiente

El descenso de gradiente funciona actualizando iterativamente los parámetros del maniquí de vez en cuando para minimizar la función de pérdida. En cada paso, calculamos el gradiente de la pérdida con respecto a los parámetros del maniquí y avanzamos con destino a la dirección opuesta del gradiente.

Cómo funciona el descenso de gradiente
Fuente: Incorporado

Regla de modernización: θ = θ – η ⋅ ∇θj (θ)

Dónde:

  • θ son parámetros del maniquí
  • η es la tasa de formación
  • ∇θj (θ) es el gradiente de la pérdida

Parecido simple

Imagine que tiene los luceros vendados e intenta alcanzar el punto más bajo en un diapositivo de juegos. Da pequeños pasos cuesta debajo posteriormente de percatar la irresoluto con los pies. La inclinación de la irresoluto debajo de sus pies determina cada paso. Como descendemos gradualmente, esto es similar al descenso de gradiente. El maniquí se mueve en la dirección de la longevo reducción de errores.

El descenso de lotes completos es similar al uso de un planisferio de diapositivas gigantesco para determinar su mejor curso de argumento. Le preguntas a un amigo a dónde quieres ir y luego da un paso en ascendencia estocástica. Antiguamente de efectuar, consultas con un pequeño agrupación en ascendencia de mini lotes.

Formulación matemática

Dejar X ∈ R N × D ser los datos de entrada con boreal muestras y d características.

Descenso de gradiente de lotes completos

Descenso de gradiente de lotes completos

Descenso de gradiente de mini lotes

descenso de gradiente de mini lotes

Ejemplo de la vida vivo

Considere intentar estimar el costo de un producto en función de las revisiones.

Es completo si lee las 1000 reseñas antaño de tomar una audacia. Animarse posteriormente de descifrar solo una revisión es estocástica. Un mini conjunto es cuando lee un pequeño número de revisiones (digamos 32 o 64) y luego estime el precio. El mini conjunto logra un buen firmeza entre ser lo suficientemente confiable como para tomar decisiones sabias y lo suficientemente rápido como para efectuar rápidamente.

Mini-Batch ofrece un buen firmeza: es lo suficientemente rápido como para efectuar de guisa rápida y confiable para tomar decisiones inteligentes.

Implementación maña

Usaremos Pytorch para demostrar la diferencia entre el procesamiento por lotes y mini lotes. A través de esta implementación, podremos comprender qué tan perfectamente estos 2 algoritmos ayudan a converger a nuestros mínimos globales más óptimos.

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
import matplotlib.pyplot as plt


# Create synthetic data
X = torch.randn(1000, 10)
y = torch.randn(1000, 1)


# Define model architecture
def create_model():
    return nn.Sequential(
        nn.Linear(10, 50),
        nn.ReLU(),
        nn.Linear(50, 1)
    )


# Loss function
loss_fn = nn.MSELoss()


# Mini-Batch Training
model_mini = create_model()
optimizer_mini = optim.SGD(model_mini.parameters(), lr=0.01)
dataset = TensorDataset(X, y)
dataloader = DataLoader(dataset, batch_size=64, shuffle=True)


mini_batch_losses = ()


for epoch in range(64):
    epoch_loss = 0
    for batch_X, batch_y in dataloader:
        optimizer_mini.zero_grad()
        outputs = model_mini(batch_X)
        loss = loss_fn(outputs, batch_y)
        loss.backward()
        optimizer_mini.step()
        epoch_loss += loss.item()
    mini_batch_losses.append(epoch_loss / len(dataloader))


# Full-Batch Training
model_full = create_model()
optimizer_full = optim.SGD(model_full.parameters(), lr=0.01)


full_batch_losses = ()


for epoch in range(64):
    optimizer_full.zero_grad()
    outputs = model_full(X)
    loss = loss_fn(outputs, y)
    loss.backward()
    optimizer_full.step()
    full_batch_losses.append(loss.item())


# Plotting the Loss Curves
plt.figure(figsize=(10, 6))
plt.plot(mini_batch_losses, label="Mini-Batch Training (batch_size=64)", marker="o")
plt.plot(full_batch_losses, label="Full-Batch Training", marker="s")
plt.title('Training Loss Comparison')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
Procesamiento por lotes vs capacitación de mini lotes | Comparación de pérdida de entrenamiento

Aquí, podemos visualizar la pérdida de entrenamiento con el tiempo para ambas estrategias para observar la diferencia. Podemos observar:

  1. El entrenamiento de mini lotes generalmente muestra un progreso auténtico más suave y más rápido, ya que actualiza los pesos con más frecuencia.
Progreso de mini lotes a través del conjunto de datos
  1. El entrenamiento de lotes completos puede tener menos actualizaciones, pero su gradiente es más estable.

En aplicaciones reales, a menudo se prefieren mini lotes para una mejor universalización y eficiencia computacional.

¿Cómo decantarse el tamaño del conjunto?

El tamaño del conjunto que establecemos es un hiperparámetro que debe experimentarse según la obra del maniquí y el tamaño del conjunto de datos. Una guisa efectiva para atreverse sobre un valencia de tamaño de conjunto espléndido es implementar la táctica de garra cruzada.

Aquí hay una tabla para ayudarlo a tomar esta audacia:

Característica Lotes completos Mini conjunto
Estabilidad de gradiente Stop Medio
Velocidad de convergencia Premioso Rápido
Uso de memoria Stop Medio
Paralelización Menos Más
Tiempo de entrenamiento Stop Optimizado
Extensión Can Soblit Mejor

Nota: Como se discutió anteriormente, Batch_Size es un hiperparámetro que debe estar cabal para nuestro entrenamiento maniquí. Por lo tanto, es necesario memorizar cómo funcionan el tamaño de conjunto más bajo y los títulos de longevo tamaño de lotes.

Tamaño de conjunto pequeño

Los títulos de tamaño por lotes más pequeños caerían principalmente en 1 a 64. Aquí, las actualizaciones más rápidas se producen ya que los gradientes se actualizan con longevo frecuencia (por conjunto), el maniquí comienza a formarse temprano y actualiza pesos rápidamente. Las actualizaciones de peso constantes significan más iteraciones para una época, lo que puede aumentar la sobrecarga de cálculo, aumentando el tiempo del proceso de entrenamiento.

El «ruido» en la estimación de gradiente ayuda a escapar de los mínimos locales agudos y el sobreajuste, a menudo conduciendo a un mejor rendimiento de la prueba, lo que muestra una mejor universalización. Adicionalmente, conveniente a estos ruidos, puede acontecer una convergencia inestable. Si la tasa de formación es incorporación, estos gradientes ruidosos pueden hacer que el maniquí sobrepase y divergue.

Piense en el tamaño de conjunto pequeño como pasos frecuentes pero inestables con destino a su objetivo. Es posible que no camine en fila recta, pero puede descubrir un mejor camino en universal.

Tamaño de conjunto prócer

Se pueden considerar tamaños de lotes más grandes desde un rango de 128 y más. Los tamaños de lotes más grandes permiten una convergencia más estable, ya que más muestras por lotes medios son más suaves y más cercanos al gradiente serio de la función de pérdida. Con gradientes más suaves, el maniquí podría no escapar de mínimos locales planos o agudos.

Aquí, se necesitan menos iteraciones para completar una época, por lo que permite un entrenamiento más rápido. Los lotes grandes requieren más memoria, lo que requerirá GPU para procesar estos enormes trozos. Aunque cada época es más rápida, puede tomar más épocas para converger conveniente a pasos de modernización más pequeños y una desatiendo de ruido de gradiente.

El tamaño de conjunto prócer es como caminar constantemente con destino a nuestro objetivo con pasos planificados, pero a veces puede quedarse atascado porque no explora todos los demás caminos.

Diferenciación universal

Aquí hay una mesa integral que compara el entrenamiento de lotes completos y mini lotes.

Aspecto Entrenamiento de lotes completos Entrenamiento mini-lotes
Pros – Gradientes estables y precisos
– Cálculo preciso de pérdidas
– Entrenamiento más rápido conveniente a actualizaciones frecuentes
– Apoya el paralelismo GPU/TPU
– Mejor universalización conveniente al ruido
Contras – Stop consumo de memoria
-Entrenamiento más cachazudo por epoch
– No es escalable para Big Data
– Actualizaciones de gradiente más ruidosas
– Requiere ajuste del tamaño de lotes
– un poco menos estable
Casos de uso – pequeños conjuntos de datos que se ajustan en la memoria
– Cuando la reproducibilidad es importante
-conjuntos de datos a gran escalera
– Enseñanza profundo en GPU/TPUS
-tuberías de entrenamiento en tiempo vivo o de transmisión

Recomendaciones prácticas

Al designar entre el entrenamiento por lotes y mini lotes, considere lo subsiguiente:

Tenga en cuenta lo subsiguiente al atreverse entre el entrenamiento por lotes y mini lotes:

  • Si el conjunto de datos es pequeño (menos de 10,000 muestras) y la memoria no es un problema: conveniente a su estabilidad y convergencia precisa, el descenso de gradiente de lotes completos podría ser factible.
  • Para conjuntos de datos medianos a grandes (por ejemplo, más de 100,000 muestras): el entrenamiento de mini lotes con tamaños de lotes entre 32 y 256 es a menudo el punto espléndido.
  • Use barajando antaño de cada época en el entrenamiento de mini lotes para evitar patrones de formación en el orden de datos.
  • Use la programación de la tasa de formación o los optimizadores adaptativos (por ejemplo, Adam, RMSProp, etc.) para ayudar a mitigar las actualizaciones ruidosas en la capacitación de mini lotes.

Conclusión

El procesamiento por lotes y la capacitación en mini lotes son los conceptos fundamentales imprescindibles en la optimización del maniquí de formación profundo. Si perfectamente la capacitación de lotes completos proporciona los gradientes más estables, rara vez es factible para conjuntos de datos modernos a gran escalera conveniente a las limitaciones de memoria y cálculo como se discutió al principio. El entrenamiento de mini lotes en el otro costado aporta el firmeza correcto, ofreciendo una velocidad, universalización y compatibilidad decentes con la ayuda de la celeridad de GPU/TPU. Por lo tanto, se ha convertido en el unificado de facto en la mayoría de las aplicaciones de formación profundo del mundo vivo.

Designar el tamaño de conjunto espléndido no es una audacia única para todos. Debe ser guiado por el Size del conjunto de datos y la EXisting de memoria y posibles de hardware. La selección del optimizador y el DExtensión y convergencia ESIRIRS Velocidad, por ejemplo. Learning_Rate, Decay_Rate asimismo se debe tener en cuenta. Podemos crear modelos de guisa más rápida, precisa y valioso comprendiendo estas dinámicas y utilizando herramientas como horarios de tarifas de formación, optimizadores adaptativos (como Adam) y ajuste de tamaño por lotes.

Genai Intern @ Analytics Vidhya | Postrer año @ vit chennai
Apasionado por la IA y el formación necesario, estoy ansioso por sumergirme en roles como ingeniero de IA/ML o sabio de datos donde puedo tener un impacto vivo. Con una astucia particular para un formación rápido y un inclinación por el trabajo en equipo, estoy emocionado de traer soluciones innovadoras y avances de vanguardia a la mesa. Mi curiosidad me impulsa a explorar la IA en varios campos y tomar la iniciativa de profundizar en la ingeniería de datos, asegurando que me mantenga a la vanguardia y entregue proyectos impactantes.

Inicie sesión para continuar leyendo y disfrutando de contenido curado por expertos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *