Se supone que el lector conoce el concepto de Redes Neuronales.
Cuando se trata de aprendizaje automático, las redes neuronales artificiales funcionan muy bien. Las redes neuronales artificiales se utilizan en diversas tareas de clasificación como imagen, audio, palabras. Los diferentes tipos de redes neuronales se utilizan para diferentes propósitos, por ejemplo, para predecir la secuencia de palabras, usamos redes neuronales recurrentes, más precisamente un LSTM, de manera similar, para la clasificación de imágenes usamos redes neuronales de convolución. En este blog, vamos a construir un bloque de construcción básico para CNN.
Antes de sumergirnos en la red neuronal de convolución, primero revisemos algunos conceptos de la red neuronal. En una Red Neuronal regular hay tres tipos de capas:
- Capas de entrada: Es la capa en la que damos entrada a nuestro modelo. El número de neuronas en esta capa es igual al número total de características en nuestros datos (número de píxeles en el caso de una imagen).
- Capa oculta: la entrada de la capa de entrada luego se alimenta a la capa oculta. Puede haber muchas capas ocultas según nuestro modelo y el tamaño de los datos. Cada capa oculta puede tener un número diferente de neuronas que generalmente es mayor que el número de características. La salida de cada capa se calcula mediante la multiplicación matricial de la salida de la capa anterior con pesos aprendibles de esa capa y luego mediante la adición de sesgos aprendibles seguidos de una función de activación que hace que la red no sea lineal.
- Capa de salida: la salida de la capa oculta luego se alimenta a una función logística como sigmoid o softmax que convierte la salida de cada clase en el puntaje de probabilidad de cada clase.
Luego, los datos se introducen en el modelo y se obtiene la salida de cada capa. Este paso se llama avance, luego calculamos el error usando una función de error, algunas funciones de error comunes son la entropía cruzada, el error de pérdida cuadrática, etc. Después de eso, propagarse hacia atrás en el modelo calculando las derivadas. Este paso se llama Backpropagation, que básicamente se usa para minimizar la pérdida.
Aquí está el código básico de Python para una red neuronal con entradas aleatorias y dos capas ocultas.
Python
activation = lambda x: 1.0/(1.0 + np.exp(-x)) # sigmoid function input = np.random.randn(3, 1) hidden_1 = activation(np.dot(W1, input) + b1) hidden_2 = activation(np.dot(W2, hidden_1) + b2) output = np.dot(W3, hidden_2) + b3
W1, W2, W3, b1, b2, b3 son parámetros de aprendizaje del modelo.
Red neuronal de convolución
Las redes neuronales de convolución o covnets son redes neuronales que comparten sus parámetros. Imagina que tienes una imagen. Se puede representar como un paralelepípedo que tiene su longitud, anchura (dimensión de la imagen) y altura (ya que las imágenes generalmente tienen canales rojos, verdes y azules).
Ahora imagine tomar un pequeño parche de esta imagen y ejecutar una pequeña red neuronal en él, con, digamos, k salidas y representarlas verticalmente. Ahora deslice esa red neuronal por toda la imagen, como resultado, obtendremos otra imagen con diferente ancho, alto y profundidad. En lugar de solo los canales R, G y B, ahora tenemos más canales pero menos ancho y alto. Esta operación se llama Convolución. Si el tamaño del parche es el mismo que el de la imagen, será una red neuronal normal. Debido a este pequeño parche, tenemos menos pesos.
Ahora hablemos de un poco de matemática que está involucrada en todo el proceso de convolución.
- Las capas de convolución consisten en un conjunto de filtros que se pueden aprender (un parche en la imagen de arriba). Cada filtro tiene un ancho y una altura pequeños y la misma profundidad que el volumen de entrada (3 si la capa de entrada es una entrada de imagen).
- Por ejemplo, si tenemos que ejecutar la convolución en una imagen con una dimensión de 34x34x3. El tamaño posible de los filtros puede ser axax3, donde ‘a’ puede ser 3, 5, 7, etc. pero pequeño en comparación con la dimensión de la imagen.
- Durante el paso hacia adelante, deslizamos cada filtro por todo el volumen de entrada paso a paso, donde cada paso se llama zancada (que puede tener un valor de 2, 3 o incluso 4 para imágenes de dimensiones altas) y calculamos el producto escalar entre los pesos de los filtros y el parche. del volumen de entrada.
- A medida que deslizamos nuestros filtros, obtendremos una salida 2-D para cada filtro y los apilaremos juntos y, como resultado, obtendremos un volumen de salida con una profundidad igual a la cantidad de filtros. La red aprenderá todos los filtros.
Capas utilizadas para construir ConvNets
Un covnets es una secuencia de capas, y cada capa transforma un volumen en otro a través de una función diferenciable.
Tipos de capas:
Tomemos un ejemplo ejecutando covnets en una imagen de dimensión 32 x 32 x 3.
- Capa de entrada: esta capa contiene la entrada sin procesar de la imagen con un ancho de 32, una altura de 32 y una profundidad de 3.
- Capa de convolución: esta capa calcula el volumen de salida calculando el producto punto entre todos los filtros y parches de imagen. Supongamos que usamos un total de 12 filtros para esta capa, obtendremos un volumen de salida de dimensión 32 x 32 x 12.
- Capa de función de activación: esta capa aplicará una función de activación por elemento a la salida de la capa de convolución. Algunas funciones de activación comunes son RELU: max(0, x), Sigmoid: 1/(1+e^-x), Tanh, Leaky RELU, etc. El volumen permanece sin cambios, por lo que el volumen de salida tendrá una dimensión de 32 x 32 x 12.
- Pool Layer: Esta capa se inserta periódicamente en las covnets y su función principal es reducir el tamaño del volumen lo que hace que el cómputo sea rápido, reduce la memoria y también evita el sobreajuste. Dos tipos comunes de capas de agrupación son la agrupación máxima y la agrupación promedio . Si utilizamos una piscina max con filtros 2 x 2 y zancada 2, el volumen resultante será de dimensión 16x16x12.
- Capa totalmente conectada: esta capa es una capa de red neuronal regular que toma información de la capa anterior y calcula las puntuaciones de clase y genera la array 1-D de tamaño igual al número de clases.
Referencias: Curso de redes neuronales de convolución de Stanford (CS231n)
Este artículo es una contribución de Akhand Pratap Mishra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA