Cómo construir y ejecutar mi primera red de aprendizaje profundo

Gracias por el A2A.

Primero, desea elegir un conjunto de datos desafiante, aunque algo comparado, para poder comparar la validez de su implementación de red profunda.

Recomendaría el conjunto de datos MNISt, pero tal vez eso esté un poco exagerado. Puede tomar el conjunto de datos CIFAR-10 (conjuntos de datos CIFAR-10 y CIFAR-100) para construir una red neuronal convolucional profunda, o incluso trabajar con imagenet (ImageNet) si tiene paciencia para descargar. Personalmente, elegiría algo más interesante y trabajaría con una red neuronal recurrente semi profunda (2 capas), como LSTM o GRU apilada, para entrenar en la predicción de personajes con la que puedes encontrar algunas cosas muy interesantes, como enseñar una red neuronal a escriba como Shakespeare e incluso escriba códigos fuente de Linux: la efectividad irracional de las redes neuronales recurrentes


. En cualquier caso, las pautas generales son las siguientes:

1. Configurar el entorno del paquete ML: Primero es configurar su paquete ML, la elección del paquete depende de usted. Recomendaría Theano (Bienvenido – Documentación de Theano 0.7) si es nuevo y desea configurarlo rápidamente y comenzar a construir sus redes profundas. Siempre se recomienda ejecutar en un entorno Linux (uso Ubuntu), sin embargo, creo que es posible instalarlo y ejecutarlo en Windows.

Después de instalar Theano, puede instalar los paquetes de aprendizaje profundo creados sobre Theano, como Keras o Lasagne. Esto le permite romper rápidamente una red neuronal profunda en muy pocas líneas en comparación con Theano puro.

Una nota sobre la estación de trabajo: si eres como yo y no tienes una computadora dedicada con GPU lo suficientemente buena como para jugar con redes neuronales profundas, te recomiendo obtener una instancia de AWS EC2 o incluso GPU y ejecutar tu entrenamiento de red allí.

2. Preprocesamiento de datos: el preprocesamiento de datos para redes neuronales no es demasiado tedioso. Por lo general, para mí la normalización de las características de valor real es más que suficiente, aunque algunas personas también restan la media de cada característica de entrada. Hay un documento reciente sobre la realización de la Normalización por lotes (Aceleración del entrenamiento de redes profundas mediante la reducción del cambio de covariable interno) que parece ser muy beneficioso para el entrenamiento de redes profundas. De hecho, esta característica ya está incorporada en la biblioteca ML de Tensorflow de Google, si estoy en lo cierto.

Para las características categóricas pequeñas (<20 ish) es suficiente aplicar la codificación One-hot como preprocesamiento. Para las características puramente cegóricas, como las palabras, puede emplear los diversos métodos, como N-gram, bolsa de palabras o la implementación más reciente de word2vec.

Y, por supuesto, debe dividir sus datos en particiones de capacitación y validación (90-10, 80-20). La validación cruzada no es necesaria ya que sus conjuntos de datos generalmente serán muy grandes (> 10 K ejemplos)

3. Arquitectura de red: suponiendo que tenga una comprensión decente de las estructuras de red neuronal, las activaciones no lineales y las funciones de pérdida, las pautas a continuación son muy aproximadas.

Para las tareas de regresión general, por lo general, el error cuadrático medio es suficiente, puede probar algunas de las otras variantes si cree que ayudará (raíz cuadrática media, error absoluto medio). La arquitectura de red suele tener la forma (capa 1- Capa de entrada de características de tamaño N, Capa 1 oculta de tamaño H1, H2, H3 … Capa de salida lineal, pérdida de MSE). Como mencioné antes, los paquetes como Keras y Lasagne construidos sobre Theano le permiten apilar muy intuitivamente una red neuronal capa por capa, asignar funciones de activación no lineales, asignar pérdidas, asignar parámetros de entrenamiento, etc.

