El concepto de redes neuronales está inspirado en las neuronas del cerebro humano y los científicos querían una máquina para replicar el mismo proceso. Esto ansiaba un camino hacia uno de los temas más importantes de la Inteligencia Artificial. Una red neuronal (NN) se basa en una colección de unidades o Nodes conectados llamados neuronas artificiales, que modelan libremente las neuronas en un cerebro biológico. Dado que dicha red se crea artificialmente en las máquinas, nos referimos a ella como redes neuronales artificiales (ANN). Este artículo asume que tienes un conocimiento decente de ANN. Puede encontrar más información sobre ANN aquí . Ahora, acerquémonos a los detalles de Dropout en ANN.
Python3
tf.keras.layers.Dropout( rate ) # rate: Float between 0 and 1. # The fraction of the input units to drop.
Problema: cuando una capa completamente conectada tiene una gran cantidad de neuronas, es más probable que ocurra una coadaptación. La coadaptación se refiere a cuando múltiples neuronas en una capa extraen las mismas características ocultas, o muy similares, de los datos de entrada. Esto puede suceder cuando los pesos de conexión de dos neuronas diferentes son casi idénticos.
Esto plantea dos problemas diferentes a nuestro modelo:
- Desperdicio de los recursos de la máquina al calcular la misma salida.
- Si muchas neuronas están extrayendo las mismas características, agrega más importancia a esas características para nuestro modelo. Esto conduce a un sobreajuste si las características duplicadas extraídas son específicas solo del conjunto de entrenamiento.
Solución al problema: como sugiere el título, usamos el abandono mientras entrenamos al NN para minimizar la coadaptación. En el abandono, apagamos aleatoriamente una fracción de las neuronas de una capa en cada paso de entrenamiento al poner a cero los valores de las neuronas. La fracción de neuronas que se ponen a cero se conoce como tasa de abandono, . Las neuronas restantes tienen sus valores multiplicados por para que la suma total de los valores de las neuronas permanezca igual.
Las dos imágenes representan el abandono aplicado a una capa de 6 unidades, que se muestra en varios pasos de entrenamiento. La tasa de abandono es 1/3, y las 4 neuronas restantes en cada paso de entrenamiento tienen su valor escalado por x1.5. Por lo tanto, estamos eligiendo una muestra aleatoria de neuronas en lugar de entrenar toda la red a la vez. Esto asegura que la coadaptación se resuelva y aprendan mejor las características ocultas.
¿Por qué funciona la deserción?
- Al usar dropout, en cada iteración, trabajará en una red neuronal más pequeña que la anterior y, por lo tanto, se acerca a la regularización.
- La deserción ayuda a reducir la norma cuadrática de los pesos y esto tiende a reducir el sobreajuste.
El abandono se puede aplicar a una red mediante las API de TensorFlow de la siguiente manera:
Python3
tf.keras.layers.Dropout( rate ) # rate: Float between 0 and 1. # The fraction of the input units to drop.