Análisis de red neuronal (capa única)


Los modelos de aprendizaje automático se pueden implementar de muchas formas, y las redes neuronales son una de ellas. Consulte el artículo que escribí sobre el primer conocimiento del aprendizaje automático. Para la segunda imagen, se usan redes neuronales en lugar de modelos y se usan reglas de aprendizaje en lugar del aprendizaje automático. Porque en el contexto de las redes neuronales, el proceso de determinación del modelo se llama reglas de aprendizaje. A continuación, solo introduciré brevemente algunos conocimientos básicos en redes neuronales de una sola capa para sentar las bases para el aprendizaje de redes neuronales multicapa. (El código específico y detallado involucrado no se proporciona a continuación, puede intentar programarlo usted mismo, si es realmente difícil, puede mirar directamente el recurso de la red neuronal de programación MATLAB que publiqué )

1. Nodo

Como todos sabemos, las redes neuronales se desarrollan simulando mecanismos cerebrales. El cerebro depende de las neuronas y la asociación entre neuronas para memorizar y almacenar información, y las redes neuronales utilizan la asociación entre nodos para transmitir información, y el valor de peso se utiliza para simular la asociación entre neuronas. Puede que no sea claro decir que, aquí daré un ejemplo simple, mire la siguiente figura:
Inserte la descripción de la imagen aquí
los círculos en la figura son nodos y las flechas representan el flujo de señal. x1, x2, x3 son las señales de entrada, w1, w2 y w3 son los pesos de las señales correspondientes y b es el sesgo La información de la red neuronal se almacena en forma de pesos y sesgos. La señal de entrada desde el exterior debe multiplicarse por un valor de peso antes de llegar al nodo, y finalmente obtener la suma ponderada del valor de compensación, es decir, v = w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3 + bv = w1 * x1 + w2 * x2 + w3 * x3 + bv=w 1x 1+w 2x 2+w 3x 3+b . Finalmente, el nodo ingresa la suma ponderada en la función de activación y produce una salida, es decir,y = ϕ (v) y = \ phi (v)y=ϕ ( v ) , hay muchas formas de funciones de activación.

2 capas

Los diferentes métodos de conexión de nodos pueden establecer una variedad de redes neuronales. El tipo de red neuronal más comúnmente utilizado utiliza una estructura de nodo jerárquica. La red neuronal se puede clasificar a través de diferentes capas, la clasificación general es la siguiente

Red neuronal de una sola capa Red neuronal multicapa
Capa de entrada-capa de salida Red neuronal poco profunda: capa de entrada-capa única oculta-capa de salida
Red neuronal profunda: capa de entrada, múltiples capas ocultas, capa de salida

En una red neuronal en capas, la señal ingresa a la capa de entrada, pasa a través de la capa oculta y sale de la red a través de la capa de salida.En este proceso, la señal avanza capa por capa. Algunos significados se pueden ver claramente en la siguiente figura:
Inserte la descripción de la imagen aquí
Además de la capa de entrada y la capa de salida, cada nodo en la capa oculta necesita recibir la información transmitida por todos los nodos en la capa anterior y pasar la salida a todos los nodos en la capa anterior. siguiente capa. Aquí debemos ser claros. Excepto que la capa de entrada no requiere una función de activación, las otras capas necesitan funciones de activación para la salida. Aquí hay una característica. Si la capa oculta usa una función de activación lineal, la capa oculta se invalidará. y la capa de salida puede usar lineal La función de activación no tiene ningún efecto.

3. Aprendizaje supervisado de redes neuronales

Para esta sección, solo presentaré los pasos del aprendizaje supervisado:

  1. Inicializar pesos con valores apropiados
  2. Obtenga la entrada de los datos de entrenamiento, ingrese a la red neuronal y, finalmente, obtenga la salida de la red neuronal y compárela con la salida estándar.
  3. Ajuste el valor de peso para reducir el error.
  4. Repite los pasos 2 y 3 para todos los datos de entrenamiento.

4. reglas delta

Como se mencionó anteriormente, para entrenar una red neuronal con nueva información, las ponderaciones deben cambiarse en consecuencia. El método sistemático para modificar las ponderaciones de acuerdo con la información dada es aprender reglas. La regla delta es una regla representativa de una sola red neuronal de capa.
Inserte la descripción de la imagen aquí
Si un nodo de entrada hace que un nodo de salida produzca un error, el peso entre los dos nodos se ajustará en proporción al valor de entrada y la desviación de salida. La expresión pública es wij = wij + α ∗ ei ∗ xj w_ {ij} = w_ {ij} + \ alpha * e_i * x_jwi j=wi j+amiyoXj, Donde α \ alphaα se llama tasa de aprendizaje y el valor es(0, 1] (0,1)( 0 ,1 ] . La tasa de aprendizaje determina la cantidad de cambio de peso cada vez. Si es demasiado alta, hará que la salida permanezca alrededor de la solución y no converja. Si es demasiado baja, el proceso de cálculo de la convergencia a la solución será demasiado lento.

5. Regla delta generalizada

La regla delta introducida en la sección anterior está bastante desactualizada, porque la regla delta tiene una forma más amplia. Para cualquier función de activación, la regla delta se puede escribir como wij = wij + α ∗ δ i ∗ xj w_ {ij} = w_ {ij} + \ alpha * \ delta_i * x_jwi j=wi j+aDyoXj, Entre ellos δ i = ϕ 1 (vi) ∗ ei \ delta_i = \ phi ^ 1 (v_i) * e_iDyo=ϕ1 (vyo)miyo. Si se usa una función de activación lineal, entonces δ i = ei \ delta_i = e_iDyo=miyo, Por lo tanto, las reglas de aprendizaje de la sección anterior solo se aplican a las funciones de activación lineal. Aunque la fórmula de actualización del peso de la regla delta generalizada es más complicada, la idea básica no ha cambiado y todavía se determina de acuerdo con la proporción del error del nodo de salida y el valor del nodo de entrada.

6. SGD 、 Lote 、 Mini lote

6,1 SGD

SGD (Descenso de gradiente estocástico) calcula el error en función de cada dato de entrenamiento y ajusta el peso inmediatamente. Dado que SGD ajusta el peso para cada punto de datos, el rendimiento de la red neuronal fluctúa hacia arriba y hacia abajo durante el proceso de entrenamiento. SGD calcula el método de actualización de peso como Δ wij = α ∗ δ i ∗ xj \ Delta w_ {ij} = \ alpha * \ delta_i * x_jΔ wi j=aDyoXj, Lo que significa que la regla delta se basa en el método SGD.

6.2 Lote

Este método usa todos los errores de los datos de entrenamiento para calcular cada valor de actualización de peso y luego usa el valor promedio de la actualización de peso para ajustar el peso. Usa todos los datos de entrenamiento, pero solo realiza una actualización. El lote calcula el método de actualización de peso como Δ wij = 1 N ∗ ∑ k = 1 N Δ wij (k) \ Delta w_ {ij} = \ frac {1} {N} * \ displaystyle \ sum_ {k = 1} ^ { N} \ Delta w_ {ij} (k)Δ wi j=norte1k = 1NΔ wi j( k ) , debido al uso del método de cálculo de promediar la actualización de peso, el entrenamiento del método Batch lleva mucho tiempo.

6.3 Mini lote

Este método se encuentra entre los dos métodos anteriores. Aquí hay un ejemplo simple: si se toman 50 puntos de datos arbitrarios de 200 puntos de datos de entrenamiento, el método Batch se aplica a estos 50 puntos de datos. En este caso, se requieren 4 ajustes de peso para completar todos los puntos de datos. Si el número de puntos de datos se selecciona razonablemente, el método puede tener en cuenta las ventajas de los dos métodos, a saber, la velocidad del método SGD y la estabilidad del método Batch.

7. 实现SGD方法

考虑三个输入节点和和一个输出节点组成的神经网络,无偏置。采用Sigmoid函数作为激活函数,有四个训练数据点,分别是 [ 0010 ] [0 0 1 0] [0010] [ 0110 ] [0 1 1 0] [0110] [ 1011 ] [1 0 1 1] [1011] [ 1111 ] [1111] [1111],每个数据点的最后一个是标准输出,然后编写实现SGD方法的代码,训练10000次,将最后得到的结果与标准输出进行比较

y=[0.0102 0.0083 0.9932 0.9917]'

这个与标准输出相差无几

y=[0 0 1 1]'

8. 实现Batch方法

所考虑的模型和上节一样,编程中唯一不同的是计算权重更新的方法,同样训练10000次,最后得到的结果为

y=[0.0209 0.0169 0.9863 0.9830]'

这明显比SGD方法误差大,当我们训练40000次时

y=[0.0102 0.0083 0.9932 0.9917]'

此时的精度和SGD一样,但是Batch花费的时间更多,也就是Batch学习速度更慢。

9. 两者比较

Inserte la descripción de la imagen aquí
从上图明显可以看出在同样的训练次数下,SGD方法明显比Batch方法学习速度更快。

10. 局限性

同样考虑上文显示的模型,如果改一下标准输出为 [ 0110 ] [0 1 1 0] [ 0 1 1 0 ] , el resultado final es

y=[0.5297 0.5000 0.4703 0.4409]'

¿No está completamente mal, pero por qué diablos es esto? Defina las tres primeras coordenadas de la entrada como coordenadas x, y, z, y las coordenadas z son todas 1, por lo que solo necesita considerar las coordenadas xey y dibujarlas en una imagen. El rojo es la salida estándar
Inserte la descripción de la imagen aquí

Se puede ver en esta figura que si desea dividir el área de 0 y 1, necesita una curva complicada. De manera similar, dibuje el gráfico de salida estándar que se muestra en la sección anterior para
Inserte la descripción de la imagen aquí
dividir el área de 0 y 1 solo requiere una línea recta. En otras palabras, este es un problema linealmente separable, y una red neuronal de una sola capa solo puede resolver el problema linealmente separable. Es por eso que se están desarrollando cada vez más redes neuronales multicapa, porque las redes neuronales multicapa no tienen este límite.

Supongo que te gusta

Origin blog.csdn.net/woaiyyt/article/details/113091892
Recomendado
Clasificación