La deserción ( papel , explicación ) establece la salida de algunas neuronas a cero. Entonces, para un MLP, podría tener la siguiente arquitectura para el conjunto de datos de flores Iris :
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
Funcionaría así:
con , , , , (ignorando los sesgos en aras de la simplicidad). W 1 ∈ R 50 × 4 D ∈ { 0 , 1 } 50 × 1 W 2 ∈ R 20 × 50 W 3 ∈ R 20 × 3
Con y
donde la operación multiplica puntos con (ver producto Hadamard ).D M
Por lo tanto, solo muestreamos la matriz cada vez y, por lo tanto, el abandono se convierte en una multiplicación de un nodo con 0.
Pero para las CNN, no me queda claro qué se retiró exactamente. Puedo ver tres posibilidades:
- Descartar mapas completos de características (de ahí un núcleo)
- Descartar un elemento de un núcleo (reemplazar un elemento de un núcleo por 0)
- Descartar un elemento de un mapa de características
Agregue una referencia / cita a su respuesta.
Mis pensamientos
Creo que Lasagne sí (3) (ver código ). Este podría ser el más sencillo de implementar. Sin embargo, más cerca de la idea original podría estar (1).
Parece ser similar para Caffe (ver código ). Para el flujo de tensor, el usuario tiene que decidir ( código : no estoy seguro de qué sucede cuando noise_shape=None
se pasa).
Como debería ser
(2) y (3) no tienen mucho sentido ya que causaría que la red agregue invariancia a las posiciones espaciales, lo que probablemente no se desea. Por lo tanto (1) es la única variante que tiene sentido. Pero no estoy seguro de qué sucede si usa la implementación predeterminada.