Para la clasificación, la arquitectura de red será similar, espere que ahora reemplace la última capa lineal en regresión con una capa softmax de tamaño K, o K número de clases. Idealmente, siempre se usa la pérdida de entropía cruzada para la clasificación multiclase.

Nota: La práctica actual para la activación no lineal es siempre usar unidades lineales rectificadas en lugar de Sigmoid o Tanh. Las unidades lineales rectificadas (Relu) mejoran en gran medida el flujo de retorno del gradiente de error durante el entrenamiento, lo que realmente ayuda en arquitecturas de red profundas (más de 4 o 5 capas de profundidad). Casi el 99% de los trabajos que he leído con arquitecturas profundas generales utilizan la activación Relu.

Para aplicaciones de visión, deberá utilizar varias combinaciones de capas de convolución y agrupación máxima. Para una gran introducción intuitiva a CovNets, vea este curso en línea de Stanford: CS231n Redes neuronales convolucionales para el reconocimiento visual

Para trabajar con redes neuronales recurrentes, puede apilar capas LSTMS y GRU exactamente de la misma manera que las redes neuronales de avance. Sin embargo, en general, su red LSTM “profunda” no necesita ser tan profunda (máximo para mí, generalmente 2 capas) para capturar algunas relaciones bastante complejas.

Un ejemplo de preprocesamiento para entrenar un LSTM para aprender y predecir el próximo personaje usando todo el trabajo de Shakespeare es primero recolectar un archivo de texto concatenado de todo su trabajo, luego uno de K codifica cada personaje en ese archivo concatenado (todo en inglés caracteres, tanto en minúsculas como en mayúsculas, más comas, puntos, etc.) Así que aproximadamente ingrese un tamaño de ~ (26 x 2 + 4). Algunos paquetes ML (como Keras y Lasagne) tienen funciones específicas de preprocesamiento solo para fines de PNL.

4. Entrenamiento y ajuste de hiperparámetros:

La capacitación en mini lotes es una necesidad y un estándar para conjuntos de datos tan grandes. En cuanto al algoritmo de entrenamiento, puede emplear el gradiente de gradiente estocástico general u otras variantes como RMsprop, adagrad, etc. (generalmente uso SGD y RMSprop). Para otros hiperparámetros como el impulso, la tasa de aprendizaje, etc., todo es realmente una cuestión de prueba y error. Recomiendo usar la configuración predeterminada y verificar otras cosas antes de cambiar los hiperparámetros

5. Consejos y puntos generales:

La arquitectura de red (es decir, cuántas capas debo usar, cuántas neuronas en cada capa, etc.) y la selección de hiperparámetros (épocas de entrenamiento, tasa de aprendizaje, impulso, pérdida de peso, etc.) vienen con experiencia, ya que no hay una regla realmente difícil sobre cómo recogerlos En general, desea utilizar una estructura tan simple como sea posible (número mínimo de parámetros para entrenar).

El tiempo de capacitación, dependiendo de sus conjuntos de datos y el tamaño de la red, puede variar de unas pocas horas a unos pocos días. La mayoría de los paquetes tienen etiquetas simples de encendido y apagado para usar GPU Nvidia para los cálculos de la matriz en lugar de su CPU. Deberá seguir las instrucciones específicas de su paquete ML que integran la GPU, pero generalmente implica la instalación de CUDA para su GPU Nvidia específica, entre otras cosas.

Vigile los resultados de su conjunto de entrenamiento y validación a medida que su red entrena. Una vez más, esta característica está disponible en la mayoría de los paquetes ML, donde trazará o imprimirá el rendimiento de la red en el conjunto de datos de capacitación y validación una vez cada N iteraciones o, a veces, epocas. Use esto para evaluar si debe aumentar la regularización cuando las dos curvas de entrenamiento divergen, o tal vez su red es demasiado grande y se ajusta demasiado (reduzca el tamaño de su red).

