Keras: descripción general del aprendizaje profundo
El aprendizaje profundo es un subcampo en evolución del aprendizaje automático. El aprendizaje profundo implica analizar la entrada capa por capa, donde cada capa extrae progresivamente información de nivel superior sobre la entrada.
Tomemos un escenario simple de analizar una imagen. Supongamos que su imagen de entrada está dividida en una cuadrícula rectangular de píxeles. Ahora, la primera capa abstrae los píxeles. La segunda capa comprende los bordes de la imagen. La siguiente capa construye nodos a partir de los bordes. Luego, el siguiente encontraría ramas de los nodos. Finalmente, la capa de salida detectará el objeto completo. Aquí, el proceso de extracción de características va de la salida de una capa a la entrada de la siguiente capa subsiguiente.
Al utilizar este enfoque, podemos procesar una gran cantidad de funciones, lo que hace que el aprendizaje profundo sea una herramienta muy poderosa. Los algoritmos de aprendizaje profundo también son útiles para el análisis de datos no estructurados. Repasemos los conceptos básicos del aprendizaje profundo en este capítulo.
Redes neuronales artificiales
El enfoque más popular y principal del aprendizaje profundo es el uso de una "red neuronal artificial" (ANN). Están inspirados en el modelo del cerebro humano, que es el órgano más complejo de nuestro cuerpo. El cerebro humano está formado por más de 90 mil millones de células diminutas llamadas "neuronas". Las neuronas están interconectadas a través de fibras nerviosas llamadas "axones" y "dendritas". La función principal del axón es transmitir información de una neurona a otra a la que está conectado.
Del mismo modo, la función principal de las dendritas es recibir la información que transmiten los axones de otra neurona a la que están conectadas. Cada neurona procesa una pequeña información y luego pasa el resultado a otra neurona y este proceso continúa. Este es el método básico utilizado por nuestro cerebro humano para procesar una gran cantidad de información como el habla, visual, etc., y extraer información útil de ella.
Basado en este modelo, el psicólogo inventó la primera Red Neural Artificial (ANN). Frank Rosenblatt, en el año de 1958. Las ANN están formadas por múltiples nodos que es similar a las neuronas. Los nodos están estrechamente interconectados y organizados en diferentes capas ocultas. La capa de entrada recibe los datos de entrada y los datos pasan por una o más capas ocultas secuencialmente y finalmente la capa de salida predice algo útil sobre los datos de entrada. Por ejemplo, la entrada puede ser una imagen y la salida puede ser la cosa identificada en la imagen, digamos un "gato".
Una sola neurona (llamada perceptrón en ANN) se puede representar de la siguiente manera:
Aquí,
La entrada múltiple junto con el peso representan dendritas.
La suma de la entrada junto con la función de activación representa las neuronas. Sum en realidad significa que el valor calculado de todas las entradas y la función de activación representan una función, que modifica la Sum valor en 0, 1 o 0 a 1.
La salida real representa el axón y la salida será recibida por la neurona en la siguiente capa.
Entendamos los diferentes tipos de redes neuronales artificiales en esta sección.
Perceptrón multicapa
El perceptrón multicapa es la forma más simple de ANN. Consiste en una sola capa de entrada, una o más capas ocultas y finalmente una capa de salida. Una capa consta de una colección de perceptrón. La capa de entrada es básicamente una o más características de los datos de entrada. Cada capa oculta consta de una o más neuronas y procesa cierto aspecto de la característica y envía la información procesada a la siguiente capa oculta. El proceso de la capa de salida recibe los datos de la última capa oculta y finalmente genera el resultado.
Red neuronal convolucional (CNN)
La red neuronal convolucional es una de las ANN más populares. Es ampliamente utilizado en los campos del reconocimiento de imágenes y video. Se basa en el concepto de convolución, un concepto matemático. Es casi similar al perceptrón multicapa, excepto que contiene una serie de capas de convolución y una capa de agrupación antes de la capa de neuronas ocultas completamente conectadas. Tiene tres capas importantes:
Convolution layer - Es el bloque de construcción principal y realiza tareas computacionales basadas en la función de convolución.
Pooling layer - Está dispuesto junto a la capa de convolución y se utiliza para reducir el tamaño de las entradas eliminando información innecesaria para que el cálculo se pueda realizar más rápido.
Fully connected layer - Está organizado junto a una serie de convolución y capa de agrupación y clasifica la entrada en varias categorías.
Una CNN simple se puede representar de la siguiente manera:
Aquí,
Se utilizan 2 series de capas de convolución y agrupación, que reciben y procesan la entrada (por ejemplo, imagen).
Se utiliza una única capa completamente conectada y se utiliza para generar los datos (por ejemplo, clasificación de la imagen)
Red neuronal recurrente (RNN)
Las redes neuronales recurrentes (RNN) son útiles para abordar la falla en otros modelos de ANN. Bueno, la mayoría de la ANN no recuerda los pasos de situaciones anteriores y aprendió a tomar decisiones basadas en el contexto en el entrenamiento. Mientras tanto, RNN almacena la información pasada y todas sus decisiones se toman de lo que ha aprendido del pasado.
Este enfoque es principalmente útil en la clasificación de imágenes. A veces, es posible que necesitemos mirar hacia el futuro para arreglar el pasado. En este caso, la RNN bidireccional es útil para aprender del pasado y predecir el futuro. Por ejemplo, tenemos muestras escritas a mano en múltiples entradas. Supongamos que tenemos confusión en una entrada y luego necesitamos volver a verificar otras entradas para reconocer el contexto correcto que toma la decisión del pasado.
Flujo de trabajo de ANN
Primero comprendamos las diferentes fases del aprendizaje profundo y luego, aprendamos cómo Keras ayuda en el proceso de aprendizaje profundo.
Recopile los datos requeridos
El aprendizaje profundo requiere muchos datos de entrada para aprender y predecir con éxito el resultado. Entonces, primero recopile la mayor cantidad de datos posible.
Analizar datos
Analice los datos y adquiera una buena comprensión de los datos. Se requiere una mejor comprensión de los datos para seleccionar el algoritmo ANN correcto.
Elija un algoritmo (modelo)
Elija un algoritmo que se adapte mejor al tipo de proceso de aprendizaje (por ejemplo, clasificación de imágenes, procesamiento de texto, etc.) y los datos de entrada disponibles. El algoritmo está representado porModelen Keras. El algoritmo incluye una o más capas. Cada capa en ANN se puede representar porKeras Layer en Keras.
Prepare data - Procesar, filtrar y seleccionar solo la información requerida de los datos.
Split data- Divida los datos en conjuntos de datos de prueba y entrenamiento. Los datos de prueba se utilizarán para evaluar la predicción del algoritmo / modelo (una vez que la máquina aprenda) y para verificar la eficiencia del proceso de aprendizaje.
Compile the model- Compilar el algoritmo / modelo, de modo que se pueda utilizar más para aprender mediante el entrenamiento y finalmente hacer la predicción. Este paso nos obliga a elegir la función de pérdida y el Optimizador. La función de pérdida y el Optimizador se utilizan en la fase de aprendizaje para encontrar el error (desviación de la salida real) y realizar la optimización para que el error se minimice.
Fit the model - El proceso de aprendizaje real se realizará en esta fase utilizando el conjunto de datos de entrenamiento.
Predict result for unknown value - Predecir la salida de los datos de entrada desconocidos (distintos de los datos de prueba y entrenamiento existentes)
Evaluate model - Evalúe el modelo prediciendo la salida de los datos de prueba y comparando la predicción con el resultado real de los datos de prueba.
Freeze, Modify or choose new algorithm- Verifique si la evaluación del modelo es exitosa. En caso afirmativo, guarde el algoritmo para futuras predicciones. Si no es así, modifique o elija un nuevo algoritmo / modelo y, finalmente, entrene, prediga y evalúe el modelo nuevamente. Repita el proceso hasta encontrar el mejor algoritmo (modelo).
Los pasos anteriores se pueden representar utilizando el siguiente diagrama de flujo: