Dropout/es: Difference between revisions
(Force re-parse after Math source-mode rollout (v1.2.0)) Tags: ci-deploy Reverted |
([deploy-bot] Deploy from CI (8c92aeb)) Tags: ci-deploy Manual revert |
||
| (One intermediate revision by the same user not shown) | |||
| Line 97: | Line 97: | ||
[[Category:Intermediate]] | [[Category:Intermediate]] | ||
[[Category:Neural Networks]] | [[Category:Neural Networks]] | ||
Latest revision as of 07:09, 24 April 2026
| Article | |
|---|---|
| Topic area | Deep Learning |
| Difficulty | Intermediate |
| Prerequisites | Neural Networks, Overfitting and Regularization |
Dropout es una tecnica de regularizacion para redes neuronales que establece aleatoriamente una fraccion de las activaciones neuronales a cero durante cada paso de entrenamiento. Introducida por Srivastava et al. (2014), dropout es uno de los metodos mas ampliamente utilizados para prevenir el sobreajuste en el aprendizaje profundo.
Motivacion: coadaptacion
En las redes neuronales grandes, las neuronas pueden desarrollar patrones complejos de coadaptacion — grupos de neuronas que solo funcionan correctamente en presencia de otras neuronas especificas. Este acoplamiento estrecho hace que la red sea fragil y propensa al sobreajuste, ya que las caracteristicas aprendidas dependen de las idiosincrasias particulares de los datos de entrenamiento en lugar de capturar patrones robustos y generales.
Dropout rompe estas coadaptaciones obligando a cada neurona a aprender caracteristicas que sean utiles en conjunto con muchos subconjuntos aleatorios diferentes de las demas neuronas.
El algoritmo de dropout
Durante el entrenamiento
En cada paso de entrenamiento, cada neurona en una capa de dropout se retiene independientemente con probabilidad $ p $ (la probabilidad de retencion) o se establece en cero con probabilidad $ 1 - p $. Formalmente, para una capa con vector de activacion $ \mathbf{h} $:
- $ r_j \sim \mathrm{Bernoulli}(p) $
- $ \tilde{h}_j = r_j \cdot h_j $
donde $ r_j $ es una mascara binaria extraida independientemente para cada neurona $ j $. Una probabilidad de retencion tipica es $ p = 0.5 $ para capas ocultas y $ p = 0.8 $ o mayor para la capa de entrada.
Cada paso de entrenamiento efectivamente entrena una subred "adelgazada" diferente muestreada de la arquitectura completa. Con $ n $ neuronas, existen $ 2^n $ posibles subredes, creando un ensamblaje implicito.
Durante la inferencia: dropout invertido
En el momento de la inferencia, todas las neuronas estan activas, por lo que la salida esperada de cada neurona esta escalada por un factor de $ p $ en relacion con el entrenamiento. Dos enfoques abordan esto:
- Dropout estandar: Multiplicar todos los pesos por $ p $ en el momento de la prueba.
- Dropout invertido (mas comun): Durante el entrenamiento, dividir las activaciones retenidas por $ p $:
- $ \tilde{h}_j = \frac{r_j \cdot h_j}{p} $
El dropout invertido asegura que el valor esperado de $ \tilde{h}_j $ sea igual a $ h_j $ durante el entrenamiento, de modo que no se necesita ajuste en la inferencia. Esta es la implementacion predeterminada en frameworks como PyTorch y TensorFlow.
Interpretacion teorica
Perspectiva de ensamblaje
Dropout puede verse como el entrenamiento de un ensamblaje exponencialmente grande de subredes con amplia comparticion de pesos. En el momento de la prueba, utilizar la red completa con pesos escalados aproxima la media geometrica de las predicciones de todas las $ 2^n $ subredes. Este promediado del ensamblaje reduce la varianza y mejora la generalizacion.
Interpretacion bayesiana
Gal y Ghahramani (2016) demostraron que una red neuronal con dropout aplicado antes de cada capa de pesos es matematicamente equivalente a una aproximacion de un proceso gaussiano profundo. Realizar dropout en el momento de la prueba (dropout de Monte Carlo) produce una distribucion sobre las predicciones, proporcionando una estimacion practica de la incertidumbre del modelo.
Variantes de dropout
| Variante | Descripcion | Aplicacion tipica |
|---|---|---|
| Dropout estandar | Descarta neuronas individuales | Capas completamente conectadas |
| Dropout espacial | Descarta mapas de caracteristicas completos (canales) | Redes convolucionales |
| DropConnect | Descarta pesos individuales en lugar de neuronas | Capas densas |
| Dropout variacional | Aprende la tasa de dropout por neurona/peso | Aprendizaje profundo bayesiano |
| DropBlock | Descarta regiones contiguas de mapas de caracteristicas | Redes convolucionales |
| Alpha dropout | Mantiene la propiedad de autonormalizacion (para activaciones SELU) | Redes autonormalizantes |
El dropout espacial (Tompson et al., 2015) es particularmente importante para las redes convolucionales. El dropout estandar sobre mapas de caracteristicas convolucionales es ineficaz porque las activaciones adyacentes estan altamente correlacionadas; descartar pixeles individuales aun deja informacion espacial redundante. El dropout espacial en cambio descarta canales completos, obligando a la red a utilizar representaciones de caracteristicas diversas.
Directrices practicas
- Ubicacion: Aplicar dropout despues de la funcion de activacion en capas completamente conectadas. En los Transformers, dropout se aplica a los pesos de atencion y despues de las subcapas de red prealimentada.
- Seleccion de tasa: Comenzar con $ p = 0.5 $ para capas ocultas. Utilizar tasas de retencion mas altas (menor dropout) para capas con menos parametros. Aumentar el dropout para modelos mas grandes o conjuntos de datos mas pequenos.
- Interaccion con BatchNorm: Utilizar dropout y Batch Normalization juntos requiere cuidado, ya que dropout introduce varianza que puede desestabilizar las estadisticas del lote. Una practica comun es aplicar dropout solo despues de la ultima capa con batch normalization.
- Dropout programado: Algunos regimenes de entrenamiento comienzan sin dropout y lo aumentan gradualmente, o viceversa, a lo largo del entrenamiento.
Efecto sobre el entrenamiento
Dropout tipicamente aumenta la perdida de entrenamiento y ralentiza la convergencia, ya que la capacidad efectiva del modelo se reduce en cada paso. Sin embargo, disminuye la brecha entre el rendimiento de entrenamiento y validacion, lo que conduce a una mejor generalizacion. Si la perdida de entrenamiento ya es alta (subajuste), el dropout debe reducirse o eliminarse.
Vease tambien
- Overfitting and Regularization
- Batch Normalization
- Neural Networks
- Backpropagation
- Bayesian deep learning
Referencias
- Srivastava, N. et al. (2014). "Dropout: A Simple Way to Prevent Neural Networks from Overfitting". Journal of Machine Learning Research 15(56):1929–1958.
- Gal, Y. and Ghahramani, Z. (2016). "Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning". ICML.
- Tompson, J. et al. (2015). "Efficient Object Localization Using Convolutional Networks". CVPR.
- Wan, L. et al. (2013). "Regularization of Neural Networks using DropConnect". ICML.
- Ghiasi, G., Lin, T.-Y. and Le, Q. V. (2018). "DropBlock: A regularization method for convolutional networks". NeurIPS.