Espero que me puedan ayudar, ya que tengo algunas preguntas sobre este tema. Soy nuevo en el campo del aprendizaje profundo, y aunque hice algunos tutoriales, no puedo relacionar o distinguir conceptos entre sí.
machine-learning
data-mining
neural-network
nlp
deep-learning
usuario3352632
fuente
fuente
Respuestas:
¿Por qué usar redes profundas?
Primero intentemos resolver una tarea de clasificación muy simple. Digamos que moderas un foro web que a veces está inundado de mensajes de spam. Estos mensajes son fácilmente identificables: la mayoría de las veces contienen palabras específicas como "comprar", "porno", etc. y una URL a recursos externos. Desea crear un filtro que lo alertará sobre mensajes tan suspensivos. Resulta bastante fácil: obtienes una lista de características (por ejemplo, una lista de palabras sospechosas y la presencia de una URL) y entrenas una regresión logística simple (también conocida como perceptrón), es decir, modelos como:
¿dónde
x1..xn
están sus características (ya sea la presencia de una palabra específica o una URL),w0..wn
- coeficientes aprendidos yg()
es una función logística para hacer que el resultado esté entre 0 y 1. Es un clasificador muy simple, pero para esta tarea simple puede dar muy buenos resultados, creando límite de decisión lineal. Suponiendo que usó solo 2 características, este límite puede verse más o menos así:Aquí, 2 ejes representan características (por ejemplo, número de ocurrencias de palabras específicas en un mensaje, normalizadas alrededor de cero), los puntos rojos permanecen para el correo no deseado y los puntos azules, para mensajes normales, mientras que la línea negra muestra la línea de separación.
Pero pronto se da cuenta de que algunos buenos mensajes contienen muchas ocurrencias de la palabra "comprar", pero no URL, o discusión extendida sobre la detección de pornografía , que en realidad no se refiere a películas pornográficas. El límite de decisión lineal simplemente no puede manejar tales situaciones. En cambio, necesitas algo como esto:
Este nuevo límite de decisión no lineal es mucho más flexible , es decir, puede ajustar los datos mucho más cerca. Hay muchas formas de lograr esta no linealidad: puede usar características polinómicas (por ejemplo
x1^2
) o su combinación (por ejemplox1*x2
) o proyectarlas a una dimensión superior, como en los métodos del núcleo . Pero en las redes neuronales es común resolverlo combinando perceptrones o, en otras palabras, construyendo perceptrón multicapa. La no linealidad aquí proviene de la función logística entre capas. Cuantas más capas, los patrones más sofisticados pueden estar cubiertos por MLP. Una sola capa (perceptron) puede manejar la detección de spam simple, la red con 2-3 capas puede capturar combinaciones complicadas de características, y las redes de 5-9 capas, utilizadas por grandes laboratorios de investigación y compañías como Google, pueden modelar todo el lenguaje o detectar gatos en imágenes.Esta es una razón esencial para tener arquitecturas profundas : pueden modelar patrones más sofisticados .
¿Por qué las redes profundas son difíciles de entrenar?
Con solo una característica y un límite de decisión lineal, de hecho es suficiente tener solo 2 ejemplos de entrenamiento, uno positivo y otro negativo. Con varias características y / o límites de decisión no lineales, necesita varias órdenes más ejemplos para cubrir todos los casos posibles (por ejemplo, no solo necesita encontrar ejemplos con
word1
,word2
yword3
, sino también con todas sus combinaciones posibles). Y en la vida real, debe lidiar con cientos y miles de características (por ejemplo, palabras en un idioma o píxeles en una imagen) y al menos varias capas para tener suficiente no linealidad. El tamaño de un conjunto de datos, necesario para entrenar completamente dichas redes, supera fácilmente los 10 ^ 30 ejemplos, por lo que es totalmente imposible obtener suficientes datos. En otras palabras, con muchas características y muchas capas, nuestra función de decisión se vuelve demasiado flexiblepara poder aprenderlo con precisión .Sin embargo, hay formas de aprenderlo aproximadamente . Por ejemplo, si estuviéramos trabajando en entornos probabilísticos, en lugar de aprender las frecuencias de todas las combinaciones de todas las características, podríamos asumir que son independientes y aprenden solo las frecuencias individuales, reduciendo el clasificador Bayes completo y sin restricciones a un Bayes Naive y, por lo tanto, requiere mucho, Mucho menos datos para aprender.
En las redes neuronales hubo varios intentos de (significativamente) reducir la complejidad (flexibilidad) de la función de decisión. Por ejemplo, las redes convolucionales, ampliamente utilizadas en la clasificación de imágenes, asumen solo conexiones locales entre píxeles cercanos y, por lo tanto, solo intentan aprender combinaciones de píxeles dentro de pequeñas "ventanas" (digamos, 16x16 píxeles = 256 neuronas de entrada) en lugar de imágenes completas (digamos, 100x100 píxeles = 10000 neuronas de entrada). Otros enfoques incluyen la ingeniería de características, es decir, la búsqueda de descriptores específicos de datos de entrada descubiertos por humanos.
Las características descubiertas manualmente son muy prometedoras en realidad. En el procesamiento del lenguaje natural, por ejemplo, a veces es útil usar diccionarios especiales (como los que contienen palabras específicas de spam) o atrapar la negación (por ejemplo, " no es bueno"). Y en la visión por computadora, cosas como los descriptores SURF o las características similares a Haar son casi insustituibles.
Pero el problema con la ingeniería manual de características es que lleva literalmente años encontrar buenos descriptores. Además, estas características son a menudo específicas
Entrenamiento previo sin supervisión
Pero resulta que podemos obtener buenas características automáticamente a partir de los datos utilizando algoritmos tales como codificadores automáticos y máquinas de Boltzmann restringidas . Los describí en detalle en mi otra respuesta , pero en resumen permiten encontrar patrones repetidos en los datos de entrada y transformarlos en características de nivel superior. Por ejemplo, dados solo valores de píxeles de fila como entrada, estos algoritmos pueden identificar y pasar bordes enteros más altos, luego desde estos bordes construir figuras y así sucesivamente, hasta obtener descriptores de alto nivel como variaciones en las caras.
Después de que dicha red de preentrenamiento (no supervisada) generalmente se convierte en MLP y se usa para la capacitación supervisada normal. Tenga en cuenta que el entrenamiento previo se realiza en capas. Esto reduce significativamente el espacio de solución para el algoritmo de aprendizaje (y, por lo tanto, la cantidad de ejemplos de entrenamiento necesarios) ya que solo necesita aprender los parámetros dentro de cada capa sin tener en cuenta otras capas.
Y más allá...
La capacitación previa no supervisada ha estado aquí por algún tiempo, pero recientemente se descubrió que otros algoritmos mejoran el aprendizaje, tanto con la capacitación previa como sin ella. Un ejemplo notable de tales algoritmos es el abandono : una técnica simple que "abandona" al azar algunas neuronas durante el entrenamiento, crea cierta distorsión y evita que las redes de seguimiento de datos se acerquen demasiado. Este sigue siendo un tema de investigación candente, así que lo dejo a un lector.
fuente
Primero necesitamos entender por qué necesitamos el aprendizaje profundo. Para construir modelos, ML necesita datos de prueba con etiquetas (supervisadas o no supervisadas). En muchos dominios a medida que los datos crecen, es difícil mantener los datos con etiquetas. Las redes de aprendizaje profundo no necesitan datos etiquetados. Los algoritmos de aprendizaje profundo pueden descifrar las etiquetas. Por lo tanto, esto evita la necesidad de que los expertos en dominios presenten etiquetas para los datos, lo cual es muy importante en las áreas de reconocimiento de voz, visión por computadora y comprensión del lenguaje. El reconocimiento de imágenes de Google Cat es un experimento muy interesante. También es interesante conocer a "Geoffrey hinton", el profesor que fue contratado por Google.
http://www.wired.com/2014/01/geoffrey-hinton-deep-learning/
Puede obtener más información a medida que explora en este marco.
fuente
El aprendizaje profundo ha existido por mucho tiempo. CNN, RNN, las máquinas Boltzmann parecen nuevas técnicas, pero se desarrollaron hace mucho tiempo. Revisa la historia del aprendizaje profundo
https://en.wikipedia.org/wiki/Deep_learning#History
El resurgimiento del aprendizaje profundo se debe al hecho de que los poderes computacionales aumentaron exponencialmente a partir de ese momento. Con una computadora portátil equipada con GPU, puede entrenar un modelo complejo de aprendizaje profundo en muy poco tiempo en comparación con sus días anteriores. Los modelos de aprendizaje profundo también son muy eficientes empíricamente. El estado actual de la técnica en Imágenes, Habla y muchos campos son los modelos de Deep Learning.
Creo que debido a estos factores, podemos ver que gran parte de la comunidad de PNL / ML ha cambiado su enfoque en el aprendizaje profundo.
fuente