Redes neuronales profundas
Una red neuronal profunda (DNN) es una ANN con múltiples capas ocultas entre las capas de entrada y salida. Al igual que las ANN poco profundas, las DNN pueden modelar relaciones complejas no lineales.
El propósito principal de una red neuronal es recibir un conjunto de entradas, realizar cálculos progresivamente complejos sobre ellas y dar salida para resolver problemas del mundo real como la clasificación. Nos limitamos a alimentar redes neuronales.
Tenemos una entrada, una salida y un flujo de datos secuenciales en una red profunda.
Las redes neuronales se utilizan ampliamente en problemas de aprendizaje supervisado y aprendizaje reforzado. Estas redes se basan en un conjunto de capas conectadas entre sí.
En el aprendizaje profundo, la cantidad de capas ocultas, en su mayoría no lineales, puede ser grande; digamos unas 1000 capas.
Los modelos DL producen resultados mucho mejores que las redes ML normales.
Usamos principalmente el método de descenso de gradiente para optimizar la red y minimizar la función de pérdida.
Podemos usar el Imagenet, un repositorio de millones de imágenes digitales para clasificar un conjunto de datos en categorías como gatos y perros. Las redes DL se utilizan cada vez más para imágenes dinámicas, además de las estáticas, y para series de tiempo y análisis de texto.
El entrenamiento de los conjuntos de datos forma una parte importante de los modelos de Deep Learning. Además, la retropropagación es el algoritmo principal en el entrenamiento de modelos DL.
DL se ocupa del entrenamiento de grandes redes neuronales con transformaciones complejas de entrada y salida.
Un ejemplo de DL es el mapeo de una foto con el nombre de la (s) persona (s) en la foto como lo hacen en las redes sociales y describir una imagen con una frase es otra aplicación reciente de DL.
Las redes neuronales son funciones que tienen entradas como x1, x2, x3… que se transforman en salidas como z1, z2, z3 y así sucesivamente en dos (redes poco profundas) o varias operaciones intermedias también llamadas capas (redes profundas).
Los pesos y sesgos cambian de una capa a otra. 'w' y 'v' son los pesos o sinapsis de capas de las redes neuronales.
El mejor caso de uso del aprendizaje profundo es el problema del aprendizaje supervisado. Aquí, tenemos un gran conjunto de entradas de datos con un conjunto deseado de salidas.
Aquí aplicamos el algoritmo de retropropagación para obtener una predicción de salida correcta.
El conjunto de datos más básico de aprendizaje profundo es el MNIST, un conjunto de datos de dígitos escritos a mano.
Podemos entrenar en profundidad una red neuronal convolucional con Keras para clasificar imágenes de dígitos escritos a mano de este conjunto de datos.
El disparo o activación de un clasificador de red neuronal produce una puntuación. Por ejemplo, para clasificar a los pacientes como enfermos y sanos, consideramos parámetros como la altura, el peso y la temperatura corporal, la presión arterial, etc.
Una puntuación alta significa que el paciente está enfermo y una puntuación baja significa que está sano.
Cada nodo en las capas de salida y ocultas tiene sus propios clasificadores. La capa de entrada toma entradas y pasa sus puntuaciones a la siguiente capa oculta para una mayor activación y esto continúa hasta que se alcanza la salida.
Este progreso de entrada a salida de izquierda a derecha en la dirección de avance se llama forward propagation.
La ruta de asignación de crédito (CAP) en una red neuronal es la serie de transformaciones que comienzan desde la entrada hasta la salida. Los CAP elaboran conexiones causales probables entre la entrada y la salida.
La profundidad de CAP para una red neuronal de retroalimentación dada o la profundidad de CAP es el número de capas ocultas más una cuando se incluye la capa de salida. Para las redes neuronales recurrentes, donde una señal puede propagarse a través de una capa varias veces, la profundidad de CAP puede ser potencialmente ilimitada.
Redes profundas y redes poco profundas
No existe un umbral claro de profundidad que separe el aprendizaje superficial del aprendizaje profundo; pero la mayoría está de acuerdo en que para el aprendizaje profundo que tiene múltiples capas no lineales, CAP debe ser mayor que dos.
El nodo básico en una red neuronal es una percepción que imita una neurona en una red neuronal biológica. Luego tenemos Perception multicapa o MLP. Cada conjunto de entradas se modifica mediante un conjunto de pesos y sesgos; cada borde tiene un peso único y cada nodo tiene un sesgo único.
La predicción accuracy de una red neuronal depende de su weights and biases.
El proceso de mejora de la precisión de la red neuronal se llama training. La salida de una red de apoyo hacia adelante se compara con ese valor que se sabe que es correcto.
los cost function or the loss function es la diferencia entre la salida generada y la salida real.
El objetivo del entrenamiento es hacer que el costo del entrenamiento sea lo más pequeño posible en millones de ejemplos de entrenamiento. Para hacer esto, la red ajusta los pesos y los sesgos hasta que la predicción coincide con el resultado correcto.
Una vez entrenada bien, una red neuronal tiene el potencial de hacer una predicción precisa en todo momento.
Cuando el patrón se vuelve complejo y desea que su computadora los reconozca, debe optar por redes neuronales. En escenarios de patrones tan complejos, la red neuronal supera a todos los demás algoritmos de la competencia.
Ahora hay GPU que pueden entrenarlos más rápido que nunca. Las redes neuronales profundas ya están revolucionando el campo de la IA
Las computadoras han demostrado ser buenas para realizar cálculos repetitivos y seguir instrucciones detalladas, pero no tan buenas para reconocer patrones complejos.
Si existe el problema del reconocimiento de patrones simples, una máquina de vectores de soporte (svm) o un clasificador de regresión logística pueden hacer bien el trabajo, pero a medida que aumenta la complejidad del patrón, no hay más remedio que optar por redes neuronales profundas.
Por lo tanto, para patrones complejos como un rostro humano, las redes neuronales superficiales fallan y no tienen otra alternativa que optar por redes neuronales profundas con más capas. Las redes profundas pueden hacer su trabajo descomponiendo los patrones complejos en patrones más simples. Por ejemplo, rostro humano; Una red profunda usaría bordes para detectar partes como labios, nariz, ojos, oídos, etc. y luego los volvería a combinar para formar un rostro humano.
La precisión de la predicción correcta se ha vuelto tan precisa que recientemente, en un Desafío de reconocimiento de patrones de Google, una red profunda venció a un humano.
Esta idea de una red de perceptrones en capas ha existido durante algún tiempo; en esta área, las redes profundas imitan el cerebro humano. Pero una desventaja de esto es que tardan mucho en entrenarse, una restricción de hardware
Sin embargo, las GPU de alto rendimiento recientes han podido entrenar redes tan profundas en menos de una semana; mientras que las CPU rápidas podrían haber tardado semanas o quizás meses en hacer lo mismo.
Elegir una red profunda
¿Cómo elegir una red profunda? Tenemos que decidir si estamos construyendo un clasificador o si estamos tratando de encontrar patrones en los datos y si vamos a utilizar el aprendizaje no supervisado. Para extraer patrones de un conjunto de datos sin etiquetar, utilizamos una máquina Boltzman restringida o un codificador automático.
Considere los siguientes puntos al elegir una red profunda:
Para el procesamiento de texto, el análisis de sentimientos, el análisis sintáctico y el reconocimiento de entidades de nombre, utilizamos una red recurrente o una red de tensor neuronal recursiva o RNTN;
Para cualquier modelo de lenguaje que opere a nivel de personaje, usamos la red recurrente.
Para el reconocimiento de imágenes, utilizamos una red de creencias profundas DBN o una red convolucional.
Para el reconocimiento de objetos, utilizamos un RNTN o una red convolucional.
Para el reconocimiento de voz, utilizamos la red recurrente.
En general, las redes de creencias profundas y los perceptrones multicapa con unidades lineales rectificadas o RELU son buenas opciones para la clasificación.
Para el análisis de series de tiempo, siempre se recomienda utilizar net recurrente.
Las redes neuronales existen desde hace más de 50 años; pero solo ahora han ganado prominencia. La razón es que son difíciles de entrenar; cuando tratamos de entrenarlos con un método llamado propagación hacia atrás, nos encontramos con un problema llamado gradientes de desaparición o explosión. Cuando eso sucede, el entrenamiento lleva más tiempo y la precisión pasa a un segundo plano. Cuando entrenamos un conjunto de datos, calculamos constantemente la función de costo, que es la diferencia entre la producción prevista y la producción real de un conjunto de datos de entrenamiento etiquetados. La función de costo se minimiza ajustando los valores de ponderación y sesgo hasta el valor más bajo. es obtenido. El proceso de entrenamiento utiliza un gradiente, que es la tasa a la que cambiará el costo con respecto al cambio en los valores de peso o sesgo.
Redes de Boltzman restringidas o codificadores automáticos - RBN
En 2006, se logró un gran avance al abordar el problema de los gradientes que desaparecen. Geoff Hinton ideó una estrategia novedosa que condujo al desarrollo deRestricted Boltzman Machine - RBM, una red poco profunda de dos capas.
La primera capa es la visible capa y la segunda capa es la hiddencapa. Cada nodo de la capa visible está conectado a cada nodo de la capa oculta. La red se conoce como restringida, ya que no se permite que dos capas dentro de la misma capa compartan una conexión.
Los codificadores automáticos son redes que codifican datos de entrada como vectores. Crean una representación oculta o comprimida de los datos sin procesar. Los vectores son útiles en la reducción de dimensionalidad; el vector comprime los datos brutos en un número menor de dimensiones esenciales. Los codificadores automáticos están emparejados con decodificadores, lo que permite la reconstrucción de los datos de entrada en función de su representación oculta.
RBM es el equivalente matemático de un traductor bidireccional. Un pase directo toma entradas y las traduce en un conjunto de números que codifica las entradas. Mientras tanto, un pase hacia atrás toma este conjunto de números y los vuelve a traducir en entradas reconstruidas. Una red bien entrenada realiza el apoyo trasero con un alto grado de precisión.
En cualquiera de los pasos, las ponderaciones y los sesgos tienen un papel fundamental; ayudan a la GBR a decodificar las interrelaciones entre las entradas y a decidir qué entradas son esenciales para detectar patrones. A través de pases hacia adelante y hacia atrás, el RBM está entrenado para reconstruir la entrada con diferentes pesos y sesgos hasta que la entrada y la construcción estén lo más cerca posible. Un aspecto interesante de la GBR es que no es necesario etiquetar los datos. Esto resulta ser muy importante para conjuntos de datos del mundo real como fotos, videos, voces y datos de sensores, todos los cuales tienden a no estar etiquetados. En lugar de etiquetar manualmente los datos por humanos, RBM clasifica automáticamente los datos; Al ajustar correctamente las ponderaciones y los sesgos, una GBR puede extraer características importantes y reconstruir la entrada. RBM es parte de la familia de redes neuronales de extracción de características, que están diseñadas para reconocer patrones inherentes en los datos. También se denominan codificadores automáticos porque tienen que codificar su propia estructura.
Redes de creencias profundas - DBN
Las redes de creencias profundas (DBN) se forman combinando RBM e introduciendo un método de entrenamiento inteligente. Tenemos un nuevo modelo que finalmente resuelve el problema del gradiente de fuga. Geoff Hinton inventó las GBR y también las Deep Belief Nets como alternativa a la propagación inversa.
Un DBN es similar en estructura a un MLP (perceptrón multicapa), pero muy diferente cuando se trata de entrenamiento. es la formación que permite a los DBN superar a sus homólogos superficiales
Una DBN se puede visualizar como una pila de RBM donde la capa oculta de una RBM es la capa visible de la RBM por encima de ella. La primera GBR está capacitada para reconstruir su entrada con la mayor precisión posible.
La capa oculta de la primera RBM se toma como la capa visible de la segunda RBM y la segunda RBM se entrena utilizando las salidas de la primera RBM. Este proceso se repite hasta que se entrena cada capa de la red.
En un DBN, cada RBM aprende toda la entrada. Un DBN funciona globalmente ajustando toda la entrada en sucesión a medida que el modelo mejora lentamente como una lente de cámara que enfoca lentamente una imagen. Una pila de RBM supera a una sola RBM como un perceptrón multicapa MLP supera a un solo perceptrón.
En esta etapa, las GBR han detectado patrones inherentes en los datos, pero sin nombres ni etiquetas. Para terminar el entrenamiento del DBN, tenemos que introducir etiquetas a los patrones y afinar la red con aprendizaje supervisado.
Necesitamos un conjunto muy pequeño de muestras etiquetadas para que las características y los patrones puedan asociarse con un nombre. Este conjunto de datos con etiquetas pequeñas se utiliza para el entrenamiento. Este conjunto de datos etiquetados puede ser muy pequeño en comparación con el conjunto de datos original.
Los pesos y sesgos se modifican ligeramente, lo que resulta en un pequeño cambio en la percepción de la red de los patrones y, a menudo, un pequeño aumento en la precisión total.
El entrenamiento también se puede completar en un período de tiempo razonable mediante el uso de GPU que brindan resultados muy precisos en comparación con las redes poco profundas y también vemos una solución al problema del gradiente que desaparece.
Redes generativas antagónicas - GAN
Las redes generativas adversarias son redes neuronales profundas que comprenden dos redes, enfrentadas una contra la otra, de ahí el nombre de "adversario".
Las GAN se introdujeron en un artículo publicado por investigadores de la Universidad de Montreal en 2014. El experto en inteligencia artificial de Facebook, Yann LeCun, refiriéndose a las GAN, calificó el entrenamiento de adversarios como "la idea más interesante de los últimos 10 años en ML".
El potencial de las GAN es enorme, ya que el escaneo de red aprende a imitar cualquier distribución de datos. A los GAN se les puede enseñar a crear mundos paralelos sorprendentemente similares al nuestro en cualquier dominio: imágenes, música, habla, prosa. En cierto modo, son artistas robot y su producción es bastante impresionante.
En una GAN, una red neuronal, conocida como generador, genera nuevas instancias de datos, mientras que la otra, el discriminador, evalúa su autenticidad.
Digamos que estamos tratando de generar números escritos a mano como los que se encuentran en el conjunto de datos MNIST, que se toma del mundo real. El trabajo del discriminador, cuando se muestra una instancia del verdadero conjunto de datos MNIST, es reconocerlos como auténticos.
Ahora considere los siguientes pasos de la GAN:
La red del generador toma la entrada en forma de números aleatorios y devuelve una imagen.
Esta imagen generada se proporciona como entrada a la red discriminadora junto con un flujo de imágenes tomadas del conjunto de datos real.
El discriminador toma imágenes tanto reales como falsas y devuelve probabilidades, un número entre 0 y 1, donde 1 representa una predicción de autenticidad y 0 representa falso.
Entonces tienes un ciclo de retroalimentación doble:
El discriminador está en un circuito de retroalimentación con la verdad fundamental de las imágenes, que conocemos.
El generador está en un circuito de retroalimentación con el discriminador.
Redes neuronales recurrentes - RNN
RNNSon redes neuronales en las que los datos pueden fluir en cualquier dirección. Estas redes se utilizan para aplicaciones como modelado de lenguaje o procesamiento de lenguaje natural (NLP).
El concepto básico que subyace a las RNN es utilizar información secuencial. En una red neuronal normal, se supone que todas las entradas y salidas son independientes entre sí. Si queremos predecir la siguiente palabra en una oración, tenemos que saber qué palabras vinieron antes.
Los RNN se denominan recurrentes porque repiten la misma tarea para cada elemento de una secuencia, y el resultado se basa en los cálculos anteriores. Por tanto, se puede decir que los RNN tienen una "memoria" que captura información sobre lo que se ha calculado previamente. En teoría, los RNN pueden usar información en secuencias muy largas, pero en realidad, solo pueden mirar hacia atrás unos pocos pasos.
Las redes de memoria a largo plazo a corto plazo (LSTM) son las RNN más utilizadas.
Junto con las redes neuronales convolucionales, las RNN se han utilizado como parte de un modelo para generar descripciones de imágenes no etiquetadas. Es bastante sorprendente lo bien que parece funcionar.
Redes neuronales profundas convolucionales - CNN
Si aumentamos el número de capas en una red neuronal para hacerla más profunda, aumenta la complejidad de la red y nos permite modelar funciones que son más complicadas. Sin embargo, el número de ponderaciones y sesgos aumentará exponencialmente. De hecho, aprender problemas tan difíciles puede resultar imposible para las redes neuronales normales. Esto conduce a una solución, las redes neuronales convolucionales.
Las CNN se utilizan ampliamente en visión artificial; También se han aplicado en el modelado acústico para el reconocimiento automático de voz.
La idea detrás de las redes neuronales convolucionales es la idea de un "filtro en movimiento" que atraviesa la imagen. Este filtro móvil, o convolución, se aplica a un cierto vecindario de nodos que, por ejemplo, pueden ser píxeles, donde el filtro aplicado es 0.5 x el valor del nodo -
El destacado investigador Yann LeCun fue pionero en las redes neuronales convolucionales. Facebook como software de reconocimiento facial usa estas redes. CNN ha sido la solución ideal para proyectos de visión artificial. Hay muchas capas en una red convolucional. En el desafío Imagenet, una máquina pudo vencer a un humano en el reconocimiento de objetos en 2015.
En pocas palabras, las redes neuronales convolucionales (CNN) son redes neuronales multicapa. Las capas a veces tienen hasta 17 o más y asumen que los datos de entrada son imágenes.
Las CNN reducen drásticamente la cantidad de parámetros que deben ajustarse. Por lo tanto, las CNN manejan de manera eficiente la alta dimensionalidad de las imágenes sin procesar.