Aprendizaje automático. Redes neuronales (parte 1): el proceso de aprendizaje del perceptrón

Quiero señalar de antemano que aquellos que saben cómo aprende el perceptrón difícilmente encontrarán algo nuevo en este artículo. Puede omitirlo con seguridad. Por qué decidí escribir esto: me gustaría escribir una serie de artículos relacionados con las redes neuronales y el uso de TensorFlow.js, por lo tanto, no pude omitir extractos teóricos generales. Por tanto, les pido que traten la idea final con mucha paciencia y comprensión.



En la programación clásica, el desarrollador describe en un lenguaje de programación específico un cierto conjunto de reglas rígidamente especificado, que fue determinado en base a su conocimiento en un área temática específica y que, como una primera aproximación, describe los procesos que ocurren en el cerebro humano al resolver un problema similar.



Por ejemplo, se puede programar una estrategia para jugar tic-tac-toe, ajedrez y más (Figura 1).





Figura 1 - El enfoque clásico para resolver problemas



Mientras que los algoritmos de aprendizaje automático pueden definir un conjunto de reglas para resolver problemas sin la participación del desarrollador, pero solo en función de la disponibilidad de un conjunto de datos de entrenamiento.

Un conjunto de capacitación es algún tipo de conjunto de entradas asociadas con un conjunto de resultados esperados (respuestas, productos). En cada paso del entrenamiento, el modelo, al cambiar el estado interno, optimizará y reducirá el error entre la salida real del modelo y el resultado esperado (Figura 2).





Figura 2 - Aprendizaje automático



Redes neuronales



Durante mucho tiempo, los científicos, inspirados por los procesos que tienen lugar en nuestro cerebro, intentaron aplicar ingeniería inversa al sistema nervioso central e intentar imitar el trabajo del cerebro humano. Gracias a esto, nació toda una dirección en el aprendizaje automático: las redes neuronales.



En la Figura 3, puede ver las similitudes entre el diseño de una neurona biológica y la representación matemática de una neurona utilizada en el aprendizaje automático.





Figura 3 - Representación matemática de una neurona



En una neurona biológica, una neurona recibe señales eléctricas de dendritas, modulando señales eléctricas con diferentes potencias, que pueden excitar a la neurona cuando se alcanza un determinado valor umbral, lo que a su vez conducirá a la transmisión de una señal eléctrica a otras neuronas a través de sinapsis.



Perceptrón



Modelo matemático de una red neuronal, que consta de una neurona, que realiza dos operaciones secuenciales (Figura 4):



  • calcula la suma de las señales de entrada teniendo en cuenta sus pesos (conductancia o resistencia) de la conexión

    sum= XTW+B=i=1nxiwi+b

  • aplica la función de activación a la suma total de las señales de entrada.

    out=φ(sum)







Figura 4 - Modelo matemático del perceptrón



Cualquier función diferenciable puede usarse como función de activación, las más comúnmente utilizadas se muestran en la Tabla 1. La elección de la función de activación recae sobre los hombros del ingeniero, y generalmente esta elección se basa en la experiencia existente en la resolución de problemas similares, bien, o simplemente mediante el método selección.

La nota



– , ReLU , .

1 -
Linear function

φ(x)=x

.

Sigmoid function

φ(x)=11+ex



Softmax function

φ(xj)=exjiexi

φ([1.20.90.4])=[0.460.340.20]



( 2)

Hyperbolic Tangent function

φ(x)=exexexex





[-1, 1]. , ,

Rectified Linear Unit (ReLU)

φ(x)=max(0,x)





, , sigmoid tanh

Leaky ReLU

φ(x)=max(0.01x,x)





ReLU , 0







El proceso de aprendizaje consta de varios pasos. Para mayor claridad, consideraremos un determinado problema de ficción, que resolveremos con una red neuronal que consta de una neurona con una función de activación lineal (esto es esencialmente un perceptrón sin función de activación), también para simplificar la tarea, excluiremos el nodo de desplazamiento b en la neurona (Figura 5). ...





Figura 5 - El conjunto de datos de entrenamiento y el estado de la red neuronal en el paso anterior del entrenamiento



En esta etapa, tenemos una red neuronal en un cierto estado con ciertos pesos de conexión que se calcularon en la etapa anterior del entrenamiento del modelo, o si esta es la primera iteración del entrenamiento, entonces los valores de los pesos de conexión se seleccionan en Orden aleatorio.



Entonces, imaginemos que tenemos un conjunto de datos de entrenamiento, los valores de cada elemento del conjunto están representados por un vector de datos de entrada (datos de entrada), que contiene 2 parámetros (característica) x1,x2... Debajox1,x2en el modelo, dependiendo del área temática en consideración, se puede implicar cualquier cosa: el número de habitaciones de la casa, la distancia de la casa al mar, o simplemente estamos tratando de entrenar la red neuronal de la operación lógica Y, u OR.



Cada vector de entrada del conjunto de entrenamiento se asigna a un vector de salida esperado. En este caso, el vector de datos de salida contiene solo un parámetro que, nuevamente, dependiendo del área temática seleccionada, puede significar cualquier cosa: el precio de una casa, el resultado de realizar una operación lógica Y u O.



PASO 1 - Proceso de retroalimentación

En este paso, calculamos la suma de las señales de entrada teniendo en cuenta el peso de cada enlace y aplicamos la función de activación (en nuestro caso, no hay función de activación). Hagamos los cálculos para el primer elemento del conjunto de entrenamiento:

ypredicted=i=1nxiwi=10.1+0.50.2=0.2







Figura 6 - Propagación hacia adelante del error



Tenga en cuenta que la fórmula anterior es una ecuación matemática simplificada para el caso especial de las operaciones tensoriales.



Un tensor es esencialmente un contenedor de datos que puede tener N ejes y un número arbitrario de elementos a lo largo de cada uno de los ejes. La mayoría de los tensores están familiarizados con las matemáticas: vectores (tensor con un eje), matrices (tensor con dos ejes: filas, columnas).

La fórmula se puede escribir en la siguiente forma, donde verá las matrices familiares (tensores) y su multiplicación, y también comprenderá qué tipo de simplificación se discutió anteriormente:



Ypredicted= XTW=[x1x2]T[w1w2]=[x1x2][w1w2]=[x1w1+x2w2]





PASO 2 - Calcule la

función de error La función de error es una métrica que refleja la discrepancia entre la salida esperada y la recibida. Las siguientes funciones de error se utilizan comúnmente:

- Error cuadrático medio (MSE) : esta función de error es especialmente sensible a los valores atípicos en el conjunto de entrenamiento, ya que utiliza el cuadrado de la diferencia entre los valores reales y esperados (un valor atípico es un valor que está muy lejos de otros valores en conjunto de datos, que a veces puede aparecer debido a errores de datos, como mezclar datos con diferentes unidades de medida o lecturas deficientes del sensor):

L=1Ni=1N(ypredicted(i)yexpected(i))2



- Desviación de la raíz cuadrada media (Root MSE) - de hecho, esto es lo mismo que la raíz del error cuadrático medio en el contexto de las redes neuronales, pero puede reflejar una unidad física real de medida, por ejemplo, si en una red neuronal los parámetros de salida de una red neuronal son el precio de una casa en dólares, entonces la unidad de medida el error cuadrático medio será el dólar cuadrado ($2), y para la desviación estándar es el dólar ($), que naturalmente simplifica ligeramente la tarea del análisis humano:



L=1Ni=1N(ypredicted(i)yexpected(i))2



- la desviación media (error absoluto medio, MAE) - en contraste con los dos valores anteriores, no es tan sensible a las emisiones:

L=1Ni=1N|ypredicted(i)yexpected(i)|



- entropía cruzada - usos para tareas de clasificación:

L=i=1Nj=1Myexpected(ij)log(ypredicted(ij))



Dónde

N - el número de copias en el conjunto de formación

M - el número de clases al resolver problemas de clasificación

yexpected - valor de salida esperado

ypredicted- el valor de salida real del modelo entrenado



Para nuestro caso particular, usaremos MSE:

L=1Ni=1N(ypredicted(i)yexpected(i))2=(0.21)2=0.64





PASO 3 - Retropropagación

El objetivo de entrenar la red neuronal es simple: minimizar la función de error:

Lmin



Una forma de encontrar el mínimo de una función es modificar los pesos de conexión en la dirección opuesta al vector de gradiente en cada siguiente paso de aprendizaje: el método de descenso de gradiente, y matemáticamente se ve así:

w(k+1)=wkμL(wk)



Dónde k - k-ésima iteración del entrenamiento de redes neuronales;

μ- la tasa de aprendizaje la establece el ingeniero, normalmente puede ser 0,1; 0.01 (sobre cómo el paso de aprendizaje afecta el proceso de convergencia de aprendizaje, observe un poco más adelante)

L- el gradiente de la función de error

Para encontrar el gradiente, usamos derivadas parciales con respecto a los argumentos personalizadosw1,w2:

L(w)=[Lw1LwN]



En nuestro caso particular, teniendo en cuenta todas las simplificaciones, la función de error toma la forma:

L(w1,w2)=(ypredictedyexpected)2=(x1w1+x2w2yexpected)2=

=(1w1+0.5w21)2



Memo de fórmulas derivadas
,

ddxc=0;c=const

ddx[cf(x)]=cf(x); c=const

ddxxn=nxn1

ddx[f(x)±g(x)]=f(x)±g(x)

ddx[f(x)g(x)]=f(x)g(x)+g(x)f(x)

ddxf(g(x))=f(g(x))g(x)





Encontremos las siguientes derivadas parciales:

w1(w1+0.5w21)2=2(w1+0.5w21)w1(w1+0.5w21)=

=2(w1+0.5w21)1=2(0.1+0.50.21)=1.6



w2(w1+0.5w21)2=2(w1+0.5w21)w2(w1+0.5w21)=

=2(w1+0.5w21)0.5=2(0.1+0.50.21)0.5=0.8





Entonces, el proceso de propagación hacia atrás del error es el movimiento a lo largo del modelo desde la salida hacia la entrada con la modificación de los pesos del modelo en la dirección opuesta al vector de gradiente. Estableciendo el paso de aprendizaje 0.1 (tasa de aprendizaje) tenemos (Figura 7):

w1(k+1)=w1(k)μL(w1,w2)w1=0.10.1(1.6)=0.26



w2(k+1)=w2(k)μL(w1,w2)w2=0.20.1(0.8)=0.28





Figura 7 - Retropropagación del error

Por lo tanto, hemos completado k + 1 pasos de entrenamiento para asegurarnos de que el error ha disminuido y la salida del modelo con nuevos pesos se ha acercado más a la esperada, realizaremos el proceso de propagación hacia adelante del error sobre el modelo con nuevos pesos (ver PASO 1) :

ypredicted=x1w1+x2w2=10.26+0.50.28=0.4



Como puede ver, el valor de salida ha aumentado en 0,2 unidades en la dirección correcta hacia el resultado esperado: uno (1). El error entonces será:

L=(0.41)2=0.36



Como puede ver, en el paso de entrenamiento anterior, el error fue 0,64, y con los nuevos pesos - 0,36, por lo tanto, ajustamos el modelo en la dirección correcta.



Siguiente parte del artículo:

Machine Learning. Redes neuronales (parte 2): modelado de quirófano; XOR con aprendizaje automático de TensorFlow.js

. Redes neuronales (Parte 3) - Red convolucional bajo el microscopio. Explorando la API de Tensorflow.js



All Articles