Redes Neuronales | una guía para principiantes

Las redes neuronales son sistemas artificiales que se inspiraron en las redes neuronales biológicas. Estos sistemas aprenden a realizar tareas al estar expuestos a varios conjuntos de datos y ejemplos sin reglas específicas de tareas. La idea es que el sistema genere características de identificación a partir de los datos que se han pasado sin ser programado con una comprensión preprogramada de estos conjuntos de datos.

Las redes neuronales se basan en modelos computacionales para la lógica de umbral. La lógica de umbral es una combinación de algoritmos y matemáticas. Las redes neuronales se basan o bien en el estudio del cerebro o bien en la aplicación de las redes neuronales a la inteligencia artificial. El trabajo ha llevado a mejoras en la teoría de los autómatas finitos.

Los componentes de una red neuronal típica involucran neuronas, conexiones, pesos, sesgos, función de propagación y una regla de aprendizaje. Las neuronas recibirán una entrada p_j(t)de las neuronas predecesoras que tienen una activación a_j(t), un umbral \theta_j , una función de activación f y una función de salida f_{out}. Las conexiones consisten en conexiones, pesos y sesgos que rigen cómo la neurona $i$transfiere la salida a la neurona $j$. La propagación calcula la entrada y emite la salida y suma la función de las neuronas predecesoras con el peso. La regla de aprendizaje modifica los pesos y umbrales de las variables en la red.

Aprendizaje supervisado vs no supervisado:
las redes neuronales aprenden a través del aprendizaje supervisado; El aprendizaje automático supervisado implica una variable de entrada x y una variable de salida y . El algoritmo aprende de un conjunto de datos de entrenamiento. Con cada respuesta correcta, los algoritmos iterativamente hacen predicciones sobre los datos. El aprendizaje se detiene cuando el algoritmo alcanza un nivel aceptable de rendimiento.
El aprendizaje automático no supervisado tiene datos de entrada X y no tiene variables de salida correspondientes. El objetivo es modelar la estructura subyacente de los datos para comprender más sobre los datos. Las palabras clave para el aprendizaje automático supervisado son clasificación y regresión. Para el aprendizaje automático no supervisado, las palabras clave son agrupación y asociación.

Evolución de las redes neuronales:
el aprendizaje hebbiano se ocupa de la plasticidad neuronal. El aprendizaje hebbiano no está supervisado y se ocupa de la potenciación a largo plazo. El aprendizaje hebbiano se ocupa del reconocimiento de patrones y de los circuitos or-exclusivos; se ocupa de las reglas si-entonces.

La propagación hacia atrás resolvió el problema exclusivo-o que el aprendizaje de Hebbian no podía manejar. Esto también permitió que las redes multicapa fueran factibles y eficientes. Si se encontraba un error, el error se resolvía en cada capa modificando los pesos en cada Node. Esto condujo al desarrollo de máquinas de vectores de soporte, clasificadores lineales y agrupación máxima. El problema del gradiente de fuga afecta a las redes de retroalimentación que utilizan la propagación hacia atrás y la red neuronal recurrente. Esto se conoce como aprendizaje profundo.

Los diseños basados ​​en hardware se utilizan para simulación biofísica y computación neurotrófica. Tienen análisis de componentes a gran escala y la convolución crea una nueva clase de computación neuronal con analógico. Esto también resolvió la propagación hacia atrás para redes neuronales de avance de muchas capas.

Las redes convolucionales se utilizan para alternar entre capas convolucionales y capas de agrupación máxima con capas conectadas (total o escasamente conectadas) con una capa de clasificación final. El aprendizaje se realiza sin entrenamiento previo no supervisado. Cada filtro es equivalente a un vector de pesos que debe ser entrenado. La variación de turno debe garantizarse para tratar con redes neuronales pequeñas y grandes. Esto se está resolviendo en Redes de Desarrollo.

Tipos de redes neuronales

