Sí.
Esta idea ha sido explorada ampliamente hasta ahora, y es un área activa de investigación. Presentaré brevemente 3 ejemplos. Esperemos que esto también ayude a responder su pregunta de seguimiento.
Regularización
Resulta que ciertas formas de ruido aleatorio son equivalentes a regularizar el objetivo. Finalmente, la regularización ayuda a evitar el sobreajuste; en cierto modo, esto ayuda a la ANN a esquivar los malos óptimos locales correspondientes a las regiones que se ajustan demasiado a los datos de capacitación.
- Cómo considerar la posibilidad de una IA fuerte
- ¿Por qué Stephen Hawking y Elon Musk están tan preocupados por los peligros de la IA? ¿Están justificados?
- ¿Cuáles son las aplicaciones de la inteligencia artificial en la ingeniería estructural?
- ¿Cuál crees que es el camino más probable para AGI?
- ¿Cuáles son las diferencias y similitudes entre la minería de datos, el aprendizaje automático y la inteligencia artificial?
Por ejemplo, agregar un regularizador L2 a los pesos de una red neuronal es equivalente a asumir que los pesos se extrajeron de iid gaussianos. Un regularizador L1 es equivalente a suponer que los pesos se extrajeron de iid exponenciales dobles.
De manera más general, puede demostrar que esto es cierto para cualquier estimador; por ejemplo, agregar un regularizador L2 a la regresión logística es equivalente a un gaussiano anterior en los pesos.
Autoencoders de Denoising
Desengrasar autoencoders es una aplicación más directa de su pregunta; La idea aquí es que tenemos algunos vectores de datos [math] \ vec {x} [/ math] para los que nos gustaría aprender una representación de nivel superior (cada característica debe estar entre 0 y 1). Para aprender esta representación, agregamos una sola capa oculta [matemática] h [/ matemática] y configuramos la capa de salida [matemática] \ vec {\ hat {x}} [/ matemática] para que tenga la misma dimensionalidad que la capa oculta. Generalmente utilizamos activadores sigmoides y minimizamos la entropía cruzada entre [math] \ vec {x} [/ math] y [math] \ vec {\ hat {x}} [/ math]. Cada neurona en la capa oculta corresponde a una única característica aprendida en la representación de nivel superior; idealmente, al final del día, tendrán interpretaciones significativas.
En la práctica, esto no funciona tan bien, porque los pesos pueden “trabajar juntos” de manera determinista para minimizar el objetivo. En última instancia, lo que realmente queremos es un conjunto robusto de características independientes que representen bien los datos. Para lograr esto, los autoencoders de eliminación de ruido establecen entradas de [math] \ vec {x} [/ math] en 0 con cierta probabilidad (generalmente alrededor de 0.1 – 0.4). Al hacer esto, obtenemos características que son mucho más robustas; en el conjunto de datos de dígitos MNIST, por ejemplo, obtenemos características de trazo de lápiz.
Abandonar
Los autoencoders de denoising se incluyen en una clase más amplia de métodos basados en abandono introducidos por Geoffrey Hinton; en lugar de eliminar solo las entradas, también podemos intentar colocar valores de capa ocultos en 0. Concretamente, si tenemos una capa oculta con algunas unidades H, la salida de cada unidad se establece en 0 con probabilidad [matemática] p [/ matemática]. En el caso de la capa oculta, [math] p [/ math] generalmente se establece en 0.5.
Para los codificadores automáticos sigmoides, resulta que hay una buena prueba de que entrenar una red neuronal con deserción es equivalente a entrenar todas las redes neuronales cuyas capas ocultas son un subconjunto de las unidades H y promediar las salidas de esas redes. Esto es bastante notable, ya que efectivamente hay redes neuronales [matemáticas] 2 ^ H [/ matemáticas] que se están entrenando simultáneamente (aunque con pesos compartidos). Esperaríamos que tal idea funcione bien en la práctica dado que se ha demostrado que el promedio del modelo funciona muy bien con las redes neuronales. En la práctica, la deserción funciona bien y agrega una mejora del 1-2% o más a la clasificación.
PD: Probablemente valga la pena mencionar si te estabas preguntando: por lo general, no es una buena idea ejecutar el descenso de gradiente por lotes con redes neuronales a menos que (1) estés depurando o (2) estés trabajando con pequeños conjuntos de datos, ya que el descenso de gradiente por lotes tiende a ser muy lento, y el descenso de gradiente estocástico (SGD) con lotes moderadamente grandes tiende a producir actualizaciones decentes de todos modos.
Si SGD no produce convergencia, puede intentar calcular el ángulo entre el gradiente de lote y el gradiente SGD y ver si está cerca de 0. Siempre y cuando el ángulo sea consistentemente inferior a 90, SGD debería estar bien.