Enseña a tu Golem a aprender

Gráficos de Dan Horne para Golem

Ok, aquí está la cosa: el aprendizaje automático se está apoderando del mundo.

Como, no en la forma literal, de skynet, de odisea del espacio, de matriz. Por ahora.

¿Entonces como? Bueno, en la forma ordinaria, económica. Se están vertiendo datos, se entrenan algoritmos, se está ganando dinero.

Y dado que Golem es el futuro de la informática, nos gustaría poder ejecutar tareas de ML en él.

Hay, sin embargo, un problema. Los algoritmos ordinarios de aprendizaje automático no son, al menos en este momento, trivialmente paralelos. Se pueden ejecutar en paralelo, pero para una gran parte de ellos, solo es posible con conexiones de gran ancho de banda y baja latencia.

Sin embargo, existen algoritmos que se pueden paralelizar fácilmente y que son cruciales en el flujo de trabajo moderno del aprendizaje automático, incluso si están ocultos detrás de escena. Estoy hablando de cosas de optimización de hiperparámetros.

"¿Qué es eso?", Puede preguntar. Respuesta corta: son algoritmos para optimizar algoritmos. Digamos que tenemos una red neuronal de juguete, con solo una capa, para la cual queremos establecer una cantidad de neuronas ocultas. Si lo configuramos demasiado alto, la red se sobreajustará, si lo configuramos demasiado bajo, no aprenderá tanto como podría². Dado que el algoritmo de entrenamiento de la red (descenso de gradiente) no cambia la estructura de la red, solo optimiza los parámetros (pesos) del modelo, tenemos que encontrarlo de alguna otra manera. ¿Entonces como?

Bueno, podemos adivinar. Si usted es un ingeniero o investigador experimentado en aprendizaje automático, la suposición probablemente será bastante buena. Pero, obviamente, esa no es la mejor manera de hacerlo.

Otra forma es simplemente verificar todas las configuraciones posibles (en algún rango, ya que hay una cantidad infinita de ellas). Esto producirá la mejor respuesta posible, pero tomará demasiado tiempo para ser práctico.

Podemos combinar estos dos enfoques adivinando una serie de configuraciones, basadas en nuestra intuición, luego probarlas todas y seleccionar la mejor.

Entonces, ¿cómo los adivinamos? Podemos basarlo en nuestra intuición, podemos seleccionarlos al azar ... o podemos usar uno de los muchos algoritmos de optimización de hiperparámetros que existen para hacer este trabajo por nosotros.³

Dado que "probar" cada configuración en la práctica significa entrenar a toda la red con este parámetro, y luego verificar el resultado, todo el procedimiento se puede paralelizar fácilmente.

Entonces, este es nuestro primer algoritmo de aprendizaje automático de prueba de concepto que funciona en Golem. Lo implementamos durante el verano, para que pueda ver cómo funciona aquí. Y aquí está la descripción completa de la tarea de ML, con experimentos que justifican varias opciones de implementación.

Si tiene comentarios o dudas, envíelos a contact@golem.network y estaremos encantados de atenderlos.

[1] Se desarrollan mejores algoritmos todo el tiempo, pero todavía tenemos que ver un descenso de gradiente distribuido real. Sin embargo, las perspectivas se ven bien, por ejemplo, ver Lian et al.

[2] Sí, actualmente controlamos el sobreajuste mediante el uso de otras técnicas, pero este es solo un ejemplo de juguete.

[3] De hecho, estos algoritmos generalmente funcionan mejor que la búsqueda aleatoria o incluso los expertos humanos. Ver Bergstra et al. o Snoek y col.

[4] Es uno de nuestros muchos recursos de investigación que ponemos a disposición del público, para garantizar que la empresa y nuestro proceso de desarrollo de Golem sean más transparentes que nunca. Lo describimos aquí.