Red de conocimiento de divisas - Conocimiento de préstamos - Cómo escribir una red neuronal simple en 9 líneas de código Python

Cómo escribir una red neuronal simple en 9 líneas de código Python

Al aprender inteligencia artificial, me propuse un objetivo: escribir una red neuronal simple en Python. Para asegurarme de que realmente lo entendía, me pedí empezar desde cero sin utilizar ninguna biblioteca de redes neuronales. Gracias a Andrew Zeiske por el gran blog, ¡lo logré! Aquí hay nueve líneas de código:

En esta publicación, explicaré cómo lo hice para que puedas escribirlo tú mismo. Proporcionaré un código fuente más largo pero más pulido.

En primer lugar, ¿qué es una red neuronal? El cerebro humano está formado por cientos de miles de millones de células (neuronas) interconectadas por sinapsis. Una excitación suficiente de la sinapsis provoca la excitación de la neurona. Este proceso se llama "pensar".

Podemos escribir una red neuronal en el ordenador para simular este proceso. No es necesario simular el cerebro humano a nivel de biomoléculas, sólo reglas de nivel superior. Usamos matrices (tablas de datos bidimensionales) como herramientas matemáticas y, por simplicidad, solo simulamos una neurona con tres entradas y una salida.

Entrenaremos neuronas para resolver el siguiente problema. Los primeros cuatro ejemplos se denominan conjunto de entrenamiento. ¿Has encontrado un patrón? ¿Es '?' 0 o 1?

Es posible que hayas notado que la salida siempre es igual al valor en la columna más a la izquierda de la entrada. ¿así que lo que? Debería ser 1.

Proceso de Entrenamiento

Pero ¿cómo conseguimos que nuestras neuronas respondan correctamente? Asigne un peso a cada entrada, que puede ser positiva o negativa. La entrada con mayor peso positivo (o negativo) determinará la salida de la neurona. Primero, establezca el valor inicial de cada peso en un número aleatorio y luego comience el proceso de entrenamiento:

Tome la entrada de una muestra de entrenamiento, ajústela según el peso y calcule la salida de la neurona mediante una fórmula especial.

Calcule el error, que es la diferencia entre la salida de la neurona en la muestra de entrenamiento y la salida esperada.

Ajusta ligeramente el peso según el error.

Repite este proceso 10.000 veces.

El peso final será la solución óptima acorde al conjunto de entrenamiento. Si se utilizan neuronas para considerar un nuevo caso de esta ley, se obtiene una gran predicción.

Este proceso es de retropropagación.

La fórmula para calcular la salida de una neurona

Quizás estés pensando, ¿cuál es la fórmula para calcular la salida de una neurona? Primero, se calcula la suma ponderada de las entradas de las neuronas, es decir,

y luego se normaliza, de modo que el resultado esté entre 0 y 1. Para ello se utiliza una función matemática: la función sigmoidea:

La gráfica de la función sigmoidea es una curva en forma de S.

Sustituyendo la primera ecuación en la segunda ecuación, la fórmula final para calcular la salida de la neurona es:

Es posible que hayas notado que, en aras de la simplicidad, no introdujimos el mínimo Umbral de excitación.

Fórmula de ajuste de peso

Ajustamos el peso constantemente durante el entrenamiento. ¿Pero cómo adaptarse? Puedes utilizar la fórmula de "derivada ponderada por error":

¿Por qué utilizar esta fórmula? Primero, queremos que el ajuste sea proporcional al tamaño del error. En segundo lugar, multiplique la entrada (0 o 1). Si la entrada es 0, los pesos no se ajustarán. Finalmente, multiplica por la pendiente de la curva en forma de s (Figura 4). Para entender esta última pregunta, considere lo siguiente:

Usamos una curva sigmoidea para calcular la salida de una neurona.

Si la salida es un número positivo (o negativo) grande, significa que la neurona ha adoptado este (u otro) método.

Como se puede ver en la Figura 4, la pendiente de la curva sigmoidea es menor en valores mayores.

Si la neurona cree que el peso actual es correcto, no se ajustará significativamente. Esto se puede lograr multiplicando la pendiente de la curva sigmoidea.

La pendiente de la curva sigmoidea se puede obtener por derivación:

Coloque la segunda ecuación en la primera ecuación para obtener la fórmula final para ajustar el peso:

Por supuesto, existen otras fórmulas que hacen que las neuronas aprendan más rápido, pero ésta tiene la ventaja de ser muy sencilla.

Construyendo código Python

Aunque no usaremos la biblioteca de redes neuronales, importaremos cuatro métodos de la biblioteca matemática de Python numpy. Son:

Exponentes Exponentes naturales

Matriz: crea una matriz

Multiplicación de celosía

Aleatorio: genera números aleatorios.

Por ejemplo, podemos usar el método array() para representar el conjunto de entrenamiento mostrado anteriormente:

El método ".t" se usa para la transposición de matrices (fila a columna). Entonces, la computadora almacena números como este:

Creo que podemos empezar a construir un código fuente más bonito. Después de dar este código fuente, permítanme hacer un resumen.

He añadido comentarios a cada línea de código fuente para explicarlo todo. Tenga en cuenta que en cada iteración, procesamos todos los datos del conjunto de entrenamiento simultáneamente. Entonces las variables son todas matrices (tablas de datos bidimensionales). A continuación se muestra el código de muestra completo escrito en Python.

¡Lo logramos! ¡Construimos una red neuronal simple en Python!

Primero, la red neuronal se asigna a sí misma un peso aleatorio y luego utiliza el conjunto de entrenamiento para entrenarse a sí misma. Luego, considera una nueva situación [1, 0, 0] y predice 0.9004.000000000005 ya que la respuesta correcta es 1. ¡Muy cerca!

Los programas informáticos tradicionales generalmente no aprenden. Pero es sorprendente que las redes neuronales puedan aprender, adaptarse y responder a nuevas situaciones por sí solas, al igual que los humanos.

上篇: Condiciones y procedimientos para préstamos Anxin 下篇: ¿Qué es real en la industria del entretenimiento?
Artículos populares