Si desea probar el paquete de tensorflow de Google, puede intentarlo. Solo un punto, la similitud entre tensorflow y theano significa que la transición entre los dos paquetes es relativamente simple.

Espero que ayude.

Depende de la plataforma que desee ejecutar. Gary Wang dio una excelente respuesta al configurar su marco. Sin embargo, para tutoriales específicos de la plataforma, debe consultar lo siguiente

  • Java: aprendizaje profundo distribuido de código abierto para la JVM
  • python / Theano – Tutoriales de aprendizaje profundo
  • python / C / C ++ – https://www.tensorflow.org/
  • python / Tensorflow – Documentación de Keras ← ¡mi favorito!
  • R / H2O – Aprendizaje profundo H2O
  • C ++ – Caffe | Marco de aprendizaje profundo
  • MATLAB – MatConvNet y caja de herramientas sobre aprendizaje profundo en MATLAB

La tendencia n. ° 4 llegará a la corriente principal el próximo año y revolucionará la velocidad a la que todos aprendemos.

Las redes de aprendizaje son la evolución de las redes sociales. Cuando las redes sociales como Facebook y LinkedIn aparecieron hace 10 años, transformaron nuestra velocidad y volumen de conexiones. Pero como el enfoque de las redes sociales es la conversación, también multiplicaron nuestro ruido y distracción.

En los últimos cinco años, cada vez más personas utilizan las redes sociales para aprender.

¿Quieres encontrar los mejores consejos de salud? Sigue las páginas correctas en Facebook. ¿Quieres tocar la guitarra? Mira los videos correctos en Youtube. ¿Quieres estar al día con las tendencias futuras? Sigue a las personas adecuadas en Twitter.

En los últimos dos años, el fenómeno del aprendizaje social se ha acelerado. Patinadores, surfistas, esquiadores, cantantes han compartido sus últimos movimientos en Youtube, y como otros ven lo que es posible, han aprendido del aprendizaje, y grupos globales enteros han aprendido exponencialmente nuevas formas de hacer cosas más allá de lo que cualquiera de ellos pensaría sea ​​posible, mucho más allá del nivel que cualquier experto podría aprender por sí solo.

Estas redes de aprendizaje, unidas por la acción más que por la distracción, se han acelerado aún más con la adición de inteligencia artificial.

A principios de este año, DeepMind desarrolló una IA llamada “AlphaGo” para vencer a los campeones mundiales en el juego chino de GO, visto como el “Santo Grial de la IA”. Lo hizo estudiando cientos de miles de juegos y luego jugando a sí mismo millones de veces. Luego comenzó a jugar humanos, comenzando con el 3 veces campeón de European Go, Fan Hui, venciéndolo en todos sus juegos. El estándar de AlphaGo trajo millones al juego de Go, aprendiendo de los juegos televisados ​​y mejorando sus propios juegos.

El propio Fan Hui, a pesar de perder, aprendió tanto por el estándar acelerado del juego de AlphaGo, que este verano subió del puesto 633 en el mundo a más de 300.

Con las redes de aprendizaje, colectivamente aprendemos mucho más rápido que cuando estamos solos.

Ahora, las redes de aprendizaje han comenzado a surgir en todas las áreas de aprendizaje, con sus propias herramientas personalizadas y con la ayuda de inteligencia artificial:

> Watson de IBM está en el centro de “Ecosystem”: una red de aprendizaje para médicos y la industria médica, que aprende de los aportes de médicos y expertos médicos en más de 100 millones de registros de salud para diagnosticar la enfermedad de cualquier paciente mejor que cualquier médico.

> Google acaba de lanzar “Viajes”: una red de aprendizaje para que los viajeros compartan sus experiencias y preferencias que, junto con la inteligencia artificial, pueden recomendar el viaje ideal para usted en función de su propia historia y preferencias, y las experiencias combinadas de todos.

> Nuestra empresa, Entrepreneurs Institute, lanzó “GeniusU”: una red de aprendizaje para que los empresarios compartan sus mejores aprendizajes y conexiones entre ellos. En poco más de un año, hemos atraído a más de 600,000 emprendedores de 180 países, creciendo exponencialmente y compartiendo las mejores estrategias y recursos para aumentar sus ganancias y propósitos individuales y colectivos.

Se espera que muchas de las compañías de más rápido crecimiento el próximo año aprendan redes, donde las redes no solo se refieren al aprendizaje, sino que las redes mismas ESTÁN aprendiendo.

¿Qué podría hacer para crear una red de aprendizaje para sus clientes?

¿A qué red de aprendizaje te unirás?

Todos los mayores desafíos mundiales, desde el medio ambiente hasta la energía y la igualdad, están siendo resueltos por nuevas redes de aprendizaje. No serán las personas las que propongan las mejores soluciones, sino una combinación de humanos e IA trabajando juntos.

La educación en sí misma se transformará no mediante un nuevo sistema escolar, sino mediante redes de aprendizaje en las que los estudiantes impulsen el aprendizaje social, unidos por un propósito común.

Nos estamos mudando de comunidades unidas por lugar a comunidades unidas por propósito.

Y a medida que crecen las redes de aprendizaje (basadas en la acción exponencial), las redes sociales (basadas en la distracción exponencial) comenzarán a disminuir.

“La educación es aprender lo que ni siquiera sabías que no sabías”. ~ Daniel J Boorstin

Además, diríjase aquí para conocer otras tendencias futuras y, en caso de cualquier pregunta y / o quisiera hablar sobre cualquier asunto, no dude en ponerse en contacto con nosotros directamente.

Aquí hay dos muy buenas respuestas y pensé que agregaría una más que he encontrado muy útil, que es el sitio web de “Aprendizaje profundo”: Aprendizaje profundo

Los tutoriales en particular son bastante buenos: Tutoriales de aprendizaje profundo

Estos están en Python y son bastante fáciles de seguir. Los tutoriales comienzan con una regresión logística y van desde allí a una red neuronal bastante directa (red neuronal profunda cuando se utiliza la inicialización correcta).

More Interesting

Cómo probar y depurar código, código de optimización numérica y / o modelos de aprendizaje automático

¿Cuál es el significado intuitivo de una matriz de covarianza?

¿Necesita ser un buen ingeniero de software para trabajar en cosas como visión por computadora, reconocimiento de voz, gráficos por computadora, aprendizaje automático?

¿Cuáles son los temas candentes del aprendizaje profundo para el análisis de imágenes médicas en 2017?

¿La normalización de lotes hará la diferencia al entrenar con tamaño de lote = 1?

¿El aprendizaje profundo ha vuelto obsoletos los métodos del núcleo?

¿Cuáles son las principales diferencias entre la regresión logística, la red neuronal y las SVM?

¿Por qué la distribución previa no tiene mucho impacto en la distribución posterior cuando tenemos muchos datos?

Soy un hombre de 25 años que estudió CS, aprendizaje automático y minería de datos para mi maestría. Mi verdadera pasión radica en la música y los viajes. He estado sin trabajo durante 7 a 8 meses, solicito un doctorado en ML y música, y mi papá quiere que consiga un trabajo. ¿Qué debo hacer?

¿Cuáles son las mejores universidades para estudiar visión artificial con un enfoque en aprendizaje profundo?

Dada una oración, quiero encontrar la emoción de la persona que la dijo. ¿Cómo puedo hacer esto?

¿Qué es una explicación intuitiva del impulso en el entrenamiento de redes neuronales?

En la clasificación binaria, ¿es una buena práctica siempre sobre / submuestrear su conjunto de datos para tener un número idéntico de muestras de las dos clases?

¿Hay algún sitio web donde pueda encontrar ideas para mi tesis de licenciatura en Informática? (Estoy interesado en algoritmos y aprendizaje automático).

Cómo etiquetar objetivamente objetos con etiquetas que son subjetivas, en sistemas expertos