El cuello de botella de aplicar el aprendizaje profundo en la práctica

9

Después de leer muchos documentos de aprendizaje profundo, una especie de sentimiento brusco es que existen muchos trucos en el entrenamiento de la red para obtener un rendimiento mejor de lo normal. Desde la perspectiva de la aplicación de la industria, es muy difícil desarrollar este tipo de trucos, excepto aquellos grupos de investigación de élite en grandes empresas tecnológicas, por ejemplo, google o facebook. Entonces, ¿cuál es la mejor manera de aplicar algoritmos de aprendizaje profundo en la práctica? Cualquier pensamiento y sugerencia será muy apreciada.

user3269
fuente

Respuestas:

9

Es cierto que algunos detalles utilizados para mejorar el rendimiento se consideran trucos y no siempre sabrá si estos trucos producen la misma mejora para sus datos y su red.

Algunas cosas que definitivamente necesitará:

  • Datos , muchos
  • Las GPU te permitirán ejecutar experimentos más rápido y probar más cosas en un lapso de tiempo más corto.
  • Análisis de curvas de aprendizaje. Al final, todo se reduce al rendimiento en el conjunto de pruebas, pero observando las métricas tanto del tren como de la prueba, puede identificar las razones del mal desempeño. Fuerte sesgo? ¿Sobreajuste de demasiados nodos ocultos?
  • La función de activación . No creo que cuente como un truco saber qué tipo de función de activación necesita. ReLU tiene una característica crítica en que no se saturan como sigmoides y tanh. Una neurona con ReLU ya tendrá una salida similar a la probabilidad, pero de todos modos no necesita esto para las neuronas en las capas de nivel medio. La ventaja que obtienes es mitigar la desaparición o explosión de gradientes y acelerar la convergencia.
  • Regularización . Podría aplicarse como trucos, pero si está utilizando cualquiera de las bibliotecas de aprendizaje profundo convencionales, puede obtener implementaciones estándar para la regularización a través del abandono.
  • Aumento de datos. Básicamente, está expandiendo su conjunto de datos sintéticamente sin el costo adicional de la anotación manual. La clave es aumentar los datos con transformaciones que realmente tengan sentido. Para que la red vea variantes de los datos que puede encontrar en la fase de prueba o cuando se implementa en el producto. Para los datos visuales, el volteo horizontal es trivial y agrega mucha ganancia. La fluctuación probablemente depende del tipo de datos y de lo ruidoso que sea.
  • Bucear en la exploración de hiperparámetros puede ser frustrante. Comience con redes pequeñas y procedimientos de capacitación simples. Las redes más pequeñas son más rápidas de entrenar. Agregue más capas cuando vea signos de sobreajuste.
  • Buena inicialización . La inicialización aleatoria es apropiada para medir la capacidad de convergencia de la red, pero no necesariamente conducirá a un rendimiento óptimo. Al mismo tiempo, solo seguir iterando podría llevar a que la red se ajuste en exceso a los datos de entrenamiento. Si es posible, use una red previamente capacitada que ya haya aprendido una representación y ajústela a su conjunto de datos. El pre-entrenamiento sin supervisión es otra forma de hacerlo y puede permitir que el procedimiento de entrenamiento supervisado comience desde una posición mucho más prometedora en el espacio de peso.
  • Escudriñartrucos. Comprende lo que realmente hace el truco. Un documento que describa un pequeño detalle que se utilizó para mejorar el rendimiento de una red se centrará en ese nuevo aspecto. El documento podría ser parte de una secuencia de proyectos en los que los autores han estado trabajando. El contexto del truco puede no ser siempre claro de inmediato, pero para los autores no es un truco, sino una técnica que resuelve un problema que tenían. A veces sale una técnica y se trata como un truco y luego alguien analizará su impacto y describirá su función. Por ejemplo, este truco es equivalente a la regularización L2 con la que más personas están familiarizadas. Podemos decidir si debemos probar esta nueva técnica o seguir con la regularización L2 que ya conocemos. Muchos de estos trucos intentan resolver problemas en el aprendizaje profundo, como el riesgo de sobreajuste, cálculos costosos, sobre parametrización y pesos altamente redundantes. Vale la pena tomarse el tiempo para comprender lo que realmente hacen estos trucos. Al comprender el problema que intentan resolver, podemos juzgar la aplicabilidad de diferentes trucos y elegir el que funcione bien con las limitaciones que podamos tener (por ejemplo, poca potencia informática, pequeño conjunto de datos)
ypx
fuente
2

Aquí hay un libro interesante Neural Networks: Tricks of the Trade , una versión actualizada de 2012 del libro. Muchos artículos de algunos de los pioneros de las redes neuronales.

Ypx tocó maravillosamente muchos problemas prácticos con la capacitación, así que toca los otros problemas que planteó: muchos de los laboratorios industriales de élite aún publican sus resultados. Por ejemplo, el equipo de Microsoft Research acaba de ganar ImageNet 2015 y publicaron un informe técnico que describe su nuevo módulo de red profunda: Aprendizaje residual profundo para el reconocimiento de imágenes , el equipo de Google también publicó su arquitectura Inception, Going Deeper with Convolutions . En un grado no trivial, todavía existe una cultura en el aprendizaje automático (por ahora) de compartir las grandes innovaciones. Posiblemente porque la clave es el acceso a los datos. Google y Facebook simplemente tienen acceso a datos que nosotros no tenemos. Es difícil decir cuánto crédito se destina a la innovación algorítmica sin procesar y cuánto se destina a grandes cantidades de datos.

¿Con respecto a lo que sucederá en el futuro? Difícil de decir. Es un problema que mucha gente ha planteado dado lo valiosas que se han vuelto estas empresas basadas en datos y lo competitivo que es el mercado. Pero por ahora, creo que hay un balance lo suficientemente bueno de lo que comparten y no comparten los laboratorios de investigación industrial. Entiendo que no comparten la implementación exacta de su código. Pero sí comparten algunas innovaciones muy novedosas.

Encuentre investigadores que publiquen resultados importantes y lea, lea, lea. Creo en el AMA de Yann LeCun en Reddit, mencionó que es un lector voraz. Creo que esto es lo más importante. Y en la medida en que sea práctico, intente recrear sus puntos de referencia o aplique su método a un conjunto de datos que esté dentro de su presupuesto.

Creo que, independientemente de dónde se encuentre o cuál sea su posición en la vida, esta es la mejor manera de mantenerse alerta y continuar desarrollando sus habilidades. Sé un lector voraz e implementa cosas y construye intuición. Personalmente no tengo los recursos para participar en las competiciones de ImageNet, pero leer todos los artículos del grupo ImageNet de alto rendimiento me ha ayudado enormemente.

AI independiente
fuente