Hay siete tipos de redes neuronales que se pueden utilizar.

  • El primero es un perceptrón multicapa que tiene tres o más capas y utiliza una función de activación no lineal.
  • La segunda es la red neuronal convolucional que utiliza una variación de los perceptrones multicapa.
  • La tercera es la red neuronal recursiva que usa pesos para hacer predicciones estructuradas.
  • La cuarta es una red neuronal recurrente que establece conexiones entre las neuronas en un ciclo dirigido. La red neuronal de memoria a corto plazo utiliza la arquitectura de red neuronal recurrente y no utiliza la función de activación.
  • Los dos últimos son módulos de secuencia a secuencia que utilizan dos redes recurrentes y redes neuronales poco profundas que producen un espacio vectorial a partir de una cantidad de texto. Estas redes neuronales son aplicaciones de la red neuronal básica que se muestra a continuación.

Para el ejemplo, la red neuronal funcionará con tres vectores: un vector de atributos X, un vector de clases Y y un vector de pesos W. El código usará 100 iteraciones para ajustar los atributos a las clases. Las predicciones se generan, se pesan y luego se emiten después de iterar a través del vector de pesos W. La red neuronal maneja la propagación hacia atrás.

Ejemplos:

Input :
X { 2.6, 3.1, 3.0,
    3.4, 2.1, 2.5,
    2.6, 1.3, 4.9, 
    0.1, 0.3, 2.3,};
y {1, 1, 1};
W {0.3, 0.4, 0.6}; 

Output :
0.990628 
0.984596 
0.994117 

A continuación se muestran las implementaciones:

import numpy as np
  
# array of any amount of numbers. n = m
X = np.array([[1, 2, 3],
              [3, 4, 1],
              [2, 5, 3]])
                
# multiplication
y = np.array([[.5, .3, .2]])
  
# transpose of y
y = y.T
  
# sigma value
sigm = 2
  
# find the delta
delt = np.random.random((3, 3)) - 1
  
for j in range(100):
    # find matrix 1. 100 layers. 
    m1 = (y - (1/(1 + np.exp(-(np.dot((1/(1 + np.exp(
                   -(np.dot(X, sigm))))), delt))))))*((1/(
                       1 + np.exp(-(np.dot((1/(1 + np.exp(
                   -(np.dot(X, sigm))))), delt)))))*(1-(1/(
                       1 + np.exp(-(np.dot((1/(1 + np.exp(
                   -(np.dot(X, sigm))))), delt)))))))
                     
    # find matrix 2
    m2 = m1.dot(delt.T) * ((1/(1 + np.exp(-(np.dot(X, sigm)))))
                    * (1-(1/(1 + np.exp(-(np.dot(X, sigm)))))))
    # find delta
    delt = delt + (1/(1 + np.exp(-(np.dot(X, sigm))))).T.dot(m1)
      
    # find sigma
    sigm = sigm + (X.T.dot(m2))
      
# print output from the matrix
print(1/(1 + np.exp(-(np.dot(X, sigm)))))
Producción:

[[ 0.99999294  0.99999379  0.99999353]
 [ 0.99999987  0.99999989  0.99999988]
 [ 1.          1.          1.        ]]

Limitaciones:
La red neuronal es para un modelo supervisado. No maneja el aprendizaje automático no supervisado y no agrupa ni asocia datos. También carece de un nivel de precisión que se encontrará en una red neuronal más costosa desde el punto de vista computacional. Basado en la red neuronal de Andrew Trask. Además, la red neuronal no funciona con ninguna array en la que el número de filas y columnas de X no coincida con el número de filas de Y y W.

Los siguientes pasos serían crear una red neuronal no supervisada y aumentar la potencia computacional del modelo supervisado con más iteraciones y subprocesos.

Recursos:

  • http://neuralnetworksanddeeplearning.com
  • https://skymind.ai/wiki/red-neuronal
  • http://pages.cs.wisc.edu/~bolo/shipyard/neural/local.html
  • https://iamtrask.github.io/2015/07/12/basic-python-network/

Publicación traducida automáticamente

Artículo escrito por Veena Ghorakavi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *